Tu primer agente de IA que utiliza herramientas con LangChain
Crea un pequeño agente matemático de LangChain en Python: inicializa un modelo de chat, registra herramientas, permite que el LLM elija qué función llamar y observa el uso de herramientas en múltiples pasos.
Un breve ejercicio en Python + LangChain permite crear un agente similar a una calculadora que puede invocar funciones de suma, resta, multiplicación, división o raíz cuadrada cuando sea necesario.
La aritmética es secundaria. La lección útil consiste en observar cómo un LLM recibe funciones auxiliares llamables y decide cuál función invocar y en qué paso.
Ejemplos de preguntas que puede resolver el agente finalizado:
Multiplique 25 por 4. Tome la raíz cuadrada de 144 y luego multiplique ese resultado por 5.
En lugar de programar la secuencia exacta de cálculos, se registran varias funciones auxiliares. El modelo elige entre ellas según las palabras del usuario.
1. Inicialice el modelo
Comience por construir el modelo de chat:
from langchain.chat_models import init_chat_model
model = init_chat_model("openai:gpt-4o-mini")
Aún no existe nada similar a un agente; solo hay un modelo de texto que puede leer y escribir.
2. Registre las funciones auxiliares llamables
Los agentes resultan útiles cuando van más allá de la simple generación de texto y pueden invocar funciones de aplicaciones.
Se definen cinco ayudantes mínimos:
from langchain.tools import tool
import math
@tool
def add(a: float, b: float) -> float:
"""Add two numbers."""
return a + b
@tool
def subtract(a: float, b: float) -> float:
"""Subtract two numbers."""
return a - b
@tool
def multiply(a: float, b: float) -> float:
"""Multiply two numbers."""
return a * b
@tool
def divide(a: float, b: float) -> float:
"""Divide two numbers."""
if b == 0:
raise ValueError("Cannot divide by zero.")
return a / b
@tool
def square_root(a: float) -> float:
"""Calculate the square root of a number."""
if a < 0:
raise ValueError("Cannot calculate square root of a negative number.")
return math.sqrt(a)
Al decorar con @tool se expone cada función en un formato que el entorno de ejecución del agente comprende.
Hay dos detalles que guían al modelo:
- Los parámetros anotados indican los tipos de argumentos esperados.
a: float
b: float
- Las documentaciones proporcionan descripciones en lenguaje sencillo que el modelo lee al decidir la relevancia.
En cuanto a las herramientas para agentes, la descripción narrativa de una función forma parte de la interfaz de control, no de su decoración.
"""Multiply two numbers."""
3. Conectar el agente
Se adjuntan los ayudantes al modelo:
from langchain.agents import create_agent
agent = create_agent(
model=model,
tools=[
add,
subtract,
multiply,
divide,
square_root
],
)
A partir de aquí, el modelo de chat puede funcionar como un agente en lugar de simplemente dar una respuesta única.
Los pasos típicos incluyen:
- Analizar la intención del usuario
A nivel general:
User
↓
Agent
↓
Should I use a tool?
↓
Choose tool
↓
Execute tool
↓
Get result
↓
Final response
Las preguntas de múltiples pasos pueden repetir ese bucle.
4. Ejecutar una ejecución
Basta con un envoltorio simple para gestionarlo:
def run_agent(question: str):
"""Run the agent and print the execution trace."""
print(f"User: {question}")
result = agent.invoke({
"message": [("user", question)],
})
print("Agent:", result)
Llamarlo con una pregunta sencilla:
run_agent("What is 25 multiplied by 4?")
Obsérvese que no hay instrucción alguna que diga “llamar a multiply”.
Solo se proporcionó el catálogo de asistentes.
Basándose en la redacción y en la descripción de cada asistente, el modelo concluye que la multiplicación es adecuada.
5. Enlazar más de un asistente
Pruebe una instrucción compuesta:
run_agent(
"Calculate the square root of 144 and multiply the result by 5."
)
Son necesarias dos operaciones.
El rastro conceptual se ve así:
User:
Calculate √144 × 5
↓
Agent chooses square_root
↓
square_root(144)
↓
12
↓
Agent chooses multiply
↓
multiply(12, 5)
↓
60
↓
Final answer
Ese ciclo — elegir, llamar, observar, elegir de nuevo — es la esencia de los agentes que utilizan herramientas.
El código de la aplicación no necesita codificar por adelantado el orden completo de las operaciones.
El modelo puede deducir el siguiente paso a partir de las herramientas restantes y del estado de la conversación.
6. Contraste con un LLM simple
Sin herramientas, un modelo podría inventar “La respuesta es 60” como texto.
Con herramientas registradas, puede asignar tareas numéricas a funciones reales.
El cambio en el control
Ruta solo de texto: Usuario → modelo → cadena de respuesta
en contraste con:
Tool-using agent
User
↓
LLM
↓
Choose tool
↓
Execute code
↓
Observe result
↓
LLM
↓
Answer
El modelo ya no tiene que realizar todas las computaciones por sí mismo.
Proponga qué acción debe ejecutarse a continuación; la aplicación decide qué acciones existen y cómo se ejecutan.
7. El límite que merece protección
La calculadora es un juguete didáctico.
La idea clave es la separación entre el juicio del modelo y la autoridad para aplicar acciones.
La comprensión del lenguaje natural y la selección de acciones encajan bien con los LLM.
La ejecución de esas acciones debe realizarse en Python, bajo su control.
El modelo puede concluir que es necesario realizar dicha división.
Su proceso se encarga de implementar esa separación y de sus efectos secundarios.
Sustituya los auxiliares matemáticos simples por operaciones del dominio, como:
get_customer()
search_transactions()
create_report()
send_email()
query_database()
get_weather()
create_ticket()
y el mismo patrón de orquestación comienza a asemejarse a los diseños de agentes en entornos reales.
Resumen del ejercicio
Unos pocos módulos crearon un agente capaz de:
- Interpretar preguntas en formato libre
- Elegir entre varios auxiliares registrados
- Vincular los argumentos correctamente
- Combinar auxiliares dentro de una misma sesión
- Reutilizar las salidas de los auxiliares en razonamientos posteriores
En resumen: un LLM que selecciona y ejecuta acciones, no uno que solo emite texto.
Lecturas relacionadas
- Enrutamiento de Preguntas a Través de Herramientas SQL y Búsqueda Web con un Agente Gemini — Cómo un agente de llamadas a herramientas de LangChain en Vertex AI elige entre tres herramientas de texto a SQL de SQLite y la búsqueda web en tiempo real, además de los errores relacionados con datos, dependencias y autenticación que se pueden esperar.
- Refuerzo de un Agente Python LangChain con Siete Middlewares Incorporados — Aprende cómo los middlewares de LangChain 1.0 añaden funcionalidades como resumen, límites de llamadas, reintentos, fallback de modelos, redacción de PII y aprobación humana a un agente Gemini sin afectar su lógica principal.
- Herramientas vs Habilidades vs MCP: Tres capas de un agente AI — Las herramientas exponen acciones, las habilidades codifican flujos de trabajo y MCP estandariza las conexiones externas. Un modelo mental claro para diseñar arquitecturas de agentes sin mezclar las capas.
- Orquestar agentes de investigadores y programadores con LangGraph — Construir una aplicación multiagente con LangGraph utilizando prompts especializados, modelos Ollama, búsquedas en Tavily, herramientas de transferencia de tareas y puntos de control en Postgres para flujos de trabajo dirigidos por un orquestador.
- Ejecutar herramientas MCP como servicios sin estado después de la especificación 2026-07-28 — Eliminar sesiones persistentes: la especificación MCP 2026-07-28 hace que las solicitudes sean autónomas gracias al enrutamiento por encabezados, a los intentos de reintentar cuando sea necesario y a las claves requestState compartidas entre réplicas.
- Construir tus primeros flujos de trabajo LangGraph antes de los sistemas multi-agente — Aprender LangGraph con ejemplos compatibles con Colab: estado compartido, nodos secuenciales, un único paso de LLM y una pipeline de blog en múltiples etapas.