Agent

用 Claude API 构建你的第一个 Agent

从 Tool Use 到多轮对话,手把手教你用 Claude API 搭建一个能自主决策的 AI Agent。

什么是 AI Agent?

AI Agent 是一个能够自主决策、调用工具并完成复杂任务的智能系统。与简单的对话不同,Agent 可以:

  • 分析任务并制定计划
  • 调用外部工具获取信息
  • 根据结果调整策略
  • 多轮迭代直到完成目标

Claude 的 Tool Use

Claude API 提供了原生的 Tool Use 能力,让 Agent 开发变得简单:

import anthropic

client = anthropic.Anthropic()

tools = [
    {
        "name": "get_weather",
        "description": "获取指定城市的天气信息",
        "input_schema": {
            "type": "object",
            "properties": {
                "city": {"type": "string", "description": "城市名称"}
            },
            "required": ["city"]
        }
    }
]

response = client.messages.create(
    model="claude-sonnet-4-20250514",
    max_tokens=1024,
    tools=tools,
    messages=[{"role": "user", "content": "北京今天天气怎么样?"}]
)

Agent 循环

一个完整的 Agent 需要实现循环逻辑:

  1. 发送请求 — 将用户输入和历史消息发送给 Claude
  2. 检查响应 — 如果 Claude 返回 tool_use,执行对应工具
  3. 返回结果 — 将工具结果作为 tool_result 发回
  4. 重复 — 直到 Claude 返回最终文本回答
def run_agent(user_message, tools_handler):
    messages = [{"role": "user", "content": user_message}]
    
    while True:
        response = client.messages.create(
            model="claude-sonnet-4-20250514",
            max_tokens=4096,
            tools=tools,
            messages=messages
        )
        
        if response.stop_reason == "end_turn":
            return response.content[0].text
        
        # 处理 tool_use
        tool_results = []
        for block in response.content:
            if block.type == "tool_use":
                result = tools_handler(block.name, block.input)
                tool_results.append({
                    "type": "tool_result",
                    "tool_use_id": block.id,
                    "content": result
                })
        
        messages.append({"role": "assistant", "content": response.content})
        messages.append({"role": "user", "content": tool_results})

最佳实践

  • 清晰的工具描述:Claude 根据描述决定何时调用工具
  • 错误处理:工具执行失败时返回有意义的错误信息
  • 上下文管理:定期总结历史消息避免超出上下文窗口
  • 安全边界:限制 Agent 可执行的操作范围

总结

Claude 的 Tool Use 让构建 Agent 变得直观而强大。通过合理的工具设计和循环控制,你可以构建出能解决实际问题的智能 Agent。