跳转到内容

Anthropic SDK 接入(Python / TypeScript)

用 Anthropic 官方 SDK 调 1折AI:base_url 填 https://1zheai.com,原生支持缓存、流式、工具调用和 thinking。

Anthropic 官方 SDK 走原生 /v1/messages,Claude 的所有参数都能直接用。改的地方只有 base_url 和 api_key。

Python
pip install anthropic
Python
import os
import anthropic
client = anthropic.Anthropic(
base_url="https://1zheai.com",
api_key=os.environ["ONEZHE_API_KEY"],
)
message = client.messages.create(
model="claude-sonnet-5-5",
max_tokens=1024,
messages=[{"role": "user", "content": "用一句话介绍你自己"}],
)
print(message.model)
print(message.content[0].text)
print(message.usage)

base_url 填根地址,不要加 /v1。

Python
with client.messages.stream(
model="claude-sonnet-5-5",
max_tokens=1024,
messages=[{"role": "user", "content": "写一首四行的诗"}],
) as stream:
for text in stream.text_stream:
print(text, end="", flush=True)

把长且固定的内容放进 system,加上 cache_control:

Python
message = client.messages.create(
model="claude-sonnet-5-5",
max_tokens=1024,
system=[
{
"type": "text",
"text": LONG_PROJECT_CONTEXT, # 每次都一样的长文本
"cache_control": {"type": "ephemeral"},
}
],
messages=[{"role": "user", "content": "根据上面的说明回答:..."}],
)
print(message.usage.cache_creation_input_tokens, message.usage.cache_read_input_tokens)

第二次调用时 cache_read_input_tokens 大于 0 就是命中了。细节见 Prompt Caching。

官方 SDK 会读取 ANTHROPIC_BASE_URL 和 ANTHROPIC_API_KEY,构造客户端时不传参数也行:

bash
export ANTHROPIC_BASE_URL="https://1zheai.com"
export ANTHROPIC_API_KEY="sk-你的Key"

然后构造客户端时不传参数:

python
client = anthropic.Anthropic() # 自动读取上面两个变量

如果这台机器上 Claude Code 也读这两个变量,它们会一起切到 1折AI,这通常正是你想要的。

404?

base_url 多写了 /v1。Anthropic SDK 会自己拼 /v1/messages。

401?

检查 API 密钥(API key);另外,环境里如果同时存在 ANTHROPIC_AUTH_TOKEN(比如以前给 Claude Code 设的旧值),SDK 也会读它,把旧值删掉再试。