더북(TheBook)

examples/6_stateless.py

history = [
    HumanMessage(content="내 이름을 '철수'로 기억해줘."),
]
response1 = llm.invoke(history)
print(response1.content)
history.append(AIMessage(content=response1.content))
history.append(HumanMessage(content="내 이름이 뭐야?"))
response2 = llm.invoke(history)
print(response2.content) 

이전 대화 기록을 함께 전달하려면 첫 번째 질문과 모델의 응답을 history 목록에 추가한 뒤, 두 번째 질문을 이어서 넣어야 합니다. 이렇게 호출하면 두 번째 요청에도 앞선 대화 기록이 전달되므로 모델은 사용자가 앞에서 “철수”라는 이름을 말했다는 정보를 참고할 수 있습니다.

실제 챗봇 서비스에서는 이러한 방식으로 대화 기록을 관리합니다. 그러나 이 책에서 만드는 프로젝트는 긴 대화를 이어가는 챗봇이 아니라 텍스트 분석 요청을 처리하는 서비스이므로 stateless 구조를 사용합니다. stateless 구조에서는 각 요청을 독립적으로 처리하므로 이전 대화 기록을 저장하거나 관리할 필요가 없습니다. 또한 서버를 여러 대로 확장하기 쉽고, 요청 흐름을 추적하거나 오류를 분석할 때도 처리 과정을 단순하게 유지할 수 있습니다.