数据截至 (上游 commit 482e72519a4e)
FastGPT — 架构与原理
30 秒导读: FastGPT 是一个用「拖拽画布」搭 AI 应用的平台。你在画布上连出一张流程图(LLM 对话、知识库检索、判断、工具调用……),后端把这张图编译成一张有向图,再用一个叫
WorkflowQueue的调度内核一个节点一个节点地跑,边跑边通过 SSE 把结果流式吐给前端。理解 FastGPT,核心就是理解这台「图执行引擎」怎么决定谁先跑、谁被跳过、卡在用户输入时怎么存档续跑。
1. 这是什么(零基础也能懂)
一句话定义: FastGPT 是一个 AI Agent 构建平台——用可视化的 Flow(工作流)编排,把 LLM、知识库、工具串成一个能对话的应用(依据:README.md:16)。
解决什么问题 / 给谁用:
假设你要做一个「公司客服机器人」:它得先判断用户问的是售前还是售后,售后就去知识库查文档、必要时调一个查订单的 API,最后用大模型把答案组织成话说出来。
- 不用 FastGPT,你得自己写调度、写检索、写工具调用循环、写流式返回。
- 用 FastGPT,你在画布上把这些能力拖成节点、连成线,平台替你把它跑起来。
面向的是搭应用的人(低代码搭 AI 应用)和读源码的工程师(想知道这台引擎怎么实现)。
它能做什么(功能):
| 能力 | 对应节点(举例) |
|---|---|
| 大模型对话 | AI 对话节点(chatNode) |
| 让模型自己调工具 | 工具调用节点(toolCall)、规划 Agent(agent) |
| 知识 库检索(RAG) | 知识库搜索节点(datasetSearchNode) |
| 流程控制 | 判断器(ifElseNode)、问题分类(classifyQuestion)、循环(loopRun)、并行(parallelRun) |
| 人机交互 | 用户选择(userSelect)、表单输入(formInput)——会暂停工作流等用户 |
| 外部集成 | HTTP 请求、代码沙箱、读文件、子应用 / 插件 |
(依据:节点类型到执行函数的总注册表 packages/service/core/workflow/dispatch/constants.ts:39)
用起来什么样: 对外是一个 OpenAI 风格的对话接口。前端 / API 调用者往 /api/v2/chat/completions 发消息,服务端跑完工作流,用 SSE 把答案流式返回:
# 示意,非源码:一次流式对话请求
curl -N https://<host>/api/v2/chat/completions \
-H 'Authorization: Bearer <apikey>' \
-d '{ "chatId": "abc", "stream": true,
"messages": [{ "role": "user", "content": "退货怎么退?" }] }'
# 返回:一串 SSE 事件(node 状态、answer 文本片段、node 响应详情……)
一句话直觉 / 类比: 把 FastGPT 想成一台流程图解释器。你画的图是「程序」,WorkflowQueue 是「CPU」,它按边的连接关系决定下一条指令跑哪个节点;遇到「等用户点选」就像断点——把现场存进数据库,下次请求再从断点续跑。