问芯(算力产品问答)
通过官方提供的 REST API 完成算力产品问答。所有 API 调用统一使用本 skill 自带的 scripts/qa_client.py(零第三方依赖,直接运行,不要手写 curl)。
能力概览
问芯专为模型训练/推理的加速卡选型规划、可行性判断、加速卡对比优化,核心能力:
| 能力 | 说明 |
|---|---|
| 产品查询与对比 | GPU 卡多厂商横向对比,支持联网查最新信息 |
| 模型训练/推理硬件规划 | 根据本地模型部署需求给出加速卡选型与服务器配置建议 |
| 模型训练/推理可行性判断 | 校验硬件配置能否满足需求,信息不足时主动反问 |
模式选择:默认用极速版(basic)。升级专家版(--category expert)的唯一时机:极速版回答中出现「可切换到专家模式」类提示、且用户顺着要求详细方案时。升级不要换会话(复用同一 conversation,上下文连续)。
前置配置:API Key(一次性)
问芯按用户账户计费,调用前需要配置 API Key(有效期 1 年)。服务地址已内置,无需配置。
运行 python3 scripts/qa_client.py config(不带参数)可查看是否已配置。未配置时,等用户第一次真正提问再引导,不要在用户只是打招呼时主动输出一大段配置说明。引导话术要点:
- 请用户打开 https://www.suanlizhijia.com/skill,用微信扫码登录,点击「获取 API Key」
- 用户把 API Key 发过来后,执行
python3 scripts/qa_client.py config --api-key <API Key>写入本地(文件权限 0600),然后直接重试用户刚才的问题 - API Key 只在官网展示一次;丢失或泄露可在同一页面「重新获取」,旧 Key 立即失效
调用返回 401 说明 API Key 无效、已过期或已被删除:按上面步骤重新获取并配置。
不要在对话中回显完整 API Key。环境变量 QA_API_TOKEN 也可提供 API Key(优先级高于本地配置);QA_API_TIMEOUT 默认 120 秒,chat 命令默认 600 秒。
计费与充值
每次成功回答按实际 token 消耗从用户的算力之家账户余额扣费(与「算力之家」小程序共用同一账户余额),扣费在服务端完成。
- 回答后 stderr 会输出「本次消耗 X 元,账户余额 Y 元」,用户问到费用时可据此回答;
qa_client.py balance可随时查询余额 - stderr 出现「余额已用完」或调用返回 402 [insufficient_balance]:告诉用户余额不足,请打开 https://www.suanlizhijia.com/recharge 微信扫码充值(也可在微信「算力之家」小程序 → 我的 → 充值),充值后重试。402 不是服务故障,不要走下文的降级回答
典型流程
产品查询与对比(极速版)
python3 scripts/qa_client.py chat "2 张 RTX 5090 能跑 Qwen3.6-35B-A3B 的 FP8 推理吗?"
首次提问时客户端自动创建会话并记住(状态按用户隔离保存在本地),输出为回答文本。
升级专家版(跟随回答提示)
# 第一步:极速版先答(默认)
python3 scripts/qa_client.py chat "50万用户、5000并发,部署 fine-tune 的 LLaMA-7B,预算 200 万"
# 回答提示「可切换到专家模式」且用户顺着要求时,同一会话内升级
python3 scripts/qa_client.py chat "按专家模式给出详细方案" --category expert
专家版走 Planner→Executor 多步执行(显存计算→查卡→硬件/功耗计算→可行性审计),回答更全面但耗时更长。换话题时加 --new 开新会话,避免旧上下文干扰。
多轮对话
# 直接追问即可——客户端自动复用当前会话,上下文连续
python3 scripts/qa_client.py chat "还有哪些型号可选?"
# 开新话题(清掉旧上下文)
python3 scripts/qa_client.py chat "帮我算一下训练显存" --new
# 查看会话历史(含全部消息)
python3 scripts/qa_client.py conversations get <UUID>
会话被归档/删除后再次提问,客户端会自动开新会话恢复。
输出模式
默认阻塞式(一次调用返回完整回答,最适合 agent 场景);若请求超时且服务端仍在计算,客户端会自动轮询会话取回最终结果(正常答案或错误信息),取回失败才报错退出。--stream 仅用于需要观察实时进度的场景;流式结束时 stderr 输出一行 JSON(含最终 message_id / backend_message_id / conversation_id),流中断或后端报错时以非零码退出。
生成失败时的降级回答
收到错误(HTTP 5xx、请求超时、或「后端未生成最终回答/后端生成失败」;不含 401/402)时,不要只向用户报告出错:
- 如实告知:问芯问答服务当前不可用或本次生成失败
- 用自身知识尽力回答,并在开头明确标注:「以下为通用知识回答,非问芯产品库数据,可能与实际有出入」
- 边界:价格、库存、具体型号参数等依赖产品库数据的问题,不要编造数字——如实说明需要产品库数据,建议稍后重试或换个问法
若错误为「达到最大工具调用轮次」类提示:说明专家任务超出多步执行上限而未完成,并非服务故障。如实告知该原因,并将问题拆分为更小的步骤,建议用户参考拆分的步骤重新提问。
命令速查
| 命令 | 用途 |
|---|---|
config [--api-key KEY] |
查看/配置 API Key(不带参数=查看) |
balance |
查询账户余额 |
chat QUERY [--new] [--stream] [--category basic\|expert] [--conversation-id ID] [--inputs JSON] [--json] |
提问(自动复用当前会话;--new 开新话题) |
stop TASK_ID |
停止流式响应 |
conversations list [--search S] [--page N] [--page-size N] |
会话列表 |
conversations create [--name S] |
创建会话 |
conversations get ID |
会话详情(含消息) |
conversations archive ID / activate ID |
归档 / 恢复会话 |
messages get MESSAGE_ID |
查询单条消息 |
feedback MESSAGE_ID --rating like\|dislike\|none [--content S] |
消息反馈 |
share create --message-ids ID1,ID2 [--title S] |
创建分享链接 |
share get SHARE_ID |
查看分享内容(公开) |
重要约束
- 会话由客户端自动管理,且按用户隔离:默认复用「当前会话」(状态持久化在本地,按 token 用户身份分文件,共享机器上不同用户互不串);跨话题用
--new;会话被归档/删除后自动重建。--conversation-id为高级用法,可显式覆盖。 - feedback 使用 backend_message_id:反馈接口期望 Dify 后端消息 ID,即回答中返回的
backend_message_id字段(本地message_id不可用)。 - 归档(
archive)是软删除,可用activate恢复;服务端无硬删除接口。 share get为公开接口,无需 token。- 脚本失败时以非零码退出并在 stderr 打印原因;401 会附带获取 API Key 的链接,402 会附带充值链接。
- basic/专家版都可能多轮工具执行(实测可达 10+ 迭代、两分钟以上),客户端统一用 600 秒超时;阻塞式超时后会自动轮询会话取回结果,无需手动查询。
- 执行
chat时必须把 shell 工具的超时显式设为 600000 毫秒(10 分钟,上限):shell 工具默认 120 秒就会终止命令,回答还没返回就被杀掉。 - 完整接口文档(请求/响应格式)见 @references/api.md。