欢迎回来

登录 EAKE AI,继续您的智能之旅

忘记密码?
还没有账号?立即注册

Claude API 实战:工具调用与多模态能力

2026-05-07 · Anthropic

Claude API 工具调用

Anthropic Claude API 支持工具调用(Tool Use),允许模型在对话中调用预定义的外部函数,实现与真实世界的交互。这是构建 AI Agent 的核心能力。

定义工具

import anthropic

client = anthropic.Anthropic()

tools = [{
    "name": "get_stock_price",
    "description": "获取指定股票的当前价格",
    "input_schema": {
        "type": "object",
        "properties": {
            "symbol": {
                "type": "string",
                "description": "股票代码,如 AAPL"
            }
        },
        "required": ["symbol"]
    }
}]

response = client.messages.create(
    model="claude-sonnet-4-20250514",
    max_tokens=1024,
    tools=tools,
    messages=[{
        "role": "user",
        "content": "苹果公司股票现在多少钱?"
    }]
)

# 检查模型是否请求调用工具
if response.stop_reason == "tool_use":
    for block in response.content:
        if block.type == "tool_use":
            print(f"调用工具: {block.name}")
            print(f"参数: {block.input}")

多轮工具调用

# 将工具结果返回给模型继续对话
tool_result_message = {
    "role": "user",
    "content": [{
        "type": "tool_result",
        "tool_use_id": block.id,
        "content": f"{{'price': 198.50, 'change': '+2.3%'}}"
    }]
}

# 继续对话
response2 = client.messages.create(
    model="claude-sonnet-4-20250514",
    max_tokens=1024,
    tools=tools,
    messages=[
        {"role": "user", "content": "苹果公司股票现在多少钱?"},
        response.content[0],  # 模型的工具调用
        tool_result_message
    ]
)

多模态:图像理解

import base64

# 方式1:base64编码
with open("image.png", "rb") as f:
    image_data = base64.standard_b64encode(f.read()).decode("utf-8")

response = client.messages.create(
    model="claude-sonnet-4-20250514",
    max_tokens=1024,
    messages=[{
        "role": "user",
        "content": [
            {
                "type": "image",
                "source": {
                    "type": "base64",
                    "media_type": "image/png",
                    "data": image_data
                }
            },
            {
                "type": "text",
                "text": "描述这张图片的内容"
            }
        ]
    }]
)

# 方式2:URL引用
response = client.messages.create(
    model="claude-sonnet-4-20250514",
    max_tokens=1024,
    messages=[{
        "role": "user",
        "content": [
            {
                "type": "image",
                "source": {
                    "type": "url",
                    "url": "https://example.com/photo.jpg"
                }
            },
            {"type": "text", "text": "分析这张图表"}
        ]
    }]
)

PDF 文档处理

with open("document.pdf", "rb") as f:
    pdf_data = base64.standard_b64encode(f.read()).decode("utf-8")

response = client.messages.create(
    model="claude-sonnet-4-20250514",
    max_tokens=4096,
    messages=[{
        "role": "user",
        "content": [
            {
                "type": "document",
                "source": {
                    "type": "base64",
                    "media_type": "application/pdf",
                    "data": pdf_data
                }
            },
            {"type": "text", "text": "总结这个PDF的关键要点"}
        ]
    }]
)

模型选择

模型上下文适用场景
Claude Opus 4200K最复杂任务,最强推理
Claude Sonnet 4200K通用最佳,性价比高
Claude Haiku 3.5200K快速响应,低成本

评论区

发表评论