Organiser les sorties du chatbot avec la mémoire

Concevoir des systèmes agentiques avec LangChain

Dilini K. Sumanapala, PhD

Founder & AI Engineer, Genverv, Ltd.

Diffuser les sorties de plusieurs outils

    Flux de travail du graphe complet.

 

  • Afficher les sorties avec plusieurs outils
      - Agent : [Outil 1 : réponse]
      - Agent : [Outil 2 : réponse]
    
  • Afficher la requête et activer la mémoire
      - User : [Requête]
      - Agent : [Outil 1 : réponse]
    
      - User : [Question de suivi]
      - Agent : [Outil 1 : réponse de suivi]
    
Concevoir des systèmes agentiques avec LangChain

Diffuser les sorties de plusieurs outils

from langchain_core.messages import AIMessage, HumanMessage


config = {"configurable": {"thread_id": "1"}}
# Créer le message d’entrée avec la requête utilisateur def multi_tool_output(query):
inputs = {"messages": [HumanMessage(content=query)]}
# Diffuser les messages et métadonnées depuis l’application chatbot for msg, metadata in app.stream(inputs, config, stream_mode="messages"):
# Vérifier que le message a du contenu et ne vient pas d’un humain if msg.content and not isinstance(msg, HumanMessage): print(msg.content, end="", flush=True)
print("\n")
Concevoir des systèmes agentiques avec LangChain

Tester avec plusieurs outils

Vérifier l’assignation dynamique des outils
multi_tool_output("Is `Stella won no wallets` a palindrome?")

multi_tool_output("What happened on April 12th, 1955?")
L’expression « Stella won no wallets » est un palindrome.

Oui, l’expression "Stella won no wallets" est un palindrome.
Le 12 avril 1955 est notable, surtout en science et technologie. Ce jour-là, le premier vaccin antipoliomyélitique réussi, mis au point par le Dr Jonas Salk, a été annoncé au public. Cette avancée a marqué un tournant en santé publique et a mené à des campagnes de vaccination à grande échelle, contribuant presque à l’éradication de la polio...
Concevoir des systèmes agentiques avec LangChain

Questions de suivi avec plusieurs outils

# Afficher d’abord la requête utilisateur pour chaque interaction
def user_agent_multiturn(queries):
    for query in queries:
        print(f"User: {query}")


# Diffuser les messages correspondant aux requêtes, sans les métadonnées print("Agent: " + "".join(msg.content for msg, metadata in app.stream( {"messages": [HumanMessage(content=query)]}, config, stream_mode="messages")
# Filtrer les messages humains pour n’imprimer que ceux de l’agent if msg.content and not isinstance(msg, HumanMessage)) + "\n")
queries = ["What happened on the 12 April 1961?", "What about 10 December 1948?", "Is `Mr. Owl ate my metal worm?` a palindrome?", "What about 'palladium stadium?'"] user_agent_multiturn(queries)
Concevoir des systèmes agentiques avec LangChain

Sortie de conversation complète

  • Événements historiques
User: Que s’est-il passé le 12 avril 1961 ?
Agent: Le 12 avril 1961, Youri Gagarine, cosmonaute soviétique, est devenu le premier humain 
dans l’espace à bord de Vostok 1...

User: Et le 22 novembre 1963 ?
Agent: Le 10 décembre 1948... marque l’adoption de la Déclaration universelle des droits de l’homme (DUDH).
  • Test de palindrome
User: « Mr. Owl ate my metal worm? » est-il un palindrome ?
Agent: L’expression « Mr. Owl ate my metal worm? » est un palindrome...

User: Et « palladium stadium » ?
Agent: Non, l’expression `palladium stadium` n’est pas un palindrome...
Concevoir des systèmes agentiques avec LangChain

Passons à la pratique !

Concevoir des systèmes agentiques avec LangChain

Preparing Video For Download...