Construye agentes de IA que se conectan a cualquier servicio — desde GitHub hasta Gmail, Slack y Notion
Composio es la plataforma open-source que conecta agentes de IA con más de 1.000 herramientas a través de SDKs en Python y TypeScript. En este curso aprenderás desde la instalación básica hasta la creación de agentes multi-herramienta con autenticación, ejecución de acciones y soporte para los principales frameworks de IA: OpenAI Agents, Anthropic, LangChain, CrewAI y más. Con 29K estrellas en GitHub y más de 4.300 commits, Composio es la referencia para dotar de herramientas a tus agentes.
Composio (ComposioHQ/composio) es un SDK open-source que actúa como puente entre los modelos de lenguaje (LLMs) y las herramientas del mundo real. Su propuesta de valor es clara: "Skills that evolve for your Agents" — habilidades que evolucionan para tus agentes.
En lugar de tener que escribir integraciones manuales para cada API (Gmail, GitHub, Slack, Google Sheets, Notion, Jira...), Composio te proporciona un catálogo unificado de más de 1.000 toolkits listos para usar. Cada toolkit expone acciones que tu agente puede invocar directamente.
| Característica | Descripción |
|---|---|
| SDKs | Python (pip) y TypeScript (npm) |
| Frameworks compatibles | OpenAI, Anthropic, LangChain, LlamaIndex, Gemini, CrewAI, AutoGen, Vercel AI, Mastra y más |
| Toolkits | 1.000+ herramientas pre-integradas |
| Autenticación | Gestión centralizada de OAuth, API keys y connected accounts |
| Licencia | Open Source (MIT) |
| Repositorio | github.com/ComposioHQ/composio |
Piensa en Composio como el App Store de herramientas para agentes. En vez de construir cada integración manualmente, eliges qué toolkits necesita tu agente y Composio se encarga de la autenticación, la ejecución de acciones y el manejo de errores.
Composio ofrece SDKs en Python y TypeScript. Aquí veremos ambas opciones.
pip install composio
Para usar con OpenAI Agents:
pip install composio_openai_agents openai-agents
npm install @composio/core
Para OpenAI Agents en TS:
npm install @composio/openai-agents @openai/agents
Composio requiere una API key para gestionar la autenticación con los servicios externos. Obtén tu key en app.composio.dev y configúrala:
export COMPOSIO_API_KEY=tu_api_key_aqui
Inicialización básica:
from composio import Composio
composio = Composio(
# api_key="tu-api-key" # opcional si tienes la variable de entorno
)
Si olvidas configurar la API key, Composio lanzará un error de autenticación. Siempre verifica que COMPOSIO_API_KEY esté exportada antes de ejecutar tu agente.
python3 -c "from composio import Composio; print('Composio OK')"
Composio organiza su ecosistema en tres niveles:
| Concepto | Definición | Ejemplo |
|---|---|---|
| Toolkit | Colección de herramientas agrupadas por servicio | GITHUB, GMAIL, SLACK, NOTION, HACKERNEWS |
| Action | Operación específica que un agente puede ejecutar | GITHUB_LIST_PRS, GMAIL_SEND_EMAIL |
| Tool | Instancia de una acción lista para ser usada por un framework de IA | Tool object compatible con OpenAI Agents, LangChain, etc. |
El flujo típico es:
# Obtener tools de un toolkit específico
tools = composio.tools.get(
user_id="usuario@ejemplo.com",
toolkits=["HACKERNEWS"]
)
Puedes combinar múltiples toolkits en una sola llamada: toolkits=["GITHUB", "GMAIL", "SLACK"]. Composio fusiona todas las acciones en un solo array de tools compatible con tu framework.
Construyamos un agente que consulta las últimas noticias de HackerNews usando Composio y OpenAI Agents.
pip install composio_openai_agents openai-agents
import asyncio
from agents import Agent, Runner
from composio import Composio
from composio_openai_agents import OpenAIAgentsProvider
composio = Composio(provider=OpenAIAgentsProvider())
user_id = "user@acme.org"
tools = composio.tools.get(
user_id=user_id,
toolkits=["HACKERNEWS"]
)
agent = Agent(
name="Hackernews Assistant",
instructions="Eres un asistente experto en HackerNews.",
tools=tools,
)
async def main():
result = await Runner.run(
starting_agent=agent,
input="¿Cuál es el último post de HackerNews?"
)
print(result.final_output)
asyncio.run(main())
El agente llamará a la acción HACKERNEWS_FETCH_TOP_STORIES y devolverá el resultado formateado. Composio transforma automáticamente las acciones del toolkit en tools nativas de OpenAI Agents.
Composio incluye toolkits para los servicios más utilizados. Veamos cómo usar los principales:
tools = composio.tools.get(
user_id=user_id,
toolkits=["GITHUB"]
)
# El agente podrá listar issues, crear PRs, revisar código, etc.
tools = composio.tools.get(
user_id=user_id,
toolkits=["GMAIL"]
)
tools = composio.tools.get(
user_id=user_id,
toolkits=["SLACK"]
)
tools = composio.tools.get(
user_id=user_id,
toolkits=["NOTION"]
)
| Toolkit | Acciones destacadas | Casos de uso |
|---|---|---|
| GITHUB | List PRs, create issue, get code, search repos | Automatización de code review |
| GMAIL | Send email, search messages, manage labels | Asistente de correo, alertas automáticas |
| SLACK | Send message, list channels, search history | Notificaciones, chatbots internos |
| NOTION | Create page, query database, update blocks | Documentación automática, wikis |
| GOOGLESHEETS | Read/write cells, create spreadsheets | Reportes, dashboards automatizados |
Uno de los puntos fuertes de Composio es su sistema centralizado de autenticación. Cada conexión con un servicio externo se gestiona como una Connected Account.
Algunos servicios (como HackerNews) no requieren autenticación adicional. Otros, como Gmail o GitHub, necesitan OAuth.
from composio import Composio, App
composio = Composio()
composio.get_redirect_url(
app=App.GMAIL,
user_id="usuario@ejemplo.com"
)
# Devuelve una URL de OAuth para autenticar
connected = composio.connected_accounts.get(
user_id="usuario@ejemplo.com"
)
print(connected)
Al autenticar servicios como Gmail o Google Drive, asegúrate de solicitar los scopes mínimos necesarios. Composio permite configurar scopes específicos para cada conexión.
Composio no se limita a OpenAI Agents. Veamos cómo integrarlo con otros frameworks populares.
pip install composio_anthropic anthropic
from composio import Composio
from composio_anthropic import AnthropicProvider
from anthropic import Anthropic
composio = Composio(provider=AnthropicProvider())
tools = composio.tools.get(
user_id=user_id,
toolkits=["GITHUB"]
)
client = Anthropic()
response = client.messages.create(
model="claude-sonnet-4-20250514",
max_tokens=1024,
tools=tools,
messages=[{"role": "user", "content": "Lista mis PRs abiertos"}]
)
pip install composio_langchain langchain
from composio import Composio
from composio_langchain import ComposioToolSet
toolset = ComposioToolSet()
tools = toolset.get_tools(
user_id=user_id,
toolkits=["SLACK", "GMAIL"]
)
# Usar con cualquier agente de LangChain
| Framework | Package Python | Package TypeScript |
|---|---|---|
| OpenAI Agents | composio_openai_agents |
@composio/openai-agents |
| Anthropic | composio_anthropic |
@composio/anthropic |
| LangChain | composio_langchain |
@composio/langchain |
| LlamaIndex | composio_llamaindex |
@composio/llamaindex |
| Gemini (Google) | composio_google |
@composio/google |
| CrewAI | composio_crewai |
-- |
| AutoGen | composio_autogen |
-- |
| Vercel AI SDK | -- | @composio/vercel-ai |
| Mastra | -- | @composio/mastra |
El verdadero poder de Composio emerge cuando combinas múltiples toolkits en un mismo agente.
import asyncio
from agents import Agent, Runner
from composio import Composio
from composio_openai_agents import OpenAIAgentsProvider
composio = Composio(provider=OpenAIAgentsProvider())
tools = composio.tools.get(
user_id="dev@acme.org",
toolkits=["GITHUB", "GMAIL", "SLACK", "GOOGLESHEETS"]
)
agent = Agent(
name="DevOps Assistant",
instructions="""Eres un asistente de DevOps.
Puedes:
- Revisar PRs y issues en GitHub
- Enviar correos con resúmenes vía Gmail
- Notificar en Slack cuando algo requiere atención
- Registrar métricas en Google Sheets""",
tools=tools,
)
async def main():
result = await Runner.run(
starting_agent=agent,
input="Revisa los PRs abiertos, haz un resumen, envíalo por correo al equipo y notifica en Slack"
)
print(result.final_output)
asyncio.run(main())
Un agente multi-herramienta puede: leer datos de GitHub, procesarlos con el LLM, escribir un resumen en Google Sheets, enviarlo por Gmail y notificar en Slack — todo en una sola ejecución.
Composio también se integra con frameworks multi-agente como CrewAI y AutoGen.
pip install composio_crewai crewai
from composio_crewai import ComposioToolSet
from crewai import Agent, Crew
toolset = ComposioToolSet()
github_tools = toolset.get_tools(
user_id=user_id,
toolkits=["GITHUB"]
)
slack_tools = toolset.get_tools(
user_id=user_id,
toolkits=["SLACK"]
)
dev_agent = Agent(
role="Developer",
goal="Revisar y gestionar PRs",
tools=github_tools
)
notifier = Agent(
role="Notifier",
goal="Comunicar novedades al equipo",
tools=slack_tools
)
crew = Crew(agents=[dev_agent, notifier], tasks=[...])
pip install composio_autogen pyautogen
from composio_autogen import ComposioToolSet
toolset = ComposioToolSet()
tools = toolset.get_tools(
user_id=user_id,
toolkits=["HACKERNEWS", "GITHUB"]
)
Al llevar agentes de Composio a producción, considera estos aspectos:
try:
tools = composio.tools.get(user_id=user_id, toolkits=["GITHUB"])
except Exception as e:
print(f"Error: {e}")
# Reintentos con backoff exponencial
Para producción, estructura tu aplicación en capas: (1) API Layer → (2) Agent Logic con Composio → (3) External Services. Esto permite testear cada capa de forma independiente.
Sí, Composio es open-source (licencia MIT). El repositorio está en github.com/ComposioHQ/composio.
Sí, Composio permite crear custom providers y herramientas propias envolviendo cualquier API REST.
Composio es agnóstico al modelo. Mientras el framework soporte tool calling, funciona.
La plataforma cloud simplifica la gestión de autenticación, pero Composio puede usarse de forma autónoma.