主题
Claude (Anthropic) 接入
调用 Claude 有两种路径,强烈推荐 OpenAI 兼容路径。
示例中的模型名仅为占位
本页代码示例里的 model 字段(如 claude-sonnet-4-6)只是写法占位——Anthropic 上游模型经常更新,实际能用哪些 Claude 模型 + 当前型号名永远以 控制台模型 / 定价页 为准。
路径 A:OpenAI 兼容(推荐)
把 OpenAI SDK 的 model 字段填成 Claude 模型名即可,其他完全照 OpenAI 兼容接入。
python
from openai import OpenAI
client = OpenAI(
base_url="https://s1.why01.top/v1",
api_key="sk-你的key",
)
resp = client.chat.completions.create(
model="claude-sonnet-4-6",
messages=[{"role": "user", "content": "用一句话解释 transformer"}],
)
print(resp.choices[0].message.content)curl:
bash
curl https://s1.why01.top/v1/chat/completions \
-H "Authorization: Bearer sk-你的key" \
-H "Content-Type: application/json" \
-d '{
"model": "claude-sonnet-4-6",
"messages": [{"role": "user", "content": "你好"}]
}'具体 Claude 模型名以控制台 模型 / 定价页 为准。
路径 B:Anthropic 原生协议
如果你的代码已经在用 anthropic SDK(client.messages.create()),可以直接换 base_url:
bash
pip install anthropicpython
from anthropic import Anthropic
client = Anthropic(
base_url="https://s1.why01.top",
api_key="sk-你的key", # ⚠️ 是 why01 的 sk-...,不是 Anthropic 官方的
)
msg = client.messages.create(
model="claude-sonnet-4-6",
max_tokens=1024,
messages=[{"role": "user", "content": "你好"}],
)
print(msg.content[0].text)WARNING
- API Key 用 why01 控制台创建的
sk-...,不是 Anthropic 官方的sk-ant-... - 部分上游渠道仅支持 OpenAI 兼容路径,不一定支持 Anthropic 原生协议;具体看你所在用户组的渠道——出问题先切到路径 A 验证
选哪条
| 场景 | 推荐 |
|---|---|
| 新代码 | A(OpenAI 兼容) |
| 已有 anthropic SDK 大量代码 | B 也可以,但出问题先用 A 验链路 |
| Tool Use | A |
| Prompt Caching(如上游支持) | 视上游实现,先试 A,A 不支持试 B |
| Computer Use / 复杂功能 | 不一定支持,与客服确认 |
多模态
python
import base64
with open("image.jpg", "rb") as f:
img_b64 = base64.standard_b64encode(f.read()).decode()
resp = client.chat.completions.create(
model="claude-sonnet-4-6",
messages=[{
"role": "user",
"content": [
{"type": "text", "text": "图里是什么?"},
{"type": "image_url", "image_url": {
"url": f"data:image/jpeg;base64,{img_b64}"
}}
]
}],
)注意 Claude 系模型对图片格式 / 大小有限制(jpeg/png/gif/webp,单图 ≤ 5MB),按 Anthropic 官方文档 标准。
Tool Use(函数调用)
OpenAI 兼容路径下,Tool Use 的 schema 与 OpenAI 完全一致:
python
tools = [{
"type": "function",
"function": {
"name": "get_weather",
"description": "查询某城市天气",
"parameters": {
"type": "object",
"properties": {
"city": {"type": "string"}
},
"required": ["city"]
}
}
}]
resp = client.chat.completions.create(
model="claude-sonnet-4-6",
messages=[{"role": "user", "content": "北京今天天气"}],
tools=tools,
)
print(resp.choices[0].message.tool_calls)调用失败
参考 错误码速查。