Agents Course documentation
Componentes de LangGraph
Componentes de LangGraph
Para crear aplicaciones con LangGraph necesitas conocer sus elementos principales. Exploremos los componentes fundamentales que conforman una aplicacion con LangGraph.
Una aplicación en LangGraph empieza con una entrada, y dependiendo de la ejecución, el flujo puede ir a una función o a otra hasta que llega al FINAL.
1. Estado(State)
Estado(State) es un concepto central en LangGraphh. Representa toda la información que fluye a traves de la aplicación.
from typing_extensions import TypedDict
class State(TypedDict):
graph_state: strEl estado es definido por el usuario, es por eso que los campos deben contruirse cuidadosamente para contener toda la información necesaria para el proceso de toma de decisiones!
💡 Tip: Piensa cuidadosamente que información necesita tu aplicación para rastrear entre pasos.
2. Nodos(Nodes)
Nodos(Nodes) son funciones de python. Cada nodo:
- Toma el estado como entrada
- Realiza alguna operación
- Regresa actualizaciones al estado
def node_1(state):
print("---Node 1---")
return {"graph_state": state['graph_state'] +" Yo estoy"}
def node_2(state):
print("---Node 2---")
return {"graph_state": state['graph_state'] +" feliz!"}
def node_3(state):
print("---Node 3---")
return {"graph_state": state['graph_state'] +" triste!"}Por ejemplo, los nodos pueden contener:
- llamadas a LLM: Generar texto o tomar decisiones
- llamadas a Tool: Interactuar con sistemas externos
- Lógica Condicional: Determinar los siguientes pasos
- Intervención Humana: Obtener datos del usuario
💡 Info: Algunos nodos necesarios para el flujo completo como START y END existen directamente desde langGraph.
3. Aristas (Edges)
Aristas (Edges) conectan nodos y definen los posibles caminos a través de tu grafo:
import random
from typing import Literal
def decide_mood(state) -> Literal["node_2", "node_3"]:
# A menudo, usaremos el estado para decidir el próximo nodo a visitar
usuario_entrada = state['graph_state']
# Aquí, hagamos simplemente una división 50 / 50 entre los nodos 2, 3
if random.random() < 0.5:
# 50% del tiempo, devolvemos el Nodo 2
return "node_2"
# 50% del tiempo, devolvemos el Nodo 3
return "node_3"RetryClaude can make mistakes. Please double-check responses.Las aristas(edges) pueden ser:
- Directas (Direct): Siempre van del nodo A al nodo B
- Condicionales (Conditional): Eligen el próximo nodo basándose en el estado actual
4. StateGraph
El StateGraph es el contenedor que alberga todo el flujo de trabajo de tu agente:
from IPython.display import Image, display
from langgraph.graph import StateGraph, START, END
# Construir grafo
builder = StateGraph(State)
builder.add_node("node_1", node_1)
builder.add_node("node_2", node_2)
builder.add_node("node_3", node_3)
# Lógica
builder.add_edge(START, "node_1")
builder.add_conditional_edges("node_1", decide_mood)
builder.add_edge("node_2", END)
builder.add_edge("node_3", END)
# Añadir
graph = builder.compile()¡Que luego puede ser visualizado!
# Ver
display(Image(graph.get_graph().draw_mermaid_png()))
Pero lo más importante, invocado::
graph.invoke({"graph_state" : "Hola, soy Lance."})output :
---Node 1---
---Node 3---
{'graph_state': 'Hola, soy Lance. ¡Estoy triste!'}¿Qué sigue?
En la siguiente sección, pondremos estos conceptos en práctica construyendo nuestro primer grafo. Este grafo permite a Alfred recibir tus correos electrónicos, clasificarlos y elaborar una respuesta preliminar si son genuinos.
Update on GitHub