메모리로 멀티턴 대화를 활성화하기
이제 학교 행정팀과 챗봇 업데이트를 공유할 준비가 거의 끝났어요! 학생들이 원활하게 학습하려면 후속 질문을 할 수 있어야 해요. 이렇게 하면 챗봇의 첫 답변에 빠진 정보가 있을 때, 학생들이 대화를 이어가며 질문을 보완할 수 있어요. 이제 스트리밍 함수를 멀티턴을 지원하도록 수정해, 사용자의 질의와 챗봇의 답변을 모두 출력해 보세요. 메모리를 활성화하면, 후속 질문이 들어올 때 LangGraph가 전체 대화를 LLM에 전달해요. 시작을 위해, 한 사용자를 위한 config 파라미터가 이미 설정되어 있어요:
config = {"configurable": {"thread_id": "1"}}
이 연습은 강의의 일부입니다
LangChain으로 에이전트형 시스템 설계하기
연습 안내
- 각 턴마다
queries리스트에서 사용자의query를 먼저 출력하세요. app.stream()을 사용해msg와metadata를 순회하고,config와 함께HumanMessage의content로query를 전달하여 생성되는msg.content값을 이어 붙이세요.- 챗봇의 응답을 추출하려면,
HumanMessage로 라벨된msg는 제외하고msg.content를 출력한 뒤, 다음 질의 전에 새 줄을 추가하세요.
실습형 인터랙티브 연습
이 예제를 이 샘플 코드를 완성하여 풀어보세요.
# Print the user query first for every interaction
def user_agent_multiturn(queries):
for ____ in ____:
print(f"User: {____}")
# Stream through messages corresponding to queries, excluding metadata
print("Agent: " + "".join(____.____ for ____, ____ in app.____(
{"messages": [____(____=_____)]}, config, stream_mode="messages")
# Filter out the human messages to print agent messages
if ____.____ and not isinstance(____, ____)) + "____")
queries = ["Is `stressed desserts?` a palindrome?", "What about the word `kayak`?",
"What happened on the May 8th, 1945?", "What about 9 November 1989?"]
user_agent_multiturn(queries)