直接答案:调用百川智能 API 不需要安装来历不明的 baichuan-sdk。当前官方文档公开的是 HTTP POST https://api.baichuan-ai.com/v1/chat/completions,使用 Bearer API Key 和 JSON 消息体。最稳妥的做法是:从控制台复制当前可用模型 ID,把密钥与模型名放进环境变量,用 requests 发起请求,并记录请求 ID、状态码、Token 用量和实际费用。不要把旧教程里的模型名、价格或显存要求当作永久配置。

先分清:托管 API 与开源权重不是一件事
| 路线 | 你实际获得什么 | 主要成本 | 首先核对 |
|---|---|---|---|
| 百川开放平台 API | 通过网络调用托管模型 | Token、搜索或知识库等服务费用 | 控制台模型 ID、价格、余额、数据条款 |
| Baichuan 2 开源权重 | 下载 7B/13B 等旧代际权重自行运行 | 显存、服务器、部署与维护 | 模型社区许可、商用条件、推理框架 |
旧稿把“API 调用”和“本地部署”混成一个教程,并给出固定的 16GB 显存与 CUDA 11.8 要求。实际显存取决于模型、精度、上下文、批量和推理引擎;如需本地运行,应单独参考模型量化说明,并用推理硬件与延迟证据边界建立自己的性能验收。Baichuan 2 仓库还附带社区许可条件,不能只看到 GitHub 页面上的 Apache 标识就忽略附加协议。
为什么不能照抄旧模型名
截至 2026 年 7 月 18 日复核时,官方通用 API 文档的参数表仍主要展示 Baichuan2-Turbo 与已经标注迁移的 192k 型号;同一官方平台的价格页却列出了 Baichuan-M3-Plus、Baichuan-M3、M2 系列、Baichuan4-Turbo、Baichuan4-Air 等更多型号。这说明公开页面存在更新节奏差异。
因此,本文不把任何模型名硬编码为“永久默认”。上线前应登录开放平台,在模型或调用页面复制账号当前可见的模型 ID,再设置为环境变量。若控制台、API 文档和价格页不一致,以账号实际可调用结果和官方支持答复为准,并保留复核日期。
| 信息来源 | 适合确认什么 | 发生冲突时怎么处理 |
|---|---|---|
| 账号控制台 | 当前账号可创建的 Key、余额、可见模型与调用权限 | 先以真实账号能力做小请求验证 |
| 通用 API 文档 | URL、Header、Body、角色、响应和搜索参数 | 不自行猜测未列出的角色或字段 |
| 价格页 | 型号、上下文、输入/输出及附加服务计费 | 保存查询日期和截图,不把单价写死在代码 |
| 错误码页 | 401、429、500 等公开处理建议 | 结合响应体区分限流与余额不足 |
| 官方支持 | 页面不一致、企业权限和迁移安排 | 保留工单号或邮件,不依赖口头承诺 |
五步完成第一次安全调用
1. 创建并保护 API Key
按官方流程完成账号、实名认证、余额与 API Key 创建。密钥只放在服务端环境变量或密钥管理系统,不写入 WordPress 正文、前端 JavaScript、截图、Git 仓库或日志。若怀疑泄露,立即撤销并轮换。
# PowerShell:只对当前终端会话生效
$env:BAICHUAN_API_KEY="替换为你的密钥"
$env:BAICHUAN_MODEL="从控制台复制当前可用模型ID"
2. 安装通用 HTTP 客户端
python -m venv .venv
.\.venv\Scripts\Activate.ps1
python -m pip install --upgrade requests
官方示例本质上也是 HTTP 请求。使用通用客户端能避免虚构或过期 SDK 的包名、导入路径与方法签名。
3. 发送最小请求
import os
import requests
url = "https://api.baichuan-ai.com/v1/chat/completions"
headers = {
"Content-Type": "application/json",
"Authorization": f"Bearer {os.environ['BAICHUAN_API_KEY']}",
}
payload = {
"model": os.environ["BAICHUAN_MODEL"],
"messages": [
{"role": "user", "content": "回答要简洁;不确定时明确说明。用三点解释什么是向量检索。"},
],
"temperature": 0.2,
"stream": False,
}
response = requests.post(url, headers=headers, json=payload, timeout=(10, 90))
request_id = response.headers.get("X-BC-Request-Id")
print("status=", response.status_code, "request_id=", request_id)
response.raise_for_status()
data = response.json()
print(data["choices"][0]["message"]["content"])
print("usage=", data.get("usage"))
这段代码不会打印密钥,但会输出状态码、官方响应中的请求 ID 与可能存在的用量字段。生产环境不要直接记录完整提示词或回答;日志应按数据敏感度脱敏。
这里没有使用 system 角色,因为截至复核日,官方通用参数表明确列出的消息角色是 user 与 assistant。如果你的控制台或专属文档后来支持更多角色,应先做契约测试再启用,不能仅因其他厂商兼容 OpenAI 风格接口就推定百川拥有相同字段。
请求与响应中哪些字段必须验收
| 字段 | 用途 | 生产检查 |
|---|---|---|
| Authorization | Bearer API Key 鉴权 | 只在服务端注入;轮换后旧 Key 应失效 |
| model | 选择托管模型 | 来自控制台;日志保留实际响应模型 |
| messages | 按时间顺序提交对话 | 限制长度;发送前去除秘密与无关历史 |
| temperature/top_p/top_k | 控制采样 | 一次只调整一个变量并回归质量 |
| stream | 同步或流式返回 | 分别测试超时、中断、拼接与结束原因 |
| X-BC-Request-Id | 请求唯一标识 | 失败和异常结果都保存,便于支持定位 |
| finish_reason | 自然停止或内容过滤等 | 不得把被过滤的空输出当作成功答案 |
| usage | 可能返回的 Token 用量 | 与控制台账单抽样对账,不假设字段永远存在 |
4. 按错误类型处理,而不是无限重试
- 401:检查 Bearer 格式、密钥是否正确或已撤销;不要用重试掩盖鉴权错误。
- 429 频率限制:降低并发,使用带抖动的指数退避;只重试幂等且允许重复执行的请求。
- 429 余额不足:这是计费状态,不应自动重试;先检查账户余额和预算。
- 500:短暂等待后有限次数重试,同时保存请求 ID 供官方支持定位。
| 结果 | 是否自动重试 | 建议动作 |
|---|---|---|
| 连接或读取超时 | 仅在业务允许重复时有限重试 | 指数退避加随机抖动;保留原请求关联 ID |
| 401 | 否 | 检查 Key、Bearer 格式、轮换状态和服务器时钟 |
| 429 限流 | 可以有限重试 | 降并发、排队;读取响应信息后再决定等待 |
| 429 余额不足 | 否 | 暂停任务、触发预算告警,人工确认充值 |
| 500 | 可以有限重试 | 短暂等待;持续失败时携请求 ID 联系支持 |
| 200 但输出不可用 | 不能原样无限重试 | 记录 finish_reason、模型和样本,走质量降级或人工处理 |
HTTP 状态码的一般语义可交叉参考RFC 9110,但百川错误页对同一个 429 同时列出“频率限制”和“余额不足”,所以程序还要读取响应体并分类。Requests 默认不会替你设置业务合理的超时;连接与读取超时的差异可参考Requests 超时文档。
5. 用真实任务验收
“请求返回 200”只代表接口成功,不代表业务质量合格。至少准备事实问答、结构化 JSON、长文本摘要和拒答边界四类样本,记录首响应时间、总耗时、输入输出 Token、任务通过率和人工纠错。有关 Token 的定义与计价边界可参考Token 计算主页面;关于回答核验可参考AI 幻觉核验清单。

