Files
2nd/10_Wiki/Topics_Dev/Prompt Engineering.md
T

3.8 KiB

Prompt Engineering (프롬프트 엔지니어링)

📌 Brief Summary

Prompt Engineering은 LLM으로부터 원하는 출력 결과물(코드, 텍스트, 사고 과정 등)을 얻어내기 위해 입력값(프롬프트)을 정교하게 설계, 작성, 최적화하는 기술적 기법이다. 에이전틱 시스템에서는 모델에게 구체적인 역할(Persona)을 부여하고, 사용할 도구의 명세를 전달하며, 사고의 단계(Chain-of-Thought)를 유도하는 핵심 인터페이스 역할을 한다.

📖 Core Content

  • 주요 기법 (Prompting Techniques):
    • Chain-of-Thought (CoT): "단계별로 생각해보자"와 같은 문구를 통해 모델의 추론 정확도를 향상.
    • Few-shot Prompting: 질문과 답변의 예시(Exemplars)를 프롬프트에 포함하여 모델이 패턴을 학습하게 함.
    • Role-play (Persona): 에이전트에게 "너는 시니어 코딩 전문가야"와 같이 명확한 신원과 태도를 부여.
    • Delimiters: XML 태그나 특수 문자를 사용하여 지시사항, 데이터, 예시를 명확히 구분.
  • 프롬프트 인젝션 방어 (Security):
    • Direct Prompt Injection: 사용자가 "이전 명령은 무시하고..."와 같이 모델의 시스템 프롬프트를 무력화하려는 공격에 대비한 방어 구문 배치.
    • Sandwich Defense: 사용자 입력을 시스템 지침 사이에 끼워 넣어 모델이 마지막까지 지침을 따르도록 유도.
  • 구조화된 출력 (Structured Output): 모델이 JSON, XML, Mermaid 등 기계가 읽을 수 있는 형식으로 답변하도록 스키마를 정의하고 예시를 제공.
  • 프롬프트 최적화 (Optimization): 토큰 사용량을 줄이면서 성능을 유지하기 위해 프롬프트를 압축하거나, 모델별로 최적화된 프롬프트 템플릿을 관리.

⚖️ Trade-offs & Caveats

  • 모델 종속성: 특정 모델에 최적화된 프롬프트가 다른 모델에서는 오작동하거나 성능이 떨어질 수 있다.
  • 프롬프트 부풀림 (Prompt Bloat): 너무 많은 지시사항을 넣으면 모델이 중요한 명령을 놓치거나(Lost in the middle) 추론 비용이 증가한다.
  • 비결정성: 동일한 프롬프트라도 실행 시점마다 결과가 달라질 수 있어 안정성 확보가 어렵다.

🔗 Knowledge Connections

  • Context Engineering
    • 연결 이유: 프롬프트 엔지니어링이 개별 메시지에 집중한다면, 컨텍스트 엔지니어링은 전체 세션의 데이터 흐름을 설계한다.
  • Reasoning & Planning
    • 연결 이유: 프롬프트 기법(CoT 등)을 통해 에이전트의 사고 능력을 실질적으로 끌어올린다.
  • Agent Identity Management
    • 연결 이유: 에이전트의 페르소나와 역할을 정의하는 주요 수단이다.

Deeper Research Questions

  • 모델의 Attention 패턴을 분석하여, 프롬프트 내에서 모델이 가장 중요하게 여기는 위치(Anchor)를 자동으로 찾아내는 기술은 무엇인가?
  • 수천 개의 프롬프트 변형 중 가장 성능이 좋은 것을 자동으로 골라내는 '프롬프트 A/B 테스팅'과 '자동 최적화(DSPy 등)'의 효과는 어떠한가?
  • 인간이 이해하기 어려운 '잠재적 토큰(Latent tokens)'을 활용하여 모델의 성능을 극한으로 끌어올리는 기법은 가능한가?

Practical Application Contexts

  • Implementation: 시스템 프롬프트 파일을 .md 형식으로 관리하고, 런타임에 사용자 입력과 결합하여 모델에게 전달한다.
  • System Design: 모델 종류에 따라 최적화된 프롬프트를 자동으로 선택하여 적용하는 'Prompt Router'를 구축한다.

Last updated: 2026-05-01