프롬프트 엔지니어링
프롬프트 템플릿과 변수 사용하기
Claude로 LLM 기반 애플리케이션을 배포할 때, API 호출은 일반적으로 두 가지 유형의 콘텐츠로 구성됩니다:
- 고정 콘텐츠: 여러 상호작용에서 일정하게 유지되는 정적 지침이나 컨텍스트
- 가변 콘텐츠: 각 요청이나 대화에 따라 변하는 동적 요소들, 예를 들면:
- 사용자 입력
- 검색 증강 생성(RAG)을 위한 검색된 콘텐츠
- 사용자 계정 기록과 같은 대화 컨텍스트
- Claude에 대한 다른 독립적인 호출에서 제공되는 도구 사용 결과와 같은 시스템 생성 데이터
프롬프트 템플릿은 동적 콘텐츠에 대한 자리 표시자를 사용하여 이러한 고정 부분과 가변 부분을 결합합니다. Anthropic Console에서 이러한 자리 표시자는 **{{이중 괄호}}**로 표시되어 쉽게 식별할 수 있고 다양한 값을 빠르게 테스트할 수 있습니다.
프롬프트 템플릿과 변수를 사용해야 하는 경우
프롬프트의 일부가 Claude에 대한 다른 호출에서 반복될 것으로 예상되는 경우 항상 프롬프트 템플릿과 변수를 사용해야 합니다(API나 Anthropic Console을 통해서만 가능. claude.ai는 현재 프롬프트 템플릿이나 변수를 지원하지 않습니다).
프롬프트 템플릿은 다음과 같은 여러 이점을 제공합니다:
- 일관성: 여러 상호작용에서 프롬프트의 일관된 구조 보장
- 효율성: 전체 프롬프트를 다시 작성하지 않고도 가변 콘텐츠를 쉽게 교체
- 테스트 가능성: 가변 부분만 변경하여 다양한 입력과 엣지 케이스를 빠르게 테스트
- 확장성: 애플리케이션이 복잡해질수록 프롬프트 관리 단순화
- 버전 관리: 동적 입력과 별도로 프롬프트의 핵심 부분만 추적하여 시간에 따른 프롬프트 구조의 변경 사항을 쉽게 추적
Anthropic Console은 다음과 같은 기능과 도구를 지원하기 위해 프롬프트 템플릿과 변수를 많이 사용합니다:
- 프롬프트 생성기: 프롬프트에 필요한 변수를 결정하고 출력하는 템플릿에 포함
- 프롬프트 개선기: 기존 템플릿을 가져와 모든 변수를 포함하여 개선된 템플릿으로 출력
- 평가 도구: 프롬프트 템플릿의 가변 부분과 고정 부분을 분리하여 프롬프트를 쉽게 테스트, 확장 및 버전 추적 가능
프롬프트 템플릿 예시
영어 텍스트를 스페인어로 번역하는 간단한 애플리케이션을 생각해봅시다. 번역된 텍스트는 사용자나 Claude에 대한 호출 간에 변경될 것으로 예상되므로 가변적일 것입니다. 이 번역된 텍스트는 데이터베이스나 사용자의 입력에서 동적으로 검색될 수 있습니다.
따라서 번역 앱에서는 다음과 같은 간단한 프롬프트 템플릿을 사용할 수 있습니다: