Agent SDK – Übersicht
Erstellen Sie produktive KI-Agenten mit Claude Code als Bibliothek
Starting June 15, 2026, Agent SDK and claude -p usage on subscription plans will draw from a new monthly Agent SDK credit, separate from your interactive usage limits. See Use the Claude Agent SDK with your Claude plan for details.
Erstellen Sie KI-Agenten, die autonom Dateien lesen, Befehle ausführen, das Web durchsuchen, Code bearbeiten und vieles mehr. Das Agent SDK bietet Ihnen die gleichen Tools, die Agent-Schleife und das Kontextmanagement, die Claude Code antreiben, programmierbar in Python und TypeScript.
import asyncio
from claude_agent_sdk import query, ClaudeAgentOptions
async def main():
async for message in query(
prompt="Find and fix the bug in auth.py",
options=ClaudeAgentOptions(allowed_tools=["Read", "Edit", "Bash"]),
):
print(message) # Claude reads the file, finds the bug, edits it
asyncio.run(main())
import { query } from "@anthropic-ai/claude-agent-sdk";
for await (const message of query({
prompt: "Find and fix the bug in auth.ts",
options: { allowedTools: ["Read", "Edit", "Bash"] }
})) {
console.log(message); // Claude reads the file, finds the bug, edits it
}
Das Agent SDK enthält integrierte Tools zum Lesen von Dateien, Ausführen von Befehlen und Bearbeiten von Code, sodass Ihr Agent sofort arbeiten kann, ohne dass Sie die Tool-Ausführung implementieren müssen. Tauchen Sie in den Schnellstart ein oder erkunden Sie echte Agenten, die mit dem SDK erstellt wurden:
Erstellen Sie einen Fehlerbereinigungsagenten in wenigen Minuten
E-Mail-Assistent, Forschungsagent und mehr
Erste Schritte
Installieren Sie das SDK
npm install @anthropic-ai/claude-agent-sdk
pip install claude-agent-sdk
Das TypeScript SDK bündelt eine native Claude Code-Binärdatei für Ihre Plattform als optionale Abhängigkeit, sodass Sie Claude Code nicht separat installieren müssen.
Legen Sie Ihren API-Schlüssel fest
Rufen Sie einen API-Schlüssel aus der Konsole ab und legen Sie ihn als Umgebungsvariable fest:
export ANTHROPIC_API_KEY=your-api-key
Das SDK unterstützt auch Authentifizierung über Drittanbieter-API-Anbieter:
- Amazon Bedrock: Setzen Sie die Umgebungsvariable
CLAUDE_CODE_USE_BEDROCK=1und konfigurieren Sie AWS-Anmeldedaten - Claude Platform on AWS: Setzen Sie
CLAUDE_CODE_USE_ANTHROPIC_AWS=1undANTHROPIC_AWS_WORKSPACE_IDund konfigurieren Sie AWS-Anmeldedaten - Google Vertex AI: Setzen Sie die Umgebungsvariable
CLAUDE_CODE_USE_VERTEX=1und konfigurieren Sie Google Cloud-Anmeldedaten - Microsoft Azure: Setzen Sie die Umgebungsvariable
CLAUDE_CODE_USE_FOUNDRY=1und konfigurieren Sie Azure-Anmeldedaten
Weitere Informationen finden Sie in den Einrichtungsleitfäden für Bedrock, Claude Platform on AWS, Vertex AI oder Azure AI Foundry.
Sofern nicht zuvor genehmigt, erlaubt Anthropic Drittentwicklern nicht, claude.ai-Anmeldungen oder Ratenlimits für ihre Produkte anzubieten, einschließlich Agenten, die auf dem Claude Agent SDK basieren. Verwenden Sie stattdessen die in diesem Dokument beschriebenen API-Schlüssel-Authentifizierungsmethoden.
Führen Sie Ihren ersten Agenten aus
Dieses Beispiel erstellt einen Agenten, der Dateien in Ihrem aktuellen Verzeichnis mit integrierten Tools auflistet.
import asyncio
from claude_agent_sdk import query, ClaudeAgentOptions
async def main():
async for message in query(
prompt="What files are in this directory?",
options=ClaudeAgentOptions(allowed_tools=["Bash", "Glob"]),
):
if hasattr(message, "result"):
print(message.result)
asyncio.run(main())
import { query } from "@anthropic-ai/claude-agent-sdk";
for await (const message of query({
prompt: "What files are in this directory?",
options: { allowedTools: ["Bash", "Glob"] }
})) {
if ("result" in message) console.log(message.result);
}
Bereit zum Erstellen? Folgen Sie dem Schnellstart, um einen Agenten zu erstellen, der Fehler in wenigen Minuten findet und behebt.
Funktionen
Alles, was Claude Code leistungsstark macht, ist im SDK verfügbar:
Ihr Agent kann Dateien lesen, Befehle ausführen und Codebases sofort durchsuchen. Wichtige Tools sind:
| Tool | Was es tut |
|---|---|
| Read | Lesen Sie jede Datei im Arbeitsverzeichnis |
| Write | Erstellen Sie neue Dateien |
| Edit | Nehmen Sie präzise Änderungen an vorhandenen Dateien vor |
| Bash | Führen Sie Terminalbefehle, Skripte und Git-Operationen aus |
| Monitor | Überwachen Sie ein Hintergrundskript und reagieren Sie auf jede Ausgabezeile als Ereignis |
| Glob | Suchen Sie Dateien nach Muster (**/*.ts, src/**/*.py) |
| Grep | Durchsuchen Sie Dateiinhalte mit Regex |
| WebSearch | Durchsuchen Sie das Web nach aktuellen Informationen |
| WebFetch | Rufen Sie Webseiteninhalte ab und analysieren Sie sie |
| AskUserQuestion | Stellen Sie dem Benutzer Klärungsfragen mit Mehrfachauswahloptionen |
Dieses Beispiel erstellt einen Agenten, der Ihre Codebasis nach TODO-Kommentaren durchsucht:
import asyncio
from claude_agent_sdk import query, ClaudeAgentOptions
async def main():
async for message in query(
prompt="Find all TODO comments and create a summary",
options=ClaudeAgentOptions(allowed_tools=["Read", "Glob", "Grep"]),
):
if hasattr(message, "result"):
print(message.result)
asyncio.run(main())
import { query } from "@anthropic-ai/claude-agent-sdk";
for await (const message of query({
prompt: "Find all TODO comments and create a summary",
options: { allowedTools: ["Read", "Glob", "Grep"] }
})) {
if ("result" in message) console.log(message.result);
}
Führen Sie benutzerdefinierten Code an wichtigen Punkten im Agent-Lebenszyklus aus. SDK-Hooks verwenden Callback-Funktionen, um Agent-Verhalten zu validieren, zu protokollieren, zu blockieren oder zu transformieren.
Verfügbare Hooks: PreToolUse, PostToolUse, Stop, SessionStart, SessionEnd, UserPromptSubmit und mehr.
Dieses Beispiel protokolliert alle Dateiänderungen in einer Audit-Datei:
import asyncio
from datetime import datetime
from claude_agent_sdk import query, ClaudeAgentOptions, HookMatcher
async def log_file_change(input_data, tool_use_id, context):
file_path = input_data.get("tool_input", {}).get("file_path", "unknown")
with open("./audit.log", "a") as f:
f.write(f"{datetime.now()}: modified {file_path}\n")
return {}
async def main():
async for message in query(
prompt="Refactor utils.py to improve readability",
options=ClaudeAgentOptions(
permission_mode="acceptEdits",
hooks={
"PostToolUse": [
HookMatcher(matcher="Edit|Write", hooks=[log_file_change])
]
},
),
):
if hasattr(message, "result"):
print(message.result)
asyncio.run(main())
import { query, HookCallback } from "@anthropic-ai/claude-agent-sdk";
import { appendFile } from "fs/promises";
const logFileChange: HookCallback = async (input) => {
const filePath = (input as any).tool_input?.file_path ?? "unknown";
await appendFile("./audit.log", `${new Date().toISOString()}: modified ${filePath}\n`);
return {};
};
for await (const message of query({
prompt: "Refactor utils.py to improve readability",
options: {
permissionMode: "acceptEdits",
hooks: {
PostToolUse: [{ matcher: "Edit|Write", hooks: [logFileChange] }]
}
}
})) {
if ("result" in message) console.log(message.result);
}
Spawnen Sie spezialisierte Agenten, um fokussierte Teilaufgaben zu bewältigen. Ihr Hauptagent delegiert Arbeit, und Subagenten berichten mit Ergebnissen zurück.
Definieren Sie benutzerdefinierte Agenten mit spezialisierten Anweisungen. Fügen Sie Agent in allowedTools ein, da Subagenten über das Agent-Tool aufgerufen werden:
import asyncio
from claude_agent_sdk import query, ClaudeAgentOptions, AgentDefinition
async def main():
async for message in query(
prompt="Use the code-reviewer agent to review this codebase",
options=ClaudeAgentOptions(
allowed_tools=["Read", "Glob", "Grep", "Agent"],
agents={
"code-reviewer": AgentDefinition(
description="Expert code reviewer for quality and security reviews.",
prompt="Analyze code quality and suggest improvements.",
tools=["Read", "Glob", "Grep"],
)
},
),
):
if hasattr(message, "result"):
print(message.result)
asyncio.run(main())
import { query } from "@anthropic-ai/claude-agent-sdk";
for await (const message of query({
prompt: "Use the code-reviewer agent to review this codebase",
options: {
allowedTools: ["Read", "Glob", "Grep", "Agent"],
agents: {
"code-reviewer": {
description: "Expert code reviewer for quality and security reviews.",
prompt: "Analyze code quality and suggest improvements.",
tools: ["Read", "Glob", "Grep"]
}
}
}
})) {
if ("result" in message) console.log(message.result);
}
Nachrichten aus dem Kontext eines Subagenten enthalten ein parent_tool_use_id-Feld, mit dem Sie verfolgen können, welche Nachrichten zu welcher Subagenten-Ausführung gehören.
Verbinden Sie sich mit externen Systemen über das Model Context Protocol: Datenbanken, Browser, APIs und hunderte mehr.
Dieses Beispiel verbindet den Playwright MCP-Server, um Ihrem Agenten Browser-Automatisierungsfunktionen zu geben:
import asyncio
from claude_agent_sdk import query, ClaudeAgentOptions
async def main():
async for message in query(
prompt="Open example.com and describe what you see",
options=ClaudeAgentOptions(
mcp_servers={
"playwright": {"command": "npx", "args": ["@playwright/mcp@latest"]}
}
),
):
if hasattr(message, "result"):
print(message.result)
asyncio.run(main())
import { query } from "@anthropic-ai/claude-agent-sdk";
for await (const message of query({
prompt: "Open example.com and describe what you see",
options: {
mcpServers: {
playwright: { command: "npx", args: ["@playwright/mcp@latest"] }
}
}
})) {
if ("result" in message) console.log(message.result);
}
Kontrollieren Sie genau, welche Tools Ihr Agent verwenden kann. Erlauben Sie sichere Operationen, blockieren Sie gefährliche oder erfordern Sie Genehmigung für sensible Aktionen.
Für interaktive Genehmigungseingabeaufforderungen und das AskUserQuestion-Tool siehe Genehmigungen und Benutzereingaben verarbeiten.
Dieses Beispiel erstellt einen schreibgeschützten Agenten, der Code analysieren, aber nicht ändern kann. allowed_tools genehmigt Read, Glob und Grep vorab.
import asyncio
from claude_agent_sdk import query, ClaudeAgentOptions
async def main():
async for message in query(
prompt="Review this code for best practices",
options=ClaudeAgentOptions(
allowed_tools=["Read", "Glob", "Grep"],
),
):
if hasattr(message, "result"):
print(message.result)
asyncio.run(main())
import { query } from "@anthropic-ai/claude-agent-sdk";
for await (const message of query({
prompt: "Review this code for best practices",
options: {
allowedTools: ["Read", "Glob", "Grep"]
}
})) {
if ("result" in message) console.log(message.result);
}
Behalten Sie den Kontext über mehrere Austausche hinweg bei. Claude merkt sich gelesene Dateien, durchgeführte Analysen und Gesprächsverlauf. Setzen Sie Sitzungen später fort oder verzweigen Sie sie, um verschiedene Ansätze zu erkunden.
Dieses Beispiel erfasst die Sitzungs-ID aus der ersten Abfrage und setzt sie dann fort, um mit vollständigem Kontext fortzufahren:
import asyncio
from claude_agent_sdk import query, ClaudeAgentOptions, SystemMessage, ResultMessage
async def main():
session_id = None
# First query: capture the session ID
async for message in query(
prompt="Read the authentication module",
options=ClaudeAgentOptions(allowed_tools=["Read", "Glob"]),
):
if isinstance(message, SystemMessage) and message.subtype == "init":
session_id = message.data["session_id"]
# Resume with full context from the first query
async for message in query(
prompt="Now find all places that call it", # "it" = auth module
options=ClaudeAgentOptions(resume=session_id),
):
if isinstance(message, ResultMessage):
print(message.result)
asyncio.run(main())
import { query } from "@anthropic-ai/claude-agent-sdk";
let sessionId: string | undefined;
// First query: capture the session ID
for await (const message of query({
prompt: "Read the authentication module",
options: { allowedTools: ["Read", "Glob"] }
})) {
if (message.type === "system" && message.subtype === "init") {
sessionId = message.session_id;
}
}
// Resume with full context from the first query
for await (const message of query({
prompt: "Now find all places that call it", // "it" = auth module
options: { resume: sessionId }
})) {
if ("result" in message) console.log(message.result);
}
Claude Code-Funktionen
Das SDK unterstützt auch die dateisystembasierte Konfiguration von Claude Code. Mit Standardoptionen lädt das SDK diese aus .claude/ in Ihrem Arbeitsverzeichnis und ~/.claude/. Um einzuschränken, welche Quellen geladen werden, setzen Sie setting_sources (Python) oder settingSources (TypeScript) in Ihren Optionen.
| Funktion | Beschreibung | Speicherort |
|---|---|---|
| Skills | Spezialisierte Funktionen, die in Markdown definiert sind | .claude/skills/*/SKILL.md |
| Slash commands | Benutzerdefinierte Befehle für häufige Aufgaben | .claude/commands/*.md |
| Memory | Projektkontext und Anweisungen | CLAUDE.md oder .claude/CLAUDE.md |
| Plugins | Erweitern Sie mit benutzerdefinierten Befehlen, Agenten und MCP-Servern | Programmgesteuert über plugins-Option |
Vergleichen Sie das Agent SDK mit anderen Claude-Tools
Die Claude-Plattform bietet mehrere Möglichkeiten, mit Claude zu erstellen. So passt das Agent SDK:
Das Anthropic Client SDK bietet Ihnen direkten API-Zugriff: Sie senden Eingabeaufforderungen und implementieren die Tool-Ausführung selbst. Das Agent SDK bietet Ihnen Claude mit integrierter Tool-Ausführung.
Mit dem Client SDK implementieren Sie eine Tool-Schleife. Mit dem Agent SDK handhabt Claude es:
# Client SDK: You implement the tool loop
response = client.messages.create(...)
while response.stop_reason == "tool_use":
result = your_tool_executor(response.tool_use)
response = client.messages.create(tool_result=result, **params)
# Agent SDK: Claude handles tools autonomously
async for message in query(prompt="Fix the bug in auth.py"):
print(message)
// Client SDK: You implement the tool loop
let response = await client.messages.create({ ...params });
while (response.stop_reason === "tool_use") {
const result = yourToolExecutor(response.tool_use);
response = await client.messages.create({ tool_result: result, ...params });
}
// Agent SDK: Claude handles tools autonomously
for await (const message of query({ prompt: "Fix the bug in auth.ts" })) {
console.log(message);
}
Gleiche Funktionen, andere Schnittstelle:
| Anwendungsfall | Beste Wahl |
|---|---|
| Interaktive Entwicklung | CLI |
| CI/CD-Pipelines | SDK |
| Benutzerdefinierte Anwendungen | SDK |
| Einmalige Aufgaben | CLI |
| Produktionsautomatisierung | SDK |
Viele Teams verwenden beide: CLI für die tägliche Entwicklung, SDK für die Produktion. Workflows lassen sich direkt zwischen ihnen übersetzen.
Managed Agents ist eine gehostete REST-API: Anthropic führt den Agent und die Sandbox aus, und Ihre Anwendung sendet Ereignisse und streamt Ergebnisse zurück. Das Agent SDK ist eine Bibliothek, die die Agent-Schleife in Ihrem eigenen Prozess ausführt.
| Agent SDK | Managed Agents | |
|---|---|---|
| Läuft in | Ihr Prozess, Ihre Infrastruktur | Von Anthropic verwaltete Infrastruktur |
| Schnittstelle | Python- oder TypeScript-Bibliothek | REST-API |
| Agent arbeitet an | Dateien in Ihrer Infrastruktur | Eine verwaltete Sandbox pro Sitzung |
| Sitzungsstatus | JSONL auf Ihrem Dateisystem | Von Anthropic gehostetes Ereignisprotokoll |
| Benutzerdefinierte Tools | In-Process-Python- oder TypeScript-Funktionen | Claude löst das Tool aus; Sie führen es aus und geben Ergebnisse zurück |
| Am besten für | Lokale Prototypisierung, Agents, die direkt auf Ihrem Dateisystem und Ihren Diensten arbeiten | Produktions-Agents ohne Betrieb von Sandbox- oder Sitzungsinfrastruktur, langfristige und asynchrone Sitzungen |
Ein häufiger Weg ist die Prototypisierung mit dem Agent SDK lokal und dann der Wechsel zu Managed Agents für die Produktion.
Änderungsprotokoll
Sehen Sie sich das vollständige Änderungsprotokoll für SDK-Updates, Fehlerbehebungen und neue Funktionen an:
- TypeScript SDK: CHANGELOG.md anzeigen
- Python SDK: CHANGELOG.md anzeigen
Fehler melden
Wenn Sie auf Fehler oder Probleme mit dem Agent SDK stoßen:
- TypeScript SDK: Probleme auf GitHub melden
- Python SDK: Probleme auf GitHub melden
Richtlinien für die Markennutzung
Für Partner, die das Claude Agent SDK integrieren, ist die Verwendung von Claude-Branding optional. Wenn Sie Claude in Ihrem Produkt referenzieren:
Erlaubt:
- 'Claude Agent" (bevorzugt für Dropdown-Menüs)
- „Claude" (wenn bereits in einem Menü mit der Bezeichnung „Agents")
- „{YourAgentName} Powered by Claude" (wenn Sie einen vorhandenen Agentennamen haben)
Nicht erlaubt:
- „Claude Code" oder „Claude Code Agent"
- Claude Code-Branding ASCII-Art oder visuelle Elemente, die Claude Code nachahmen
Ihr Produkt sollte sein eigenes Branding beibehalten und nicht wie Claude Code oder ein anderes Anthropic-Produkt aussehen. Wenden Sie sich bei Fragen zur Markenkonformität an das Anthropic-Vertriebsteam.
Lizenz und Bedingungen
Die Verwendung des Claude Agent SDK unterliegt den Anthropic Commercial Terms of Service, auch wenn Sie es verwenden, um Produkte und Dienste bereitzustellen, die Sie Ihren eigenen Kunden und Endbenutzern zur Verfügung stellen, außer soweit eine bestimmte Komponente oder Abhängigkeit unter einer anderen Lizenz abgedeckt ist, wie in der LICENSE-Datei dieser Komponente angegeben.