import asynciofrom claude_agent_sdk import query, ClaudeAgentOptionsasync 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 itasyncio.run(main())
如果 PowerShell 因执行策略错误而阻止 Activate.ps1,请先运行 Set-ExecutionPolicy -Scope Process RemoteSigned。
Python 包需要 Python 3.10 或更高版本。如果 pip 报告 No matching distribution found for claude-agent-sdk,说明您的解释器版本早于 3.10。在 macOS 或 Linux 上运行 python3 --version,或在 Windows 上运行 py --version,以检查版本。
TypeScript SDK 为您的平台捆绑了一个本地 Claude Code 二进制文件作为可选依赖项,因此您无需单独安装 Claude Code。
除非事先获得批准,否则 Anthropic 不允许第三方开发人员为其产品(包括基于 Claude Agent SDK 构建的智能体)提供 claude.ai 登录或速率限制。请改用本文档中描述的 API 密钥身份验证方法。
3
运行您的第一个智能体
此示例创建一个智能体,该智能体使用内置工具列出当前目录中的文件。
Copy
import asynciofrom claude_agent_sdk import query, ClaudeAgentOptionsasync 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 asynciofrom claude_agent_sdk import query, ClaudeAgentOptionsasync 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 asynciofrom claude_agent_sdk import query, ClaudeAgentOptionsasync 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 asynciofrom claude_agent_sdk import query, ClaudeAgentOptions, SystemMessage, ResultMessageasync 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())
Claude 平台提供了多种使用 Claude 构建的方式。以下是 Agent SDK 的适用场景:
Agent SDK vs Client SDK
Agent SDK vs Claude Code CLI
Agent SDK vs Managed Agents
Anthropic Client SDK 为您提供直接 API 访问:您发送提示并自己实现工具执行。Agent SDK 为您提供具有内置工具执行的 Claude。
使用 Client SDK,您实现工具循环。使用 Agent SDK,Claude 处理它:
Copy
# Client SDK: You implement the tool loopresponse = 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 autonomouslyasync for message in query(prompt="Fix the bug in auth.py"): print(message)