FastGPT Agent ReAct 原理全解析!从源码到实战,吃透这一篇就够了!

军哥fastgpt教程-5-fastgpt源码解读之项目结构 大家好,这里是五彩石编程,我是军哥。上一篇文章中我们讲过了fastgpt中的工作流调度,从这一篇文章开始,我们会慢慢的深入源码,了解fastgpt的底层实现,而熟悉源码的第1步,就从熟悉其目录结构开始吧! 阅读详情

本文介绍了 ReAct 、Plan-and-Execute 两种大模型推理模式,以及 FastGPT 对 ReAct 的三种实现方式。

01 ReAct 和 Plan

ReAct(Reasoning and Acting),让大模型通过「观察-思考-行动」三个步骤,循环往复,能够自主决定使用一些工具去解决问题。从代码层面来讲,本质是递归(or 循环),而递归结束的条件往往是超过次数限制、问题已经得到解决等条件。

Plan-and-Execute,相较于 ReAct,会先让大模型制定计划、步骤(子任务),然后按照计划依次执行。中间可能会调整计划,如有必要。

从一些测评集来看,ReAct响应速度更快,消耗 token 量少,但处理复杂任务的表现不及 Plan-and-Execute。这似乎也是意料之中。

笔者认为,在智能客服、需要即时响应等情况下,ReAct是最优解。且大部分实际生产环境中,计划可以由基于 Cot(Chain-of-Thought) 设计模式的 Prompt 来完成。

FastGPT中「工具调用」可以看做是 ReAct 的思路。

02 FastGPT 代码

代码所在目录:

1. 入口与主流程

工具调用的主入口是 dispatchRunTools(见 runTool/index.ts),它负责根据当前节点、上下文、历史消息等,决定是否需要调用工具,并组织好调用工具所需的参数和上下文。

  1. 工具调用的三种模式

根据所用大模型的能力,分为三种调用方式:

  • ToolChoice(如 OpenAI 的 tool_calls):runToolWithToolChoice
  • FunctionCall(如 OpenAI 的 function_call):runToolWithFunctionCall
  • PromptCall(通过 prompt 让大模型决定是否调用工具):runToolWithPromptCall

dispatchRunTools 会根据模型的能力选择合适的调用方式。

科普一下 tool_calls 和 function_call 的区别:

function_call(旧版本)

  • 每次只能调用一个函数
  • 已被标记为 deprecated(废弃)

tool_calls(新版本)

  • 支持并行调用多个函数
  • 当前推荐的标准做法

最新的模型,目前主要使用 tool_calls,提供给大模型 tool schema,没有显式的使用Prompt干预整个过程。也可以看一下古老的PromptCall是如何处理的。附源码中的Prompt。

import { replaceVariable } from '@fastgpt/global/common/string/tools';
export const Prompt_Tool_Call = `<Instruction>
你是一个智能机器人,除了可以回答用户问题外,你还掌握工具的使用能力。有时候,你可以依赖工具的运行结果,来更准确的回答用户。
工具使用了 JSON Schema 的格式声明,其中 toolId 是工具的唯一标识, description 是工具的描述,parameters 是工具的参数及参数表述,required 是必填参数的列表。
请你根据工具描述,决定回答问题或是使用工具。在完成任务过程中,USER代表用户的输入,TOOL_RESPONSE代表工具运行结果,ANSWER 代表你的输出。
你的每次输出都必须以0,1开头,代表是否需要调用工具:
0: 不使用工具,直接回答内容。
1: 使用工具,返回工具调用的参数。
例如:
USER: 你好呀
ANSWER: 0: 你好,有什么可以帮助你的么?
USER: 现在几点了?
ANSWER:  1: {"toolId":"searchToolId1"}
TOOL_RESPONSE: """
2022/5/5 12:00 Thursday
"""
ANSWER: 0: 现在是2022年5月5日,星期四,中午12点。
USER: 今天杭州的天气如何?
ANSWER: 1: {"toolId":"searchToolId2","arguments":{"city": "杭州"}}
TOOL_RESPONSE: """
晴天......
"""
ANSWER: 0: 今天杭州是晴天。
USER: 今天杭州的天气适合去哪里玩?
ANSWER: 1: {"toolId":"searchToolId3","arguments":{"query": "杭州 天气 去哪里玩"}}
TOOL_RESPONSE: """
晴天. 西湖、灵隐寺、千岛湖……
"""
ANSWER: 0: 今天杭州是晴天,适合去西湖、灵隐寺、千岛湖等地玩。
</Instruction>
------
现在,我们开始吧!下面是你本次可以使用的工具:
"""
{{toolsPrompt}}
"""
下面是正式的对话内容:
USER: {{question}}
ANSWER: `;
export const getMultiplePrompt = (obj: {
fileCount: number;
imgCount: number;
question: string;
}) => {
const prompt = `Number of session file inputs:
Document:{{fileCount}}
Image:{{imgCount}}
------
{{question}}`;
return replaceVariable(prompt, obj);
};

