Study/AI
[LangChain] PromptTemplate
728x90
반응형
메시지를 입력했을때 처음부터 끝까지 모든 내용을 입력했는데, 렝체인을 사용하면 대부분의 내용은 채워져있고, 일부분의 내용만 수정해서 사용할수 있다.
from langchain_core.prompts import PromptTemplate
template = """
다음 문장을 {language}로 번역해.
---
{text}
"""
prompt_tempalte = PromptTemplate(
input_variables=["language", "text"],
template=template
)
PromptTemplater객체를 만들고 'input_variables'에는 template에 사용될 변수명, 'template'에는 템플릿 문자열을 넣어준다.
prompt = prompt_tempalte.format(language="영어", text="오늘은 피자를 먹어야지")
prompt
=> '\n다음 문장을 영어로 번역해.\n---\n오늘은 피자를 먹어야지\n'
prompt = prompt_tempalte.format(language="독일어", text="오늘은 스파게티를 먹어야지")
prompt
=> '\n다음 문장을 영어로 번역해.\n---\n오늘은 피자를 먹어야지\n'
format()메서드를 사용하고 위의 input_variables에 넣었던 변수명에 값을 채우면 프롬프트 메시지가 만들어진다.
llm모델은 대화형모델이다. 시스템 메시지로 정의를 해두고, 휴먼메시지와 AI메시지가 왔다갔다 하는식으로 대화가 된다. 위에서 만든 일반 프롬프트메시지는 하나의 문장내에서 자체적으로 처리를 하는데, 시스템 메시지, AI메시지, 휴먼 메시지를 구분지어서 할 수 있도록 대화형 프롬프트 메시지를 만들어본다.
from langchain_core.prompts import ChatPromptTemplate
prompt_template = ChatPromptTemplate.from_messages(
messages= [
("system", "사용자가 입력한 문장을 {language}로 번역해."),
("human", "{text}")
]
)
prompt = prompt_template.format(language="일본어", text="내일은 스파게티를 먹어야지")
prompt
=> 'System: 사용자가 입력한 문장을 일본어로 번역해.\nHuman: 내일은 스파게티를 먹어야지'
messages로부터 ChatPromptTemplate 객체를 만들고 format()을 통해 프롬프트메시지를 만든다.
from langchain_openai import ChatOpenAI
from langchain_core.output_parsers import StrOutputParser
llm = ChatOpenAI(model="gpt-4o-mini")
parser = StrOutputParser()
chain = prompt_template | llm | parser
# 입력값을 주게 되면 prompt_template로 부터 메시지가 만들어지게되고, llm을 통해 gpt와 대화를 하게 되고, 결과물을 Parser로 넘긴다.
respones = chain.invoke(
{
"language": "영어",
"text": "내일은 스파게티를 먹어야지",
}
)
respones
=> 'I will eat spaghetti tomorrow.'
invoke()메서드에 파라미터명을 넣지않으면 input으로 됨. input={}로 넣어도 동일함
728x90
반응형
'Study > AI' 카테고리의 다른 글
[LangChain] 메모리 관리 (0) | 2025.08.10 |
---|---|
[LangChain] 메모리 (4) | 2025.08.10 |
[LangChain] Parser (5) | 2025.08.10 |
[LangChain] LLM과 기본 대화하기 (1) | 2025.08.10 |
[LangChain] LangChain이란 (4) | 2025.08.10 |
댓글