LangChain – Prompt (4/)

랭체인은 StringPromptTemplate와 ChatPromptTemplate을 제공한다. 이것으로 만족스럽지 않다면 이걸 확장해서 새로운  프롬프트 템플릿을 정의해서 사용할 수 있다.

 

함수 이름이 주어졌을 때, 그 함수의 코드에 설명을 달아주는 프롬프트 템플릿을 만들어보자.  StringPromptTemplate을 확장한다.  pydantic의 BaseModel도 확장한다. 왜? pydantic 문서를 보고 해당 클래스의 코드에서 관련된 것들을 찾아보자.

함수 이름을 받아 소스 코드를 리턴한다.  get_source_code. 이를 위해 inspect 모듈의 getsource를 사용한다.

동적으로 결정되는 인자들을 받아 프롬프트를 작성해서 리턴하는 format 함수를 재정의 한다.

프롬프트 템플릿 타입 키를 리턴하는 _prompt_type을 재정의한다.

FunctionExplainerPromptTemplate를 사용해 보자.

랭체인의 프롬프트 개념 계층을 보면 좀 이상한 점이 있다.

“StringPromptTemplate은 PromptTemplate이다.”가 개념적으로 맞다. 그런데 PromptTemplate이 StringPromptTemplate을 확장하고 있고, StringPromptTemplate는 BasePromptTemplate를 확장하고 있다.

일반적인 프롬프트는 PromptTemplate이라고 한다. 일반적인 프롬프트 템플릿은 텍스트 입력과 출력을 사용하기 때문에 이런 것에 해당하는 StringPromptTemplate을 확장한다. 이렇게 개념 계층을 설명하려고 추가적인 것들을 덧붙여져야 한다.

base.py 파일이 별도 있고 여기에 Base로 시작하는 클래스가 있는거보니, 최상위 개념에 Base를 붙이려는 것을 지키려다 보니 그런게 아닌가 싶다.

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

Leave a Reply

*