ComenzarEmpieza gratis

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

Ver curso

Instrucciones del ejercicio

  • Accede al último mensaje del state usando "messages".
  • Escribe una sentencia condicional para comprobar si last_message es un AIMessage y que este mensaje también contiene tool_calls.
  • Si se cumple la condición, devuelve el primer "response" de tool_calls tomado de last_message en el campo content de AIMessage.
  • Si no se cumple la condición, aplica .invoke() a model_with_tools para generar una respuesta, pasando el historial completo de la conversación desde state["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": [____.____(____["____"])]}
Editar y ejecutar código