Appearance
Python + openai SDK 接入 Ulnvault:只改两个参数
结论先行:装官方
openai包,把base_url指向https://ai.ulnit.com/v1、api_key换成 Ulnvault Key 即可。
安装与初始化
python
# pip install -U openai
import os
from openai import OpenAI
client = OpenAI(
api_key=os.environ["ULNVAULT_KEY"],
base_url="https://ai.ulnit.com/v1",
timeout=60.0,
max_retries=3,
)
resp = client.chat.completions.create(
model="openai/gpt-5.6-terra",
messages=[{"role": "user", "content": "用三行说明什么是幂等性"}],
)
print(resp.choices[0].message.content, resp.usage.total_tokens)model 填站内模型 ID(形如 厂商/模型名),同一把 Key 覆盖全部模型。
流式输出
python
stream = client.chat.completions.create(
model="anthropic/claude-sonnet-5",
messages=[{"role": "user", "content": "写一段接口变更说明"}],
stream=True,
stream_options={"include_usage": True},
)
for c in stream:
if c.choices[0].delta.content:
print(c.choices[0].delta.content, end="", flush=True)流式不改变计费口径:输入按完整 prompt 计,输出按生成 token 计。
超时、重试与并发
- 单请求
timeout=60起步,长文生成放宽到 300 秒 max_retries=3自带指数退避:429 与 5xx 重试,请求体错误不重试- 批量用线程池控并发,别一次丢几千个请求
python
from concurrent.futures import ThreadPoolExecutor
def ask(t):
return client.chat.completions.create(
model="deepseek/deepseek-v4.1-flash",
messages=[{"role": "user", "content": t}], timeout=30,
).choices[0].message.content
with ThreadPoolExecutor(max_workers=8) as pool:
out = list(pool.map(ask, ["改写:" + t for t in todos]))并发从 4 起步,出现 429 就减半并加大退避;批任务写成幂等的。
成本估算(每百万 token,采集 2026-10-08)
| model 参数 | 输入 | 输出 | 上下文 | Python 场景定位 |
|---|---|---|---|---|
| openai/gpt-5.6-terra | $2.2 | $13.2 | 105 万 | 复杂推理、代码与结构设计 |
| anthropic/claude-sonnet-5 | $2.2 | $11 | 100 万 | 长文生成、工具调用 |
| deepseek/deepseek-v4.1-flash | $0.33 | $1.32 | 105 万 | 批量改写、抽取、打标 |
100 万 token 输入走 deepseek-v4.1-flash 约 $0.33,同量走 gpt-5.6-terra 约 $2.2。成本 = 输入token × 输入单价 + 输出token × 输出单价,数据取自 resp.usage。批处理示例见 /use-cases/batch-translation.md。
常见问题
需要装额外的 SDK 吗?
不需要,openai 包本身就是 OpenAI 兼容协议客户端。
报 401 或 404 先查什么?
401 是 Key 没读到(变量名错或有空格);404 是 base_url 少了 /v1。
流式输出为什么没有 usage?
需加 stream_options={"include_usage": True},再读最后一个 chunk 的 usage。
怎么把成本摁住?
每个调用点绑定固定档位:高频低价值批处理走低价档,质量敏感任务留高价档。
价格与采集时间?
本页单价按 2026-10-08 实时核验;站内价 = OpenRouter 挂牌 ×1.1。
相关阅读:gpt-5-6 | batch-translation | node-openai-sdk