画 Baseten Hosted Tools 调用图,TaoToken Key 标出 Token 消耗
发布时间:2026/9/17 18:13:29来源:尧图网络
1. 从 Grounded Inference 的配置入口开始为什么调用图比“能不能搜”更重要在 Baseten Hosted Tools 里给 Grounded Inference 配搜索时最难受的是调用图不透明模型侧、搜索侧、重试和缓存都在吃 Token账单却只给一个总数。本文用 TaoToken 拿 Key官网入口https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_contentbaseten_topo_introBase URL 用 https://taotoken.net/api把 Baseten Hosted Tools 的 Grounded Inference 调用拓扑、Token 消耗标注和 Key 入口一次画清。这篇面向 csdn_ugc 场景的实战笔记不复述发布新闻而是直接解决三个问题第一Baseten Hosted Tools 的 Grounded Inference 从模型到搜索提供商之间到底经过哪些节点第二TaoToken Key 应该标在哪条边上才能让模型 Token 消耗有归属第三怎么用可维护的 Graphviz DOT 画出调用图并把 Exa、Keenable、Parallel、You.com 四家搜索提供商、重试、缓存、计量节点都放进同一张拓扑里。Baseten 的 Hosted Tools 可以理解为给托管模型加工具调用能力的托管层首个工具是 Grounded Inference。它的目标很明确托管在 Baseten 上的开源模型不必自己手写搜索编排而是通过配置接入网络搜索搜索后端可以选择 Exa、Keenable、Parallel、You.com。对架构可视化来说这里有两个 Token 消耗方一个是 Baseten 托管模型本身产生的推理 Token另一个是搜索链路产生的查询调用与结果处理开销。TaoToken Key 在这里不是搜索提供商的替代品而是模型调用侧的鉴权入口和成本标注锚点客户端、Claude Code、Codex、脚本通过YOUR_API_KEY调用https://taotoken.net/api这条边记model_tokensBaseten 托管模型到 Grounded Inference 再到搜索提供商的边记tool_router_tokens、search_calls、retry_tokens和cache_saved_tokens。如果把所有调用都画成一条直线排障时就会变成“搜不到就怪模型账单高了就怪搜索”。实际拓扑至少是分层的本地开发工具负责发起任务TaoToken Key 负责模型 API 鉴权Baseten 托管模型负责推理和决定是否调用工具Grounded Inference 负责把工具调用翻译成搜索请求搜索提供商负责返回结果缓存与计量负责减少重复和归因。只有把这些边分开才能回答“这次搜索结果为什么贵”“为什么 tool_call 没触发”“为什么 401 出现在模型侧而不是搜索侧”。2. 调用拓扑拆解Baseten 托管模型、四家搜索提供商与 TaoToken Key 的 Token 归属先固定关键入口。TaoToken 官网入口https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_contentbaseten_key_entry 。登录后创建 Key把返回值替换成YOUR_API_KEY。模型调用的 Base URL 固定为https://taotoken.net/api这个地址在 Claude Code、Codex、通用 OpenAI 兼容客户端里都可以作为模型侧地址使用。注意Base URL 是模型 API 地址不是 Baseten Hosted Tools 搜索提供商地址也不是 Exa、Keenable、Parallel、You.com 的搜索接口地址。建议把拓扑节点拆成七类节点作用Token/计费标注是否直接使用 TaoToken Key客户端/IDE/CIClaude Code、Codex、本地脚本发起任务无直接 Token是模型调用侧TaoToken Key 接入点模型 API 鉴权Base URL 为https://taotoken.net/apimodel_tokens是Baseten 托管模型运行开源模型输出 tool_call 或最终回答prompt_tokens、completion_tokens、tool_schema_tokens模型侧使用Grounded Inference 路由把工具调用转成搜索查询选择搜索提供商tool_router_tokens、tool_choice_tokens不直接搜索提供商Exa、Keenable、Parallel、You.com 返回结果search_calls、result_tokens否按 Baseten 侧配置缓存/去重相同查询命中缓存减少搜索和模型重复调用cache_saved_tokens否计量与日志汇总模型 Token、搜索调用、重试和缓存retry_tokens、total_tokens部分模型侧可关联 Key这张表的核心是TaoToken Key 主要标在“客户端到模型 API”的边上。它告诉你模型推理走了哪个 Key、消耗了多少 Token。搜索提供商的选择和调用发生在 Baseten Hosted Tools 内部Exa、Keenable、Parallel、You.com 的查询次数要单独记search_calls。如果你把搜索提供商的密钥和 TaoToken Key 混成一个字段排障时会出现 401 来源不明如果只记一个总 Token模型 Token 和搜索调用又会糊在一起。调用边可以这样定义Client - TaoToken API Key客户端携带YOUR_API_KEY请求https://taotoken.net/api。边标签model_tokens、request_id。TaoToken API Key - Baseten Hosted Model模型侧鉴权通过进入 Baseten 托管模型推理。边标签prompt_tokens、completion_tokens。Baseten Hosted Model - Grounded Inference Router模型决定调用工具产生tool_call。边标签tool_namegrounded_inference、tool_schema_tokens。Grounded Inference Router - Exa搜索后端为 Exa 时走这条边。边标签providerexa、search_calls。Grounded Inference Router - Keenable搜索后端为 Keenable 时走这条边。边标签providerkeenable、search_calls。Grounded Inference Router - Parallel搜索后端为 Parallel 时走这条边。边标签providerparallel、search_calls。Grounded Inference Router - You.com搜索后端为 You.com 时走这条边。边标签provideryou_com、search_calls。Grounded Inference Router - Cache先查缓存命中则跳过外部搜索。边标签cache_hit、cache_saved_tokens。Cache - Meter、Router - Meter、Model - Meter所有计量汇入同一个 trace便于把 Token 消耗画回图。这样拆完以后调用图就不再是“模型调搜索”四个字而是一张可以排障、可以归因、可以换 provider 的拓扑。3. 用 Graphviz DOT 画出可维护的 Baseten Hosted Tools 调用图下面这份 DOT 可以直接保存为baseten_grounded_inference.dot。没有使用 mermaid因为 DOT 更适合放在工程仓库里配合 CI 渲染成 SVG 或 PNG。节点里标出了 TaoToken Key、Base URL 和 Token 消耗类型边里标出了搜索提供商和重试、缓存。digraph BasetenGroundedInference { rankdirLR; graph [fontnameHelvetica, bgcolorwhite, pad0.3]; node [shapebox, stylerounded,filled, fontnameHelvetica, fontsize11]; edge [fontnameHelvetica, fontsize10]; subgraph cluster_client { label客户端 / IDE / CI; color#D0D7DE; stylerounded; Client [labelClaude Code / Codex / 本地脚本\n执行位置读者本地, fillcolor#F6F8FA]; } subgraph cluster_taotoken { labelTaoToken 模型接入层; color#0969DA; stylerounded; TaoKey [labelTaoToken API Key\nYOUR_API_KEY\nBase URL: https://taotoken.net/api\n标注model_tokens, fillcolor#DDF4FF]; } subgraph cluster_baseten { labelBaseten Hosted Tools; color#BF8700; stylerounded; Model [labelBaseten 托管开源模型\nprompt_tokens / completion_tokens\ntool_schema_tokens, fillcolor#FFF8C5]; Router [labelGrounded Inference\n工具路由\ntool_router_tokens / tool_choice_tokens, fillcolor#FFF8C5]; } subgraph cluster_search { label搜索提供商; color#CF222E; stylerounded; Exa [labelExa\nsearch_calls / result_tokens, fillcolor#FFEBE9]; Keenable [labelKeenable\nsearch_calls / result_tokens, fillcolor#FFEBE9]; Parallel [labelParallel\nsearch_calls / result_tokens, fillcolor#FFEBE9]; YouCom [labelYou.com\nsearch_calls / result_tokens, fillcolor#FFEBE9]; } Cache [label缓存 / 去重\ncache_hit / cache_saved_tokens, shapecylinder, fillcolor#DAFBE1]; Meter [labelToken 计量与 Trace\nmodel_tokens\nsearch_calls\nretry_tokens\ntotal_tokens, shapenote, fillcolor#EAEFF5]; Client - TaoKey [label携带 YOUR_API_KEY\nmodel_tokens, color#0969DA, penwidth2.0]; TaoKey - Model [label模型推理\nprompt_tokens completion_tokens, color#0969DA, penwidth2.5]; Model - Router [labeltool_call\ngrounded_inference, color#BF8700, penwidth2.0]; Router - Exa [labelproviderexa\nsearch_calls, color#CF222E]; Router - Keenable [labelproviderkeenable\nsearch_calls, color#CF222E]; Router - Parallel [labelproviderparallel\nsearch_calls, color#CF222E]; Router - YouCom [labelprovideryou_com\nsearch_calls, color#CF222E]; Router - Cache [label先查缓存\ncache_hit / miss, color#1A7F37, styledashed]; Model - Meter [label模型 Token 上报, color#57606A, styledotted]; Router - Meter [label搜索调用上报, color#57606A, styledotted]; Cache - Meter [label节省量上报, color#1A7F37, styledotted]; }渲染命令在本地执行即可不需要把生产库或敏感数据接进来dot -Tsvg baseten_grounded_inference.dot -o baseten_grounded_inference.svg如果你想把真实日志里的 Token 数写回图可以用一段小脚本读取 JSON 日志并替换 DOT 变量。下面示例只处理本地文件import json from pathlib import Path trace json.loads(Path(trace.json).read_text(encodingutf-8)) model_tokens trace[usage][prompt_tokens] trace[usage][completion_tokens] search_calls trace[search][queries] retry_tokens trace[retry][tokens] dot Path(baseten_grounded_inference.dot).read_text(encodingutf-8) dot dot.replace(model_tokens, fmodel_tokens{model_tokens}) dot dot.replace(search_calls, fsearch_calls{search_calls}) dot dot.replace(retry_tokens, fretry_tokens{retry_tokens}) Path(baseten_grounded_inference.rendered.dot).write_text(dot, encodingutf-8) print(已生成本地渲染版 DOT)这段脚本只做一件事把 trace 里的模型 Token、搜索查询数、重试 Token 注入图标签。后续你可以在 CI 里渲染成 SVG放进架构文档。调用图的价值不在于好看而在于每次换搜索提供商、加重试策略、开缓存时都能看到哪条边变粗、哪个节点开始吃 Token。4. 复现步骤从 TaoToken 创建 Key 到 Baseten 侧配置 Grounded Inference注册、登录、申请 Key、进入控制台这些动作统一走 TaoToken 官网不要散落在多个平台。入口是 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_contentbaseten_setup_intro 。进入控制台后创建 API Key也可以用 API Keys 页面直达https://taotoken.net/console/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentbaseten_setup_key 。复制出来的值就是后文所有配置里的YOUR_API_KEY。第一步确认模型侧地址。Base URL 固定为https://taotoken.net/api这个地址不要加 UTM也不要拼成搜索提供商的地址。它用于 Claude Code、Codex、通用 OpenAI 兼容客户端和本地脚本。第二步写入本地环境变量。建议不要把 Key 硬编码到仓库export TAOTOKEN_API_KEYYOUR_API_KEY export TAOTOKEN_BASE_URLhttps://taotoken.net/apiWindows PowerShell 可以这样$env:TAOTOKEN_API_KEYYOUR_API_KEY $env:TAOTOKEN_BASE_URLhttps://taotoken.net/api第三步在 Baseten Hosted Tools 的 Grounded Inference 配置里选择搜索提供商。四家候选是 Exa、Keenable、Parallel、You.com。模型侧如果使用 OpenAI 兼容配置就把 base_url 指向https://taotoken.net/apiapi_key 填YOUR_API_KEY。搜索提供商如果需要在 Baseten 侧单独填写密钥就按 Baseten 控制台要求填写不要和 TaoToken Key 混用。一个常见错误是模型侧 401 了却去检查 Exa Key或者搜索侧报错却重新生成 TaoToken Key。调用图里把这两条边分开就是为了避免这种排障错位。第四步发一个最小搜索问题验证 tool_call。比如让托管模型回答“最近一周某开源模型发布了哪些更新需要联网检索”。验证时重点看日志里有没有这些字段{ trace_id: local-001, model: baseten-hosted-open-model, tool: grounded_inference, provider: exa, usage: { prompt_tokens: 1820, completion_tokens: 410, tool_schema_tokens: 260 }, search: { queries: 3, results: 12 }, retry: { count: 1, tokens: 620 }, cache: { hit: false } }usage里的字段归到模型 Tokensearch.queries归到搜索调用retry.tokens单独标红cache.hit为 true 时在图上画绿色虚线并记cache_saved_tokens。第五步排障时按边排查Client - TaoToken返回 401检查YOUR_API_KEY是否正确Key 是否被删除请求头是否是模型侧鉴权头。TaoToken - Baseten Model超时检查 Base URL 是否为https://taotoken.net/api网络与本地代理配置是否影响请求。Model - Router没有 tool_call检查模型是否支持工具调用、提示词是否明确要求联网、Grounded Inference 是否已在 Hosted Tools 中启用。Router - Search Provider返回空结果切换 Exa、Keenable、Parallel、You.com 中另一家做对照不要先改模型侧 Base URL。Router - Meter计数与账单不一致确认搜索调用和模型 Token 是否分开统计重试是否被重复计入总 Token。这套复现产出的不是一篇新闻摘要而是三件可维护的东西一张调用拓扑图、一张 Token 消耗标注表、一份 Key 入口说明。来源平台标记为 csdn_ugc适合直接作为团队内部架构文档的初稿。5. Claude Code、Codex、CC Switch 三件套把 TaoToken Base URL 固化到本地模型侧配置最容易混工具。Claude Code 用settings.json和ANTHROPIC_*Codex 用config.toml不要把ANTHROPIC_*套到 Codex 上。Claude Code 的~/.claude/settings.json可以这样写{ env: { ANTHROPIC_BASE_URL: https://taotoken.net/api, ANTHROPIC_AUTH_TOKEN: YOUR_API_KEY, ANTHROPIC_MODEL: claude-sonnet-4-20250514 } }这里ANTHROPIC_BASE_URL指向 TaoToken 的模型 API 地址ANTHROPIC_AUTH_TOKEN填YOUR_API_KEY。模型名按你在 TaoToken 模型页实际可用的标识替换不要照抄一个不可用的别名。Codex 的~/.codex/config.toml用另一套写法model gpt-4.1 model_provider taotoken [model_providers.taotoken] name TaoToken base_url https://taotoken.net/api env_key TAOTOKEN_API_KEY wire_api chat然后在终端里设置export TAOTOKEN_API_KEYYOUR_API_KEYCodex 读取的是TAOTOKEN_API_KEY不是ANTHROPIC_AUTH_TOKEN。如果你在 Codex 配置里看到ANTHROPIC_*那基本是复制错了工具模板需要删掉。CC Switch 三件套可以理解成三份独立 profileClaude Code、Codex、通用 OpenAI 兼容。一个示意 YAML 如下字段名按你本地 CC Switch 版本调整profiles: - name: taotoken-claude tool: claude-code settings: ~/.claude/settings.json - name: taotoken-codex tool: codex config: ~/.codex/config.toml env: TAOTOKEN_API_KEY: YOUR_API_KEY - name: taotoken-openai-compatible tool: generic base_url: https://taotoken.net/api api_key: YOUR_API_KEY三件套的要点不是文件数量而是边界Claude Code 用ANTHROPIC_*Codex 用config.toml TAOTOKEN_API_KEY通用兼容客户端用base_url api_key。切换 profile 后重启对应工具或新开终端避免旧环境变量残留。这样做完调用图里的Client - TaoToken边就有明确来源Claude Code、Codex 或通用脚本而不是一个模糊的“本地工具”。6. Token 消耗标注与成本归因模型 Token、搜索调用、重试、缓存怎么落到图上调用图要能反映成本不能只画节点。建议用边宽和颜色表达消耗模型 Token 边用蓝色penwidth 1 log(1 model_tokens / 1000)这样 1k Token 和 100k Token 不会把图压垮。搜索调用边用红色penwidth 1 log(1 search_calls)因为搜索按查询次数计费时次数比 Token 更直观。重试边用橙红色虚线单独标retry_tokens。重试越多边越粗排障时第一眼能看到。缓存命中用绿色虚线标cache_saved_tokens。它不是消耗而是减少量所以不要并进总 Token。模型工具 schema 用灰色小标签标tool_schema_tokens。这部分容易被忽略但复杂工具定义会稳定增加每轮 prompt 长度。Token 消耗方要分成三本账第一本账是 Baseten 托管模型。它包含 prompt、completion、tool schema、模型决定是否调用工具时的输出。只要请求经过 TaoToken Key模型侧就可以关联到 Key 和 trace_id。第二本账是搜索链路。Grounded Inference 路由到 Exa、Keenable、Parallel、You.com 后可能按搜索查询次数、结果条数、结果长度计费。它不一定走 TaoToken Key所以图上必须单独画搜索提供商边。第三本账是重试和缓存。重试会同时放大模型 Token 和搜索调用模型重试一次prompt 再算一次搜索重试一次查询次数再加一次如果缓存命中搜索边被绿色虚线截断成本下降。一个可落地的归因规则如下model_tokens prompt_tokens completion_tokens tool_schema_tokens search_calls exa_calls keenable_calls parallel_calls you_com_calls retry_tokens 每次重试的 model_tokens 之和 cache_saved_tokens 命中缓存时本应发生的 model_tokens search_calls 估算值 total_visible model_tokens retry_tokens注意total_visible不等于全部成本因为搜索调用可能按次计费不按 Token 计费。调用图里要允许两种计量单位共存模型侧用 Token搜索侧用 calls。把它们强行换算成一个数反而会掩盖问题。常见排障场景可以这样定位账单突然升高模型边和搜索边都变粗先看是不是重试增多。重试边如果是橙红色且比模型边还粗优先检查超时、限流、搜索提供商稳定性。模型边正常搜索边异常粗说明搜索查询次数过多可能是 prompt 让模型反复搜索或者 Grounded Inference 路由没有去重。模型边异常粗搜索边很细说明搜索没怎么触发但模型 prompt 变长检查是否把大量搜索结果直接塞回上下文。缓存边出现绿色但总成本没降检查缓存 key 是否包含用户、时间、模型版本等强变量导致命中率虚高但实际没复用结果。图上有搜索提供商节点但日志没有 provider 字段检查 Grounded Inference 是否真的启用了还是模型直接回答。这些判断都建立在“边分开”的前提上。如果只有一张总账单你只能猜有了调用图和 Token 标注就能按节点、按边、按 provider 归因。7. CTA从模型对话到 Coding Plan再到创建 Key 和 Claude Code 文档如果你想先验证模型侧链路可以先打开模型对话用最小提示词测试https://taotoken.net/api是否可用https://taotoken.net/models/detail/chat?utm_sourcetaotoken_aicg_blog_endutm_contentbaseten_chat_cta 。模型对话适合快速确认 Key、模型名、Base URL 三项是否匹配再回到 Baseten Hosted Tools 配置里排查 Grounded Inference 搜索链路。如果你准备把 Claude Code、Codex、CC Switch 三件套长期用于日常开发建议直接看 Coding Planhttps://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentbaseten_coding_plan_cta 。Coding Plan 更适合固定工具链和长期调用把模型侧配置一次固化避免每次临时改环境变量。下一步是创建或轮换 Keyhttps://taotoken.net/console/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentbaseten_api_keys_cta 。创建后把YOUR_API_KEY替换到 Claude Code 的ANTHROPIC_AUTH_TOKEN、Codex 的TAOTOKEN_API_KEY、以及 Baseten 模型侧 OpenAI 兼容配置中。搜索提供商 Exa、Keenable、Parallel、You.com 的密钥按 Baseten 侧要求单独管理。Claude Code 的完整配置可以对照文档https://taotoken.net/doc/ClaudeCodeAnthropic?utm_sourcetaotoken_aicg_blog_endutm_contentbaseten_claude_code_doc_cta 。文档里重点确认settings.json、ANTHROPIC_BASE_URL、ANTHROPIC_AUTH_TOKEN三项再回到本文的 DOT 调用图把Client - TaoToken - Baseten Hosted Model - Grounded Inference - Search Provider这条链路画出来。TaoToken 官网入口再放一次https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_contentbaseten_final_cta 从控制台创建 Key 后你就能把模型 Token、搜索调用、重试和缓存四类标注落到同一张 Baseten Hosted Tools 调用图上。
网站建设高端定制企业官网