Claude antropónico

agent-framework-claude encapsula el SDK del agente de Claude como ClaudeAgent. Utiliza el tiempo de ejecución de agentes administrado de Claude, las sesiones, el modelo de permisos, las herramientas integradas y la compatibilidad con MCP, al tiempo que expone las interfaces de ejecución y transmisión de Agent Framework.

Esta integración es distinta del proveedor de modelos Anthropic, que utiliza Claude como modelo detrás de un agente de Agent Framework propiedad de la aplicación.

Prerequisites

  • Instale y configure la CLI de Claude Code.
  • Elige un modelo de Claude y un modo de permisos.
  • Ejecute el agente en un directorio de trabajo restringido al habilitar herramientas de archivo o shell.

Instalar el paquete

pip install agent-framework-claude --pre

Configuration

Variable propósito
CLAUDE_AGENT_MODEL Modelo de Claude usado por el entorno de ejecución administrado.
CLAUDE_AGENT_PERMISSION_MODE Modo de permiso predeterminado para herramientas integradas y MCP.
CLAUDE_AGENT_CLI_PATH Ruta de acceso explícita opcional a la CLI de Claude Code.
CLAUDE_AGENT_CWD Directorio de trabajo expuesto al tiempo de ejecución.
CLAUDE_AGENT_MAX_TURNS Número máximo opcional de turnos de agente.
CLAUDE_AGENT_MAX_BUDGET_USD Presupuesto de costes opcional para una ejecución.

Los valores explícitos cero para max_turns y max_budget_usd se reenvían al SDK del agente de Claude. Solo se omiten los valores sin establecer (None).

Crea un ClaudeAgent

ClaudeAgent admite ejecuciones de streaming y normales y puede exponer las herramientas de funciones de Agent Framework.

async def non_streaming_example() -> None:
    """Example of non-streaming response."""
    print("=== Non-streaming Example ===")

    agent = ClaudeAgent(
        name="BasicAgent",
        instructions="You are a helpful assistant. Keep responses concise.",
        tools=[get_weather],
    )

    async with agent:
        query = "What's the weather in Seattle?"
        print(f"User: {query}")
        result = await agent.run(query)
        print(f"Agent: {result.text}\n")


async def streaming_example() -> None:
    """Example of streaming response."""
    print("=== Streaming Example ===")

    agent = ClaudeAgent(
        name="StreamingAgent",
        instructions="You are a helpful assistant.",
        tools=[get_weather],
    )

    async with agent:
        query = "What's the weather in Paris?"
        print(f"User: {query}")
        print("Agent: ", end="", flush=True)
        async for chunk in agent.run(query, stream=True):
            if chunk.text:
                print(chunk.text, end="", flush=True)
        print("\n")

Se muestran ejemplos adicionales:

  • Herramientas integradas de Claude para archivos y shell.
  • Control interactivo de permisos.
  • Servidores MCP locales y remotos.
  • Persistencia y reanudación de la sesión.
  • Flujos de trabajo secuenciales que pasan mensajes anteriores entre agentes de Claude.
  • Captura de direcciones URL y varias reglas de permisos.

Cuando ClaudeAgent recibe varios mensajes, envía un mensaje que los enmarca como historial de conversaciones y etiqueta cada mensaje por rol. Este enfoque preserva los límites entre roles durante las transferencias entre agentes, pero no reproduce el historial nativo de Claude con varios roles ni comparte la misma sesión de Claude. Un único mensaje de usuario permanece sin cambios.

Consideraciones sobre permisos

  • Comience con el modo de permisos menos permisivo del SDK de Claude Agent que permita realizar la tarea.
  • Requiere aprobación explícita para operaciones de shell, de archivos, de red u otras que tengan efectos secundarios.
  • No exponga credenciales a través de variables de entorno ni archivos legibles en el directorio de trabajo del agente.

Pasos siguientes