Claude 工具调用(Tools)¶
Claude 系列模型在本平台通过 Anthropic Messages 接口 (POST /v1/messages) 和 OpenAI 兼容接口 (POST /v1/chat/completions) 支持工具调用。常见能力包括:
- 联网搜索(Web Search):让 Claude 直接访问实时网页内容,回答时效性问题并自动引用来源。
- 自定义函数(Function Calling):让模型调用你的业务接口(查天气、查订单等)。
本文重点介绍 在 New-API 平台下,如何为 Claude 启用联网搜索工具。
🌐 联网搜索(Web Search)¶
Web Search 工具 让 Claude 直接使用实时网络内容,从而: - 回答最新信息:不受模型知识截止日期限制,可回答近期事件、股价、天气等。 - 自动引用来源:回答中会包含对搜索结果的引用(citations),便于用户核实。
1. 使用 OpenAI 兼容接口(推荐)¶
如果你使用 OpenAI 格式的库(如 openai-python)或者直接调用 /v1/chat/completions,可以通过顶级参数 web_search_options 或在 tools 数组中使用 web_search_preview 启用联网搜索。这是在 New-API 平台触发 Claude 联网搜索最简便且通用的方式。
方式 A:顶级参数 (推荐)
curl https://api-cs-al.naci-tech.com/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $API_KEY" \
-d '{
"model": "claude-3-5-sonnet",
"messages": [
{ "role": "user", "content": "纽约现在天气怎么样?" }
],
"web_search_options": {
"search_context_size": "medium"
}
}'
方式 B:OpenAI 风格 Tools 数组
{
"model": "claude-3-5-sonnet",
"messages": [...],
"tools": [{ "type": "web_search_preview" }],
"tool_choice": "auto"
}
关键参数说明:
- web_search_options: 包含搜索配置的对象。
- search_context_size: 可选,控制搜索结果注入上下文的大小(low, medium, high)。默认为 medium。
- web_search_preview: OpenAI 风格的内置搜索工具类型名。
2. 使用 Anthropic 原生接口 (/v1/messages)¶
如果你直接使用 Anthropic 风格的接口,需在 tools 数组中显式定义 web_search 工具。
请求示例 (curl):推荐使用 web_search_20250305
curl https://api-cs-al.naci-tech.com/v1/messages \
-H "anthropic-version: 2023-06-01" \
-H "Content-Type: application/json" \
-H "x-api-key: $API_KEY" \
-d '{
"model": "claude-3-5-sonnet-20241022",
"max_tokens": 1024,
"messages": [
{
"role": "user",
"content": "纽约现在天气怎么样?"
}
],
"tools": [
{
"type": "web_search_20250305",
"name": "web_search",
"max_uses": 5
}
]
}'
💡 常见调用失败排查:
1. 必须包含 max_uses: Anthropic 接口要求显式提供此参数(如 5),否则可能报错。
2. 工具名称固定: name 必须严格设置为 "web_search"。
3. 版本选择: 本平台经 Bedrock 转发时,请优先使用 web_search_20250305。若使用 web_search_20260209,部分后端(如 Bedrock)会要求工具带 input_schema,可能报错 custom.input_schema: Field required。
4. 若仍报 input_schema: Field required:说明请求被转发到 Bedrock,且该后端要求工具定义中包含 input_schema。可尝试为 web_search 工具补充以下字段后再请求:
"tools": [
{
"type": "web_search_20250305",
"name": "web_search",
"max_uses": 5,
"input_schema": {
"type": "object",
"properties": {
"query": { "type": "string", "description": "Search query" }
}
}
}
]
若问题依旧,建议改用 OpenAI 兼容接口(见上文「使用 OpenAI 兼容接口」)通过 web_search_options 或 tools: [{ "type": "web_search_preview" }] 启用联网搜索,可避免后端差异。
3. 支持的模型¶
联网搜索适用于多款 Claude 模型(以平台实际支持为准):
- Claude 3.5 / 3.7:
claude-3-5-sonnet,claude-3-7-sonnet等。 - Claude 4.x (Opus/Sonnet/Haiku):
claude-opus-4-6,claude-sonnet-4.5等。
4. 工具版本说明¶
web_search_20250305: 基础联网搜索,常用且稳定;经 Bedrock 转发时推荐使用此版本,避免input_schema相关校验错误。web_search_20260209: 支持**动态过滤**(需同时启用 Code Execution 工具),适合技术文档检索等。仅适用于 Claude 4.6 系列模型。注意:本平台若将请求转发至 AWS Bedrock,该版本可能因缺少input_schema报错,此时请改用web_search_20250305或使用 OpenAI 兼容接口的web_search_preview。
5. 高级工具参数(仅原生接口)¶
| 参数 | 类型 | 说明 |
|---|---|---|
max_uses |
整数 | 单次请求内最多执行几次搜索,例如 5;超限会返回 max_uses_exceeded 错误 |
allowed_domains |
数组 | 仅允许从这些域名返回结果,如 ["wikipedia.org"],不要带 https:// |
blocked_domains |
数组 | 排除这些域名的结果;与 allowed_domains 不能同时使用 |
user_location |
对象 | 用于本地化结果,可包含 city, region, country, timezone |
6. 响应结构与引用 (Citations)¶
启用联网搜索后,Claude 的回答中会包含 citations 数组。展示给用户时,应保留或适当呈现这些来源,以符合官方标注要求。
响应示例 (原生接口):
{
"role": "assistant",
"content": [
{
"type": "text",
"text": "根据查询结果,纽约今天……",
"citations": [
{
"type": "web_search_result_location",
"url": "https://weather.com/...",
"title": "New York Weather",
"cited_text": "..."
}
]
}
]
}
🧩 自定义函数(Function Calling)¶
若需要 Claude 调用你自己的接口(数据库、订单系统等),请在 tools 中定义 input_schema。完整流程见:Anthropic 对话格式(Messages) 中的「工具调用」章节。