Conversation avec un agent ReAct

Concevoir des systèmes agentiques avec LangChain

Dilini K. Sumanapala, PhD

Founder & AI Engineer, Genverv, Ltd.

Conversation

L’aire d’un rectangle de côtés 5 et 7 est 35 unités carrées.
  • Validation des réponses

  • Utilisateur : « Quelle est l’aire d’un rectangle de côtés 5 et 7 ? »

  • Agent : « L’aire d’un rectangle de côtés 5 et 7 est 35 unités carrées. »
Concevoir des systèmes agentiques avec LangChain

Conversation

tools = [rectangle_area]
query = "Quelle est l’aire d’un rectangle de côtés 14 et 4 ?"


# Create the ReAct agent app = create_react_agent(model, tools)
# Invoke the agent with a query and store the messages response = app.invoke({"messages": [("human", query)]})
# Define and print the input and output messages print({ "user_input": query, "agent_output": response["messages"][-1].content})
Concevoir des systèmes agentiques avec LangChain

Sortie de la conversation

{'user_input': 'Quelle est l’aire d’un rectangle de côtés 14 et 4 ?',
 'agent_output': 'L’aire d’un rectangle de côtés 14 et 4 est 56 
 unités carrées.'}
Concevoir des systèmes agentiques avec LangChain

Questions de suivi

  • Suivi :
    • Utilisateur : « Et pour des côtés 12 et 14 ? »
  • Historique :
    • Utilisateur : « Quelle est l’aire d’un rectangle de côtés 5 et 7 ? »
    • Agent : « L’aire d’un rectangle de côtés 5 et 7 est 35 unités carrées. »
    • Utilisateur : « Et pour des côtés 12 et 14 ? »
    • Agent : « L’aire d’un rectangle de côtés 12 et 14 est 168 unités carrées. »
  • Sortie
    • Utilisateur : « Et pour des côtés 12 et 14 ? »
    • Agent : « L’aire d’un rectangle de côtés 12 et 14 est 168 unités carrées. »
Concevoir des systèmes agentiques avec LangChain

Questions de suivi

{'user_input': 'Et pour des côtés 12 et 14 ?',

'agent_output': ['HumanMessage: Quelle est l’aire d’un rectangle de côtés 5 et 7 ?', 'AIMessage: L’aire d’un rectangle de côtés 5 et 7 est 35 unités carrées.', 'HumanMessage: Et pour des côtés 12 et 14 ?', 'AIMessage: L’aire d’un rectangle de côtés 12 et 14 est 168 unités carrées.',
'HumanMessage: Et pour des côtés 12 et 14 ?', 'AIMessage: L’aire d’un rectangle de côtés 12 et 14 est 168 unités carrées.']}
Concevoir des systèmes agentiques avec LangChain

Historique de conversation

from langchain_core.messages import 
HumanMessage, AIMessage












Concevoir des systèmes agentiques avec LangChain

Historique de conversation

from langchain_core.messages import 
HumanMessage, AIMessage


message_history = messages["messages"]

Début de la configuration de conversation linéaire avec « historique des messages ».

Concevoir des systèmes agentiques avec LangChain

Historique de conversation

from langchain_core.messages import 
HumanMessage, AIMessage

message_history = messages["messages"]

new_query = "Et pour des côtés 4 et 3 ?"

Configuration de conversation mise à jour avec une nouvelle requête.

Concevoir des systèmes agentiques avec LangChain

Historique de conversation

from langchain_core.messages import 
HumanMessage, AIMessage

message_history = messages["messages"]

new_query = "Et pour des côtés 4 et 3 ?"
# Invoke the app with the full message history messages = app.invoke({"messages": message_history + [("human", new_query)]})

Configuration de conversation mise à jour avec l’appel de l’application.

Concevoir des systèmes agentiques avec LangChain

Historique de conversation

# Extract the human and AI messages
filtered_messages = [msg for msg in 
                    messages["messages"] if 
                    isinstance(msg, 
                    (HumanMessage, 
                    AIMessage)) 
                    and msg.content.strip()]








Configuration de conversation mise à jour avec le filtrage des messages.

Concevoir des systèmes agentiques avec LangChain

Historique de conversation

# Extract the human and AI messages
filtered_messages = [msg for msg in 
                    messages["messages"] if 
                    isinstance(msg, 
                    (HumanMessage, 
                    AIMessage)) 
                    and msg.content.strip()]


# Format and print the final result print({ "user_input": new_query, "agent_output": [f"{msg.__class__.__name__}: {msg.content}" for msg in filtered_messages]})

Configuration de conversation mise à jour avec l’affichage des messages.

Concevoir des systèmes agentiques avec LangChain

Sortie de l’historique de conversation

{'user_input': 'Et pour des côtés 4 et 3 ?',

'agent_output': ['HumanMessage: Quelle est l’aire d’un rectangle de côtés 14 et 4 ?', 'AIMessage: L’aire d’un rectangle de côtés 14 et 4 est 56 unités carrées.', 'HumanMessage: Et pour des côtés 4 et 3 ?', 'AIMessage: L’aire d’un rectangle de côtés 4 et 3 est 12 unités carrées.',
'HumanMessage: Et pour des côtés 4 et 3 ?', 'AIMessage: L’aire d’un rectangle de côtés 4 et 3 est 12 unités carrées.']}
Concevoir des systèmes agentiques avec LangChain

Passons à la pratique !

Concevoir des systèmes agentiques avec LangChain

Preparing Video For Download...