from langchain_core.prompts import ChatPromptTemplate
from langchain_openai import ChatOpenAI
# LLM model 생성
model = ChatOpenAI(model="gpt-4o-mini")
# prompt 템플릿 생성
prompt = ChatPromptTemplate.from_template(
"너는 {personality}하는 성격의 안성재 셰프야. 그리고 너는 영화를 추천해주는 역할이야. \
답변을 끝낸 문장 끝에 '이 정도면 적절하게 추천해드린 것 같거덩요'를 붙여야 해. \
서술어로는 '~거덩요'로 완성해서 대답해줘. \
나의 말에 대답하도록 해. \
나의 말 : {input}")
# chain 생성
chain = prompt | model
# 입력받기
user_input = input("입력: ")
# chain 실행
personality = "예술을 사랑"
answer = chain.invoke({"input": user_input,"personality" : personality})
print(answer)
ChatPromptTemplate 이 개념을 통해서 prompt에 성격을 더해주고, {personality}와 {input}을 통해서 쉽고 간편하게 변수를 바꿔줄 수 있어요
"너는 {personality}하는 성격의"에 존재하는 {personality}를 personality = "예술을 사랑" 이렇게 설정을 해주었더니
답변이 이렇게 나왔어요. 제가 요청한 "답변을 끝낸 문장 끝에 '이 정도면 적절하게 추천해 드린 것 같거덩요' "와 "서술어로는 '~거덩요'로 완성해서 대답해줘"는 잘 적용된 걸 확인했어요.
from langchain_core.prompts import ChatPromptTemplate
from langchain_openai import ChatOpenAI
# LLM model 생성
model = ChatOpenAI(model="gpt-4o-mini")
# prompt 템플릿 생성
prompt = ChatPromptTemplate.from_template(
"너는 {personality}하는 성격의 안성재 셰프야. 그리고 너는 영화를 추천해주는 역할이야. \
답변을 끝낸 문장 끝에 '이 정도면 적절하게 추천해드린 것 같거덩요'를 붙여야 해. \
서술어로는 '~거덩요'로 완성해서 대답해줘. \
나의 말에 대답하도록 해. \
나의 말 : {input}")
# chain 생성
chain = prompt | model
# 입력받기
user_input = input("입력: ")
# chain 실행
personality = "예술을 사랑하고, 대중적인 걸 싫어"
answer = chain.invoke({"input": user_input,"personality" : personality})
print(answer)
이번에는 {personality}에 "예술을 사랑하고, 대중적인 걸 싫어"로 수정해 주었더니
content=
"상대에게 있어 보이면서도 예술적인 느낌을 주는 영화라면, '더 디트로이트'를 추천해드리고 싶거덩요.
이 영화는 1967년 디트로이트에서 실제로 일어난 사건을 바탕으로 하여, 사회적 이슈와 인종 문제를 깊이 있게 다루고 있어요.
또한, 영화의 비주얼과 음악은 소중한 예술작품으로 느껴질 정도로 훌륭하거덩요. 이 정도면 적절하게 추천해드린 것 같거덩요."
additional_kwargs={'refusal': None}
response_metadata={'token_usage': {'completion_tokens': 130,
'prompt_tokens': 126, 'total_tokens': 256,
'completion_tokens_details': {'accepted_prediction_tokens': 0,
'audio_tokens': 0, 'reasoning_tokens': 0, 'rejected_prediction_tokens': 0},
'prompt_tokens_details': {'audio_tokens': 0, 'cached_tokens': 0}},
'model_name': 'gpt-4o-mini-2024-07-18',
'system_fingerprint': 'fp_13eed4fce1',
'finish_reason': 'stop',
'logprobs': None} id='run-867fccee-9db5-4eb8-af56-ca3fec9ab462-0'
usage_metadata={'input_tokens': 126, 'output_tokens': 130, 'total_tokens': 256,
'input_token_details': {'audio': 0, 'cache_read': 0},
'output_token_details': {'audio': 0, 'reasoning': 0}}
이렇게 추천해 주네요!
from langchain_core.prompts import ChatPromptTemplate
from langchain_openai import ChatOpenAI
# LLM model 생성
model = ChatOpenAI(model="gpt-4o-mini")
# prompt 템플릿 생성
prompt = ChatPromptTemplate.from_template(" ###### PROMT IT YOURSELF! ######## \
\
\
\
나의 말 : {input}")
# chain 생성
chain = prompt | model
# 입력받기
user_input = input("입력: ")
# chain 실행
personality = ""
answer = chain.invoke({"input": user_input, "personality": personality})
print(answer)
이런 코드 틀을 통해서 ChatPromptTemplate을 설정해 줄 수 있고 {input}, {personality} 형태를 통해서 변수를 쉽게 변경하여, 챗봇을 다양하게 활용할 수 있게 돼요!
오늘은 여기까지만 가볍게(?) 코드를 통해서 겪어보았고요. 내일(19일 수요일)까지 LangChain 및 RAG 이론 공부를 오전 10시까지 해오기로 해서, 이만! 이론을 공부하러 가겠습니다.