Cargando

Creación de tu primer agente administrado

Lección 128 min
Cargando

Creación de tu primer agente administrado

Si has construido un bucle de agente a mano, ya conoces la rutina: bucles while, switches de razón de parada, ejecuciones de herramientas. Eso funciona, y para muchas funciones es, de hecho, la forma correcta. Pero a veces ese bucle va a ejecutarse durante mucho tiempo — minutos, tal vez incluso horas — a través de muchas herramientas, con estado que mantener, archivos que escribir y trabajo que reanudar después de un contratiempo de red. En ese punto, no quieres ejecutar el bucle en tu servidor. Quieres delegarlo. Eso es lo que son los agentes administrados.

¿Qué es un agente administrado?

Un agente administrado es un bucle de agente que se ejecuta en la infraestructura de Anthropic en lugar de la tuya. Describes el agente una vez, le das un entorno en el que trabajar e inicias una sesión. Anthropic ejecuta el bucle, y tú simplemente transmites los eventos de vuelta a medida que trabaja.

Los agentes administrados están habilitados de forma predeterminada para cada cuenta de API — no se necesita acceso especial.

Las cuatro primitivas

Hay cuatro primitivas, y vienen en orden:

  1. Agente — la persona: modelo, indicación del sistema y conjunto de herramientas. Esto es reutilizable en muchas ejecuciones.
  2. Entorno — dónde se ejecuta el agente: en la nube o autoalojado, configuración de red, etc.
  3. Sesión — una única ejecución de un agente dentro de un entorno determinado. La sesión es la unidad de trabajo.
  4. Eventos — los mensajes que fluyen de entrada y salida: las acciones del agente, las llamadas a herramientas, los resultados, las respuestas.

Así es como encajan las piezas: tu aplicación habla con una sesión, la sesión impulsa el trabajo dentro del entorno, y todo lo que sucede fluye de vuelta a través del flujo de eventos:

Diagrama de arquitectura que muestra un agente conectado a una Sesión, que impulsa un Entorno, con resultados que fluyen de vuelta a través de un Flujo de Eventos hacia tu aplicación

Observa el cambio aquí: no estás ejecutando un bucle while. Estás enviando eventos y leyendo eventos.

El agente administrado más pequeño posible

Construyamos el agente administrado más pequeño que haga algo útil: crear un archivo en la unidad temporal, contar sus líneas e informar el resultado.

Para las herramientas, usaremos el conjunto de herramientas del agente — las herramientas integradas de archivos, bash y web de Anthropic. Funcionan bien para esta tarea, así que no tenemos que definir ninguna herramienta nosotros mismos.

Paso 1: Crear el agente

Primero, creamos el agente. Observa el conjunto de herramientas del agente definido directamente en el array tools — ese es el conjunto de herramientas integrado:

python
import anthropic

client = anthropic.Anthropic()

agent = client.beta.agents.create(
    name="Line Counter",
    model="claude-opus-5",
    system="You are a helpful agent that completes small file tasks.",
    tools=[
        {"type": "agent_toolset_20260401", "default_config": {"enabled": True}}
    ],
)

Recuerda: el agente es reutilizable. Créalo una vez y ejecútalo en muchas sesiones.

Paso 2: Crear el entorno

A continuación, el entorno. Define el sandbox en el que se ejecuta tu agente: en la nube, con red limited. Con limited, el sandbox y las herramientas web solo alcanzan los hosts que enumeras en allowed_hosts. Esta tarea no necesita red, así que no enumeramos ninguno. Usa unrestricted solo cuando el agente deba alcanzar sitios que no puedes enumerar de antemano. Cada sesión obtiene su propio sandbox, y ahí es donde se escribe el archivo:

python
environment = client.beta.environments.create(
    name="line-counter-env",
    config={
        "type": "cloud",
        "networking": {"type": "limited"},
    },
)

Paso 3: Crear la sesión

Luego creamos una sesión con nuestro agente y entorno, más un título opcional. La sesión es la unidad de trabajo:

python
session = client.beta.sessions.create(
    agent=agent.id,
    environment_id=environment.id,
    title="Count lines demo",
)

Paso 4: Abrir el flujo y luego enviar el inicio

Ahora abrimos el flujo de eventos — y observa que hacemos esto primero. El flujo solo entrega eventos que ocurren después de que se abre, así que siempre ábrelo antes de enviar el mensaje de inicio. Luego enviamos el mensaje del usuario al flujo en vivo:

