Hakan AI

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"}}
        ]
    }]
)

常用参数

参数类型必填说明
modelstring模型名称,如 claude-sonnet-4-5-20250929
messagesarray消息列表
max_tokensinteger最大输出 token 数(Anthropic 必填)
systemstring系统提示词
temperaturenumber随机性,0-1 之间
top_pnumber核采样参数
top_kintegerTop-K 采样
streamboolean是否流式输出
thinkingobject扩展思考配置
toolsarray工具调用列表
stop_sequencesarray停止序列

常见问题

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'

更多资源

On this page