文档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,模型自己说过的话记作assistantcontent可以是字符串,也可以是内容块数组(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_tokensdisplay: "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