Inicio / Artículos

LangChain vs LangGraph: roles, usuarios y cuándo elegir cada uno

Qué posee LangChain y qué posee LangGraph: cadenas frente a grafos duraderos, para quién está destinada realmente cada biblioteca, y una lista de verificación operativa para elegir una.

Editor: REACTAPP.TOP4 min de lectura965 palabras

Fuentes: LangChain and LangGraph Explained: What They Are, Who Uses Them, and How to Build AI Agents with Them

Esta guía reconstruye un camino funcional para: LangChain y LangGraph Explicados: Qué son, quién los utiliza y cómo crear agentes de IA con ellos. Se enfoca en contratos, verificaciones y código que se puede incorporar a un repositorio sin tener que adivinar la intención. Para obtener una visión general, defina las entradas, el responsable de cada paso y los criterios de finalización antes de modificar el código. Los operadores deben poder volver a ejecutar el paso a partir de un punto de control conocido sin tener que adivinar el estado oculto. Mantenga la configuración fuera del código de la aplicación. Los archivos de entorno, los almacenes de secretos y las banderas de funcionalidad deben estar en un lugar donde los operadores puedan auditarlos sin necesidad de leer todo el grafo.

llm = ChatOpenAI()
if (userAskedForFlights()) {
    callFlightApi();
}
if (resultsAvailable()) {
    summarizeResults();
}
User Question
      ↓
Reason
      ↓
Search Tool
      ↓
Analyze Result
      ↓
Answer
User Request
      |
      +---- Search
      |
      +---- Database
      |
      +---- Human Approval
                |
                v
             Continue
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(
    model="gpt-4o"
)
def get_weather(city):
    return weather_api(city)
tools = [get_weather]
Need weather information
weather = get_weather("Bangalore")
{
  "temperature": 34,
  "condition": "Sunny"
}
The current temperature in Bangalore is 34°C and the weather is sunny.
from langchain_openai import ChatOpenAI

llm = ChatOpenAI(
    model="gpt-4o"
)
response = llm.invoke(
    "Explain microservices in simple terms."
)
print(response.content)
User Request
      |
      v
Analyze Request
      |
      +---- Search Agent
      |
      +---- Database Agent
      |
      +---- Human Review
      |
      v
Generate Final Response
from langgraph.graph import StateGraph

builder = StateGraph(AgentState)

builder.add_node("search", search_node)
builder.add_node("answer", answer_node)

builder.set_entry_point("search")

builder.add_edge("search", "answer")

graph = builder.compile()
class AgentState(TypedDict):
    question: str
    search_result: str
    answer: str


Example:

{
  "question": "What is LangGraph?",
  "search_result": "",
  "answer": ""
}
def search_node(state):
    ...
builder.add_node("search", search_node)
builder.add_node("answer", answer_node)
builder.add_edge(
    "search",
    "answer"
)
builder.set_entry_point("search")
graph = builder.compile()
              State
                │
                ▼
        ┌─────────────┐
        │   Search    │  ← Node
        └─────────────┘
                │
                │  ← Edge
                ▼
        ┌─────────────┐
        │   Answer    │  ← Node
        └─────────────┘
                │
                ▼
         Updated State

Un mensaje de AI Mind

Para “Un mensaje de AI Mind”, defina las entradas, el responsable del paso y los criterios de finalización antes de modificar el código. Los operadores deben poder volver a ejecutar el paso a partir de un punto de control conocido sin tener que adivinar el estado oculto. Documente tanto la ruta óptima como la ruta de recuperación. Las reintentos, los controles humanos y el manejo de correos no entregados forman parte del producto, no son mejoras posteriores. Vincule estrictamente los esquemas de las herramientas. Los argumentos de texto libre amplios invitan a inyecciones y hacen que las auditorías sean costosas.

Lista de verificación operativa

Para la lista de verificación operativa, defina las entradas, el responsable de cada paso y los criterios de finalización antes de modificar el código. Los operadores deben poder volver a ejecutar el paso a partir de un punto de control conocido sin tener que adivinar el estado oculto.

Registre los tiempos y costos junto con los resultados funcionales. La visibilidad temprana evita facturas inesperadas cuando el proceso pasa de entornos de demostración a entornos compartidos.

Coloque un punto de control después de llamadas a modelos costosas para que una repetición no genere nuevos costos por el mismo trabajo.

Mantenga el estado del grafo simple y tipado. Los bloques anidados ocultan qué nodo escribió qué campo e impiden continuar después de interrupciones.

Escriba un manual breve: cómo rotar claves, cómo vaciar la cola y cómo revertir el último cambio.

Prefiera unidades pequeñas y verificables sobre scripts extensos. Cuando un paso falla, el error debe indicar una única responsabilidad en lugar de un proceso complicado.

Antes de promocionar la solución, congele las versiones, obtenga una transcripción de referencia para el camino crítico y confirme los pasos de reversión. Los entornos compartidos requieren límites de velocidad, verificaciones de asignación y un responsable claro para la rotación de secretos. Prefiera una fiabilidad sencilla a demostraciones ingeniosas pero puntuales.

Para el punto de refuerzo número 0, defina las entradas, el responsable del paso y los criterios de finalización antes de modificar el código. Los operadores deben poder volver a ejecutar el paso a partir de un punto de control conocido sin tener que adivinar el estado oculto.

Mantenga la configuración fuera del código de la aplicación. Los archivos de entorno, los almacenes de secretos y las banderas de funcionalidad deben estar en un único lugar que los operadores puedan auditar sin necesidad de leer todo el sistema.

Separe la planificación de la ejecución de las herramientas. El planificador propone; el ejecutor realiza los cambios; el verificador comprueba los resultados en relación con el objetivo.

Para la nota de fortalecimiento 1, defina las entradas, el responsable del paso y los criterios de finalización antes de modificar el código. Los operadores deben poder volver a ejecutar el paso a partir de un punto de control conocido sin tener que adivinar el estado oculto.

Preferir unidades pequeñas y verificables en lugar de scripts extensos. Cuando un paso falla, el error debe indicar una única responsabilidad y no un proceso complicado.

Delimite estrictamente los esquemas de las herramientas. Los argumentos de texto libre amplios facilitan inyecciones y hacen que las auditorías sean costosas.

Para la nota de fortalecimiento 2, defina las entradas, el responsable del paso y los criterios de finalización antes de modificar el código. Los operadores deben poder volver a ejecutar el paso a partir de un punto de control conocido sin tener que adivinar el estado oculto.

Registre los tiempos y costos junto con los resultados funcionales. La visibilidad temprana evita facturas inesperadas cuando el proceso pasa de entornos de demostración a entornos compartidos.

Punto de control después de las llamadas al modelo costosas, para que un intento de repetición no vuelva a facturar el mismo trabajo.

Para la nota 3 de fortalecimiento, defina las entradas, el responsable del paso y los criterios de finalización antes de modificar el código. Los operadores deben poder volver a ejecutar el paso a partir de un punto de control conocido sin tener que adivinar el estado oculto.

Documente tanto la ruta óptima como la ruta de recuperación. Los intentos de repetición, los controles humanos y el manejo de mensajes no entregados forman parte del producto, no son mejoras posteriores.

Separe la planificación de la ejecución de las herramientas. El planificador propone; el ejecutor realiza los cambios; el verificador comprueba los resultados en relación con el objetivo.

Lecturas relacionadas