news 2026/9/26 20:29:29

Dify手搓AIAgent全流程:从零搭建到避坑实战,小白也能轻松上手!

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Dify手搓AIAgent全流程:从零搭建到避坑实战,小白也能轻松上手!

1. 先搞清楚 Dify 里的 AIAgent 到底在干什么

很多人第一次打开 Dify 的工作流画布,看到开始、LLM、知识库、条件分支这些节点,会觉得“这不就是个流程图工具吗”。但当你真正想做一个能自己判断、自己调工具、自己决定下一步的 AIAgent 时,问题就来了:模型怎么知道该调用哪个工具?调用完结果怎么回到对话里?多个工具之间怎么串起来?

Dify 给出的答案是 Agent 节点 + FunctionCalling 策略 + MCP 工具接入。简单说,Agent 节点负责“思考”,FunctionCalling 策略负责“决定调哪个工具”,MCP 负责“把外部能力接进来”。三者配合,你就能在 Dify 里手搓出一个能查地图、查天气、查数据库的 AIAgent。

这篇内容面向零基础开发者,从工作流编排讲到 MCP 接入,再给出可复制的配置骨架和统一 Key/API 通道的 settings.json 示例。你不需要先精通大模型原理,跟着步骤走就能跑通第一个 Agent 应用。

2. TaoToken 前置:统一 Key 与 API 通道准备

在 Dify 里驱动 Agent 的模型需要 API Key。如果你同时用多个模型供应商,每个都去申请 Key、配环境变量、改 base_url,维护成本会很高。我自己的做法是用 TaoToken 做统一通道,一个 Key 走多个模型,Dify 里只需要填一次。

TaoToken 的官网入口是 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= ,API 地址是 https://taotoken.net/api 。注意 API 地址后面不加 UTM 参数,直接填到 Dify 的模型配置里即可。

你需要先拿到 API Key。进入控制台创建 Key 的路径是 https://taotoken.net/console?utm_source=taotoken_aicg_blog_end&utm_content=console&utm_campaign=rewrite ,创建完成后复制以 sk- 开头的字符串。这个 Key 后面会同时用在 Dify 模型配置和本地 settings.json 里。

如果你只是想在 Dify 里快速验证模型能不能通,可以先用模型对话页面发一条消息测试: https://taotoken.net/models?utm_source=taotoken_aicg_blog_end&utm_content=models&utm_campaign=rewrite 。确认返回正常后,再回到 Dify 配置。

注意:Dify 的模型供应商配置里,OpenAI-API-compatible 类型的 base_url 填 https://taotoken.net/api ,不要带末尾斜杠,也不要带 UTM 参数。

3. 可复制配置:Dify 工作流 + MCP + settings.json

3.1 工作流骨架:开始 → Agent → 结束

先建一个最简单的三节点工作流。开始节点接收用户输入,Agent 节点做策略决策,结束节点输出结果。这个骨架和 excerpt 里的案例结构一致,但我会把每个配置项讲清楚。

开始节点只需要一个变量,比如 user_query,类型选文本。Agent 节点的配置是核心,逐项说明:

模型选择:在 Dify 模型供应商里选 OpenAI-API-compatible,base_url 填 https://taotoken.net/api ,API Key 填刚才创建的 sk- 字符串,模型名填你实际要用的,比如 qwen 系列或 claude 系列。保存后 Dify 会做一次连通性校验。

工具配置:点击 Agent 节点里的“+”添加工具。如果你已经配好了 MCP 服务,这里会列出 MCP 提供的工具函数。没有配 MCP 的话,也可以先用 Dify 内置工具测试。

指令配置:用 Jinja 语法引用上游变量。比如:

你是一个出行规划助手。用户的问题是:{{#start.user_query#}} 请先解析地点坐标,再规划路线,最后用简洁中文输出换乘方案。

查询配置:填 {{#start.user_query#}},把用户输入传给 Agent。

最大迭代次数:默认 5 到 10 都可以。太小会导致工具没调完就停,太大可能循环。建议先设 8。

输出变量:如果结束节点只需要文本,保持默认即可。需要结构化输出时再定义 JSON schema。

结束节点引用 Agent 输出的 text 字段。

3.2 MCP 工具接入的关键参数

MCP 接入在 Dify 里通常通过插件或外部服务配置。以高德 MCP 为例,你需要拿到 MCP 服务的 SSE 地址或 stdio 启动命令。Dify 的 MCP 配置界面里填:

{ "mcpServers": { "amap": { "url": "你的 MCP SSE 地址", "transport": "sse" } } }

配置完成后,Agent 节点的工具列表里会出现 maps_geo、maps_direction_transit_integrated 等函数。如果工具列表是空的,说明 MCP 服务没连上,先检查地址和网络。

3.3 settings.json 统一通道示例

如果你在本地用 Claude Code 或其他支持 settings.json 的工具,可以把 TaoToken 作为统一通道写进去:

{ "env": { "ANTHROPIC_BASE_URL": "https://taotoken.net/api", "ANTHROPIC_API_KEY": "sk-你的Key", "ANTHROPIC_MODEL": "claude-sonnet-4-20250514" } }

这个配置的作用是让本地工具走同一个 API 通道,和 Dify 里用的 Key 保持一致。换模型时只改 ANTHROPIC_MODEL 字段,不用重新申请 Key。

如果你需要长期跑编码类 Agent,可以了解 Coding Plan: https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_content=coding-plan&utm_campaign=rewrite 。它适合需要稳定调用、多模型切换的场景。

4. 验证请求:从输入到工具调用的完整链路

配置完成后,在 Dify 预览窗口输入一条测试问题,比如“佛山千灯湖地铁站到磨碟沙地铁站怎么走”。点击运行后,观察 Agent 节点的执行记录。

正常情况下你会看到类似这样的调用链:

第一次调用 maps_geo,参数是“佛山千灯湖地铁站”,返回坐标和城市“佛山”。

第二次调用 maps_geo,参数是“磨碟沙地铁站”,返回坐标和城市“广州”。

第三次调用 maps_direction_transit_integrated,输入两组坐标和城市,返回换乘方案。

最后 Agent 整合结果,输出“先乘广佛线至西塱站,换乘广州 8 号线至磨碟沙站,全程约 55 分钟”。

如果你在本地用 curl 验证 TaoToken 通道是否通,可以这样请求:

curl https://taotoken.net/api/v1/chat/completions \ -H "Authorization: Bearer sk-你的Key" \ -H "Content-Type: application/json" \ -d '{ "model": "claude-sonnet-4-20250514", "messages": [{"role": "user", "content": "你好"}] }'

返回 200 且 body 里有 choices 字段,说明通道正常。如果返回 401,检查 Key 是否复制完整;返回 404,检查 base_url 是否多写了路径。

5. 本篇常见错排查

5.1 Agent 节点报“模型不可用”

最常见的原因是 base_url 填错。Dify 的 OpenAI-API-compatible 配置里,base_url 应该是 https://taotoken.net/api ,不要写成 https://taotoken.net/api/v1 。Dify 会自动拼接 /v1/chat/completions。多写一层路径会导致 404。

另一个原因是模型名不在 TaoToken 支持的列表里。先去模型对话页面确认可用模型名,再填到 Dify。

5.2 MCP 工具列表为空

先确认 MCP 服务本身是否启动。如果是 SSE 方式,用浏览器或 curl 访问 SSE 地址,看是否有 event stream 返回。如果是 stdio 方式,检查启动命令的路径和权限。

Dify 侧检查插件版本。Agent 策略插件需要从插件市场安装最新版,旧版本可能不识别 MCP 工具。安装地址在 Dify 插件市场搜索“Agent 策略”即可。

5.3 Agent 循环调用同一个工具

把最大迭代次数调小,比如从 10 降到 5。同时在指令里明确“如果已经获取到坐标,不要重复调用 maps_geo”。FunctionCalling 策略依赖模型判断,指令写得越具体,循环概率越低。

5.4 结束节点拿不到输出

检查结束节点的变量引用是否指向 Agent 节点的输出字段。如果 Agent 输出变量名是 text,结束节点就引用 {{#agent.text#}}。变量名不匹配会得到空值。

5.5 settings.json 不生效

本地工具的 settings.json 路径因工具而异。Claude Code 通常在用户目录下的 .claude/settings.json。改完后重启工具,让环境变量重新加载。如果仍然不生效,检查 JSON 格式是否合法,逗号、引号是否写错。

6. 继续搭建你的下一个 Agent

跑通这个三节点工作流之后,你可以往里面加更多东西。比如在开始节点后面加一个知识库检索节点,让 Agent 先查文档再调工具;或者在结束节点前加一个条件分支,根据 Agent 输出决定走人工审核还是直接返回。

Dify 的 Agent 策略插件和 MCP 工具生态还在快速迭代。我自己的习惯是每配一个新工具,先用最小工作流验证工具本身能不能调通,再把它塞进复杂流程里。这样出问题时排查范围小,不会一上来就面对十几个节点互相甩锅。

如果你在配置 Dify 模型时遇到 Key 或通道问题,可以直接去 API Keys 页面重新生成一个: https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_content=api-keys&utm_campaign=rewrite 。接入文档在 https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_content=doc&utm_campaign=rewrite ,里面有各语言的请求示例。Claude Code 相关的配置参考 https://taotoken.net/claude-code-anthropic?utm_source=taotoken_aicg_blog_end&utm_content=ClaudeCodeAnthropic&utm_campaign=rewrite 。

先把一个能跑通的 Agent 跑起来,比读十篇架构文章都有用。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/26 20:26:02

Indy-SDK DID注册与verkey链上认证实战指南

1. 项目概述:从零开始理解 Indy-SDK 的数字身份认证逻辑“indy-sdk tutorials 数字身份认证(一)”这个标题乍看像是一份入门教程索引,但背后承载的是当前可信数字基础设施中最硬核、也最容易被误解的一套技术范式。我接触 Indy-SD…

作者头像 李华
网站建设 2026/9/26 20:25:19

Python实现FJSP柔性车间调度多目标优化:MOEAD与NSGA-II实战指南

前阵子帮我一个做生产线的朋友复现调度方案,他那边十几台设备,几十道工序,机器之间还能互相替换,传统排程软件根本啃不动。我顺手把多目标优化里两套最经典的算法——MOEAD 和 NSGA-II——都用 Python 实现了一遍,用来…

作者头像 李华
网站建设 2026/9/26 20:22:55

Django构建服装品类趋势与消费者洞察可视化系统实战解析

每年到了毕设选题季,后台私信里塞得最多的就是"大数据方向的题目到底怎么选""网上的推荐不是太空就是太偏,有没有一个能稳稳落地又不那么水的方向"。如果你也在为这件事头疼,那我建议你认真看看这个题目: 基…

作者头像 李华
网站建设 2026/9/26 20:22:54

每天骑多少公里合适?别盯码表,身体信号更诚实

骑车这回事,聊到“每天骑多少公里合适”,我估计每个骑行群里都吵过好几轮。有人说一天不骑50公里不过瘾,有人说通勤单程10公里就够呛,还有人张口就是百公里起步。其实这些数字本身没有意义,真正靠谱的答案是&#xff1…

作者头像 李华
网站建设 2026/9/26 20:22:19

UEditor Word导入乱码图片红叉?从docx到HTML完整解析与解决方案

有段时间我天天被客户的一句话搞得头大:你们这个编辑器,把Word里的东西粘进来,怎么图片全变红叉?表格也歪了,标题级别也不对。项目用的是百度出品的开源富文本编辑器UEditor,说实话它本身是个老牌编辑器&am…

作者头像 李华