
从 8101 端口到统一模型通道Hermes Agent 在 K100-AI 上的接入改造在上一轮实测里我们把 Hermes Agent v0.16.0 用 Docker 跑在海光 DCU K100-AI 的 192.168.217.77 节点上工作目录挂到/data/hermes-deploy/workspace与/outputppt-master Skill 放在/root/.hermes/skills/ppt-master让这个自主智能体一次性生成 18 页彩色 SVG PPT。当时模型调用全部走/root/.hermes/config.yaml里的provider: custom、api_mode: chat_completionsbase_url分别写本机http://127.0.0.1:8101/v1和 27B 节点http://192.168.217.64:8101/v1api_key写none。这套配置能跑通但每次换模型节点、换端口、换机器都要重新确认 8101 上到底有没有服务、max_model_len是不是真的对齐、工具调用参数有没有带上。本文要改的就是「配置模型服务」这一步不再只对着 8101 端口验本地服务而是先把模型通道统一到 TaoToken再让 Hermes 的对话与 ppt-master 的 SVG 检查、finalize_svg.py、svg_to_pptx.py调用共用同一条 custom OpenAI 兼容通道。TaoToken 官网入口是 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_end 注册后创建一把 Key 即可开始。需要先划清边界那个auto tool choice requires --enable-auto-tool-choice and --tool-call-parser to be set的报错仍然由 vLLM 启动参数解决TaoToken 只给 Key 和 Base URL不替 vLLM 做工具调用解析也不替 Hermes 生成 SVG。换句话说本文改的是「Hermes 往哪里发请求」不是「vLLM 怎么解析工具调用」。一、原问题与场景为什么要把模型通道从 8101 挪出来原文第四章和第十三章暴露了两个耦合问题。第一本地 vLLM 服务必须带--enable-auto-tool-choice与--tool-call-parser qwen3_coder才有工具调用能力。少了这两个参数Hermes 一发起 tool call 就报auto tool choice requires --enable-auto-tool-choice and --tool-call-parser to be set。这是 vLLM 侧的事跟 Hermes 配置无关。第二Hermes 里写context_length: 98304只是客户端虚标。真正上下文要靠 vLLM 的--max-model-len对齐还要curl 模型IP:8101/v1/models看到max_model_len才算生效。原文里 27B 节点在 65536 上下文下容易在后段触发上下文超限把--max-model-len调到 98304 后才能一次性完成 18 页 PPT。这两个问题叠加导致每次测试都要先确认 8101 端口活着、参数带全、上下文对齐。如果同时还要在 122B 和 27B 两个节点之间切换config.yaml就要反复改base_url和model。本文的场景就是把base_url从http://127.0.0.1:8101/v1和http://192.168.217.64:8101/v1改成 TaoToken 的统一入口api_key从none换成真实 Keyprovider和api_mode保持不变。这样 Hermes 的对话、ppt-master 的 SVG 检查、finalize_svg.py、svg_to_pptx.py调用就有了统一模型通道不用再逐个节点验 8101。二、TaoToken 前置注册、创建 Key、确认入口在改config.yaml之前先完成三件事。第一打开 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_end 注册账号。这是官网入口注册后进入控制台。第二在控制台创建一把 API Key。这把 Key 就是后面填进config.yaml的api_key替代原来的none。Key 只在创建时完整显示一次建议先复制到安全位置。第三确认 Base URL。TaoToken 的 API 入口是https://taotoken.net/api注意两点不加/v1不带 UTM 参数。Hermes 的provider: custom加api_mode: chat_completions会自动按 OpenAI 兼容格式拼接路径所以base_url写https://taotoken.net/api即可。如果你需要先确认 Key 是否生效可以到模型对话页面发一条测试消息如果准备长期跑编码或 Agent 任务可以看 Coding PlanKey 的管理在 API Keys 页面。这些入口都在控制台内注册后按导航走即可。三、可复制配置改 config.yaml 的 model 段进入容器docker exec -it hermes-agent bash编辑/root/.hermes/config.yaml。原来的 122B 配置是model: provider: custom model: Qwen3.5-122B-A10B-AWQ base_url: http://127.0.0.1:8101/v1 api_key: none api_mode: chat_completions改成model: provider: custom model: Qwen3.5-122B-A10B-AWQ base_url: https://taotoken.net/api api_key: YOUR_API_KEY api_mode: chat_completions原来的 27B 配置是model: provider: custom model: Qwen3___6-27B-W8A8 base_url: http://192.168.217.64:8101/v1 api_key: none api_mode: chat_completions context_length: 98304 max_tokens: 4096改成model: provider: custom model: Qwen3___6-27B-W8A8 base_url: https://taotoken.net/api api_key: YOUR_API_KEY api_mode: chat_completions context_length: 98304 max_tokens: 4096auxiliary.compression段同理把base_url改成https://taotoken.net/apiapi_key改成同一把 Keyprovider和api_mode不动。改完后terminal段保持原样terminal: backend: local cwd: /workspace这里要强调provider: custom和api_mode: chat_completions是 Hermes 识别 OpenAI 兼容通道的两个关键字段不要改。改的只有base_url和api_key。model字段填你实际要用的模型 ID如果 TaoToken 侧的模型 ID 与本地 vLLM 的--served-model-name不同以 TaoToken 侧为准。四、验证请求与成功结果改完配置后按原文顺序自查。第一步确认 Hermes 版本hermes --version应输出 v0.16.0 或对应版本。第二步确认 Skill 加载hermes skills list应看到ppt-master local enabled。第三步确认 Key 生效。可以用 Hermes 的 models 列表命令或者直接发一条最小对话请求。如果 Key 无效这一步会返回鉴权错误如果 Base URL 写错比如多写了/v1会返回 404 或路径错误。第四步用原文那段 18 页 prompt 跑一遍。启动命令保持原样cd /workspace mkdir -p /workspace/time_test_qwen36_27b_single_18pages_98304 cd /workspace/time_test_qwen36_27b_single_18pages_98304 HERMES_MAX_TOKENS4096 hermes \ --skills ppt-master \ --provider custom \ --model Qwen3___6-27B-W8A8 \ --yolo成功结果应与原文一致18 页 PPT 生成成功SVG XML 错误 0PPT 页数 18转换失败页数 0。生成过程中会产生svg_output/、svg_final/、backup/、exports/目录。手动检查命令不变find svg_output -maxdepth 1 -name *.svg | wc -lpython3 - PY from pathlib import Path from lxml import etree path Path(svg_output) for svg in sorted(path.glob(*.svg)): etree.parse(str(svg)) print(OK:, svg.name) PYpython3 /root/.hermes/skills/ppt-master/scripts/finalize_svg.py \ /workspace/projects/项目目录python3 /root/.hermes/skills/ppt-master/scripts/svg_to_pptx.py \ /workspace/projects/项目目录 \ -o /workspace/projects/项目目录/output.pptx \ --only native \ --no-notespython3 - PY from pptx import Presentation ppt Presentation(output.pptx) print(slides:, len(ppt.slides)) PY如果这些命令的输出与原文一致说明模型通道已经切到 TaoToken 且工作正常。五、本篇常见错排查错误一auto tool choice requires --enable-auto-tool-choice and --tool-call-parser to be set这个报错跟 TaoToken 无关仍然由 vLLM 启动参数解决。如果你还在用本地 vLLM 节点启动时必须带--enable-auto-tool-choice --tool-call-parser qwen3_coderTaoToken 只给 Key 和 Base URL不替 vLLM 做工具调用解析。如果你已经完全切到 TaoToken 通道这个报错不应该再出现如果出现说明请求还在往本地 8101 发检查base_url是否改成了https://taotoken.net/api。错误二Base URL 多写了/v1TaoToken 的 API 入口是https://taotoken.net/api不加/v1。Hermes 的api_mode: chat_completions会自动拼接路径。如果写成https://taotoken.net/api/v1会返回 404 或路径错误。错误三api_key还是none改配置时容易漏掉api_key字段。如果还是none请求会返回鉴权错误。确认model段和auxiliary.compression段的api_key都换成了同一把 Key。错误四context_length与 TaoToken 侧模型上下文不一致context_length: 98304是 Hermes 客户端声明。如果 TaoToken 侧该模型的实际上下文小于这个值长 PPT 生成到后段仍可能触发上下文超限。建议先用小任务确认模型实际上下文再决定context_length和HERMES_MAX_TOKENS。错误五model字段与 TaoToken 侧模型 ID 不匹配本地 vLLM 的--served-model-name是Qwen3___6-27B-W8A8但 TaoToken 侧的模型 ID 可能不同。如果返回模型不存在错误检查model字段是否与 TaoToken 侧一致。错误六容器内网络不通如果容器内无法访问https://taotoken.net/api检查容器的 DNS 和出网配置。本地 8101 是内网地址TaoToken 是公网地址网络路径不同。六、语义一致这条通道能配通什么从 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_end 拿到 Key 后能配通的就是 Hermes Agent 这条 custom OpenAI 兼容通道。具体来说Hermes 的对话调用走https://taotoken.net/apiprovider: custom、api_mode: chat_completions不变。ppt-master 的 SVG 检查、finalize_svg.py、svg_to_pptx.py调用共用同一条通道。122B 和 27B 两个模型的切换从改两个base_url变成改一个model字段。配完后照原文顺序自查hermes --version、hermes skills list看到ppt-master local enabled再用 models 列表确认 Key 生效最后用原文那段 18 页 prompt 跑一遍看 PPTX 页数和 XML 检查结果。如果你在排障或接入过程中遇到问题可以到 API Keys 页面确认 Key 状态或查阅接入文档核对 Base URL 和请求格式。如果你准备长期跑编码或 Agent 任务可以了解 Coding Plan。如果你只是想先验证模型是否可用可以到模型对话页面发一条测试消息。最后再强调一次边界TaoToken 只给 Key 和 Base URL不替 vLLM 做工具调用解析也不替 Hermes 生成 SVG。那个auto tool choice requires --enable-auto-tool-choice and --tool-call-parser to be set的报错仍然由 vLLM 启动参数解决。本文改的是 Hermes 往哪里发请求不是 vLLM 怎么解析工具调用。