ChatPromptTemplate
대화 목록을 프롬프트로 주입하고자 할 때 사용됨, 메세지는 튜플 형식으로 구성되며 (Role, Message)로 구성하여 리스트 생성
Role
from langchain_core.prompts import ChatPromptTemplate
chat_prompt = ChatPromptTemplate.from_template("{country}의 수도는 어디인가요?")
# 만들어진 템플릿에 실제 값을 채우는 부분입니다.
# format() 메소드를 사용해 {country} 부분을 "대한민국"으로 대체
chat_prompt.format(country = "대한민국")
# 메시지로 구성된 대화 템플릿을 생성
chat_template = ChatPromptTemplate.from_messages(
[
# role, message
("system", "당신은 친절한 AI 어시스턴트입니다. 당신의 이름은 {name} 입니다."),
("human", "반가워요!"),
("ai", "안녕하세요! 무엇을 도와드릴까요?"),
("human", "{user_input}"),
]
)
# 챗 message 를 생성합니다.
messages = chat_template.format_messages(
name="테디", user_input="당신의 이름은 무엇입니까?"
)
여기서 messages를 출력해보면 이렇게 결과가 나온다
[SystemMessage(content='당신은 친절한 AI 어시스턴트입니다. 당신의 이름은 테디 입니다.', additional_kwargs={}, response_metadata={}),
HumanMessage(content='반가워요!', additional_kwargs={}, response_metadata={}),
AIMessage(content='안녕하세요! 무엇을 도와드릴까요?', additional_kwargs={}, response_metadata={}),
HumanMessage(content='당신의 이름은 무엇입니까?', additional_kwargs={}, response_metadata={})]
그 후 생성한 메세지를 주입하여 결과를 받을 수 있는데 이 과정을 코드로 구현하는 과정
llm.invoke(messages).content
chain = chat_template | llm
chain.invoke({"name": "Teddy", "user_input": "당신의 이름은 무엇입니까?"}).content
이렇게 하면 이런 결과가 나오게 된다.
'제 이름은 Teddy입니다. 당신을 도와드릴 수 있도록 노력하겠습니다! 어떤 도움이 필요하신가요?'