Crea una función para devolver una respuesta LLM
Tu chatbot dispone ahora de un montón de herramientas. Sigue siendo útil invocar al LLM por sí mismo cuando una pregunta no está relacionada con ninguna de las herramientas que se han añadido al chatbot. Ahora definirás una función que compruebe el último mensaje de la conversación en busca de posibles llamadas a herramientas. Si no hay ninguno disponible, el chatbot utilizará simplemente la dirección LLM para dar una respuesta. Para poder gestionar 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 Agenéticos con LangChain
Instrucciones de ejercicio
- Accede al último mensaje desde
state
utilizando"messages"
. - Escribe una declaración condicional para comprobar si el
last_message
es unAIMessage
y que este mensaje también contienetool_calls
. - Si se cumple la condición, devuelve el primer
"response"
detool_calls
tomado dellast_message
en el campocontent
delAIMessage
. - Si no se cumple la condición, aplica
.invoke()
amodel_with_tools
para generar una respuesta, pasando el historial completo de la conversación desdestate["messages"]
.
Ejercicio interactivo práctico
Pruebe este ejercicio completando este 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": [____.____(____["____"])]}