Anthropic Claude

agent-framework-claude verpakt de Claude Agent SDK als ClaudeAgent. Het maakt gebruik van de beheerde agentruntime van Claude, sessies, het machtigingsmodel, ingebouwde tools en MCP-ondersteuning, en stelt daarbij de interfaces voor uitvoeren en streamen van Agent Framework beschikbaar.

Deze integratie verschilt van de Anthropic modelprovider, die Claude gebruikt als model achter een Agent Framework-agent die eigendom is van een toepassing.

Prerequisites

  • Installeer en configureer de Claude Code CLI.
  • Kies een Claude-model en machtigingsmodus.
  • Voer de agent uit in een beperkte werkmap bij het inschakelen van hulpprogramma's voor bestanden of shells.

Installeer het pakket

pip install agent-framework-claude --pre

Configuration

Veranderlijk Purpose
CLAUDE_AGENT_MODEL Het Claude-model dat door de beheerde runtime wordt gebruikt.
CLAUDE_AGENT_PERMISSION_MODE Standaardmachtigingsmodus voor ingebouwde en MCP-hulpprogramma's.
CLAUDE_AGENT_CLI_PATH Optioneel expliciet pad naar de Claude Code CLI.
CLAUDE_AGENT_CWD Werkmap die toegankelijk is voor de runtime.
CLAUDE_AGENT_MAX_TURNS Optioneel maximum aantal beurten van de agent.
CLAUDE_AGENT_MAX_BUDGET_USD Een optionele kostenlimiet voor een uitvoering.

Expliciete nulwaarden voor max_turns en max_budget_usd worden doorgestuurd naar de Claude Agent SDK. Alleen niet-ingestelde waarden (None) worden weggelaten.

Een ClaudeAgent maken

ClaudeAgent biedt ondersteuning voor reguliere en streaming-uitvoeringen en kan hulpprogramma's voor Agent Framework-functies beschikbaar maken.

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")

Aanvullende voorbeelden laten zien:

  • Bestands- en shellhulpmiddelen ingebouwd in Claude.
  • Interactieve afhandeling van machtigingen.
  • Lokale en externe MCP-servers.
  • Sessiebehoud en hervatten.
  • Opeenvolgende werkstromen die voorafgaande berichten doorgeven tussen Claude-agenten.
  • URL's ophalen en meerdere machtigingsregels.

Wanneer ClaudeAgent meerdere berichten ontvangt, verzendt het één prompt die deze als gespreksgeschiedenis presenteert en elk bericht van een rolaanduiding voorziet. Deze benadering behoudt rolgrenzen tijdens overdrachten tussen agenten, maar speelt de systeemeigen meerrollengeschiedenis van Claude niet opnieuw af en deelt geen Claude-sessie. Eén gebruikersbericht blijft ongewijzigd.

Overwegingen met betrekking tot machtigingen

  • Begin met de minst permissieve Claude Agent SDK-machtigingsmodus die ondersteuning biedt voor de taak.
  • Expliciete goedkeuring vereisen voor shell-, bestands-, netwerk- of andere bewerkingen met side-effect.
  • Stel referenties niet beschikbaar via omgevingsvariabelen of leesbare bestanden in de werkmap van de agent.

Volgende stappen