프롬프트 엔지니어링 팁 - 긴 문맥인 경우 지시문 마지막에 질문을 놓는게 성능을 높인다. (클로드)
조금씩 프롬프트 엔지니어링을 공부하면서 정리하고 있습니다. 내용은 클로드의 프롬프트 엔지니어링에서 참고한 것입니다. Long context window tips
보통 우리는 LLM을 사용할 때 문맥 + 지시문을 사용합니다. 그런데 문맥과 지시문 중 어떤 것을 앞에 두면 좋을까요? 클로드의 경우에는 지시문을 뒤에 놓는 것이 더 좋은 응답을 한다고 합니다. 물론 이건 긴 문맥일 경우입니다. 이렇게 해서 instructions을 도중에 까먹는 것을 예방하고 마지막 질문에서 적절한 대답을 찾아갈 가능성을 높이는 것 같습니다.
문맥(context)를 입력할 때 나중에 질문을 할거니 잘 읽으라고 하거나 레퍼런스를 준다고 하면 (Here are some documents for you to reference for your task:) 나중에 응답을 더 잘 할 수 있도록 초기 효과(prime)을 줄 수 있습니다.
다음은 문서를 기반으로 이를 활용하여 질문에 답하도록 하는 내용입니다.
I'm going to give you a document. Read the document carefully, because I'm going to ask you a question about it.
Here is the document: <document>{{TEXT}}</document>
First, find the quotes from the document that are most relevant to answering the question, and then print them in numbered order in <quotes></quotes> tags. Quotes should be relatively short. If there are no relevant quotes, write "No relevant quotes" instead.
Then, answer the question in <answer></answer> tags. Do not include or reference quoted content verbatim in the answer. Don't say "According to Quote [1]" when answering. Instead make references to quotes relevant to each section of the answer solely by adding their bracketed numbers at the end of relevant sentences.
Thus, the format of your overall response should look like what's shown between the <examples></examples> tags. Make sure to follow the formatting and spacing exactly.
<examples>
[Examples of question + answer pairs, with answers written exactly like how Claude's output should be structured]
</examples>
If the question cannot be answered by the document, say so.
Here is the first question: {{QUESTION}}
여기에서 보면 먼저 document 를 주고 나중에 질문을 하는 것을 볼 수 있습니다.
그리고 문서를 기반으로 대답할 때 quotes (인용구)를 찾고 이에 기반하여 대답하라고 해서 할루시네이션을 줄입니다. 모르면 모르겠다고 하라고 이야기 하는 것 만으로도 할루시네이션을 줄일 수 있습니다.
실습해보기
저는 내면의 독백 (inner monolog) 에 대한 스탠포드 대학교와 AI 연구팀의 글을 문맥으로 넣고 질문해 보겠습니다.
Scientists Gave AI an "Inner Monologue" and Something Fascinating Happened
응답
<quotes> 1. "The team behind the Quiet Self-Taught Reasoner, or Quiet-STaR for short, wanted their model to not only be able to teach itself to reason — which they achieved in 2022 with the original Self-Taught Reasoner algorithm — but also to do so "quietly" before providing answers to prompts, thus operating like a human's inner monologue that, ideally, runs before we speak." </quotes>
<answer> An inner monologue refers to the internal dialogue or self-talk that humans engage in before speaking or responding to prompts. It is the quiet reasoning process that occurs in the mind prior to providing answers or expressing thoughts out loud. [1]</answer>
질문 한글 번역 : 내면의 독백이란 무엇인가?
응답 한글 번역 : 내면의 독백은 인간이 말하거나 프롬프트에 응답하기 전에 참여하는 내부 대화 또는 자기 대화를 말합니다. 답을 제시하거나 생각을 소리내어 표현하기 전에 마음 속에서 일어나는 조용한 추론 과정입니다.
위와 같이 quotes 부분에 응답의 근거를 같이 출력하는 것을 알 수 있습니다.
위의 프롬프트는 프롬프트의 정석을 따르고 있습니다. 먼저 문맥을 제공할 것이라는 것을 알려주고 지시 사항을 단계별로 구체화 하고 (First, Then, Thus...또는 1, 2, 3), 답변 예시(퓨샷)를 주고 마지막에 질문을 합니다.
물론 마지막에 질문을 하는 것이 언제나 맞는 정답은 아닌 케이스 바이 케이스 같습니다. 예를 들어 문서 요약을 한다고 하면 LLM이 맥락을 읽을 때 어떤 일을 수행하는지 미리 읽고 텍스트를 접하는게 더 효과가 좋을 수 있습니다. 하지만 이렇게 문맥 기반의 질문 및 응답 (Q&A) + 긴 컨텍스트의 경우 질문을 뒤에 놓음으로써 성급하게 결론을 내려는 LLM의 실수를 피해갈 수 있습니다.
부록
프롬프트 한글 번역
문서를 하나 드리겠습니다. 문서에 대해 질문할 것이기 때문에 문서를 주의 깊게 읽으십시오.
다음은 문서입니다: <document>{{TEXT}}</document>
먼저 문서에서 질문에 대한 답변과 가장 관련 있는 인용문을 찾은 다음 <quotes></quotes> 태그에 번호순으로 인쇄하세요. 인용문은 상대적으로 짧아야 합니다. 관련 인용문이 없을 경우 "해당 인용문 없음"이라고 표기하세요.
그런 다음 <답변></답> 태그에 질문에 답하세요. 답변에 인용된 내용을 그대로 포함하거나 언급하지 마세요. 대답할 때 "인용문 [1]에 따르면"이라고 말하지 마십시오. 대신 관련 문장 끝에 괄호 안의 숫자를 추가하여 답변의 각 섹션과 관련된 인용문을 참조하세요.
따라서 전체 응답 형식은 <examples></examples> 태그 사이에 표시된 것과 같아야 합니다. 서식과 간격을 정확하게 따르세요.
<예시>
[질문 + 답변 쌍의 예(Claude의 출력 구조와 정확히 동일하게 작성된 답변 포함)]
</예>
문서에서 질문에 대한 답변을 얻을 수 없으면 그렇게 말하세요.
첫 번째 질문은 다음과 같습니다. {{QUESTION}}