Permettre une conversation à plusieurs tours avec mémoire
Vous êtes sur le point de partager la mise à jour de votre chatbot avec l'administration de l'école ! Pour que l'expérience d'apprentissage des étudiants se déroule sans heurts, il est important de leur permettre de poser des questions complémentaires. Ainsi, s'il manque des informations dans la première réponse du chatbot, les élèves peuvent modifier leurs questions en discutant avec lui. Vous allez maintenant adapter la fonction de streaming de votre chatbot pour permettre des tours multiples, en imprimant à la fois la requête de l'utilisateur et la réponse du chatbot. Pour permettre la mémorisation, LangGraph enverra l'intégralité de la conversation à LLM lorsque des questions complémentaires seront posées. Pour commencer, vos paramètres config
ont déjà été définis pour un utilisateur :
config = {"configurable": {"thread_id": "1"}}
Cet exercice fait partie du cours
Concevoir des systèmes agentiques avec LangChain
Instructions
- Pour chaque tour, commencez par imprimer le site
query
de l'utilisateur à partir de la listequeries
. - Parcourez
msg
etmetadata
en utilisantapp.stream()
, en passantquery
commecontent
deHumanMessage
avecconfig
, et joignez les valeurs demsg.content
. - Pour extraire les réponses du chatbot, imprimez
msg.content
en excluant toutmsg
étiquetéHumanMessage
, en ajoutant une nouvelle ligne avant la requête suivante.
Exercice interactif pratique
Essayez cet exercice en complétant cet exemple de code.
# 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)