Inicio Rápido
Pon en marcha un workflow de JamJet en 60 segundos — sin servidor, sin configuración, solo Python.
Inicio rápido
Arranque en 60 segundos
Sin servidor. Sin configuración. Sin Pydantic. Solo Python.
pip install jamjet
# agent.py
from jamjet import task, tool
@tool
async def web_search(query: str) -> str:
"""Busca información actual en la web."""
# conecta tu implementación de búsqueda real
return f"Resultados para: {query}"
@task(model="claude-sonnet-4-6", tools=[web_search])
async def research(question: str) -> str:
"""Eres un asistente de investigación. Busca primero, luego resume de forma clara."""
import asyncio
result = asyncio.run(research("¿Qué es JamJet?"))
print(result)ANTHROPIC_API_KEY=sk-ant-... python agent.pyEso es todo. El decorador @tool expone cualquier función de Python al agente. El docstring de @task se convierte en las instrucciones del agente. Funciona con OpenAI, Anthropic, Ollama, Groq — cualquier modelo.
tip: ¿Usas Ollama localmente? No necesitas API key:
OPENAI_API_KEY=ollama OPENAI_BASE_URL=http://localhost:11434/v1 python agent.pyCambia model= a cualquier modelo de Ollama (ej. "llama3.2").
Qué obtienes
@tool— convierte cualquier función async de Python en una herramienta de agente, con generación automática de esquema@task— docstring = instrucciones del agente, firma de función = contrato de entrada- Ejecución durable — falla y reanuda desde donde se detuvo (con
jamjet dev) - Límites forzados —
max_iterations,max_cost_usd,timeout_secondsson parámetros de primera clase
Sin código repetitivo. Sin clases de estado. Sin inyección de dependencias.
note: ¿Necesitas control total del grafo — pipelines multi-paso, enrutamiento condicional, human-in-the-loop? Usa la API
Workflowo workflows YAML para orquestación compleja.
Prueba los ejemplos
Cuatro ejemplos autocontenidos en el repositorio jamjet-benchmarks — cada uno se ejecuta localmente con Ollama:
| Ejemplo | Qué muestra |
|---|---|
| 01 — Pipeline con timeline | Timeline de ejecución por paso, automático |
| 02 — Enrutamiento condicional | Enrutamiento como predicados simples de Python |
| 03 — Harness de evaluación | Puntuación integrada, LLM como juez |
| 04 — Workflow autoevaluado | Ciclo borrador → juez → reintentar |
git clone https://github.com/jamjet-labs/jamjet-benchmarks
cd jamjet-benchmarks/examples/01_pipeline_with_timeline
pip install -r requirements.txt
OPENAI_API_KEY=ollama OPENAI_BASE_URL=http://localhost:11434/v1 MODEL_NAME=llama3.2 python main.pyCrear la estructura de un proyecto completo
Usa plantillas para iniciar un proyecto más completo:
jamjet init my-agent --template hello-agent
cd my-agentPlantillas disponibles:
jamjet init my-agent --list-templates
# hello-agent Flujo mínimo de preguntas y respuestas
# research-agent Búsqueda web + síntesis (Brave Search MCP)
# rag-assistant RAG con MCP de sistema de archivos
# mcp-tool-consumer Conectar con cualquier servidor de herramientas MCP
# mcp-tool-provider Exponer funciones Python como herramientas MCP
# code-reviewer Revisión de PR de GitHub con puntuación de calidad
# hitl-approval Puerta de aprobación con humano en el bucle
# multi-agent-review Bucle de revisión escritor + crítico
# a2a-delegator Delegar tareas vía protocolo A2A
# a2a-server Servir solicitudes A2A desde agentes externos
# approval-workflow Aprobación duradera con timeout de 24hAñadir el runtime duradero (producción)
El ejecutor en proceso (wf.run_sync) es excelente para desarrollo. Para producción — recuperación ante fallos, programación multi-instancia, estado duradero — inicia el servidor de runtime:
jamjet dev▶ JamJet Dev Runtime
Port: 7700
Mode: local (SQLite)
API: http://localhost:7700Luego ejecuta flujos a través de él:
jamjet run workflow.yaml --input '{"query": "What is JamJet?"}'✓ node_completed think gpt-4o-mini 512ms
✓ Ejecución completada.¿Fallo durante la ejecución? Reanuda exactamente donde se detuvo — sin reejecutar pasos anteriores, sin llamadas API desperdiciadas.
Configura tu clave API
OpenAI
export OPENAI_API_KEY=sk-...Anthropic
export ANTHROPIC_API_KEY=sk-ant-...Ollama (gratis, local)
export OPENAI_API_KEY=ollama
export OPENAI_BASE_URL=http://localhost:11434/v1
# ollama pull llama3.2Groq
export OPENAI_API_KEY=gsk_...
export OPENAI_BASE_URL=https://api.groq.com/openai/v1Siguientes pasos
- Conceptos Fundamentales — agentes, nodos, estado y durabilidad
- SDK de Python — decoradores, enrutamiento, pasos paralelos
- Creación de Workflows — todos los tipos de nodos, políticas de reintentos, condiciones
- Integración MCP — conéctate a servidores de herramientas externos en una línea
- Eval Harness — prueba tus agentes como software
Solución de problemas
¿No se encuentra jamjet después de la instalación?
Asegúrate de que el directorio de scripts de Python esté en tu PATH. Prueba con python -m jamjet.
¿Conexión rechazada en el puerto 7700?
jamjet dev debe estar en ejecución antes de usar jamjet run. La ruta wf.run_sync() en proceso no necesita servidor.
¿Necesitas ayuda? Abre una Discusión en GitHub o reporta un problema.