精通 Agent Flows V2 与 Model Context Protocol

发布: (2025年12月13日 GMT+8 03:41)
9 min read
原文: Dev.to

Source: Dev.to

引言

我们都有过这种经历。你在本地机器上构建了一个运行良好的聊天机器人,可能是一个简单的 RAG(检索增强生成)系统。它能回答问题,检索上下文,感觉像魔法。然后,你尝试让它做点别的——计算一个数字、向 Slack 发送信息,或根据复杂逻辑有条件地路由用户——线性链路就断了。魔法化为一团意大利面式的代码和脆弱的 API 粘合剂。

从简单的大语言模型(LLM)链路到自主代理的转变,是当前 AI 周期的决定性变化。Flowise 版本 2(V2)在系统设计上实现了显著的架构跃迁,从僵硬的线性依赖转向动态、具备状态感知的代理工作流。

如果说版本 1 是把珍珠串起来——把提示连接到模型再到输出——版本 2 则是构建工具的神经网络。界面可能看起来熟悉,但逻辑已经根本改变。在 V2 中,最主要的区别在于对代理决策过程的粒度控制。我们不再仅仅发送一个提示,而是在编排一个工作空间。

V2 工作流的解剖

起始节点 & 输入策略

入口点不再只是一个文本框。你可以定义 表单输入模式。例如,在 LLM 介入之前,你可以强制收集结构化数据——通过布尔值或选项选择器询问用户“你有工作吗?” 这些结构化数据会成为变量(例如 job),从而在概率性的 AI 逻辑接管之前,实现确定性的程序化逻辑。

代理节点

这是执行功能。无论使用 OpenAI 的 gpt‑4o‑mini 还是其他模型,代理节点不仅生成文本;它决定使用哪个工具。它连接到 工具 输入,工具可以是计算器,也可以是自定义 API 集成。

条件与逻辑

V2 在 条件节点(基于变量的标准 if/else 逻辑)和 条件代理 上表现出色。后者使用 LLM 执行“顺序思考”,分析用户意图并动态将其路由到不同路径。

循环节点

常被忽视的循环节点允许迭代细化。你可以强制代理在其推理过程中循环 n 次,实现自我纠正——一种原始的“系统 2”思考。

使用便利贴进行混乱管理

便利贴看似微不足道,但在生产环境中给节点簇(例如 “计算器代理”、 “Slack 逻辑”)贴标签,对可维护性至关重要。

MCP 承诺 vs. 当前现实

该生态系统中最重要的技术升级是对 模型上下文协议(Model Context Protocol,MCP) 的支持。以前,将 LLM 连接到外部工具需要自定义 JavaScript 函数或专有集成。MCP 使其标准化——它是 AI 代理世界的 USB‑C。

支持的 MCP 工具(示例)

  • Brave Search – 实时网页访问
  • Slack – 读取和发送消息
  • Postgres – 数据库交互
  • Filesystem – 读取本地目录

当前瓶颈

在当前的 Flowise V2 版本中,使用 npx 运行 MCP 服务器(常见的快速部署方式)经常失败或不受支持。我们被限制为 基于 node 的执行,这意味着不能简单地指向一个 GitHub 仓库并期望 npx 在自定义 MCP 工具节点内部解析依赖。

超级网关解决方案

为了解决 npx 限制下的 MCP 使用问题,可通过 超级网关(Super Gateway)使用服务器发送事件(SSE)。

  1. 在 Flowise 容器外运行 MCP 服务器(例如在 n8n 等自动化平台内部)。
  2. 将 MCP 服务器暴露为 SSE 端点。
  3. 在 Flowise 中配置该端点:
# 示例配置
SSE: "https://your-mcp-server.example.com/sse"

此变通办法让你的 Flowise 代理能够使用在 n8n 中定义的工具(Google Sheets、自定义 HTTP 请求、天气 API、金融数据等),就像它们是原生函数一样。当工作流询问 “Apple 的最新新闻是什么?” 时,代理通过网关调用 Brave Search MCP,检索链接,合成答案并标注来源。抽象层是无缝的。

长期记忆 & 向量数据库

一个可运行的代理需要持久记忆。虽然简单交互可以依赖内存缓冲区,但生产级实现需要稳健的向量数据库。推荐的转变是从短暂存储迁移到 Postgres(通过 Supabase)。

导入管道

步骤推荐工具
LoaderPDF loader
SplitterRecursive Character Text Splitter(块大小 = 1000,重叠 = 200)
Embeddingstext‑embedding‑3‑small(或类似模型)
Vector Store将向量 upsert 到 Postgres

记录管理器

记录管理器(SQLite 或 Postgres)用于追踪内容哈希,防止重复嵌入。若没有它,每次导入都会产生重复块,导致数据库膨胀并降低检索质量。类似 “33 documents skipped” 的幂等性信息表明去重工作正常。

当代理查询 “狗训练师的三大类别是什么?” 时,它会访问 Postgres 存储,检索相关块,并可配置返回来源文档以提升透明度。

短暂存储陷阱

localhost:3000 上开发虽然舒适,却会形成孤岛。为了让客户或远程团队成员也能使用,需要部署。

Render 是部署 Flowise 的理想托管环境,但免费层使用 短暂存储。若想拥有永久、专业的实例,需要升级到支持 持久磁盘 的套餐(通常是 “Starter” 计划)。

配置变量

在托管平台上定义以下环境变量:

FLOWISE_USERNAME=your_username
FLOWISE_PASSWORD=your_password
DATABASE_PATH=/opt/render/flowise/.flowise   # 持久挂载路径
APIKEY_PATH=/opt/render/flowise/apikeys      # 工具凭证路径
SECRETKEY_PATH=/opt/render/flowise/secretkey # 加密密钥路径
LOG_PATH=/opt/render/flowise/logs

部署检查清单

  1. Fork 仓库 – 在 GitHub 上创建 Flowise 仓库的副本。保持与上游同步,以获取更新(例如 npx 支持修复)。
  2. 创建 Web Service(Render) – 关联你的 GitHub Fork。
  3. 选择套餐 – 选 “Starter” 以启用磁盘挂载。
  4. 挂载磁盘 – 将磁盘(通常 1 GB 足够)映射到 /opt/render/flowise
  5. 设置环境变量 – 输入上表中的路径和凭证。
  6. 部署 – 监控日志;上线后,URL 即可提供全局访问。

部署后,你的代理不再是工具,而是产品。

前端集成

  • HTML/Script 标签 – 在网页的 <head> 中放入简单的 JS 片段,即可生成悬浮聊天气泡。
  • React/完整页面 – 使用 React 组件进行更深度的集成。
  • API/Curl – 通过 HTTP 请求从 Python 或其他后端程序化触发代理。

自定义空间广阔:通过嵌入配置 JSON 修改 “开始聊天” 按钮、欢迎语和配色方案。这实现了后端逻辑(Flowise flow)与前端展示的解耦,使你能够在不重新部署客户网站的情况下更新代理逻辑。

从 Flowise V2 的转变以及模型上下文协议的采用,不仅是功能升级,更是一次范式革命。

Back to Blog

相关文章

阅读更多 »

RAG 分块策略深度解析

检索增强生成(RAG)系统面临一个根本性挑战:大型语言模型(LLM)拥有上下文窗口限制,而文档往往超出这些限制。仅仅填塞……

揭秘检索增强生成 (RAG)

大型语言模型(LLMs)彻底改变了我们与信息交互的方式,但它们有一个根本性的限制:它们的知识在训练时点被冻结。