在 Baseten 上跑 Grounded Inference,TaoToken 端点与 Key 分开管

发布时间:2026/9/18 1:23:21
在 Baseten 上跑 Grounded Inference,TaoToken 端点与 Key 分开管 1. Baseten Hosted Tools 的 Grounded Inference为什么先拆 Key 再谈接入Baseten 发布 Hosted Tools首个 Grounded Inference 把网络搜索接进托管模型。平台工程师看到这个能力第一反应通常不是“怎么开”而是“Key 从哪里来、端点归谁管、搜索链路会不会污染模型推理配额”。如果模型推理走一个 Key搜索 Provider 又走另一个 Key排障时却只有一个Authorization头问题就会被拖到生产环境才爆。本文按平台工程视角把 TaoToken 端点与 Key 分开管TaoToken 官网 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_contentbaseten_grounded_intro 拿 KeyBase URL 用https://taotoken.net/apiBaseten 托管模型侧的 Grounded Inference 单独配置搜索 Provider。文中会给出端点与 Key 分离表、环境变量样例、调用链截图说明并覆盖 Claude Code、Codex、CC Switch 三件套的配置差异。Grounded Inference 的关键词是“可配置调用网络搜索”支持 Exa、Keenable、Parallel 和 You.com 四家搜索提供商。它不是一个孤立的模型接口而是一条工具链客户端请求模型模型决定是否触发搜索Hosted Tools 再去调用搜索 Provider最后把结果拼回上下文。平台工程师要管的是这条链路上的凭证、端点、配额和审计。最糟糕的做法是把所有 Key 塞进一个.env然后让前端、后端、CI、本地 CLI 共用。一旦搜索 Provider 返回 429你会误判成模型限流一旦模型 Key 泄漏搜索账单也可能被一起刷走。所以先做一次责任拆分模型推理侧TaoToken 提供统一 Base URL 和 API Key负责模型对话、Coding Plan、Key 控制台。搜索工具侧Baseten Hosted Tools 配置 Exa、Keenable、Parallel、You.com 的 Provider Key。客户端侧Claude Code 使用ANTHROPIC_*Codex 使用config.toml两者不能互相套。平台侧环境变量、K8s Secret、审计日志、轮换策略。这个拆分不是形式主义而是为了在调用链出问题时能快速定位。下面先给出分离表再给可复制的环境变量和客户端配置。2. 端点与 Key 分离表TaoToken 管模型侧Baseten 管搜索侧平台工程里最常见的混乱是端点、Key、控制台三者的归属不一致。建议把模型侧统一收口到 TaoToken搜索侧保留在 Baseten Hosted Tools。TaoToken 官网 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_contentbaseten_grounded_key_table 可以进入控制台Base URL 固定为https://taotoken.net/api。不要在每个项目里复制不同来源的模型 Key否则后续无法做统一轮换。层级端点/控制台Key 名称环境变量示例责任方是否入 Git模型对话https://taotoken.net/apiTaoToken API KeyTAOTOKEN_API_KEY平台/应用否模型控制台API Keys 页面TaoToken API KeyTAOTOKEN_API_KEY平台管理员否Coding PlanTaoToken Coding Plan套餐绑定的 KeyTAOTOKEN_API_KEY开发者否搜索 ProviderBaseten Hosted ToolsExa/Keenable/Parallel/You.com KeyEXA_API_KEY等搜索平台管理员否客户端 CLIClaude CodeANTHROPIC_AUTH_TOKENANTHROPIC_AUTH_TOKEN开发者本地否客户端 CLICodexTAOTOKEN_API_KEYTAOTOKEN_API_KEY开发者本地否表格里的“是否入 Git”必须全部为否。即使是测试 Key也不要提交到仓库。很多团队会用.env.example只保留占位符这是可接受的但真实 Key 应进入 Secret 管理系统。TaoToken 的 Key 创建入口建议直接走 API Keys创建后只显示一次复制到平台 Secret 中。再补一张“调用链责任表”调用段发起方目标凭证失败时先查1应用/CLITaoToken Base URLTAOTOKEN_API_KEYKey 是否有效、余额/套餐2TaoToken模型推理端点平台内部模型名、区域、超时3Baseten 模型Hosted ToolsBaseten 侧配置Grounded Inference 是否开启4Hosted Tools搜索 ProviderEXA_API_KEY等Provider 配额、网络、策略5模型应用无citations、响应结构这张表的价值在于当客户端看到 401先查第 1 段当模型回复没有引用来源先查第 3、4 段当响应很慢先看第 2 段和第 4 段的耗时拆分。把 TaoToken 端点和搜索 Key 分开管排障路径就从“猜”变成“按段查”。3. 环境变量样例让 Baseten Grounded Inference 与 TaoToken 端点互不污染下面给一份可复制的环境变量样例。注意两点第一TaoToken 的 Base URL 是https://taotoken.net/api第二搜索 Provider Key 只给 Baseten Hosted Tools 使用不要传给模型客户端。# .env.example # 模型推理侧TaoToken TAOTOKEN_API_KEYYOUR_API_KEY TAOTOKEN_BASE_URLhttps://taotoken.net/api TAOTOKEN_MODELyour-model-name # Baseten Hosted ToolsGrounded Inference BASETEN_HOSTED_TOOLS_ENABLEDtrue GROUNDED_INFERENCE_ENABLEDtrue GROUNDED_INFERENCE_PROVIDERexa # 四家搜索提供商按需选择不要全部同时启用 EXA_API_KEYyour_exa_key KEENABLE_API_KEYyour_keenable_key PARALLEL_API_KEYyour_parallel_key YOUCOM_API_KEYyour_youcom_key # 客户端侧Claude Code 专用 ANTHROPIC_BASE_URLhttps://taotoken.net/api ANTHROPIC_AUTH_TOKENYOUR_API_KEY ANTHROPIC_MODELyour-claude-model # 客户端侧Codex 专用 TAOTOKEN_API_KEYYOUR_API_KEY如果你用 Docker Compose 本地复现可以这样注入services: app: image: your-app:latest environment: - TAOTOKEN_API_KEY${TAOTOKEN_API_KEY} - TAOTOKEN_BASE_URLhttps://taotoken.net/api - BASETEN_HOSTED_TOOLS_ENABLEDtrue - GROUNDED_INFERENCE_ENABLEDtrue - GROUNDED_INFERENCE_PROVIDERexa - EXA_API_KEY${EXA_API_KEY} ports: - 8080:8080本地 shell 临时调试可以这样导出export TAOTOKEN_API_KEYYOUR_API_KEY export TAOTOKEN_BASE_URLhttps://taotoken.net/api export GROUNDED_INFERENCE_ENABLEDtrue export GROUNDED_INFERENCE_PROVIDERexa export EXA_API_KEYyour_exa_key这里最容易犯的错是把EXA_API_KEY也写成TAOTOKEN_API_KEY或者反过来把TAOTOKEN_API_KEY传给 Baseten 搜索工具。两者用途不同TAOTOKEN_API_KEY调用 TaoToken 模型端点。EXA_API_KEY/KEENABLE_API_KEY/PARALLEL_API_KEY/YOUCOM_API_KEY调用搜索 Provider。ANTHROPIC_AUTH_TOKEN只给 Claude Code值可以填YOUR_API_KEY但变量名不要混。平台工程建议用命名空间区分TAOTOKEN_*、BASETEN_*、SEARCH_*、CLIENT_*。这样在日志脱敏时也能按前缀处理。4. Claude Code settings.json 与 Codex config.toml两套客户端不要互相套用很多接入问题不是服务端造成的而是客户端配置串了。Claude Code 和 Codex 的配置格式不同环境变量也不同。Claude Code 使用settings.json和ANTHROPIC_*Codex 使用config.toml。不要把ANTHROPIC_*写到 Codex 的配置里也不要把 Codex 的model_providers套到 Claude Code。Claude Code 的settings.json示例{ env: { ANTHROPIC_BASE_URL: https://taotoken.net/api, ANTHROPIC_AUTH_TOKEN: YOUR_API_KEY, ANTHROPIC_MODEL: your-claude-model } }保存后重启 Claude Code或者用/config确认当前生效的 Base URL。如果仍然请求旧地址检查是否被系统环境变量覆盖。Claude Code 文档可参考 Claude Code 文档。Codex 的config.toml示例model your-model-name model_provider taotoken [model_providers.taotoken] name TaoToken base_url https://taotoken.net/api env_key TAOTOKEN_API_KEY wire_api chat然后在 shell 中导出export TAOTOKEN_API_KEYYOUR_API_KEYCodex 不会读取ANTHROPIC_AUTH_TOKEN作为模型 Key。如果你在 Codex 里配了ANTHROPIC_*大概率会得到认证失败或请求发往错误端点。CC Switch 三件套也按这个逻辑拆供应商地址https://taotoken.net/apiAPI KeyYOUR_API_KEY模型名按套餐或控制台可用模型填写在 CC Switch 中切换供应商时确认当前模式是 Claude Code 还是 Codex。切换后做一次最小请求验证不要直接跑完整项目。5. 在 Baseten 托管模型上开启 Grounded Inference 的配置清单Baseten 侧的重点是 Hosted Tools 和 Grounded Inference 的开关以及搜索 Provider 的选择。原文信息表明它支持 Exa、Keenable、Parallel 和 You.com 四家。平台工程师不要一次性全开建议按环境分开发环境开一家 Provider例如 Exa便于观察引用格式。预发环境开两家做回退测试。生产环境只开经过配额评估的 Provider并设置超时和降级。Baseten 侧配置通常围绕以下变量或配置项BASETEN_HOSTED_TOOLS_ENABLEDtrue GROUNDED_INFERENCE_ENABLEDtrue GROUNDED_INFERENCE_PROVIDERexa GROUNDED_INFERENCE_MAX_RESULTS5 GROUNDED_INFERENCE_TIMEOUT_MS8000 EXA_API_KEYyour_exa_key如果使用 Keenable、Parallel 或 You.com替换 Provider 和 KeyGROUNDED_INFERENCE_PROVIDERkeenable KEENABLE_API_KEYyour_keenable_key # 或 GROUNDED_INFERENCE_PROVIDERparallel PARALLEL_API_KEYyour_parallel_key # 或 GROUNDED_INFERENCE_PROVIDERyou.com YOUCOM_API_KEYyour_youcom_key配置完成后先用 curl 验证 TaoToken 模型端点是否通curl -sS https://taotoken.net/api/chat/completions \ -H Authorization: Bearer YOUR_API_KEY \ -H Content-Type: application/json \ -d { model: your-model-name, messages: [ {role: user, content: 用一句话说明 Grounded Inference 的作用} ] }返回 200 且 JSON 中有choices说明 TaoToken 侧 Key 和 Base URL 正常。再去 Baseten 侧触发带搜索的请求观察是否返回 citations。常见问题可以按表排查现象可能原因检查项401 UnauthorizedTaoToken Key 错误或未带 BearerTAOTOKEN_API_KEY、请求头400 provider key missing搜索 Provider Key 未配置EXA_API_KEY等429 Too Many Requests搜索 Provider 配额耗尽Provider 控制台、限流配置模型回复无引用Grounded Inference 未开启GROUNDED_INFERENCE_ENABLED请求超时搜索链路超时GROUNDED_INFERENCE_TIMEOUT_MS结果与问题无关Provider 选择或查询改写问题切换 Provider、调整提示词注意不要让 MCP 或 Agent 直连生产数据库。搜索工具只应访问公开网络或经过白名单的检索源数据库查询由读者在本地或受控环境执行。6. 调用链验证与截图说明从 TaoToken 端点看到 citations配置完成后需要一张“调用链截图说明”来固定验收标准。截图不是随便截一张响应而是标出五个位置客户端请求 URL应显示https://taotoken.net/api/...。请求头Authorization: Bearer YOUR_API_KEY截图中 Key 要脱敏。TaoToken 响应choices、usage、model字段。Baseten/Hosted Tools 日志Grounded Inference 触发记录。搜索 Provider 日志Exa/Keenable/Parallel/You.com 的请求与结果数。用 Python 做一次最小调用import os import requests base_url os.environ.get(TAOTOKEN_BASE_URL, https://taotoken.net/api) api_key os.environ[TAOTOKEN_API_KEY] resp requests.post( f{base_url}/chat/completions, headers{ Authorization: fBearer {api_key}, Content-Type: application/json, }, json{ model: your-model-name, messages: [ {role: user, content: 检索最近关于 Grounded Inference 的公开资料并给出引用。} ], metadata: { enable_grounded_inference: True, search_provider: exa } }, timeout30, ) print(resp.status_code) print(resp.json())注意metadata字段是否支持取决于 Baseten Hosted Tools 的实际配置方式。如果不支持就按 Baseten 侧配置开启而不是在客户端硬塞。截图时重点看响应中是否有 citations 或引用片段。如果没有回到第 5 节的排查表。调用链日志建议结构化{ trace_id: req-20250101-001, stage: taotoken_request, endpoint: https://taotoken.net/api/chat/completions, model: your-model-name, status: 200, latency_ms: 1280, grounded_inference: true, search_provider: exa, search_result_count: 5 }平台侧把trace_id从客户端透传到 TaoToken再透传到 Baseten 搜索链路。这样 401、429、超时都能按同一trace_id聚合。7. 平台工程加固Key 轮换、配额、审计与回滚Key 分离之后才能谈轮换和审计。TaoToken Key 在控制台创建建议按环境分 Key开发、预发、生产各一个。搜索 Provider Key 同样按环境分。不要多个环境共用一个 Key否则测试流量会污染生产配额。K8s Secret 示例apiVersion: v1 kind: Secret metadata: name: tao-token-secret type: Opaque stringData: TAOTOKEN_API_KEY: YOUR_API_KEY TAOTOKEN_BASE_URL: https://taotoken.net/api --- apiVersion: v1 kind: Secret metadata: name: baseten-search-secret type: Opaque stringData: GROUNDED_INFERENCE_PROVIDER: exa EXA_API_KEY: your_exa_key轮换流程建议在 TaoToken 控制台创建新 Key旧 Key 保留 24 小时。更新 K8s Secret滚动重启应用。观察 401 和 429 指标确认新 Key 全量生效。删除旧 Key。搜索 Provider Key 同理先加新 Key再切流量最后删旧 Key。监控指标至少包括TaoToken 端点成功率、P95 延迟、401/429 计数。Grounded Inference 触发次数、搜索 Provider 成功率、结果数。citations 命中率用于判断搜索链路是否真的被使用。每个 Key 的独立配额按环境、按服务拆分。回滚策略如果搜索 Provider 不稳定先关闭GROUNDED_INFERENCE_ENABLED模型推理仍走 TaoToken不影响基础对话。如果 TaoToken 端点异常切换备用 Base URL 或备用 Key但不要改搜索 Provider 配置。如果客户端配置错误Claude Code 回退settings.jsonCodex 回退config.toml不要互相复制。平台工程的目标不是“永远不出错”而是出错时能按段隔离。TaoToken 官网 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_contentbaseten_grounded_platform 提供 Key 管理入口Base URL 保持https://taotoken.net/apiBaseten 侧只管 Hosted Tools 和搜索 Provider。两侧通过环境变量和trace_id连接而不是通过同一个 Key 硬绑。8. 文末 CTA模型对话 → Coding Plan → 创建 Key → Claude Code 文档如果你已经按上面的分离表完成配置接下来可以直接进入 TaoToken 的对应页面验证先试模型对话https://taotoken.net/models/detail/chat?utm_sourcetaotoken_aicg_blog_endutm_contentbaseten_grounded_cta_chat需要 CLI 开发套餐看 Coding Planhttps://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentbaseten_grounded_cta_coding创建或轮换 Keyhttps://taotoken.net/console/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentbaseten_grounded_cta_keysClaude Code 配置细节https://taotoken.net/doc/ClaudeCodeAnthropic?utm_sourcetaotoken_aicg_blog_endutm_contentbaseten_grounded_cta_doc配置时记住三件事TaoToken 的 Base URL 是https://taotoken.net/apiKey 用YOUR_API_KEY占位Claude Code 和 Codex 的配置不要互相套用。把端点与 Key 分开管Baseten Grounded Inference 的搜索链路才可控、可审计、可回滚。