3. 工具调用的详细流程

以 runToolWithToolChoice 为例,流程如下(见 runTool/toolChoice.ts):

  1. 准备工具描述:将所有可用工具(toolNodes)转为 OpenAI tool schema,传递给大模型。
  2. 构造对话历史:包括系统 prompt、历史消息、用户输入等。
  3. 请求大模型:带上 tools schema,请求大模型,模型会决定是否需要调用工具,并返回 tool_calls。
  4. 执行工具:根据大模型返回的 tool_calls,找到对应的工具节点,解析参数,实际执行工具(本质是调度 workflow 的子流程)。
  5. 结果回传:将工具执行结果通过 SSE 或直接返回给前端,并递归判断是否需要继续调用工具或结束。
  6. 工具节点的定义与参数
  • 工具节点(toolNodes)包含了工具的唯一标识(nodeId)、描述、参数 schema(JSON Schema 格式)等。
  • 工具参数的定义和校验也在节点 schema 中完成,最终会被序列化为 JSON 传递给大模型。

4. 递归结束条件

  1. 工具有交互节点,并被选择

  2. 没有工具需要调用

大模型返回的结果中没有需要调用的工具(如 toolCalls/functionCalls/toolJson 为空),说明流程已结束。

  1. 递归次数达到上限

有一个保护参数 maxRunToolTimes(如 ToolChoice 默认 30),防止死循环,超过则强制终止。

如何学习大模型 AI ?

由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。

但是具体到个人,只能说是:

“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。

这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。

我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。

我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

在这里插入图片描述

第一阶段(10天):初阶应用

该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。

  • 大模型 AI 能干什么?
  • 大模型是怎样获得「智能」的?
  • 用好 AI 的核心心法
  • 大模型应用业务架构
  • 大模型应用技术架构
  • 代码示例:向 GPT-3.5 灌入新知识
  • 提示工程的意义和核心思想
  • Prompt 典型构成
  • 指令调优方法论
  • 思维链和思维树
  • Prompt 攻击和防范
  • …

第二阶段(30天):高阶应用

该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。

  • 为什么要做 RAG
  • 搭建一个简单的 ChatPDF
  • 检索的基础概念
  • 什么是向量表示(Embeddings)
  • 向量数据库与向量检索
  • 基于向量检索的 RAG
  • 搭建 RAG 系统的扩展知识
  • 混合检索与 RAG-Fusion 简介
  • 向量模型本地部署
  • …

第三阶段(30天):模型训练

恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。

到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?

  • 为什么要做 RAG
  • 什么是模型
  • 什么是模型训练
  • 求解器 & 损失函数简介
  • 小实验2:手写一个简单的神经网络并训练它
  • 什么是训练/预训练/微调/轻量化微调
  • Transformer结构简介
  • 轻量化微调
  • 实验数据集的构建
  • …

第四阶段(20天):商业闭环

对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。

  • 硬件选型
  • 带你了解全球大模型
  • 使用国产大模型服务
  • 搭建 OpenAI 代理
  • 热身:基于阿里云 PAI 部署 Stable Diffusion
  • 在本地计算机运行大模型
  • 大模型的私有化部署
  • 基于 vLLM 部署大模型
  • 案例:如何优雅地在阿里云私有部署开源大模型
  • 部署一套开源 LLM 项目
  • 内容安全
  • 互联网信息服务算法备案
  • …

