🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度
1. 先把目标定清楚:一个能查知识库、能调模型的 Dify 对话工作流
Dify 是一个开源的 LLM 应用编排平台,你可以把它理解成一个「可视化搭积木」的工作台:把知识库检索、大模型调用、条件判断这些节点拖到画布上连起来,就能拼出一个能对话、能查资料的 AI 应用,最后还能一键发布成 API 给别的系统调用。这篇文章要做的,就是搭一个「带知识库检索的对话工作流」,并且让工作流里所有模型请求都走 TaoToken 这个默认供应商。
适合谁看:已经装好 Dify(本地 Docker 或服务器部署都行)、手里有一份想喂给 AI 的文档、希望把模型调用统一收口到一个入口的开发者。如果你还没装 Dify,官方文档里有 docker compose 的一键启动方式,先把服务跑起来再回来跟着做。
最终产物有三样:一份可以导入的 workflow DSL 文件、一段能直接跑的 curl 调用示例、以及一组问答验证结果。整个过程我试过,从建知识库到拿到 API 返回,十分钟左右能走完,前提是 Dify 服务已经在跑、TaoToken 的 Key 已经拿到。
先说清楚 TaoToken 在这里扮演什么角色。它是一个模型 API 聚合入口,兼容 OpenAI 风格的接口协议,所以 Dify 里凡是需要填「API Base URL + API Key」的模型供应商配置,都可以指向它。官网在 https://taotoken.net/?utm_source=taotoken_aicg_blog_generate&utm_medium=csdn&utm_campaign=generate ,注册和创建 Key 的入口在 https://taotoken.net/?utm_source=taotoken_aicg_blog_end ,接口地址统一是 https://taotoken.net/api 。下面所有配置都围绕这三个地址展开。
2. 操作步骤:建知识库、搭工作流、发布 API
2.1 准备知识库
进入 Dify 后台,顶部菜单找到「知识库」,点「创建知识库」。上传你的文档(PDF、Markdown、TXT 都支持),分段设置保持默认即可,索引方式选「高质量」会调用 embedding 模型——这一步同样需要模型供应商,所以建议先把第 3 节的 TaoToken 配置做完再回来建库,否则 embedding 那步会卡住。
建完之后记下知识库 ID,后面在 DSL 里会用到。你可以在知识库详情页的 URL 里看到它,形如/datasets/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/。
2.2 搭工作流
左侧菜单进「工作室」,点「创建应用」,选「工作流」类型(不是「聊天助手」,工作流才能拿到完整的节点编排能力)。进入画布后,默认会有开始节点和结束节点,中间需要你自己加。
需要加的节点顺序是这样的:
开始节点 → 知识库检索节点 → LLM 节点 → 结束节点。
知识库检索节点里,把刚才建的知识库挂上去,查询变量绑定到开始节点的用户输入。LLM 节点里,把检索结果作为上下文变量塞进提示词,比如:
你是一个基于知识库回答问题的助手。请严格根据以下上下文回答用户问题,如果上下文里没有相关信息,直接说「资料中没有找到」。 上下文: {{context}} 用户问题: {{query}}LLM 节点的模型选择,就是第 3 节配置好的 TaoToken 供应商下的模型。结束节点把 LLM 的输出直接透传出去。
2.3 导出 workflow DSL
Dify 的工作流支持导出成 YAML 格式的 DSL 文件,在画布右上角「…」菜单里点「导出 DSL」。下面是一份精简后的结构示例,你可以对照自己的导出结果看关键字段:
app: name: kb-chat-workflow mode: workflow icon: kind: app version: 0.1.5 workflow: graph: nodes: - id: start data: type: start variables: - variable: query label: 用户问题 type: string required: true - id: retrieval data: type: knowledge-retrieval dataset_ids: - 你的知识库ID query_variable_selector: - start - query retrieval_mode: multiple top_k: 4 - id: llm data: type: llm model: provider: taotoken name: 你在TaoToken选的模型名 mode: chat completion_params: temperature: 0.3 prompt_template: - role: system text: | 你是一个基于知识库回答问题的助手…… - role: user text: "{{#retrieval.result#}}\n\n问题:{{#start.query#}}" - id: end data: type: end outputs: - variable: answer value_selector: - llm - text edges: - source: start target: retrieval - source: retrieval target: llm - source: llm target: end导入时把dataset_ids换成你自己的知识库 ID,model.name换成 TaoToken 里实际可用的模型名。DSL 的好处是团队协作时不用手点一遍,直接导入就能复现整套编排。
2.4 发布为 API
工作流调试通过后,右上角点「发布」,然后进「访问 API」页面。这里会给你一个 API Key(Dify 自己的,不是 TaoToken 的),以及调用地址,形如https://你的dify域名/v1/workflows/run。这个 Key 是给外部系统调 Dify 用的,和模型层的 TaoToken Key 是两回事,别搞混。
3. TaoToken 接入与配置:让工作流默认走它
3.1 拿 Key
打开 https://taotoken.net/?utm_source=taotoken_aicg_blog_end ,注册登录后进控制台,在 API Keys 页面创建一个新 Key。创建时建议给它起个能认出来的名字,比如dify-workflow,方便以后按用途排查用量。Key 只在创建时完整显示一次,复制下来存好。
控制台地址是 https://taotoken.net/console ,API Keys 管理页在 https://taotoken.net/api-keys ,这两个页面后面调模型、查用量都会用到。
3.2 在 Dify 里配模型供应商
Dify 后台右上角点头像 →「设置」→「模型供应商」,找到 OpenAI 兼容类的供应商(不同版本叫法可能是「OpenAI-API-compatible」或类似),点添加:
- API Base URL:填
https://taotoken.net/api - API Key:填刚才创建的 TaoToken Key
- 模型名称:填你在 TaoToken 控制台看到的可用模型名
保存后,Dify 会拉取模型列表。如果列表为空,多半是模型名填错了或者 Key 没复制全,回控制台核对一遍。
3.3 设为默认供应商
在「模型供应商」页面把 TaoToken 设为系统默认,或者在每个应用的 LLM 节点里手动指定。设为默认的好处是:新建工作流时不用每次重选,知识库的 embedding 也会走它,整个实例的模型请求统一收口。
如果你用的是 Claude Code 这类命令行工具,TaoToken 也提供了对应的接入方式,文档在 https://taotoken.net/doc ,里面有不同客户端的配置示例。Coding Plan 相关说明在 https://taotoken.net/coding-plan ,适合需要长期、高频调用模型的场景。
4. 验证结果与失败分支
4.1 curl 调用示例
发布后,用下面这段命令测试工作流 API:
curl -X POST 'https://你的dify域名/v1/workflows/run' \ -H 'Authorization: Bearer 你的Dify应用Key' \ -H 'Content-Type: application/json' \ -d '{ "inputs": { "query": "这份文档里提到的部署方式是什么?" }, "response_mode": "blocking", "user": "test-user-001" }'response_mode用blocking会等模型跑完一次性返回,调试时最直观;生产环境如果在意首字延迟,可以改成streaming走 SSE。
4.2 问答验证结果
拿一份包含明确事实的文档测试,比如文档里写了「支持 Docker 部署」。提问「支持哪些部署方式」,正常返回应该能引用到 Docker 这个点,并且回答里带上文档原文的措辞。再问一个文档里没有的问题,比如「支持 Kubernetes 吗」,如果文档没提,模型应该按提示词要求回答「资料中没有找到」,而不是自己编。这两组对照能同时验证检索命中和防幻觉提示词是否生效。
4.3 常见失败分支
返回 401:Dify 应用 Key 或 TaoToken Key 填错、过期,或者 Authorization 头格式不对。先确认用的是哪个 Key——调 Dify 用 Dify 的,调模型用 TaoToken 的。
返回 404:调用地址拼错,注意是/v1/workflows/run,不是/v1/chat/completions,工作流和对话是两个不同端点。
模型报错但 Dify 日志显示请求已发出:多半是 TaoToken 侧模型名不对,或者该模型当前不可用,去控制台确认模型列表。
检索结果为空:知识库没索引成功,或者top_k太小、查询变量没绑对。回工作流画布看检索节点的输入输出。
5. 限制、成本与模型选择
Dify 社区版对工作流节点数、知识库容量有一定限制,具体以你部署的版本为准。TaoToken 侧的可用模型、计费方式、限流策略会随平台调整,这些都以官网和控制台实时显示为准,本文不写死具体价格和模型清单。
模型选择上给个思路:知识库问答这类任务,重点是「忠实引用上下文」而不是「文采」,所以选指令遵循好、上下文窗口够大的模型比选最贵的更划算。temperature 调低一点(0.2–0.4),能明显减少模型自由发挥。如果文档很长,注意检索 top_k 和模型上下文窗口的匹配,塞太多片段反而会稀释关键信息。
最后一个小技巧:把工作流的 DSL 文件纳入版本管理,每次改完提示词或节点就导出一次。Dify 画布上的改动不会自动进 Git,靠手动导出才能让「这次回答变好了」这件事可追溯、可回滚。
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度