Definir nodos y aristas para llamadas de función flexibles

Diseño de sistemas agénticos con LangChain

Dilini K. Sumanapala, PhD

Founder & AI Engineer, Genverv, Ltd.

Crear un flujo con múltiples herramientas

   

  • Varias herramientas disponibles

    • Palíndromo
    • Eventos históricos
    • Wikipedia

Flujo completo del chatbot

Diseño de sistemas agénticos con LangChain

Definir funciones del flujo de trabajo

   

  • Crear una función de parada

Nodos de chatbot y herramientas del flujo.

Diseño de sistemas agénticos con LangChain

Definir funciones del flujo de trabajo

   

  • Crear una función de parada

    • Comprobar si hay llamadas a herramientas

Reglas de la función de parada resaltadas.

Diseño de sistemas agénticos con LangChain

Definir funciones del flujo de trabajo

   

  • Crear una función de parada

    • Comprobar si hay llamadas a herramientas
    • Terminar la conversación si no hay

Reglas END resaltadas en el flujo

Diseño de sistemas agénticos con LangChain

Definir funciones del flujo de trabajo

   

  • Crear una función de parada

    • Comprobar si hay llamadas a herramientas
    • Terminar la conversación si no hay    
  • Crear un invocador de herramientas dinámico

    • Devolver la respuesta de la herramienta si hay llamada

Reglas de Call_model resaltadas.

Diseño de sistemas agénticos con LangChain

Definir funciones del flujo de trabajo

   

  • Crear una función de parada

    • Comprobar si hay llamadas a herramientas
    • Terminar la conversación si no hay    
  • Crear un invocador de herramientas dinámico

    • Devolver la respuesta de la herramienta si hay llamada
    • Invocar el LLM con solo el nodo del chatbot si no hay llamadas

Reglas de Call_model resaltadas.

Diseño de sistemas agénticos con LangChain

Definir funciones del flujo de trabajo

   

  • Crear una función de parada

    • Comprobar si hay llamadas a herramientas
    • Terminar la conversación si no hay    
  • Crear un invocador de herramientas dinámico

    • Devolver la respuesta de la herramienta si hay llamada
    • Invocar el LLM con solo el nodo del chatbot si no hay llamadas
  • Compilar el grafo completo

Reglas de Call_model resaltadas.

Diseño de sistemas agénticos con LangChain

Crear una función de condición de parada

from langgraph.graph import MessagesState, START, END


# Usa MessagesState para definir el estado de la función de parada def should_continue(state: MessagesState):
# Obtén el último mensaje del estado last_message = state["messages"][-1]
# Comprueba si el último mensaje incluye llamadas a herramientas if last_message.tool_calls: return "tools"
# Termina la conversación si no hay llamadas a herramientas return END
Diseño de sistemas agénticos con LangChain

Crear un invocador de herramientas dinámico

# Extrae el último mensaje del historial
def call_model(state: MessagesState):

last_message = state["messages"][-1]
# Si el último mensaje tiene llamadas a herramientas, devuelve la respuesta de la herramienta if isinstance(last_message, AIMessage) and last_message.tool_calls:
# Devuelve los mensajes de la llamada a la herramienta return {"messages": [AIMessage(content=last_message.tool_calls[0]["response"])]}
# En caso contrario, continúa con una respuesta normal del LLM return {"messages": [model_with_tools.invoke(state["messages"])]}
Diseño de sistemas agénticos con LangChain

Crear el grafo

workflow = StateGraph(MessagesState)












Diseño de sistemas agénticos con LangChain

Crear el grafo

workflow = StateGraph(MessagesState)


# Añade nodos para el chatbot y las herramientas workflow.add_node("chatbot", call_model) workflow.add_node("tools", tool_node)

Nodos de chatbot y herramientas.

Diseño de sistemas agénticos con LangChain

Crear el grafo

workflow = StateGraph(MessagesState)


# Añade nodos para el chatbot y las herramientas workflow.add_node("chatbot", call_model) workflow.add_node("tools", tool_node)
# Conecta el nodo START con el chatbot workflow.add_edge(START, "chatbot")

Añadir el nodo START al chatbot.

Diseño de sistemas agénticos con LangChain

Crear el grafo

workflow = StateGraph(MessagesState)


# Añade nodos para el chatbot y las herramientas workflow.add_node("chatbot", call_model) workflow.add_node("tools", tool_node)
# Conecta el nodo START con el chatbot workflow.add_edge(START, "chatbot")
# Define condiciones y vuelve al chatbot workflow.add_conditional_edges("chatbot", should_continue, ["tools", END])

Grafo con condiciones añadidas.

Diseño de sistemas agénticos con LangChain

Crear el grafo

workflow = StateGraph(MessagesState)


# Añade nodos para el chatbot y las herramientas workflow.add_node("chatbot", call_model) workflow.add_node("tools", tool_node)
# Conecta el nodo START con el chatbot workflow.add_edge(START, "chatbot")
# Define condiciones y vuelve al chatbot workflow.add_conditional_edges("chatbot", should_continue, ["tools", END])
workflow.add_edge("tools", "chatbot")

Flujo del grafo completo.

Diseño de sistemas agénticos con LangChain

Añadir memoria

# Configura la memoria y compila el flujo
memory = MemorySaver()

app = workflow.compile( checkpointer=memory)
display(Image(app.get_graph() .draw_mermaid_png()))

Flujo del grafo completo.

Diseño de sistemas agénticos con LangChain

¡Vamos a practicar!

Diseño de sistemas agénticos con LangChain

Preparing Video For Download...