Crea una función que devuelva una respuesta del LLM
Tu chatbot ya tiene muchas herramientas disponibles. Aun así, es útil invocar el LLM por sí solo cuando una pregunta no está relacionada con ninguna de las herramientas añadidas al chatbot. Ahora definirás una función que comprueba si el último mensaje de la conversación contiene posibles llamadas a herramientas. Si no las hay, el chatbot simplemente usará el LLM para devolver una respuesta. Para poder manejar tanto las consultas del usuario como las respuestas del chatbot, se han importado los siguientes módulos para que puedas gestionar distintos tipos de mensajes.
from langchain_core.messages import AIMessage, HumanMessage
Este ejercicio forma parte del curso
Diseño de sistemas agénticos con LangChain
Instrucciones del ejercicio
- Accede al último mensaje del
stateusando"messages". - Escribe una sentencia condicional para comprobar si
last_messagees unAIMessagey que este mensaje también contienetool_calls. - Si se cumple la condición, devuelve el primer
"response"detool_callstomado delast_messageen el campocontentdeAIMessage. - Si no se cumple la condición, aplica
.invoke()amodel_with_toolspara generar una respuesta, pasando el historial completo de la conversación desdestate["messages"].
Ejercicio interactivo práctico
Prueba este ejercicio y completa el código de muestra.
# 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": [____.____(____["____"])]}