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 del ejercicio
- Accede al último mensaje desde
stateutilizando"messages". - Escribe una declaración condicional para comprobar si el
last_messagees unAIMessagey que este mensaje también contienetool_calls. - Si se cumple la condición, devuelve el primer
"response"detool_callstomado dellast_messageen el campocontentdelAIMessage. - 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": [____.____(____["____"])]}