用 Claude API 构建你的第一个 Agent

举报
chenyunliang 发表于 2026/08/23 14:47:31 2026/08/23
【摘要】 从 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 可执行的操作范围
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。