LangChain – Prompt (2/)

프롬프트는 정말 정말 중요하다. 중요하긴 한데 잘 작성하기는 쉽지 않고 고려해야할 것도 많다.  랭체인은 템플릿을 사용해 프롬프트를 작성할 수 있도록 한다. llm과 chat model을 구분하고 있으니 채팅을 위한 템플릿 – ChatPromptTemplate도 구분한다.

프롬프트는 PromptValue라 한다. llm에서는 StringPromptValue, chat model에서는 ChatPromptValue라 한다.  프롬프트 템플릿의 format_prompt 함수를 통해 프롬프트를 구한다. llm은 StringPromptValue를 chat model은  ChatPromptValue를 리턴한다.  


프롬프트는 문자열로 바꾸거나 메시지 목록으로 바꿀 수 있다 –  to_string, to_messages.

 

텍스트 템플릿을 만들려면 텍스트의 고정된 부분과 동적으로 결정되는 부분을 구분해야 하고, 동적으로 결정되는 부분을 동적으로 받을 수 있도록 해야 한다. 프롬프트도 텍스트니 프롬프트 템플릿도 이렇게 할 수 있어야 한다.

동적으로 받을 수 있는 것들을 input_variables로 관리한다. input_variables로 관리되는 값들은 format 함수로 받아 템플릿을 완성한다.  

템플릿에서 동적으로 결정되는 것들의 이름을 구할 수 있으므로 input_variables를 직접 작성하지 않아도 된다.  

PromptTemplate의 from_template 함수로 템플릿으로 부터 이 값을 자동으로 작성할 수 있다.  

템플릿 작성은 f-string이 기본이다. 다른 방법으로 바꿀 수도 있다. from_template의 template_format을 작성하면 된다. 현재는 jinja2와 f-string만 지원하고 있다.

템플릿 유효성 검증도 한다. 하고 싶지 않을 때는 validate_template를 False로 설정

저장도 가능하다. save. YAML과 JSON 형식 지원.

저장된 템플릿 불러오기도 가능

랭체인 정말 핵심을 잘 짚습니다. 프롬프트들을 모아 제공 – LangChainHub

About the Author
(주)뉴테크프라임 대표 김현남입니다. 저에 대해 좀 더 알기를 원하시는 분은 아래 링크를 참조하세요. http://www.umlcert.com/kimhn/

Leave a Reply

*