当前价格应该怎样阅读
官方价格页按“千 Tokens”列价,并说明一般情况下 1 Token 约等于 1.5 个中文汉字;这只是平台给出的经验换算,不适合替代实际账单。部分型号把输入、输出分开计费,部分型号采用合并单价;搜索增强、医疗搜索、知识库文件存储和 Embedding 还可能单独收费。
预算公式应按所选型号当日口径计算:输入千Token × 输入单价 + 输出千Token × 输出单价 + 附加服务。上线前用 50—100 条真实请求核对控制台账单,不要根据“每篇文章大约多少汉字”估算。价格会变化,本文不会把某个单价写成长期承诺。
| 账单字段 | 每次请求记录 | 月度复核 |
|---|---|---|
| 模型 | 请求模型、响应模型、复核版本 | 是否发生迁移或路由变化 |
| Token | 输入、输出及平台返回用量 | 聚合量与控制台是否一致 |
| 附加能力 | 搜索、医疗搜索、知识库、Embedding | 按次数、存储量和 Token 分开核对 |
| 失败请求 | 状态码、是否产生费用、重试次数 | 失败成本与重试放大率 |
| 业务单位 | 任务 ID、是否通过、人工返工 | 每个有效任务成本,而非每次调用成本 |
知识库与联网搜索何时再加
先让基础对话请求稳定,再考虑知识库。官方知识库接口包含文件上传、知识库创建、分片和文件关联等步骤;它不是在请求里随手加一个参数就自动获得可靠答案。应准备可授权文档、版本号、更新时间、引用回传和删除流程,并测试“没有答案时是否拒答”。有关检索原理可先阅读RAG 是什么。
官方价格页还说明搜索增强可能按次收费,某些模型可能自动触发特定搜索。是否启用 with_search_enhance 应结合控制台与当前文档验证,并同时评估来源质量、隐私和费用,不能把联网等同于事实正确。
向量化与知识库也要分开记账:文本先经 Embedding 生成向量,文件还可能按存储容量和天数计费。当前规则可查看官方 Embedding 接口。删除知识库前应确认文件、分片、向量数据和业务索引的清理顺序,并用一个已删除文档的专属问题验证它不再被召回。
从演示代码到生产服务还缺什么