python
with client.beta.sessions.events.stream(session_id=session.id) as stream:
    # El stream está abierto: ahora envía el mensaje inicial
    client.beta.sessions.events.send(
        session_id=session.id,
        events=[
            {
                "type": "user.message",
                "content": [
                    {
                        "type": "text",
                        "text": "Create a file in the temp directory, "
                                "count its lines, and report back.",
                    }
                ],
            }
        ],
    )

Observa que es events — plural. Los eventos son la forma en que todo fluye en esta API.

Paso 5: Consumir el flujo

Finalmente, consumimos el flujo. Hay tres tipos de eventos que importan para esta demostración:

  • agent.message — el texto de Claude
  • agent.tool_use — qué herramienta eligió Claude
  • session.status_idle — el agente se ha detenido y está esperando entrada

Esta demostración se detiene en el primer evento idle. En tu propia aplicación, verifica event.stop_reason.type antes de tratar el trabajo como terminado: end_turn significa que el agente terminó su turno o que lo interrumpiste, y requires_action significa que una llamada a herramienta necesita una respuesta tuya.

python
    for event in stream:
        if event.type == "agent.message":
            for block in event.content:
                if block.type == "text":
                    print(block.text, end="", flush=True)
        elif event.type == "agent.tool_use":
            print(f"\n[tool] {event.name}")
        elif event.type == "session.status_idle":
            print("\n--- Agent done ---")
            break

Ejecútalo, y la salida es el agente razonando en voz alta — texto real, las herramientas que elige y una respuesta final. Todo ello ejecutándose dentro del contenedor de Anthropic, no del tuyo:

Salida de terminal de la ejecución del agente administrado: se crean los IDs de agente, entorno y sesión, luego el flujo de eventos muestra al agente escribiendo el archivo, ejecutando sus herramientas e informando que el archivo contiene 3 líneas

El intercambio

Normalmente con los agentes, tenemos nuestro propio bucle donde tenemos que controlar todo. Con los agentes administrados, delegas ese bucle, el sandbox y la capacidad de reanudación — y simplemente consumes el flujo de eventos a medida que llega. El historial de eventos de la sesión se almacena en el servidor. Así que si tu conexión se cae, abre un nuevo flujo, enumera los eventos pasados para ver qué te perdiste, y omite cualquier evento en vivo que la lista ya haya devuelto. Consulta Reconectar sin perder eventos para ver el código.

En una aplicación de producción, esta es la forma para tareas de larga duración que tocan archivos, del tipo "ve y organiza esto por mí". Imagina una limpieza de un recurso compartido de archivos: un agente administrado lee una especificación de estructura de directorios objetivo, recorre la carpeta de entrada desordenada, mueve archivos a las carpetas de proyecto correctas, archiva duplicados y basura de cero bytes, y marca cualquier cosa que no pueda ubicar con confianza — todo en una sesión que puede ejecutarse durante minutos contra miles de archivos. Así es como se ve eso en una aplicación real — un panel de limpieza de recursos compartidos de archivos que transmite la actividad del agente en vivo mientras clasifica, archiva y marca archivos:

Una aplicación web de limpieza de recursos compartidos de archivos impulsada por un agente administrado, que muestra el árbol de carpetas siendo organizado junto a un feed de actividad en vivo de los eventos del agente mientras mueve y archiva archivos

Resumen

  • Los agentes administrados son el bucle del agente, ejecutado para ti — en la infraestructura de Anthropic en lugar de tu servidor.
  • El flujo es: crear un agente, crear un entorno, crear una sesión, enviar eventos y transmitir eventos de salida.
  • El agente (modelo, indicación del sistema, conjunto de herramientas) es reutilizable en todas las ejecuciones; la sesión es una única ejecución; los eventos son la forma en que todo fluye.
  • Abre el flujo de eventos antes de enviar tu mensaje de inicio — solo entrega eventos que ocurren después de que se abre.
  • Presta atención a tres eventos: agent.message (texto), agent.tool_use (elecciones de herramientas) y session.status_idle (detenido y esperando entrada, con stop_reason.type indicando por qué).
  • Recurre a los agentes administrados cuando el bucle se ejecutaría demasiado tiempo, haría demasiado, o necesitaría sobrevivir a un contratiempo. Recurre a un bucle manual cuando quieras control total.