Créez une fonction pour renvoyer une réponse LLM
Votre chatbot dispose désormais de nombreux outils. Il est toujours utile d'invoquer le site LLM lorsqu'une question n'a aucun rapport avec les outils qui ont été ajoutés au chatbot. Vous allez maintenant définir une fonction qui vérifie que le dernier message de la conversation ne contient pas d'appels d'outils potentiels. Si aucune n'est disponible, le chatbot utilisera simplement le site LLM pour renvoyer une réponse. Afin de pouvoir traiter à la fois les requêtes de l'utilisateur et les réponses du chatbot, les modules suivants ont été importés pour vous permettre de traiter différents types de messages.
from langchain_core.messages import AIMessage, HumanMessage
Cet exercice fait partie du cours
Concevoir des systèmes agentiques avec LangChain
Instructions
- Accédez au dernier message du site
state
en utilisant"messages"
. - Écrivez une instruction conditionnelle pour vérifier si le
last_message
est unAIMessage
et si ce message contient également untool_calls
. - Si la condition est remplie, renvoyez le premier
"response"
detool_calls
extrait delast_message
dans le champcontent
deAIMessage
. - Si la condition n'est pas remplie, appliquez
.invoke()
àmodel_with_tools
pour générer une réponse, en transmettant l'historique complet de la conversation à partir destate["messages"]
.
Exercice interactif pratique
Essayez cet exercice en complétant cet exemple de code.
# Extract the last message from the history
def call_model(state: MessagesState):
____ = ____["____"][____]
# If the last message has tool calls, return the tool's response
if isinstance(____, ____) and ____.____:
# Return only the messages from the tool call
return {"messages": [____(content=____.____[0]["____"])]}
# Otherwise, proceed with a regular LLM response
return {"messages": [____.____(____["____"])]}