Créer une fonction qui retourne une réponse de LLM
Votre agent de clavardage dispose maintenant de plusieurs outils. Il reste néanmoins utile d'invoquer le LLM seul lorsqu'une question n'est liée à aucun des outils ajoutés à l'agent. Vous allez définir une fonction qui vérifie si le dernier message de la conversation contient des appels d'outil potentiels. S'il n'y en a pas, l'agent utilisera simplement le LLM pour renvoyer une réponse. Pour pouvoir gérer à la fois les requêtes de l'utilisateur et les réponses de l'agent, les modules suivants ont été importés pour traiter différents types de messages.
from langchain_core.messages import AIMessage, HumanMessage
Cette activité fait partie du cours
Concevoir des systèmes agentiques avec LangChain
Instructions de l’exercice
- Accédez au dernier message depuis
stateà l'aide de"messages". - Écrivez une condition pour vérifier si
last_messageest unAIMessageet si ce message contient aussi destool_calls. - Si la condition est remplie, retournez 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 passant l'historique complet de la conversation depuisstate["messages"].
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
# 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": [____.____(____["____"])]}