ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Hermes 智能体+Dify 知识库详细部署过程:把 endpoint 改到 TaoToken 的完整配置

Hermes 智能体+Dify 知识库详细部署过程:把 endpoint 改到 TaoToken 的完整配置 1. 为什么 Hermes 智能体要接 Dify 知识库以及模型通道为什么必须换Hermes 智能体本身是一个能调用工具、执行多步任务的 Agent 框架它擅长的是调度和推理但它默认不带企业私有知识。Dify 知识库则是一个把 PDF、Word、Markdown 切块、向量化、可检索的知识底座。把两者拼起来Hermes 负责想和做Dify 负责记得准这就是当前很多团队在做的本地化 RAG 智能体方案。真正卡住大多数人的不是 Docker 装不上而是模型调用通道。Hermes 在推理时要访问 LLMDify 在建立知识库索引时要访问 Embedding 和 Rerank 模型这两条链路如果各自指向不同的、不稳定的 endpoint联调时就会出现知识库检索正常但 Hermes 回答跑偏或者索引一直处理中的怪现象。把 endpoint 统一改到 TaoToken 之后LLM、Embedding、Rerank 三类模型走同一个入口Key 和 Base URL 只需维护一份排障时变量少了一大半。这篇内容适合三类人正在本地部署 Hermes 的开发者、已经跑起 Dify 但知识库检索效果差的同学、以及想把 Agent 和知识库串成一条链路的工程团队。下面从环境准备一路写到联调验证所有配置片段都可以直接复制。我试过把 Dify 的 Embedding 指向本地 Ollama、LLM 指向另一家 API结果知识库索引和 Hermes 回答的语义空间对不上检索出来的片段经常答非所问。后来统一走 TaoToken 的 endpoint问题才收敛。所以这篇的重点会放在通道统一这件事上。2. TaoToken 前置准备拿到 Base URL、API Key 和 Model ID在动 Docker 之前先把模型通道准备好。TaoToken 提供的是 OpenAI 兼容接口也就是说 Hermes 和 Dify 里凡是让你填 OpenAI Base URL 和 API Key 的地方都可以直接用它。你需要准备三样东西第一是 Base URL。TaoToken 的 API 入口是https://taotoken.net/api注意这里不要加任何多余路径OpenAI 兼容客户端会自动拼接/v1/chat/completions这类后缀。如果你在 Dify 里选的是 OpenAI 供应商Base URL 就填这个。第二是 API Key。登录控制台后在 API Keys 页面创建格式通常是sk-开头的一串字符。这个 Key 同时给 Hermes 和 Dify 用省得管理多份凭证。第三是 Model ID。这是最容易出错的地方。TaoToken 上不同模型的 ID 不一样比如对话模型、Embedding 模型、Rerank 模型各有各的标识。你需要在模型列表里确认你要用的具体 ID而不是想当然地填gpt-4或text-embedding-ada-002。填错 Model ID 的典型报错是 404 或者model not found。提示把 Base URL、API Key、Model ID 三个值先写在一个临时文本里后面 Dify 和 Hermes 都要反复用到。建议命名成TAOTOKEN_BASE_URL、TAOTOKEN_API_KEY、TAOTOKEN_LLM_MODEL、TAOTOKEN_EMBED_MODEL、TAOTOKEN_RERANK_MODEL避免混淆。如果你还没创建 Key可以先去控制台生成一个。模型对话能力可以先用对话页面验证一下 Key 是否可用确认能正常返回再往下走。对于长期跑编码和 Agent 任务的场景Coding Plan 的额度模型会更划算这个后面 CTA 部分再说。这一步不需要装任何东西纯粹是把凭证备齐。很多人跳过这步直接装 Docker结果联调时才发现 Key 没权限或者 Model ID 写错回头返工更费时间。3. 可复制配置Dify 与 Hermes 的 endpoint 改造片段这一节是全文的核心所有片段都可以直接复制。先改 Dify再改 Hermes顺序不要反因为 Hermes 的工具需要 Dify 的 dataset ID。3.1 Dify 的模型供应商配置Dify 部署起来后进入设置 → 模型供应商选择 OpenAI 兼容类型不同版本叫法可能是 OpenAI-API-compatible。填入以下参数{ provider: openai_api_compatible, base_url: https://taotoken.net/api, api_key: sk-你的TaoToken密钥, models: [ { model: 你的LLM-Model-ID, model_type: llm }, { model: 你的Embedding-Model-ID, model_type: text-embedding }, { model: 你的Rerank-Model-ID, model_type: rerank } ] }如果你更习惯用环境变量方式可以在~/dify/docker/.env里追加# TaoToken 统一模型通道 TAOTOKEN_BASE_URLhttps://taotoken.net/api TAOTOKEN_API_KEYsk-你的TaoToken密钥 TAOTOKEN_LLM_MODEL你的LLM-Model-ID TAOTOKEN_EMBED_MODEL你的Embedding-Model-ID TAOTOKEN_RERANK_MODEL你的Rerank-Model-ID改完.env后需要docker compose up -d让容器重新读取。注意 Dify 的模型供应商配置在数据库里也有一份Web 界面填过的以界面为准环境变量主要用于初始化。3.2 Hermes 的模型 endpoint 配置Hermes 的模型配置在~/.hermes/.env里。找到 LLM 相关的段落改成# Hermes LLM 通道指向 TaoToken OPENAI_BASE_URLhttps://taotoken.net/api OPENAI_API_KEYsk-你的TaoToken密钥 OPENAI_MODEL你的LLM-Model-ID有些 Hermes 版本用的是LLM_BASE_URL和LLM_API_KEY这种命名你按实际字段名替换即可值是一样的。关键是 Base URL 必须是https://taotoken.net/api不要写成https://taotoken.net/api/v1否则会拼成/api/v1/v1/chat/completions导致 404。3.3 Hermes 的 Dify 知识库工具配置在~/.hermes/.env末尾追加 Dify 知识库的连接信息# Dify 知识库 DIFY_BASE_URLhttp://localhost DIFY_API_KEYdataset-你的知识库APIKey DIFY_DATASET_ID你的知识库ID如果 Hermes 和 Dify 不在同一台机器DIFY_BASE_URL换成 Dify 服务器的实际 IP比如http://10.0.0.5。这里的三件套是 Base URL、API Key、Dataset ID缺一不可。3.4 三件套对照表组件Base URLKeyModel ID / Dataset IDHermes LLMhttps://taotoken.net/apisk-xxx你的LLM-Model-IDDify LLMhttps://taotoken.net/apisk-xxx你的LLM-Model-IDDify Embeddinghttps://taotoken.net/apisk-xxx你的Embedding-Model-IDDify Rerankhttps://taotoken.net/apisk-xxx你的Rerank-Model-IDHermes→Difyhttp://localhostdataset-xxx你的Dataset-ID这张表建议截图保存排障时逐行核对能省掉大量猜测。4. 验证请求从知识库检索到 Hermes 联调成功配置改完不代表通了必须逐层验证。顺序是先验 Dify 知识库 API再验 Hermes 的 LLM 通道最后验 Hermes 调用知识库工具。4.1 验证 Dify 知识库检索接口用 curl 直接打 Dify 的 retrieve 接口确认 API Key 和 Dataset ID 有效curl -X POST http://localhost/v1/datasets/你的DatasetID/retrieve \ -H Authorization: Bearer dataset-你的知识库APIKey \ -H Content-Type: application/json \ -d { query: 数据库运维安全有哪些风险, retrieval_model: { search_method: hybrid_search, top_k: 3, score_threshold_enabled: false, reranking_enable: true } }预期返回是一个 JSON里面有records数组每个元素包含segment.content和score。如果返回records为空说明知识库还没索引完或者查询词和文档不匹配如果返回 401是 Key 问题返回 404是 Dataset ID 写错。4.2 验证 Hermes 的 LLM 通道在 Hermes 的 CLI 里直接问一个不涉及知识库的问题比如用一句话解释什么是向量检索。如果 Hermes 能正常回答说明OPENAI_BASE_URL和OPENAI_API_KEY配置正确。如果报 401检查 Key报 404检查 Base URL 是否多了/v1报model not found检查 Model ID。4.3 验证 Hermes 调用知识库工具在 Hermes 对话里输入帮我从知识库搜索一下数据库运维安全的风险点Hermes 应该自动触发dify_knowledge_search工具返回知识库里的相关片段然后结合这些片段生成回答。成功的标志是回答里出现了你文档里的具体内容而不是泛泛而谈。4.4 验证 Embedding 和 Rerank 是否生效回到 Dify 的知识库详情页点召回测试输入一个测试问题。如果返回的片段按相关性排序且分数有区分度说明 Embedding 和 Rerank 都在工作。如果所有片段分数一样通常是 Rerank 没生效检查 Rerank Model ID 是否填对。注意Dify 的召回测试和 Hermes 的工具调用是两条独立链路前者验证知识库本身后者验证 Agent 集成。两条都通过才算真正联调成功。5. 本篇常见错排查401、local proxy failed、reading choices、OAuth联调阶段最容易撞上的就是下面这几类报错逐个对照处理。5.1 401 Unauthorized出现在 Hermes 或 Dify 调用模型时。原因通常是 API Key 无效、过期或者 Key 前面多了空格。检查~/.hermes/.env和 Dify 模型供应商里的 Key 是否一致重新复制一遍。如果 Key 是从控制台复制的注意不要带上换行符。5.2 local proxy failed这个报错通常出现在 Hermes 启动时提示本地代理连接失败。原因是环境里残留了HTTP_PROXY或HTTPS_PROXY变量指向了一个不存在的本地端口。检查~/.hermes/.env和 shell 的~/.bashrc把http_proxy、https_proxy、all_proxy这几行注释掉或删除然后重新加载环境。5.3 reading choices 相关报错典型信息是error reading choices或choices field missing。这说明模型返回的 JSON 结构不符合 OpenAI 格式常见于 Base URL 填错导致请求打到了非兼容接口。确认 Base URL 是https://taotoken.net/api且 Model ID 是对话模型而不是 Embedding 模型。用 Embedding 模型去调 chat 接口返回结构里就没有choices。5.4 OAuth 相关报错如果 Hermes 或 Dify 提示 OAuth token 失效通常是因为你之前配置过某个需要 OAuth 的供应商残留了旧的 token 文件。检查~/.hermes/下是否有auth.json或credentials.json如果有且不再使用重命名备份后重启 Hermes。对于 Codex 类工具auth.json里的字段要和当前 Base URL、Key、Model ID 三件套一致不一致就会反复触发 OAuth 流程。5.5 知识库检索返回空不是报错但结果不对。先确认文档索引状态是已完成再检查检索模式。如果用的是全文检索中文分词可能不理想换成混合检索并开启 Rerank。Top K 设成 3 到 5 通常效果最好太大反而引入噪声。5.6 排障速查表报错最可能原因处理401Key 无效/带空格重新复制 Keylocal proxy failed残留代理变量删除 proxy 环境变量reading choicesBase URL 或 Model ID 错核对三件套OAuth 失效旧 token 残留清理 auth.json检索为空索引未完成/模式不对换混合检索Rerank排障时建议打开 Hermes 的 debug 日志能看到实际发出的请求 URL 和 payload比猜快得多。6. 把通道固定下来长期跑 Agent 的配置建议联调通过只是开始真正要跑起来还得考虑稳定性。我的做法是把所有 endpoint 收敛到一份.envHermes 和 Dify 都从这份文件读避免两处配置漂移。Dify 那边如果 Web 界面和.env冲突以界面为准但界面改完记得同步回.env做备份。对于需要长期跑编码和 Agent 任务的场景模型调用量会持续增长按量计费的成本不好预估。TaoToken 的 Coding Plan 提供的是包月额度适合这种持续调用的模式你可以去了解一下是否匹配你的用量。如果只是偶尔验证模型效果用模型对话页面就够了。最后留一个实用技巧每次改完配置先跑一遍第 4 节的三个验证请求全绿了再让 Hermes 接真实任务。这样能把配置问题和业务问题分开排障效率高很多。知识库的文档更新后记得在 Dify 里重新索引否则 Hermes 检索到的还是旧内容。
返回列表