JamJet

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.py

Eso 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.py

Cambia 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 forzadosmax_iterations, max_cost_usd, timeout_seconds son 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 Workflow o workflows YAML para orquestación compleja.


Prueba los ejemplos

Cuatro ejemplos autocontenidos en el repositorio jamjet-benchmarks — cada uno se ejecuta localmente con Ollama:

EjemploQué muestra
01 — Pipeline con timelineTimeline de ejecución por paso, automático
02 — Enrutamiento condicionalEnrutamiento como predicados simples de Python
03 — Harness de evaluaciónPuntuación integrada, LLM como juez
04 — Workflow autoevaluadoCiclo 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.py

Crear la estructura de un proyecto completo

Usa plantillas para iniciar un proyecto más completo:

jamjet init my-agent --template hello-agent
cd my-agent

Plantillas 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 24h

Añ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:7700

Luego 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.2

Groq

export OPENAI_API_KEY=gsk_...
export OPENAI_BASE_URL=https://api.groq.com/openai/v1

Siguientes pasos

  1. Conceptos Fundamentales — agentes, nodos, estado y durabilidad
  2. SDK de Python — decoradores, enrutamiento, pasos paralelos
  3. Creación de Workflows — todos los tipos de nodos, políticas de reintentos, condiciones
  4. Integración MCP — conéctate a servidores de herramientas externos en una línea
  5. 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.

On this page