学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。

如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。

这份完整版的大模型 AI 学习资料已经上传优快云,朋友们如果需要可以微信扫描下方优快云官方认证二维码免费领取【保证100%免费】

在这里插入图片描述

Django 集成 AI 实战:流式对话、异步任务与 LangChain 应用 在人工智能落地应用的开发中,后端服务承担着模型调用、数据处理与接口交互等核心职责。Django 作为成熟的全栈 Web 框架,凭借完善的 ORM、Django REST Framework 和内置的认证机制,能够高效支撑 AI 项目的稳定交付。通过同步调用、异步任务队列(Celery)、基于 SSE 的流式输出以及 LangChain Agent 集成等模式,开发者可以灵活应对不同场景下的 AI 应用需求。无论是构建智能问答系统,还是为企业知识库提供检索增强生成(RAG)能力,Django 都能提供清晰、可 阅读详情

相关推荐

FastGPT 源码调试配置

本文简单介绍如何通过 vscode 对 FastGPT 进行调试。这里假设已经安装 vsocde 和 FastGPT本地部署。

Muti-Agent 1305

基于FastGPT和芋道源码挑战一句话生成代码

1.我们在芋道工程中自定义一个接口(使用路径传参是因为这样在FastGPT接口配置中传递固定参数很方便,接口也比较好管理),接收上述参数,提取SQL并在数据库建表、按芋道规范生成代码。这里给出接口示例:@PermitAlllog.info("请求参数: {}", JSONUtil.toJsonStr(reqMap));fastCommonRespVO.setResponse("\\n失败了");= null) {try {// doBusi方法会返回一个完整的代码下载地址。

逆流的小鱼 3038

FastGPT 知识库搜索测试功能解析(二)

本文接上一篇文章对具体代码进行解析。

Muti-Agent 1551

fastgpt源码本地二次开发(开发环境部署)

基于开源项目fastgpt开发自己的智能问答、知识库

u013222404的博客 2325

ECC密码的加密和解密(附带代码实现)

ECC,全称Elliptic Curve Cryptography,是椭圆曲线密码学。这是一种公钥加密技术,其安全性基于椭圆曲线离散对数问题,被广泛应用于信息安全领域。ECC的主要优势在于,相较于RSA和DSA等其他传统的公钥密码体系,它能够在提供相同安全级别的情况下,使用更短的密钥,从而减少计算量和存储空间的需求。例如,一个256位的ECC密钥提供的安全性可以与3072位的RSA密钥或DSA密钥相媲美。ECC的主要应用领域包括SSL安全证书、安全电子邮件、移动设备安全、物联网设备安全等。

xixixi7777的博客 8271

UNITY3D万人同屏,Dots万人同屏解决方案_类萌宠宠之战

UNITY3D弹幕游戏开发,万人同屏解决方案

6472

FastGPT源码部署,不使用docker

在使用FastGPT的过程中,可能有的功能不符合自己的需求。如果使用docker部署没办法修改源码二次开发,所以需要本地通过源码部署。

weixin_43589681的博客 2407

数字IC后端先进工艺设计实现之TSMC 12nm 6Track工艺数字IC后端实现重点难点盘点

如果你仅仅是跑个先进工艺的flow,不懂先进工艺在数字IC后端实现上的不同点,为何有这样的不同点,针对这些不同之处后端实现阶段如何考虑它们,那么你等于0经验!大家可以针对本文所列的要点进行复盘,如果这些都搞透彻了,你就可以大胆把T12 nm的A72和A55项目写到你的简历中。T12这个工艺也是支持Preferred和Non-prefered两个方向来完成routing的,但是它对它们的最小线宽和最小线间距提出了更严格的要求。所有各个子模块的形状,彼此之间的间距都是有严格的要求。为何要有P48这一层?

weixin_37584728的博客 8340

国内小白第一款Agent工具怎么选?6款主流工具横向实测与选型指南

AI Agent正在将大模型从“问答工具”升级为“能办事的数字员工”,它通过自主规划、工具调用和记忆管理,实现复杂任务的自动化执行。理解Agent的核心原理,如Agent Loop、记忆机制与工具权限,是掌握这项技术的关键。在工程实践中,知识库问答、流程自动化、多智能体协作等场景对工具的需求各不相同。面对Dify、FastGPT、Coze、LangChain等主流平台,低代码平台适合快速验证,开源框架则利于深度定制。本文从技术选型角度出发,对比六款常见Agent工具的定位、上手成本与适用人群,帮助初学者找到

weixin_33805992的博客 409

使用KITTI数据集测试不同算法的性能

该文章将使用同一个kitti数据集来测试不同算法的性能,目前已经测试的算法包括:LIO-SAM,FAST-LIO2,Point-LIO,Faster-LIO。

wwtx的博客 2586

15、降维算法:原理、实现与应用

本文深入介绍了多种降维算法,包括线性方法如主成分分析(PCA)和线性判别分析(LDA),以及非线性方法如Sammon映射、t分布随机邻域嵌入(t-SNE)和自编码器。文章通过C++库Dlib和Shogun展示了这些算法的具体实现,并结合图像压缩和数据可视化等实际案例,分析了不同算法的适用场景。此外,还探讨了降维算法的选择策略、优化改进方法以及未来发展趋势,为读者提供了全面的技术理解和应用指导。

lemon的博客 115

FastGPT 源码:如何实现 “问题优化“

但在连续对话中,用户的后续问题往往是不完整的,比如"第二点是什么"这样的问题 - 如果直接用这样的问题去搜索,由于缺乏上下文,很难找到相关内容 - 因此需要问题优化模块来补全用户的问题,使其变得完整和明确

蜗牛的专栏 2354

ESM2蛋白预训练模型 蛋白质、氨基酸向量表示

参考: https://github.com/facebookresearch/esm https://huggingface.co/facebook/esm2_t33_650M_UR50D https://esmatlas.com/resources?action=fold tokenizer_对输入蛋白会头尾添加cls、eos特殊字符,占两个字符长度 参考:https://github.com/facebookresearch/esm 直接clone下来代码

weixin_42357472的博客 1万+

终于来了!FastGPT 正式兼容 GPT 应用

正式加入了工具调用功能,可以兼容 GPTs 的 Actions。这意味着,!本文将会给大家介绍如何把 Gapier 的工具导入到 FastGPT 中。

云原生实验室 1782

基于深度学习的火焰检测系统:YOLOv8 + UI界面 + 数据集详解

YOLO(You Only Look Once)是一种端到端的目标检测算法,其最大优势在于将目标检测任务转化为一个回归问题,可以在一次前向传播中同时完成目标定位和分类。YOLOv8是YOLO系列中的最新版本,相比之前的版本,YOLOv8在精度和推理速度上都做了显著提升,特别是在小物体检测方面表现更加优秀。实时性:YOLOv8具有较高的推理速度,适用于实时火焰检测。高精度:相较于YOLOv7,YOLOv8在精度和小物体检测上有所改进。简单易用:YOLOv8的API简单直观,易于集成和使用。

YOLO 660

【定位教程2----旋转中心标定之方法一】

【定位教程2----旋转中心标定之方法一】

Quintin 3万+

FastGPT二次开发-使用应用库进行代码Code Review

FastGPT 是一个基于 LLM 大语言模型的知识库问答系统,提供开箱即用的数据处理、模型调用等能力。同时可以通过 Flow 可视化进行工作流编排,从而实现复杂的问答场景!背景在之前使用Gitlab CI进行AI Code Review的时候发现一些痛点,这次为了解决这些问题故在FastGPT平台上进行二次开发现有痛点优化提示词后需要多个项目同步修改收集使用反馈困难改动较多时候评论太多,影响人工...

测试游记 3845

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

FastGPT | 3分钟构建属于自己的AI智能助手

提供手动输入、直接分段、LLM 自动处理和 CSV 等多种数据导入途径,其中“直接分段”支持通过 PDF、WORD、Markdown 和 CSV 文档内容作为上下文。FastGPT 是一个基于 LLM 大语言模型的知识库问答系统,提供开箱即用的数据处理、模型调用等能力。fastgpt其实就是使用了chatgpt的api(或者其他的大模型),构建自己的AI知识库。注意:这是个 API 地址,点击打开是无效的。如果你想部署属于自己的gpt,或者是公司内部使用的。填写完毕后,点击右上角的「部署」,即可完成部署。

jixn的博客 7万+

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

军哥fastgpt教程-7-fastgpt源码解读之流程编排

我们在fastgpt中创建的应用,也被称为agent,一个agent通常是由多个组件按照用户的目的相互组合而成,我们编排一个agent的过程就是agent的流程编排,但在页面上进行流程编排只是创建一个agent的第一步,其输出为一个大的json,里面包含了我们用到的各个组件及组件间的关系。在用户开始会话时,fastgpt就会根据这个json中定义的流程,开始一步步的执行,并按照配置,向用户输出最终的结果。

2401_83148236的博客 2028

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

FastGpt+Laf 将AI知识库装进公众号

FastGpt+Laf 将AI知识库装进公众号

DevonL的博客 2916

【新版】宝塔docker一键部署NextJS框架ChatGPT开源FastGPT知识库React源码

之前给大家分享了几期关于fastgpt在宝塔怎么部署的视频教程,但是作者更新的太快了,导致之前的教程也没多少参考价值了,而且用以前那种宝塔搭建的方式太麻烦了,今天给大家分享这种更快速的方式,利用宝塔的docker管理器来一键部署,如果还需要进行本地开发,可以去参考我之前录制老版本的教程,都是大同小异的。点击宝塔的软件商店,搜索安装 docker管理器,安装好后点击终端,输入docker -v 与 docker-compose -v 来验证,如果有版本号出来,就证明安装好了。

web测评 1685

一文读懂三大AI智能体FastGPT Dify Coze对比分析

无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。现如今大模型岗位需求越来越大,但是相关岗位人才难求,薪资持续走高,AI运营薪资平均值约18457元,AI工程师薪资平均值约37336元,大模型算法薪资平均值约39607元。很多人学习大模型的时候没有方向,东学一点西学一点,像只无头苍蝇乱撞,下面是我整理好的一套完整的学习路线,希望能够帮助到你们学习AI大模型。第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。

qingkahui24689的博客 3474

FastGPT,知识库AI !保姆级教程,5分钟上手

国内直联GPT!清风 AIchat 手把手保姆级使用教程,适合小白“未来几年,所有组织的管理、业务都将AI化,如何利用AI技术,是每一个管理者必须思考的问题”自从去年 12 月 ChatGPT 发布后,带动了新的一轮应用交互革命。尤其是 GPT-3.5 接口全面放开后,LLM 应用雨后春笋般快速涌现。企业信息化1.0 是电算化,2.0 是移动化,3.0 就是 AI 智能化了。企业 AI 化时代,员工关心是如何提高写作效率、工作效率;管理者关心的是如何提高组织的整体效率,促进业务,带动销售,提效降费。

favxxx的博客 2万+

FastGPT 源码:utils.ts 中的 RRF 实现

这是一个实现 RRF(Reciprocal Rank Fusion) 算法的函数,用于合并多个搜索结果

蜗牛的专栏 668

FastGPT 源码解析:混合检索与存储方案

通过对 FastGPT 源码中混合检索与存储模块的解析,可以看出系统在设计上充分考虑了数据处理的高效性和检索的精准性。混合检索模块通过整合关键词和向量检索,实现了多层次的搜索策略;而灵活的存储方案则确保了海量数据在高并发场景下的稳定运行。未来,随着技术的不断进步,这些模块将继续优化,进一步提升系统的性能与扩展能力,为知识库问答系统带来更多可能性。

蜗牛的专栏 1519
上一篇: 为什么你的RAG总是“一本正经地胡说八道”?EAG-RAG揭示真相,准确率暴涨300%的秘密!
下一篇: 多Agent协作终极宝典!从入门到精通,打造智能业务流程看这篇就够了!
Python_金钱豹
博客等级 码龄5年 1万+粉丝 2835原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值