클로드 3 프롬프트 엔지니어링
Anthropic 에서 공개한 프롬프트 엔지니어링 내용을 제가 보기 위해 간단하게 정리했습니다. 전문은 Prompt engineering (Anthropic 홈페이지)에서 확인할 수 있습니다.
명확하고 직접적인 요청 : 명확한 지침과 문맥을 제공하기.
클로드 자체는 명확한 방향이 없다. 그렇기 때문에 원하는게 무엇인지 직접적인 방식으로 표현해야 클로드가 더 잘 응답할 수 있다.
예시 사용: 원하는 출력 형식이나 스타일을 설명하기 위해 프롬프트에 예시를 포함하기.
예시 : 텍스트에서 이름과 직업 뽑아내기. (예시 제공)
클로드에게 역할 부여: 특정 역할(전문가 역할 등)을 부여하여 특정 사용 사례에 대한 성능을 높이기. Prime Claude to inhabit a specific role. 여기에서 Prime 이란 초기를 말한다. 역할을 생성함으로써 초기에 응답을 더 잘찾아갈 수 있다. (초두 효과)
XML 태그 사용: 프롬프트와 응답의 구조를 더 명확하게 하기 위해 XML 태그를 포함시키십시오.
<example>
{{EXAMPLE}}
</example>
프롬프트 연결 (Chain prompts) : 복잡한 작업을 더 작은 관리 가능한 단계로 나누어 더 나은 결과를 얻기.
예 : 1. 기사에서 인용구를 추출하고 2. 이를 더블 체크하기.
클로드가 생각할 수 있게 하기: 단계별 사고 과정을 권장하여 클로드의 출력 품질을 향상.
LLM은 출력을 하면서 생각을 하기 때문에 생각을 출력을 할 수 있는 공간을 마련해서 품질을 향상한다.
클로드의 응답 미리 채우기: 클로드의 출력을 원하는 방향으로 유도하기 위해 몇 단어로 응답을 시작하기.
클로드는 API에서 prefill 을 사용할 수 있다. Assistant의 응답의 첫부분을 같이 보낼 수 있는 방법이다.
message = client.messages.create(
model="claude-2.1",
max_tokens=1000,
temperature=0,
messages=[
{
"role": "user",
"content": "Please extract the name, size, price, and color from this product description and output it within a JSON object.\n\n<description>The SmartHome Mini is a compact smart home assistant available in black or white for only $49.99. At just 5 inches wide, it lets you control lights, thermostats, and other connected devices via voice or app—no matter where you place it in your home. This affordable little hub brings convenient hands-free control to your smart devices.\n</description>"
}
{
"role": "assistant",
"content": "{"
}
]
)
JSON 응답을 유도하기 위해 { 를 보내는 예시.
출력 형식 제어: 일관성과 가독성을 확보하기 위해 원하는 출력 형식을 지정하기.
클로드에게 재작성 요청: 특정 과제나 작업을 평가하기 위한 기준과 지침(rubric)에 따라 수정을 요청하여 클로드가 출력물을 반복적으로 개선할 수 있게 하기.
이미 나온 응답을 개선하거나 더블 체크하기 위해 다시 쓰게 (rewrite) 만들기.
긴 문맥 창 팁 (Long context window tip) : 클로드의 긴 문맥 창을 활용하는 프롬프트를 최적화하기.
기본적으로 역할, 예시 등 기본적인 프롬프트 엔지니어링 기법들이다.
delimiter를 XML 태그로 사용하는게 인상 깊다. 예시를 제공할 때 <example>text</example> 이런 식으로 제공하면 구분자 + 의미를 같이 전달할 수 있다.
규칙(rules)이나 요구사항(requirements)을 더함으로써 출력을 통제하려고 하는 것도 좋은 방법이다.
preamble (서두) 이라는 용어가 나오는데 이건 LLM이 응답을 하기 전에 말하는 문구이다. 이걸 없애게 함으로써 바로 대답을 내놓게 할 수 있다.