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
Istruzioni dell'esercizio
- Accedi all'ultimo messaggio da
stateusando"messages". - Scrivi una condizione che verifichi se
last_messageè unAIMessagee se questo messaggio contiene anchetool_calls. - Se la condizione è soddisfatta, restituisci la prima
"response"ditool_callspresa dallast_messagenel campocontentdiAIMessage. - Se la condizione non è soddisfatta, applica
.invoke()amodel_with_toolsper generare una risposta, passando l'intera cronologia della conversazione dastate["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": [____.____(____["____"])]}