Loading...
    • 开发者指南
    • API 参考
    • MCP
    • 资源
    • 发布说明
    Search...
    ⌘K
    快速开始
    Claude 简介快速入门
    模型与定价
    模型概览选择模型Claude 4.5 新功能迁移到 Claude 4.5模型弃用定价
    使用 Claude 构建
    功能概览使用 Messages API上下文窗口提示词最佳实践
    能力
    提示词缓存上下文编辑扩展思考工作量流式消息批量处理引用多语言支持Token 计数嵌入视觉PDF 支持Files API搜索结果结构化输出
    工具
    概览如何实现工具使用细粒度工具流式处理Bash 工具代码执行工具程序化工具调用计算机使用工具文本编辑器工具网页获取工具网页搜索工具记忆工具工具搜索工具
    Agent 技能
    概览快速入门最佳实践通过 API 使用技能
    Agent SDK
    概览快速入门TypeScript SDKTypeScript V2(预览版)Python SDK迁移指南
    API 中的 MCP
    MCP 连接器远程 MCP 服务器
    第三方平台上的 Claude
    Amazon BedrockMicrosoft FoundryVertex AI
    提示词工程
    概览提示词生成器使用提示词模板提示词改进器清晰直接使用示例(多轮提示)让 Claude 思考(CoT)使用 XML 标签给 Claude 一个角色(系统提示词)预填充 Claude 的响应链接复杂提示词长上下文提示扩展思考提示
    测试与评估
    定义成功标准开发测试用例使用评估工具降低延迟
    加强防护栏
    减少幻觉提高输出一致性缓解越狱流式拒绝减少提示词泄露保持 Claude 的角色
    管理和监控
    Admin API 概览使用和成本 APIClaude Code Analytics API
    Console
    Log in
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...

    Solutions

    • AI agents
    • Code modernization
    • Coding
    • Customer support
    • Education
    • Financial services
    • Government
    • Life sciences

    Partners

    • Amazon Bedrock
    • Google Cloud's Vertex AI

    Learn

    • Blog
    • Catalog
    • Courses
    • Use cases
    • Connectors
    • Customer stories
    • Engineering at Anthropic
    • Events
    • Powered by Claude
    • Service partners
    • Startups program

    Company

    • Anthropic
    • Careers
    • Economic Futures
    • Research
    • News
    • Responsible Scaling Policy
    • Security and compliance
    • Transparency

    Learn

    • Blog
    • Catalog
    • Courses
    • Use cases
    • Connectors
    • Customer stories
    • Engineering at Anthropic
    • Events
    • Powered by Claude
    • Service partners
    • Startups program

    Help and security

    • Availability
    • Status
    • Support
    • Discord

    Terms and policies

    • Privacy policy
    • Responsible disclosure policy
    • Terms of service: Commercial
    • Terms of service: Consumer
    • Usage policy
    Agent SDK

    快速开始

    使用 Python 或 TypeScript Agent SDK 开始构建能够自主工作的 AI 代理

    使用 Agent SDK 构建一个 AI 代理,它可以读取你的代码、找到错误并修复它们,所有这一切都无需手动干预。

    你将做什么:

    1. 使用 Agent SDK 设置一个项目
    2. 创建一个包含一些有缺陷代码的文件
    3. 运行一个代理,自动查找并修复错误

    前置条件

    • Node.js 18+ 或 Python 3.10+
    • 一个 Anthropic 账户(在此注册)

    设置

    1. 1

      安装 Claude Code

      Agent SDK 使用 Claude Code 作为其运行时。为你的平台安装它:

      在你的机器上安装 Claude Code 后,在终端中运行 claude 并按照提示进行身份验证。SDK 将自动使用此身份验证。

      有关 Claude Code 安装的更多信息,请参阅 Claude Code 设置。

    2. 2

      创建项目文件夹

      为此快速开始创建一个新目录:

      mkdir my-agent && cd my-agent

      对于你自己的项目,你可以从任何文件夹运行 SDK;默认情况下,它将有权访问该目录及其子目录中的文件。

    3. 3

      安装 SDK

      为你的语言安装 Agent SDK 包:

    4. 4

      设置你的 API 密钥

      如果你已经对 Claude Code 进行了身份验证(通过在终端中运行 claude),SDK 将自动使用该身份验证。

      否则,你需要一个 API 密钥,你可以从 Anthropic 控制台 获取。

      在你的项目目录中创建一个 .env 文件并在其中存储 API 密钥:

      ANTHROPIC_API_KEY=your-api-key

      使用 Amazon Bedrock、Google Vertex AI 或 Microsoft Azure? 请参阅 Bedrock、Vertex AI 或 Azure AI Foundry 的设置指南。

      除非事先获得批准,否则我们不允许第三方开发者为其产品(包括基于 Claude Agent SDK 构建的代理)提供 Claude.ai 登录或速率限制。请改用本文档中描述的 API 密钥身份验证方法。

    创建一个有缺陷的文件

    此快速开始将引导你构建一个可以查找并修复代码中错误的代理。首先,你需要一个包含一些有意错误的文件供代理修复。在 my-agent 目录中创建 utils.py 并粘贴以下代码:

    def calculate_average(numbers):
        total = 0
        for num in numbers:
            total += num
        return total / len(numbers)
    
    def get_user_name(user):
        return user["name"].upper()

    此代码有两个错误:

    1. calculate_average([]) 因除以零而崩溃
    2. get_user_name(None) 因 TypeError 而崩溃

    构建一个查找并修复错误的代理

    如果你使用 Python SDK,请创建 agent.py,或者如果使用 TypeScript,请创建 agent.ts:

    此代码有三个主要部分:

    1. query:创建代理循环的主入口点。它返回一个异步迭代器,所以你使用 async for 来流式传输 Claude 工作时的消息。请参阅 Python 或 TypeScript SDK 参考中的完整 API。

    2. prompt:你想让 Claude 做什么。Claude 根据任务确定要使用哪些工具。

    3. options:代理的配置。此示例使用 allowedTools 将 Claude 限制为 Read、Edit 和 Glob,并使用 permissionMode: "acceptEdits" 自动批准文件更改。其他选项包括 systemPrompt、mcpServers 等。请参阅 Python 或 TypeScript 的所有选项。

    async for 循环在 Claude 思考、调用工具、观察结果并决定下一步做什么时继续运行。每次迭代都会产生一条消息:Claude 的推理、工具调用、工具结果或最终结果。SDK 处理编排(工具执行、上下文管理、重试),所以你只需使用流。当 Claude 完成任务或遇到错误时,循环结束。

    循环内的消息处理过滤人类可读的输出。如果不进行过滤,你会看到原始消息对象,包括系统初始化和内部状态,这对调试很有用,但通常很冗长。

    此示例使用流式传输来实时显示进度。如果你不需要实时输出(例如,对于后台作业或 CI 管道),你可以一次性收集所有消息。有关详细信息,请参阅 流式传输与单轮模式。

    运行你的代理

    你的代理已准备好。使用以下命令运行它:

    python3 agent.py

    运行后,检查 utils.py。你会看到处理空列表和空用户的防御性代码。你的代理自主地:

    1. 读取 utils.py 以理解代码
    2. 分析 逻辑并识别会导致崩溃的边界情况
    3. 编辑 文件以添加适当的错误处理

    这就是 Agent SDK 的与众不同之处:Claude 直接执行工具,而不是要求你实现它们。

    如果你看到"Claude Code not found",请 安装 Claude Code 并重启你的终端。对于"API key not found",请 设置你的 API 密钥。有关更多帮助,请参阅 完整故障排除指南。

    尝试其他提示

    现在你的代理已设置好,尝试一些不同的提示:

    • "Add docstrings to all functions in utils.py"
    • "Add type hints to all functions in utils.py"
    • "Create a README.md documenting the functions in utils.py"

    自定义你的代理

    你可以通过更改选项来修改代理的行为。以下是一些示例:

    添加网络搜索功能:

    options=ClaudeAgentOptions(
        allowed_tools=["Read", "Edit", "Glob", "WebSearch"],
        permission_mode="acceptEdits"
    )

    给 Claude 一个自定义系统提示:

    options=ClaudeAgentOptions(
        allowed_tools=["Read", "Edit", "Glob"],
        permission_mode="acceptEdits",
        system_prompt="You are a senior Python developer. Always follow PEP 8 style guidelines."
    )

    在终端中运行命令:

    options=ClaudeAgentOptions(
        allowed_tools=["Read", "Edit", "Glob", "Bash"],
        permission_mode="acceptEdits"
    )

    启用 Bash 后,尝试:"Write unit tests for utils.py, run them, and fix any failures"

    关键概念

    工具 控制你的代理可以做什么:

    工具代理可以做什么
    Read、Glob、Grep只读分析
    Read、Edit、Glob分析和修改代码
    Read、Edit、Bash、Glob、Grep完全自动化

    权限模式 控制你想要多少人工监督:

    模式行为用例
    acceptEdits自动批准文件编辑,询问其他操作受信任的开发工作流
    bypassPermissions无提示运行CI/CD 管道、自动化
    default需要 canUseTool 回调来处理批准自定义批准流程

    上面的示例使用 acceptEdits 模式,它自动批准文件操作,以便代理可以无需交互提示地运行。如果你想提示用户批准,请使用 default 模式并提供一个 canUseTool 回调 来收集用户输入。有关更多控制,请参阅 权限。

    后续步骤

    现在你已经创建了你的第一个代理,学习如何扩展其功能并将其定制为你的用例:

    • 权限:控制你的代理可以做什么以及何时需要批准
    • 钩子:在工具调用之前或之后运行自定义代码
    • 会话:构建维护上下文的多轮代理
    • MCP 服务器:连接到数据库、浏览器、API 和其他外部系统
    • 托管:将代理部署到 Docker、云和 CI/CD
    • 示例代理:查看完整示例:电子邮件助手、研究代理等
    import asyncio
    from claude_agent_sdk import query, ClaudeAgentOptions, AssistantMessage, ResultMessage
    
    async def main():
        # Agentic loop: streams messages as Claude works
        async for message in query(
            prompt="Review utils.py for bugs that would cause crashes. Fix any issues you find.",
            options=ClaudeAgentOptions(
                allowed_tools=["Read", "Edit", "Glob"],  # Tools Claude can use
                permission_mode="acceptEdits"            # Auto-approve file edits
            )
        ):
            # Print human-readable output
            if isinstance(message, AssistantMessage):
                for block in message.content:
                    if hasattr(block, "text"):
                        print(block.text)              # Claude's reasoning
                    elif hasattr(block, "name"):
                        print(f"Tool: {block.name}")   # Tool being called
            elif isinstance(message, ResultMessage):
                print(f"Done: {message.subtype}")      # Final result
    
    asyncio.run(main())