Intelligent Conversational Software Development – Prompt (2/)
아래 링크 내용을 기반으로 prompt engineering에 대해 정리한다.
Prompt Engineering and LLMs with Langchain
랭체인 문서의 프롬프트 정리했던 내용이다.
http://www.umlcert.com/langchain-prompt1/
http://www.umlcert.com/langchain-prompt-2/
http://www.umlcert.com/langchain-prompt-3/
http://www.umlcert.com/langchain-prompt-4/
프롬프트는 다음과 같은 부분들로 이뤄진다.
– Instructions
뭘 하고 싶은지, 외부 정보가 제공된다면 어떻게 사용할지, 쿼리를 가지고 뭘 할지, 어떻게 출력을 만들어 줬으면 하는지에 대해서 작성한다.
– External information or context(s)
llm은 pre-trained되기 때문에 훈련에 사용된 데이터 수준의 정보를 갖는다. 모델이 가지고 있지 않은 정보를 사용해야 하는 경우 추가적인 소스가 필요하다. 사용자가 직접 내용을 작성할 수 도 있지만 정보를 제공할 검색과 같은 외부 도구를 사용한다. 기업이나 개인이 가지고 있는 데이터를 사용할 수 도 있다. 이러한 경우 데이터는 일반적으로 문서화되어 있고 내용이 많을 수 있음으로 검색이 가능해야 한다. 검색하려면 컴퓨터가 처리할 수 있도록 되어야 하기 때문에 내용과 질의가 벡터화 되어야 한다.
Context 레이블 사용
– User input or query
사용자가 요구하는 내용이다.
Question 레이블 사용
– Output indicator
생성될 텍스트의 시작 부분을 나타낸다. python 코드를 생성하는 경우라면 import 부분이 된다. 대부분의 python 스크립트는 import로 시작한다.
Answer 레이블 사용
랭체인에서는 프롬프트 작성을 좀 더 쉽게 하도록 하려고 템플릿을 사용한다.
프롬프트는 모델에게 지식으로 전달되는 입력이다. 모델에 요청하는 작업을 이해하는데 도움이 된다면 예를 작성할 수 있다. 예가 있다는 것도 instruction에 작성해야 한다. 내용이 아니고 형식인 경우 내용과 형식을 구분해 템플릿 지원이 있으면 좋다. 입력과 출력 길이에 제한이 있을 수 있음으로 예의 개수가 조정되어야 한다. 랭체인은 이 또한 지원한다.
context window=input tokens+output tokens 이렇게 계산된 context window 크기가 제약되는 것