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
stateen utilisant"messages". - Écrivez une instruction conditionnelle pour vérifier si le
last_messageest unAIMessageet si ce message contient également untool_calls. - Si la condition est remplie, renvoyez le premier
"response"detool_callsextrait delast_messagedans le champcontentdeAIMessage. - Si la condition n'est pas remplie, appliquez
.invoke()àmodel_with_toolspour 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": [____.____(____["____"])]}