Anthropic 接口
使用原生 Anthropic 协议或 OpenAI 兼容协议调用 Claude 模型
Hakan AI 支持通过 原生 Anthropic 协议 或 OpenAI 兼容协议 调用 Claude 系列模型。推荐使用原生协议,功能更完整,支持扩展思考、思维链、多模态等高级特性。
协议选择
| 协议 | 端点地址 | 说明 |
|---|---|---|
| Anthropic 原生 | https://hakanaiktn.com/v1/messages | 推荐,支持所有 Claude 功能 |
| OpenAI 兼容 | https://hakanaiktn.com/v1 | 简单场景,便于已有 OpenAI 代码改造 |
配置时确保 SDK 协议与端点地址匹配,避免常见的"协议不匹配"错误。
原生 Anthropic 协议
cURL
curl https://hakanaiktn.com/v1/messages \
-H "x-api-key: sk-xxxxxxxx" \
-H "anthropic-version: 2023-06-01" \
-H "content-type: application/json" \
-d '{
"model": "claude-sonnet-4-5-20250929",
"max_tokens": 1024,
"stream": false,
"messages": [
{"role": "user", "content": "你好!"}
]
}'Python SDK
基础调用
from anthropic import Anthropic
client = Anthropic(
base_url='https://hakanaiktn.com',
api_key='sk-xxxxxxxx',
)
message = client.messages.create(
model="claude-sonnet-4-5-20250929",
max_tokens=1024,
messages=[
{"role": "user", "content": "你好,Claude!"}
]
)
print(message.content[0].text)Anthropic SDK 中
base_url不要加/v1,SDK 内部会自动拼接/v1/messages路径。
流式输出
with client.messages.stream(
model="claude-sonnet-4-5-20250929",
max_tokens=1024,
messages=[{"role": "user", "content": "讲一个故事"}],
) as stream:
for text in stream.text_stream:
print(text, end="", flush=True)系统提示词
message = client.messages.create(
model="claude-sonnet-4-5-20250929",
max_tokens=1024,
system="你是一个专业的翻译助手,请将用户的输入翻译成英文。",
messages=[
{"role": "user", "content": "今天天气真好"}
]
)扩展思考(Extended Thinking)
message = client.messages.create(
model="claude-sonnet-4-5-20250929",
max_tokens=8192,
thinking={
"type": "enabled",
"budget_tokens": 4000,
},
messages=[
{"role": "user", "content": "这道数学题怎么解?1+1=?"}
]
)
for block in message.content:
if block.type == "thinking":
print("思考:", block.thinking)
elif block.type == "text":
print("答案:", block.text)多模态(图片理解)
Anthropic 原生协议 — URL 方式
message = client.messages.create(
model="claude-sonnet-4-5-20250929",
max_tokens=1024,
messages=[{
"role": "user",
"content": [
{
"type": "image",
"source": {
"type": "url",
"url": "https://example.com/image.jpg"
}
},
{"type": "text", "text": "描述这张图片"}
]
}]
)Anthropic 原生协议 — Base64 方式
import base64
with open("image.jpg", "rb") as f:
b64 = base64.b64encode(f.read()).decode()
message = client.messages.create(
model="claude-sonnet-4-5-20250929",
max_tokens=1024,
messages=[{
"role": "user",
"content": [
{
"type": "image",
"source": {
"type": "base64",
"media_type": "image/jpeg",
"data": b64,
}
},
{"type": "text", "text": "描述这张图片"}
]
}]
)使用 OpenAI 兼容协议调用 Claude
from openai import OpenAI
client = OpenAI(
base_url='https://hakanaiktn.com/v1',
api_key='sk-xxxxxxxx',
)
response = client.chat.completions.create(
model="claude-sonnet-4-5-20250929",
messages=[{
"role": "user",
"content": [
{"type": "text", "text": "描述这张图片"},
{"type": "image_url", "image_url": {"url": "https://example.com/image.jpg"}}
]
}]
)常用参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
model | string | ✅ | 模型名称,如 claude-sonnet-4-5-20250929 |
messages | array | ✅ | 消息列表 |
max_tokens | integer | ✅ | 最大输出 token 数(Anthropic 必填) |
system | string | 系统提示词 | |
temperature | number | 随机性,0-1 之间 | |
top_p | number | 核采样参数 | |
top_k | integer | Top-K 采样 | |
stream | boolean | 是否流式输出 | |
thinking | object | 扩展思考配置 | |
tools | array | 工具调用列表 | |
stop_sequences | array | 停止序列 |
常见问题
401 / "missing x-api-key"
确认 SDK 使用了 x-api-key 而不是 Authorization。如果手动用 requests 库,需要:
headers = {
"x-api-key": "sk-xxxxxxxx",
"anthropic-version": "2023-06-01",
"content-type": "application/json",
}base_url 配置
- 原生协议:
base_url='https://hakanaiktn.com'(不带/v1) - OpenAI 兼容协议:
base_url='https://hakanaiktn.com/v1'