生产服务应在百川接口前增加自己的输入校验、权限、限流、超时、重试预算和审计层。API Key 的环境变量读取可参考Python os.environ 文档;团队级密钥生命周期可参考OWASP Secrets Management 指南。环境变量不是完整密钥管理系统,但比把 Key 写进源代码安全得多。
还要准备降级路径:目标模型不可用时,是切换已验收的备用模型、返回稍后重试、还是转人工?切换模型可能改变价格、能力和合规边界,不能在代码里静默替换。任何自动降级都应记录原模型、替代模型、触发原因和结果,并允许回滚。
把一次调用变成可审计的请求合同
能返回 200 只说明某次请求被接口接受,不代表生产接入完成。调用方应在自己系统中为每次业务请求生成关联 ID,并记录模型 ID、接口版本、超时、重试次数、输入/输出 Token、搜索或知识库开关、HTTP 状态码、供应商响应 ID、延迟和最终业务结果。关联 ID 是本站应用层的审计字段,不应伪装成百川官方未承诺的幂等参数;是否支持某个 Header 或请求字段,必须以当前文档和真实小流量测试为准。
| 合同字段 | 为什么要保存 | 失败时怎么用 | 隐私边界 |
|---|---|---|---|
| 应用关联 ID | 串联用户请求、模型调用与后续动作 | 定位重试是否造成重复处理 | 不要直接使用手机号、邮箱或明文账号 |
| 模型 ID 与配置版本 | 防止控制台模型变化后结果不可复现 | 比较变更前后的质量、延迟与费用 | 不记录 API Key |
| 输入/输出 Token 与附加服务 | 复算账单和单位任务成本 | 发现上下文膨胀、搜索或知识库额外费用 | 日志保留计数,不默认保留完整敏感提示词 |
| 状态码、响应 ID 与耗时 | 区分客户端、限流与服务端问题 | 向官方支持提交最小证据 | 工单前脱敏业务内容和用户标识 |
| 质量判定与人工接管 | 连接技术成功与真实任务结果 | 判断降级、重试还是转人工 | 高风险结论应保留审核责任 |
日志还要区分“请求失败”和“结果不可用”。401/403 多半要检查密钥、权限和账号状态;429 需要遵循服务端提示并限制并发;5xx 可以在有上限的退避策略下重试;200 但输出为空、格式错误、事实不可靠或超出业务边界,则属于质量失败。HTTP 429 的通用语义可对照RFC 6585,但具体配额、响应体和恢复时间仍以百川当前错误码、响应头与支持答复为准。
怎样把价格页变成可复算预算
价格页会变,预算表不能只抄“每千 Token 单价”。截至本次复核,页面同时存在输入/输出分别计价的型号、输入输出合并计价的旧型号、搜索增强按次收费、医疗搜索可能自动触发、Embedding 按 Token 收费和知识库文件按 GB/天收费等不同单位。先锁定账号当前模型和功能,再建立公式;页面还明确提醒价格可能变动,因此正式上线应保存日期和页面快照。
| 成本项 | 可复算公式 | 最容易漏掉什么 | 验收方法 |
|---|---|---|---|
| 输入 Token | 输入 Token ÷ 1000 × 当前输入单价 | 系统提示、历史对话、检索片段也会增加输入 | 用响应用量与本地台账交叉核对 |
| 输出 Token | 输出 Token ÷ 1000 × 当前输出单价 | 模型可能与输入采用不同单价 | 设置输出上限并记录被截断比例 |
| 搜索或医疗搜索 | 实际触发次数 × 当前每次价格 | 自动判断或特定模型默认触发的附加服务 | 分别跑开/关对照请求并核账 |
| Embedding | 向量化 Token ÷ 1000 × 当前单价 | 重建索引和重复上传造成重复向量化 | 按文档版本和文件哈希去重 |
| 知识库存储 | 计费 GB × 天数 × 当前单价 | 删除延迟、版本副本和测试数据 | 每日导出存储量并核对账单 |
建议用三种真实任务算预算:短问答、带多轮历史的长对话、开启搜索或知识库的检索任务。每种至少记录 30 次请求的中位数与高分位 Token、延迟、失败率和人工返工率,再计算单次有效结果成本。便宜但经常需要人工重写的模型,最终业务成本可能更高;价格更高但能稳定满足格式、引用和安全要求的模型,也可能减少总成本。跨供应商比较时可参考站内模型选型与验收方法,不要只比较标价。
上线前必须演练的六种故障
生产门槛应由演练结果决定,而不是由演示成功决定。至少模拟密钥失效、模型 ID 不存在、请求超时、429 限流、5xx 服务故障和 200 但输出不合格六种情况。每次演练都要验证:是否停止无限重试、是否避免重复扣费或重复业务动作、是否向用户给出可理解状态、是否触发降级或人工接管、是否保留足够但不泄密的诊断信息。
| 故障 | 正确响应 | 必须观察 | 上线阻断条件 |
|---|---|---|---|
| 密钥撤销或权限不足 | 立即失败并告警,不把密钥写入响应 | 401/403、密钥轮换与恢复时间 | 日志或前端出现完整密钥 |
| 模型 ID 不可用 | 停止猜测名称,回到控制台核对 | 错误体、账号权限、文档差异 | 静默切换到未经评测的模型 |
| 超时或 429 | 有限退避、并发控制和总时限 | 重试次数、Retry-After、排队时间 | 无上限重试或请求风暴 |
| 5xx | 熔断、降级或转人工 | 供应商响应 ID、影响任务与恢复点 | 把服务端错误当成功写入业务状态 |
| 格式不合格 | 本地 Schema 校验,失败后受控修复 | 字段缺失、类型错误与修复次数 | 未校验就调用下游工具 |
| 事实或安全不合格 | 阻止自动发布或高风险动作 | 来源、拒答、人工接管与纠错记录 | 把模型回答当数据库事实 |
完成演练后再设上线阈值,例如:技术成功率、P95 延迟、格式通过率、人工接管率、单个有效结果成本和高风险错误数。阈值必须使用自己的数据,不照抄供应商宣传数字。任何更换模型、开启搜索、增加知识库或修改提示词的操作,都应视为需要回归测试的版本变更。
最小上线证据包至少包括:一次已脱敏的成功请求与响应、六类故障演练记录、模型和价格页复核日期、30 个以上真实任务的质量与延迟汇总、Token/附加服务/人工返工成本表、密钥轮换记录、数据保留与删除规则、降级和回滚步骤。代码仓库只保存环境变量名和示例占位符,不保存真实 Key;截图也要检查浏览器地址栏、控制台和网络面板是否泄露凭证。
上线审批人还应能回答三个问题:某次结果怎样追溯到模型与配置版本;百川接口不可用时业务怎样安全停止或降级;账单突然升高时怎样定位到具体任务、Token 与附加服务。只要其中一个问题没有可执行答案,就应继续停留在灰度阶段。医疗、法律、财务、账号修改、外部发送和自动采购等高影响场景还要增加专业审核、最小权限与明确确认,不能因为接口返回成功就自动执行。
正式发布后的第一周应每天复盘失败样本和费用差异,随后再按风险调整周期。若控制台、文档和价格页发生冲突,先暂停扩量,保存页面快照与请求证据,再向官方支持确认;不要用旧文章、搜索摘要或模型自己的回答替代当前平台事实。每次确认都要写入变更记录,并注明验证账号、区域、模型 ID、请求时间和受影响功能,以便下一次复核能够真正比较。
上线前检查表
- 模型 ID 来自当前控制台,不是搜索结果或旧教程。
- 密钥不进入浏览器、仓库、正文、截图和普通日志。
- 为连接与读取设置超时,并限制 429/500 重试次数。
- 记录请求 ID、模型 ID、复核日期、Token 与费用,不记录敏感原文。
- 对四类真实样本做回归测试,并设置错误答案的人工升级路径。
- 知识库、搜索、医疗等附加能力单独核验计费与数据边界。
- 若改为本地权重,重新评估硬件、许可证、安全备案和运维责任。
资料来源与复核边界
接口地址、鉴权、消息结构与请求 ID 依据百川开放平台 API 文档;型号、Token 计费与附加服务依据官方价格页;错误处理依据官方错误码;文件与知识库步骤依据文件接口和知识库接口;本地权重与许可边界依据Baichuan 2 官方仓库。企业与产品背景可另见站内百川智能介绍。资料复核日期:2026 年 7 月 19 日。
控制台入口与产品能力变化可从百川开放平台首页重新进入,避免通过仿冒登录页提交 Key。本文没有使用控制台私有内容,也没有代替读者验证账号是否具备某个模型权限;“当前可用”必须由账号自己的最小请求确认。
编辑复核与纠错记录:本文由兰塞 AI 编辑流程于 2026 年 7 月 19 日复核。旧稿中的 pip install baichuan-sdk、from baichuan import Baichuan、固定模型名、固定显存和“秒级响应”等说法均未得到当前官方资料的完整支持,已全部撤下;本次还移除了官方通用参数表未列出的 system 角色,新增页面漂移、请求合同、分类重试、可复算账单、六类故障演练、生产门禁与降级记录。本文只提供通用技术接入方法,不构成医疗用途、商用许可或费用承诺。本站的来源、更新与纠错原则见关于本站与编辑规范。
下一次复核将重新检查模型、价格、配额、错误码与账号可见能力。
