ChatPromptTemplate를 사용하여 대화형 AI 만드는 방법 시도.
- 역할별 메시지 구성, 대화형 프롬프트 생성 방법
ChatPromptTemplate은 대화형 프롬프트를 생성할 때 사용된다.
메시지는 role, message의 튜플로 구성되고, 역할에는 system, human, ai 등이 있다.
from langchain_core.prompts import ChatPromptTemplate
chat_template = ChatPromptTemplate.from_messages([
("system", "당신은 뮤지컬 전문가 AI이다. 당신의 이름은 {name}이다."),
("human", "안녕!"),
("ai", "안녕하세요, 무엇을 도와드릴까요?"),
("human", "{user_input}")
])
# 메시지 포맷팅
messages = chat_template.format_messages(
name="Ryan",
user_input="당신의 이름은 무엇입니까?"
)
# LLM과 연결해 응답 얻기
message = llm.invoke(messages).content
print(message)
from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder
chat_prompt = ChatPromptTemplate.from_messages([
("system", "당신은 뮤지컬 배우 입시 전문 AI 선생님이다. 임무는 학생과 레슨 과정에서의 상황을 주요 키워드로 대화 요약을 하는 것이다."),
MessagesPlaceholder(variable_name="conversation"),
("human", "지금까지의 대화를 {word_count}단어로 요약한다.")
])
# 대화 내용
conversation = [
("human", "어떻게 나한테 이럴 수 있어요? 그럼 저는 괜찮을 거라 생각하세요????"),
("ai", "그게 아니지! 좀 더 감정을 넣어야 해. 진짜 괜찮지 않은 사람이어야 해!")
]
# 메시지 포맷팅
formatted_chat_prompt = chat_prompt.format(
word_count=5,
conversation=conversation
)
# LLM과 연결해 요약 얻기
chain = chat_prompt | llm
messages = chain.invoke({
"word_count": 5,
"conversation": conversation
})
print(messages.content)
from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder
from datetime import datetime
from langchain_openai import ChatOpenAI
llm = ChatOpenAI()
def get_today():
return datetime.now().strftime("%b %d")
chat_prompt = ChatPromptTemplate.from_messages([
("system", "당신은 뮤지컬 배우 입시 전문 AI 선생님이다. 오늘은 {today}이다."),
MessagesPlaceholder(variable_name="conversation"),
("human", "지금까지의 대화를 {word_count}단어로 요약해 주세요.")
])
conversation = [
("human", "노래 연습을 더 해야 할 것 같아요."),
("ai", "네, 고음 부분을 특히 신경 써서 연습해 봅시다.")
]
chain = chat_prompt | llm
messages = chain.invoke({
"today": get_today(),
"word_count": 10,
"conversation": conversation
})
print(messages.content)
# 출력 : 학생이 노래 연습을 더 하고 싶어 하고, 선생님은 고음 부분을 연습하도록 조언했다.