IniziaInizia gratis

Crea una funzione che restituisca una risposta dell'LLM

Il tuo chatbot ora dispone di molti tool. È comunque utile invocare l'LLM da solo quando una domanda non è collegata a nessuno dei tool aggiunti al chatbot. Ora definirai una funzione che controlla l'ultimo messaggio della conversazione per eventuali chiamate a tool. Se non ce ne sono, il chatbot userà semplicemente l'LLM per restituire una risposta. Per poter gestire sia le richieste dell'utente sia le risposte del chatbot, i seguenti moduli sono già stati importati per gestire i diversi tipi di messaggi.

from langchain_core.messages import AIMessage, HumanMessage

Questo esercizio fa parte del corso

Progettare sistemi agentici con LangChain

Visualizza il corso

Istruzioni dell'esercizio

  • Accedi all'ultimo messaggio da state usando "messages".
  • Scrivi una condizione che verifichi se last_message è un AIMessage e se questo messaggio contiene anche tool_calls.
  • Se la condizione è soddisfatta, restituisci la prima "response" di tool_calls presa dal last_message nel campo content di AIMessage.
  • Se la condizione non è soddisfatta, applica .invoke() a model_with_tools per generare una risposta, passando l'intera cronologia della conversazione da state["messages"].

Esercizio pratico interattivo

Prova a risolvere questo esercizio completando il codice di esempio.

# 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": [____.____(____["____"])]}
Modifica ed esegui il codice