CommencezCommencez gratuitement

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

Voir le cours

Instructions de l’exercice

  • Accédez au dernier message depuis state à l'aide de "messages".
  • Écrivez une condition pour vérifier si last_message est un AIMessage et si ce message contient aussi des tool_calls.
  • Si la condition est remplie, retournez le premier "response" de tool_calls extrait de last_message dans le champ content de AIMessage.
  • Si la condition n'est pas remplie, appliquez .invoke() à model_with_tools pour générer une réponse, en passant l'historique complet de la conversation depuis state["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": [____.____(____["____"])]}
Modifier et exécuter le code