Włącz wieloturową rozmowę z pamięcią
Twój chatbot jest już prawie gotowy do przekazania administracji szkoły! Aby uczniowie mogli komfortowo korzystać z nauki, ważne jest umożliwienie im zadawania pytań uzupełniających. Dzięki temu, jeśli odpowiedź chatbota będzie niekompletna, uczniowie będą mogli doprecyzować swoje pytania w toku rozmowy. Teraz dostosujesz funkcję strumieniowania chatbota tak, aby obsługiwała wiele tur – wyświetlając zarówno zapytanie użytkownika, jak i odpowiedź chatbota. Aby włączyć pamięć, LangGraph będzie wysyłać pełną historię rozmowy do modelu językowego przy każdym pytaniu uzupełniającym. Na początek parametry config zostały już ustawione dla jednego użytkownika:
config = {"configurable": {"thread_id": "1"}}
To ćwiczenie jest częścią kursu
Projektowanie systemów agentowych z LangChain
Instrukcje do ćwiczenia
- Dla każdej tury rozpocznij od wyświetlenia zapytania
queryz listyqueries. - Iteruj po
msgimetadataza pomocąapp.stream(), przekazującqueryjakocontentwHumanMessagewraz zconfig, i połącz wartościmsg.content. - Aby wyodrębnić odpowiedzi chatbota, wyświetl
msg.content, pomijając wiadomości oznaczone jakoHumanMessage, i dodaj nową linię przed następnym zapytaniem.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# 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)