Ori联系我们

文档OriHub

Anthropic SDK

为了满足开发者对 Anthropic API 生态的使用需求,我们的 API 新增了对 Anthropic API 格式的支持。通过简单的配置,即可将 OriHub 的能力接入到 Anthropic API 生态中。

第一步:安装 Anthropic SDK

Python

pip install anthropic

Node.js

npm install @anthropic-ai/sdk

第二步:配置环境变量

两种用法都只改两处:base_url 指向 https://api.lk888.ai,api_key 填你的 sk- 密钥。

SDK 默认读这两个环境变量,设好就够:

export ANTHROPIC_API_KEY=sk-xxxxxxxx
export ANTHROPIC_BASE_URL=https://api.lk888.ai

第三步:调用 API

客户端不用传参,读上一步配好的环境变量就行。

Python

from anthropic import Anthropic

client = Anthropic()

message = client.messages.create(
    model="sn-5",
    max_tokens=1024,
    messages=[{"role": "user", "content": "介绍一下你自己"}],
)

print(message.content[0].text)

Node.js

import Anthropic from '@anthropic-ai/sdk';

const client = new Anthropic();

const message = await client.messages.create({
  model: 'sn-5',
  max_tokens: 1024,
  messages: [{ role: 'user', content: '介绍一下你自己' }],
});

for (const block of message.content) {
  if (block.type === 'text') console.log(block.text);
}

第四步:特别注意

  • base_url 填到域名就行,别加 /v1 —— SDK 自己拼 /v1/messages,多带一段就是 404
  • 用扩展思考 + 工具调用时,assistant 那一轮的返回要原样回传。response.content 是块列表,thinking 块不能改、不能重排顺序,改了直接报 400
  • 回传时别只挑 type == "thinking" 的块 —— redacted_thinking 要一起带上,漏了服务端会把多轮链路断掉
  • 密钥写进环境变量,别提交进仓库

示例代码

流式响应

Python:

with client.messages.stream(
    model="sn-5",
    max_tokens=1024,
    messages=[{"role": "user", "content": "介绍一下你自己"}],
) as stream:
    for text in stream.text_stream:
        print(text, end="", flush=True)

Node.js:

const stream = client.messages.stream({
  model: 'sn-5',
  max_tokens: 1024,
  messages: [{ role: 'user', content: '介绍一下你自己' }],
});

for await (const event of stream) {
  if (event.type === 'content_block_delta' && event.delta.type === 'text_delta') {
    process.stdout.write(event.delta.text);
  }
}
  • Anthropic 协议吐的是 message_start / content_block_delta / content_block_stop / message_delta / message_stop 事件
  • 这次调用花了多少,响应头 X-Task-Id 是任务号,照首次调用 API那页查

支持的模型

使用 Anthropic SDK 时,支持以下模型。

  • Claude Fable 5.1
  • Claude Fable 5
  • Claude Opus 5.5
  • Claude Opus 5
  • Claude Opus 4.8
  • Claude Opus 4.7
  • Claude Opus 4.6
  • Claude Opus 4.5
  • Claude Sonnet 5.5
  • Claude Sonnet 5
  • Claude Sonnet 4.6
  • Claude Haiku 5.5
  • Claude Haiku 4.5

兼容性说明

支持的参数

在使用 Anthropic SDK 接入时,我们支持以下输入参数:

  • model —— 模型名(必填)
  • messages —— 消息数组,每条带 role(user / assistant)和 content(必填)
  • max_tokens —— 最大输出 token 数(必填,Anthropic 格式要求,建议 1024 以上)
  • system —— system 提示词,独立字段,不放进 messages(可选)
  • stream —— 是否流式输出(可选)

Messages 字段支持

messages 是数组,每条消息两个字段:role 和 content。

{
  "model": "sn-5",
  "max_tokens": 1024,
  "messages": [
    { "role": "user", "content": "你好" }
  ]
}
  • role 只有 user 和 assistant,模型自己说过的话记作 assistant
  • content 可以是字符串,也可以是内容块数组(text、tool_use、tool_result、thinking 等)
  • 多轮就是按顺序往数组里追加,前面几轮原样留着
  • system 提示词不写进 messages,顶层 system 字段单独给
  • 工具调用那轮 assistant 消息带 tool_use 块,工具结果作为下一条 user 消息里的 tool_result 块

注意

  • system 是独立字段,不能塞进 messages —— 这是 Anthropic 格式跟 OpenAI 最大的差别
  • 鉴权头两种都认:x-api-key(Anthropic SDK 默认)或 Authorization: Bearer
  • 平台没有 /v1/messages/count_tokens,SDK 的 count_tokens 会 404,token 数在客户端估
  • 思考模型流式时先来 content_block_start(type=thinking)、thinking_delta、signature_delta,文本可能几秒后才到 —— 超时别从首个 text 算起
  • 分组路由看密钥的调度策略,请求里的 channel_group / X-Channel-Group 不改路由

Thinking 控制

开启思考:请求里加 thinking 对象。

message = client.messages.create(
    model="sn-5",
    max_tokens=16000,
    thinking={"type": "enabled", "budget_tokens": 10000},
    messages=[{"role": "user", "content": "分析一下这段代码"}],
)
  • type: "enabled" —— 给定思考预算,budget_tokens 是上限。Opus 4.6、Sonnet 4.6 这类新模型改用 type: "adaptive",思考量由模型自己定,不用给 budget_tokens
  • display: "summarized" 返回思考摘要,display: "omitted" 不返回思考文本、只留签名,文本出得更早
  • Node.js 里是同一个对象:thinking: { type: 'enabled', budget_tokens: 10000 }
  • 平台原样透传 thinking,上游返回什么就是什么
  • 思考内容在 response.content 里,块的 type 是 thinking;多轮原样回传的规则见第四步

思考深度控制

深度用 effort 调,思考多少由模型自己定。

message = client.messages.create(
    model="sn-5",
    max_tokens=16000,
    thinking={"type": "adaptive", "display": "summarized"},
    effort="high",
    messages=[{"role": "user", "content": "分析一下这段代码"}],
)
  • effort 有 low / medium / high / xhigh / max 五档,是软引导 —— 给高了也不一定用满
  • Opus 5.5、Sonnet 5.5、Fable 5.1、Opus 5、Sonnet 5、Haiku 5.5 这些思考默认开着,不用设 thinking;但 display 默认是 omitted,想看思考文字要自己写 display: "summarized"
  • Opus 4.8、Opus 4.7、Opus 4.6、Sonnet 4.6 思考默认关,得先设 thinking: {"type": "adaptive"}
  • 固定预算的老写法 {"type": "enabled", "budget_tokens": 10000} 只有 Opus 4.5、Sonnet 4.5、Haiku 4.5 收,其它模型报 400
  • xhigh / max 在默认开思考的模型上会报 400,high 及以下正常
  • 思考 token 算进 max_tokens,两边都得留够;返回 stop_reason: "max_tokens" 就是不够了,要么加 max_tokens,要么降 effort