2.5.5 ChatPromptTemplate이 필요한 이유
지금까지는 모델에 역할과 대화 맥락을 전달하기 위해 메시지 목록을 직접 작성하는 방식으로 코드를 구성했습니다.
text = "분석할 텍스트"
language = "한국어"
messages = [
SystemMessage(content="텍스트 분석 전문가입니다."),
HumanMessage(content=f"다음 텍스트를 한국어로 요약해줘:\n\nAI는..."),
]
response = llm.invoke(messages)
이 방식은 간단한 예제를 만들 때는 괜찮습니다. 하지만 실제 서비스 코드에서는 같은 형태의 메시지를 반복해서 작성해야 하는 경우가 많습니다. 예를 들어 이 책에서 만드는 AI 에이전트 서비스에는 요약, 감성 분석, 재작성 기능이 들어갑니다. 기능마다 메시지 구조를 매번 직접 작성하기 시작하면 코드가 길어집니다. 또한 문구를 수정해야 할 때 여러 파일에서 같은 내용을 반복 수정해야 할 수도 있습니다.
이 문제는 랭체인에서 제공하는 ChatPromptTemplate으로 해결할 수 있습니다. ChatPromptTemplate은 메시지 구조를 템플릿 형태로 관리하는 기능입니다. 메시지 틀은 한 번만 정의하고, 실제로 바뀌는 값만 나중에 넣어 재사용할 수 있습니다.