# Gemini CLI 마스터하기(심화): v23 - 동적 프롬프트 템플릿 엔진 커스터마이징 이전 단계까지 우리는 Gemini 에이전트가 다양한 외부 지식과 시스템(로컬 파일, 코드베이스, Elasticsearch, Kubernetes)과 상호작용하는 방법을 배웠습니다. 이제 에이전트의 '지능'과 '개성'을 우리에게 맞게 정교하게 다듬는 방법에 대해 알아보겠습니다. 바로 **동적 프롬프트 템플릿 엔진을 커스터마이징**하는 것입니다. `class templater` 스니펫이 보여주듯이, Gemini CLI는 단순히 사용자의 질문을 LLM에 전달하는 것을 넘어, 상황과 사용자에 맞춰 복잡하고 개인화된 시스템 프롬프트를 동적으로 구성합니다. 이를 이해하고 수정하면 에이전트의 응답 방식, 어조, 지식 활용 능력을 완전히 제어할 수 있습니다. --- ## 1. 동적 프롬프트 템플릿 엔진이란? 대규모 언어 모델(LLM)은 '프롬프트(Prompt)'를 통해 지시를 받습니다. 이 프롬프트는 사용자의 직접적인 질문 외에도, 에이전트의 역할, 행동 규칙, 배경 정보, 예시 등으로 구성된 '시스템 프롬프트'를 포함합니다. '동적 프롬프트 템플릿 엔진'은 이러한 시스템 프롬프트를 고정된 텍스트가 아니라, 다음과 같은 요소들을 조합하여 실시간으로 생성하는 메커니즘을 의미합니다. * 사용자의 현재 질문 * 에이전트의 현재 목표와 컨텍스트 * 사전에 정의된 에이전트의 페르소나와 규칙 * 사용자의 정보 * LLM의 추론을 돕는 예시(Few-shot examples)나 사고 과정(Chain of Thought) 지시 ## 2. 커스터마이징의 핵심 구성 요소 (`class templater` 분석) `class templater`는 이러한 동적 프롬프트 구성을 담당하는 핵심적인 요소입니다. 다음 부분들을 커스터마이징할 수 있습니다. ### 2.1. 전역 바이오 (Global Bios: `global_bio`, `status_bio`) * **`global_bio`:** 에이전트의 전반적인 페르소나, 핵심 역할, 일반적인 행동 규칙을 정의합니다. 모든 프롬프트에 포함되는 가장 기본적인 지침입니다. * **커스터마이징 예시:** "당신은 Acme Corp.의 전문 기술 문서 작성 어시스턴트입니다. 항상 명확하고 간결하며, Acme의 브랜드 가이드라인을 준수하는 어조로 답변하세요." * **`status_bio`:** 에이전트가 현재 수행하고 있는 작업의 '상태'나 '목표'에 따라 동적으로 추가되는 지침입니다. * **커스터마이징 예시:** Kubernetes 디버깅 중일 때: "당신은 현재 Kubernetes 클러스터의 문제를 진단하고 있습니다. 파드의 상태, 로그, 이벤트를 분석하여 문제의 원인과 해결책을 제시하세요." ### 2.2. 사용자 정보 (`user_name`, `user_bio`) * **`user_name`:** 에이전트가 사용자를 지칭할 때 사용하는 이름입니다. (예: "안녕하세요, [사용자 이름]님.") * **`user_bio`:** 사용자의 역할, 전문성, 선호도 등 에이전트가 사용자를 이해하는 데 도움이 되는 정보입니다. * **커스터마이징 예시:** "사용자는 선임 백엔드 개발자입니다. K8s에 대한 지식이 높으므로 기술적인 용어를 사용하여 설명해도 좋습니다." ### 2.3. 예시 (Few-shot Examples: `SHOT_1`, `SHOT_2`) * **개념:** LLM이 원하는 특정 형식이나 스타일로 응답하도록 유도하는 가장 효과적인 방법 중 하나입니다. 프롬프트 내에 '질문-응답' 쌍의 예시를 제공하여 모델이 이를 모방하도록 만듭니다. * **커스터마이징 예시:** * 보고서 요약을 요청할 때 항상 불릿 포인트로 응답하도록 유도하는 예시를 제공. * 특정 전문 용어를 포함한 번역 예시를 제공하여 번역 품질 향상. ### 2.4. 사고의 사슬 (Chain of Thought, CoT: `is_cot`) * **개념:** `is_cot` 플래그는 LLM에게 최종 답변을 내놓기 전에 "단계별로 생각하세요(Let's think step by step)"와 같은 지시를 내부적으로 추가하여, 추론 과정을 거치도록 유도합니다. 이는 복잡한 문제 해결 능력과 논리적 일관성을 크게 향상시킵니다. * **커스터마이징:** 에이전트가 복잡한 분석이나 문제 해결을 수행할 때 `is_cot`를 활성화하여 답변의 정확성과 신뢰성을 높일 수 있습니다. ### 2.5. 구조화된 질의/응답 (`q_dict`, `a_dict`) * **개념:** 에이전트가 특정 종류의 질문을 구조화된 형태로 이해하고, 그에 맞는 구조화된 응답을 생성하도록 돕는 정의입니다. (예: JSON 스키마) * **커스터마이징:** 예를 들어, "블로그 포스트 개요를 생성해 줘"라고 할 때, `a_dict`에서 "서론, 본론(소주제들), 결론"이라는 특정 필드를 요구하도록 정의할 수 있습니다. ## 3. 동적 프롬프트 템플릿 커스터마이징 방법 (개념) 이러한 템플릿과 설정들은 일반적으로 Gemini CLI 프레임워크 내의 특정 설정 파일(예: YAML, JSON 또는 Python 모듈)에 정의됩니다. 1. **설정 파일 위치 파악:** Gemini CLI의 문서나 소스 코드를 통해 템플릿 설정 파일의 기본 위치와 형식을 확인합니다. 2. **설정 수정:** 텍스트 편집기로 해당 파일을 열어 `global_bio`, `SHOT_1`, `q_dict` 등을 원하는 대로 수정합니다. 3. **CLI에 적용:** `gemini config set prompt_template_path ~/my_custom_templates`와 같은 명령어를 통해 수정된 템플릿 파일의 경로를 CLI에 알려주거나, 해당 파일을 지정된 위치에 배치합니다. ## 4. 커스터마이징의 이점 * **일관된 페르소나 및 어조:** 에이전트가 항상 여러분의 브랜드나 팀의 목소리로 소통하게 만듭니다. * **도메인별 지식 통합:** 특정 산업군이나 회사 내부의 전문 용어와 규칙을 에이전트에게 가르칠 수 있습니다. * **응답 정확도 및 형식 향상:** 원하는 답변 형식과 내용에 맞춰 LLM을 정교하게 가이드합니다. * **개인화된 경험:** 사용자 역할이나 선호도에 따라 에이전트가 다르게 응답하도록 설정할 수 있습니다. ## 5. 요약 동적 프롬프트 템플릿 엔진의 커스터마이징은 Gemini 에이전트에게 단순한 지능을 넘어, 고유한 개성과 전문성을 부여하는 과정입니다. 이를 통해 여러분의 AI 어시스턴트를 진정으로 '나만의 것'으로 만들고, 워크플로우에 완벽하게 통합할 수 있습니다. 에이전트의 '지능'을 우리에게 맞게 커스터마이징하는 방법을 배웠으니, 다음 단계에서는 에이전트가 외부 세계와 상호작용하는 '손발'을 어떻게 정교하게 제어하고 확장하는지, 즉 **`ToolSchema`와 `Guarded Actions`를 활용한 안전한 외부 도구 연동**에 대해 깊이 있게 탐구하겠습니다.