CommencerCommencer gratuitement

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

Afficher le cours

Instructions

  • Pour chaque tour, commencez par imprimer le site query de l'utilisateur à partir de la liste queries.
  • Parcourez msg et metadata en utilisant app.stream(), en passant query comme content de HumanMessage avec config, et joignez les valeurs de msg.content.
  • Pour extraire les réponses du chatbot, imprimez msg.content en excluant tout msg é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)
Modifier et exécuter le code