建设网站要钱吗常见的电子商务网站推广方式

张小明 2026/1/9 18:38:21
建设网站要钱吗,常见的电子商务网站推广方式,专业做网站广州,2022最新泛站群程序文章系统介绍了Agentic RAG技术#xff0c;它是RAG的增强版#xff0c;通过整合AI智能体实现更智能的检索增强生成。文章详细解释了Agentic RAG的概念、架构、工作流程和优势#xff0c;包括多轮查询、多源数据融合、多工具调用和智能决策能力。通过LazyLLM框架的代码示例它是RAG的增强版通过整合AI智能体实现更智能的检索增强生成。文章详细解释了Agentic RAG的概念、架构、工作流程和优势包括多轮查询、多源数据融合、多工具调用和智能决策能力。通过LazyLLM框架的代码示例展示了如何从基础RAG升级为Agentic RAG并提供了多Agent架构和多模态应用的扩展案例为开发者提供了完整的实现路径。前面教程中我们学习到了如何构建 RAG 系统以及对 RAG 系统进行效果提升、速度优化、功能扩展等等方面。本教程我们将在此基础上进一步介绍最近很火的Agentic RAG它是RAG的变种但更加智能让我们开始吧如果把RAG比作带着书本去考试的考生那么Agentic RAG就是同时带着老师和书一起去考试的考生Agentic RAG 就是整合了 AI Agent 的 RAG。本文将先从 RAG、AI Agent 等概念为基础引出 Agentic RAG然后详细介绍 Agentic RAG 的基本原理和组成紧接着介绍为什么要用 Agentic RAG并与传统的 RAG 进行对比最后介绍如何搭建一个 Agentic RAG。基本概念什么是 Agentic RAG ? 让我们将这个复杂的概念先拆解为 RAG 和 AI AgentAgentic 就是引入了 AI Agent来逐个进行介绍。1回顾 RAG 系统首先让我们先回顾一下 RAG 的基本概念。基本概念**检索增强生成Retrieval-Augmented Generation简称RAG**技术是一种利用外挂知识源为大语言模型补充上下文来强化输入从而提高大语言模型生成内容质量并减少幻觉hallucinations幻觉即 LLM 自信地编造信息随意发挥生成的不真实的内容的技术。打个比方来说RAG就是一个带着书本去考试的考生。考题就是输入书本就是外挂的知识库考生就是大模型考生作答的内容就是大模型生成的内容。一般来说如果一门闭卷考能够带着教科书去考试那答卷的分数都会很高这也正是RAG能提高大模型生成内容质量的一个形象解释。基本组件RAG 主要包括了两个组件检索组件Retrieval Component检索组件用于根据输入去匹配知识库中的信息打个比方就是带着考题去教科书中搜索答案。生成组件Generative Component生成组件用于把输入和检索到的信息送给大模型来生成高质量的回复打个比方就是考生结合题目和从教科书中找到的内容来回答试题。工作流程RAG Retrieval-Augmented Generation这个名字已经将这个技术的工作流程给揭示了出来让我们结合图示并将名字进行拆解来看1首先我们输入一个 queryRetrieva****l检索query 首先被用于在一个知识库中进行检索这里简化了 RAG 中embedding、向量化等细节详细可见往期教程 [第2讲10分钟上手一个最小可用RAG系统]知识库中的文档以及 query 都会被向量化以便进行相似度计算下文图中 Vector Search 对应的就是对知识库的搜索Augmented**增强**将检索到的内容context与我们输入的 query 进行拼接以达到增强 query 的效果Generation**生成**将上一步增强后的 query 送入到 LLM 大模型来生成回复的内容。2将生成的内容返回。2AI Agent 简介基本概念首先Agent是什么中文中常见翻译为代理人。我们要做一件事一般有两种方式一是自己一步一步来达成另外就是找个人这个人就叫做代理人我们全权授权给代理人而不用关心他怎么做只管他能帮我们达到目的。前者我们需要操心每个细节而后者我们可以坐享其成。所以 Agent 的一个特点就是不需要我们去关心达成某个任务的细节而只需要放心把任务交给他让他去帮我们达成。回到AI 智能体AI AgentAI Agent 一般被认为是一个具有特定角色和任务的 LLM它可以访问记忆和外部工具。但我觉得 AI 智能体更像是一个人我们请来的代理人。我更愿意把它比作一个有着高度专业能力的人——专家。LLM 是其大脑借助他聪明的大脑他可以自动规划步骤结合反馈反复采取行动比如调用工具来解决手头的任务整个过程不需要我们操心我们只需要放权让他去做就好想象你是一位国王当你想扩张领土的时候你并不需要自己亲历亲为你只需要找代理人——你的大将即带兵作战的专家放权让大将去做他自己会规划作战计划规划、调兵遣将调用工具、冲锋陷阵采取行动。你只需要等待他凯旋的好消息。这个大将就像是我们的 AI 智能体。基本组件一个 AI Agent 主要由下面组件构成LLM这个是智能体的大脑对应大将军的大脑记忆Memory智能体的记忆对应了大将军对某个领土扩张任务从开始到结束的所有记忆甚至是之前的战斗记忆规划Planning智能体可以进行反思、自我批评、自动路由采取行动等对应了国王放权给大将军让他能按照自己的想法去达成任务工具Tools是智能体可以调用的工具对应大将军可以调用的兵力可以使用的武器等等工作流程AI Agent 有很多类型的工作流程这里介绍几种常见的工作流程Function Call Agent、ReAct、PlanAndSolve 以及 ReWOO。AI 智能体的工作流程主要就是其行为模式就像是一个人做事的行为习惯**Function Call Agent**在该智能体接到任务后它会不断尝试以各种参数调用工具和观察输出直到解决问题或达到最大重复次数。**ReAct**该智能体接到任务后它会先思考然后再尝试调用工具和观察输出不断重复这个过程直到解决问题或达到最大重复次数。**PlanAndSolve**该智能体接到任务后会先计划把任务分解然后尝试解决当前步骤任务根据当前步骤的结果来继续执行任务或者重新计划后面的任务直到任务被解决或达到最大重复次数。**ReWOO**该智能体接到任务后也会先计划把任务分解然后将所有步骤全部执行完毕综合所有步骤的结果来进行反馈。1Function Call AgentFunction Call Agent 主要包括以下的流程行动ActionAgent 收到一个 query 后它会直接行动比如去调用某个工具观察Observation: Agent 观察到行动的反馈比如工具的输出。上面过程会不断循环往复如果观察到行动的反馈没问题满足了 query 的要求或者达到了最大的迭代次数那么 Agent 会退出并返回结果 response。我们可以在LazyLLM中使用AI Agent首先定义工具然后把定义好的工具注册进 LazyLLM 中之后就可以定义模型并使用 FunctionCall Agentfrom typing import Literal import json import lazyllm from lazyllm.tools import fc_register, FunctionCall, FunctionCallAgent fc_register(tool) def get_current_weather(location: str, unit: Literal[fahrenheit, celsius] fahrenheit): ... fc_register(tool) def get_n_day_weather_forecast(location: str, num_days: int, unit: Literal[celsius, fahrenheit] fahrenheit): ... llm lazyllm.TrainableModule(internlm2-chat-20b).start() # or llm lazyllm.OnlineChatModule() tools [get_current_weather, get_n_day_weather_forecast] fc FunctionCall(llm, tools) query Whats the weather like today in celsius in Tokyo and Paris. ret fc(query) print(fret: {ret}) agent FunctionCallAgent(llm, tools) ret agent(query) print(fret: {ret})完整的大模型学习和面试资料已经上传带到CSDN的官方了有需要的朋友可以扫描下方二维码免费领取【保证100%免费】​​2ReactReact 主要包括以下的流程思考Thought: Agent 在收到 query 后它会先给出下一步要采取的行动行动Action: Agent 会采取并执行一个行动比如使用工具或者继续思考观察Observation: Agent 观察行动的反馈比如工具的输出上面过程也是会不断循环往复直到满足 query 的请求或者达到了最大的迭代次数。ReactAgent 执行流程和 FunctionCallAgent 的执行流程一样唯一区别是prompt 不同并且 ReactAgent 每一步都要有Thought 输出而普通 FunctionCallAgent 可能只有工具调用的信息输出没有 content 内容。示例如下import lazyllm from lazyllm.tools import fc_register, ReactAgent fc_register(tool) def multiply_tool(a: int, b: int) - int: return a * b fc_register(tool) def add_tool(a: int, b: int): return a b tools [multiply_tool, add_tool] llm lazyllm.OnlineChatModule(sourcesensenova, modelDeepSeek-V3) agent ReactAgent(llm, tools) query What is 20(2*4)? Calculate step by step. res agent(query) print(res)**3**PlanAndSolvePlanAndSolve 主要包括以下的流程计划PlanAgent 在收到 query 后它会将这个任务分解为更小的子任务行动Action: Agent 对当前的子任务进行执行观察Observation: Agent 观察当前行动的结果如果解决问题就返回如果仅解决当前子任务就继续执行计划如果没解决当前子任务就重新计划后续步骤* 注意 上图中 ② Action x 1 表示每次行动只执行一个子任务不会全部将子任务执行完区别 ReWOO的对应流程中的 ② Action x N。PlanAndSolveAgent由两个组件组成首先将整个任务分解为更小的子任务其次根据计划执行这些子任务。最后结果作为答案进行输出。import lazyllm from lazyllm.tools import fc_register, PlanAndSolveAgent fc_register(tool) def multiply(a: int, b: int) - int: return a * b fc_register(tool) def add(a: int, b: int): return a b llm lazyllm.OnlineChatModule(sourcesensenova, modelDeepSeek-V3) tools [multiply, add] agent PlanAndSolveAgent(llm, toolstools) query What is 20(2*4)? Calculate step by step. ret agent(query) print(ret)**4**ReWOOReWOO (Reasoning WithOut Observation) 主要包括以下流程计划PlanAgent 在收到 query 后它会生成一个计划表计划表中包含了这个任务分解的更小子任务子任务间的执行结果用占位符表示行动Action: Agent 对每个子任务依次进行执行调用工具将结果都填入计划表的占位符中解决Solve: Agent 观察所有行动的反馈将结果response返回给用户ReWOOAgent 包含三个部分Planner 、 Worker 和 Solver。其中Planner使用可预见推理能力为复杂任务创建解决方案蓝图Worker通过工具调用来与环境交互并将实际证据或观察结果填充到指令中Solver处理所有计划和证据以制定原始任务或问题的解决方案。import lazyllm from lazyllm import fc_register, ReWOOAgent, deploy import wikipedia fc_register(tool) def WikipediaWorker(input: str): try: evidence wikipedia.page(input).content evidence evidence.split(\n\n)[0] except wikipedia.PageError: evidence fCould not find [{input}]. Similar: {wikipedia.search(input)} except wikipedia.DisambiguationError: evidence fCould not find [{input}]. Similar: {wikipedia.search(input)} return evidence fc_register(tool) def LLMWorker(input: str): llm lazyllm.OnlineChatModule(streamFalse) query fRespond in short directly with no extra words.\n\n{input} response llm(query, llm_chat_history[]) return response tools [WikipediaWorker, LLMWorker] llm lazyllm.TrainableModule(Qwen2-72B-Instruct-AWQ).deploy_method(deploy.vllm).start() agent ReWOOAgent(llm, toolstools) query What is the name of the cognac house that makes the main ingredient in The Hennchata? ret agent(query) print(ret)让我们简单总结如下简化Agent工作流程在Agent开发中重复造轮子、工具接口不统一、上下文管理复杂等问题让开发流程冗长且低效。为了解决这些难点我们可以通过“MCP协议LazyLLM”的框架提升开发效率、降低门槛让开发者能专注于核心业务和创新设计从而推动大模型应用更快落地。1MCP协议的基本概念MCPModel Context Protocol模型上下文协议是由Anthropic公司于2024年11月推出的一种开放标准协议旨在让大语言模型能够“无缝连接”外部工具和数据源。简单来说MCP就是为了解决开头那些痛点而生的“标准化利器”。一个更形象的比喻是MCP 相当于 AI 应用的USB-C接口。正如USB-C统一了不同品牌电子设备的充电和数据接口一样MCP则标准化了AI与外部世界交互的方式使得模型能够以标准化的形式高效调用数据库、工具和网络搜索等多种资源从而实现模型与外部系统的高效联动。换句话说过去每接入一个新工具就头大的“接口不统一”问题有了MCP后就像使用统一接口的外设一样插上就能用。这样一来无需二次开发多种数据库、Web API、文件系统、GitHub…海量而强大的功能统统都可以通过这一个协议轻松接入。以前想让AI Agent查天气、读PDF、执行Python代码可能需要针对每个功能写一堆集成代码其中包含工具的描述、入参等等并封装成“工具Tool”给到模型。而有了MCP只需要把符合需求的MCP服务器接上模型就会自动知道有什么工具可用、该如何调用并且输入输出格式也是统一好的。整个过程就像给笔记本电脑插上扩展坞的瞬间额外冒出HDMI、SD卡、网线等接口等繁琐的对接细节由协议帮你搞定从此开发者无需关心那些转换过程。因此MCP的出现大幅提升了AI Agent应用开发的效率。2MCP的技术架构从技术架构上看MCP遵循的是典型的客户端-服务器模型它把AI应用的内部逻辑和外部扩展功能解耦为三个核心模块1️⃣Host主机指运行AI应用类似支持AI对话的IDE插件如Cursor、桌面应用如Claude Desktop以及我们所创建的智能体应用本身的宿主环境。Host负责提供AI交互环境并在内部启动MCP Client。2️⃣Client客户端运行在Host内部的客户端它与MCP Server建立连接充当AI应用和外部世界沟通的桥梁。MCP客户端维持与服务器的 1:1 连接当AI模型需要调用工具或获取数据时都是由Client按照协议与Server通信来完成。3️⃣Server服务器MCP服务器提供具体的功能和数据相当于AI大脑可以远程调用的外设。一个服务器上通常会暴露几类内容供AI使用Tools工具允许大模型调用的功能函数。例如代码执行、网页浏览、发送邮件等这些能力都可以作为可调用的工具由Server打包并提供给AI。Resources资源给大模型提供的数据或内容。例如数据库记录、文件内容、浏览网页截图等Server可以将这些外部数据通过协议发送给AI应用以充当LLM的上下文。Prompts提示模板预设的可复用提示词模板或交互工作流。Server可以储存一些常用提示词按需提供给AI避免每次都从零编写复杂提示。更多MCP技术架构的细节可查阅https://modelcontextprotocol.io/docs/concepts/architecture通过上述架构过去东拼西凑解决的难题现在有了明确的协议规范可循那么MCP、Agent、LLM、Tool Call…这些名词之间到底有什么关系LLM是Agent的“大脑”能够根据输入信息如系统提示词、用户指令、历史对话信息、可用工具集信息等输出对应的文字内容其中可能是阶段性的工具调用信息也有可能是任务完成后的最终输出内容。Tool Call是LLM经过大量训练后具备的一种工具调用能力这种能力允许LLM能够综合历史信息和可用工具信息动态决策并输出格式化的工具调用指令决定使用哪个工具、工具调用时具体传入什么参数通过这种指令指导Agent正确的完成工具调用从而实现特定动作如操作文件、执行代码、获取必要信息如返回网页爬虫结果。MCP Server则是遵循MCP协议的工具供应商其提供给Agent强大的工具集以供LLM辨识并执行Tool Call同时接收Agent给到的Tool Call指令安全的与外部资源进行交互以实现特定动作或返回特定信息。Agent作为智能体应用与用户交互的唯一入口在接收到任务指令后会有序地调用LLM、各种工具以完成任务。3实践在LazyLLM中使用MCP针对MCPLazyLLM提供了两种接入方式直接接入和部署并远程接入。直接接入将指定MCP Server的启动配置直接给到lazyllm.tools.MCPClient以Stdio模式启动Server并获取Agent可调用的工具集。部署并远程接入针对一些资源占用高或者期望启动的MCP Server可复用的场景LazyLLM支持MCP Server的一键部署只需一行命令便可以将MCP Server单独启动随后便可以SSE模式远程接入MCP Server。具体来说步骤如下1️⃣配置LazyLLM所需要的所有依赖首先参考 https://docs.lazyllm.ai/zh-cn/latest/ 的Getting started部分安装LazyLLM并完成环境配置。同时由于MCP Server的使用依赖Node.js和npm可参考https://nodejs.org/en/download 完成最新版本的安装和配置。2️⃣利用已有的MCP服务若需接入已有的 MCP 服务如高德地图的地理位置服务可通过 LazyLLM 的 MCPClient 工具直接连接无需自行部署 Server。SSE URL 接入以高德 MCP 为例无需启动本地 Server直接通过服务提供商提供的 SSE 长连接 URL 配置 Client。需将”xxx”替换为自己的key。创建keyhttps://lbs.amap.com/api/mcp-server/create-project-and-keyimport lazyllm from lazyllm.tools.agent import ReactAgent from lazyllm.tools import MCPClient mcp_configs { amap_mcp: { url: http://mcp.amap.com/sse?keyxxx } } client MCPClient(command_or_urlmcp_configs[amap_mcp][url]) llm lazyllm.OnlineChatModule(sourceqwen, modelqwen-max-latest, streamFalse) agent ReactAgent(llmllm.share(), toolsclient.get_tools(), max_retries15) print(agent(查询北京的天气))3️⃣使用直接接入的方式调用MCP配置获取我们选择一个文件管理 MCP Server 并获取启动配置{ mcpServers: { filesystem: { command: npx, args: [ -y, modelcontextprotocol/server-filesystem, /Users/username/Desktop ] } } }注意如果你是Windows系统command需要使用cmd同时启动参数开头需要加上/c。启动配置会有些变化{ mcpServers: { filesystem: { command: cmd, args: [ /c, npx, -y, modelcontextprotocol/server-filesystem, /Users/username/Desktop ] } } }MCP接入随后便可使用LazyLLM的MCPClient工具实现MCP Server的接入这里的路径示例/xxx/xxx/xxx。import lazyllm from lazyllm.tools import MCPClient config {command: npx, args: [-y, modelcontextprotocol/server-filesystem, /xxx/xxx/xxx]} client MCPClient(command_or_urlconfig[command], argsconfig[args], envconfig.get(env))工具集获取 tools client.get_tools() Secure MCP Filesystem Server running on stdio Allowed directories: [ /Users/username/Desktop ] tools [function generate_lazyllm_tool.locals.dynamic_lazyllm_func at 0x7f269cad11c0, function generate_lazyllm_tool.locals.dynamic_lazyllm_func at 0x7f269c91e520, function generate_lazyllm_tool.locals.dynamic_lazyllm_func at 0x7f269c91d800, function generate_lazyllm_tool.locals.dynamic_lazyllm_func at 0x7f269c91d8a0, function generate_lazyllm_tool.locals.dynamic_lazyllm_func at 0x7f269c91e5c0, function generate_lazyllm_tool.locals.dynamic_lazyllm_func at 0x7f269c91e0c0, function generate_lazyllm_tool.locals.dynamic_lazyllm_func at 0x7f269c91d940, function generate_lazyllm_tool.locals.dynamic_lazyllm_func at 0x7f269c91e480, function generate_lazyllm_tool.locals.dynamic_lazyllm_func at 0x7f269c91db20, function generate_lazyllm_tool.locals.dynamic_lazyllm_func at 0x7f269c91da80, function generate_lazyllm_tool.locals.dynamic_lazyllm_func at 0x7f269c91dda0]代码讲解调用client.get_tools()可以获取当前连接的MCP Server中所有的工具在异步环境中以下代码改为tools await client.aget_tools()即可。同时LazyLLM支持开发者通过传入工具名称列表至方法的方式获取特定的工具集例如client.get_tools([“tool_name1”, “tool_name2”])。工具调用代码讲解遍历从MCP Server获取的tools其中每个成员都是一个函数。每个功能函数都有函数名name、函数描述doc包含了功能描与参数描述以及入参声明annotations调用对应函数时只需要传入正确的参数即可。下面给出两个函数调用的例子调用文件读取工具read_file传入所需入参path即可获取读取文件后的返回信息调用获取有权限路径工具list_allowed_directories该工具无需任何入参传入空即可获得工具返回。 for t in tools: ... print(f\nTool name:\n{t.__name__}\nTool desc:\n{t.__doc__}\nTool params:\n{t.__annotations__}\n) ... Tool name: read_file Tool desc: Read the complete contents of a file from the file system. Handles various text encodings and provides detailed error messages if the file cannot be read. Use this tool when you need to examine the contents of a single file. Only works within allowed directories. Args: path (str): type: string. Tool params: {path: class str} Tool name: write_file Tool desc: Create a new file or completely overwrite an existing file with new content. Use with caution as it will overwrite existing files without warning. Handles text content with proper encoding. Only works within allowed directories. Args: path (str): type: string. content (str): type: string. Tool params: {path: class str, content: class str} ...... Tool name: list_allowed_directories Tool desc: Returns the list of directories that this server is allowed to access. Use this to understand which directories are available before trying to access files. Args: No parameters. Tool params: {} t1 tools[0] t1.__name__ read_file t1(pathxxx/xxx/xxx/test.md) Secure MCP Filesystem Server running on stdio Allowed directories: [ xxx/xxx/xxx ] Tool call result:\nReceived text message:\nThis is a test file for LazyLLM and MCP.\n\nEnd\n t2 tools[-1] t2.__name__ list_allowed_directories t2() Secure MCP Filesystem Server running on stdio Allowed directories: [ xxx/xxx/xxx ] Tool call result:\nReceived text message:\nAllowed directories:\n/xxx/xxx/xxx4️⃣使用LazyLLM部署MCP Server并接入LazyLLM支持MCP Server的一键部署只需一行命令便可以将MCP Server单独启动主程序可使用SSE模式接入MCP Server。一键部署MCP Server选择浏览器工具 playwrighthttps://github.com/microsoft/playwright-mcp 获取配置信息{ mcpServers: { playwright: { command: npx, args: [ playwright/mcplatest ] } } }在命令行中只需要使用“lazyllm deploy mcp_server xxxxxx”命令并配置host、port即可完成MCP Server的部署。由于linux环境没有GUI这里演示Windows环境下的启动命令lazyllm deploy mcp_server --sse-port 11238 cmd -- /c npx playwright/mcplatest启动后如下所示接入部署完成的MCP Server我们可以在其他程序中传入url以SSE的方式接入MCP Server注意这里的url需要加上’/sse’否则无法正常运行 config {url: http://127.0.0.1:11238/sse} client MCPClient(command_or_urlconfig[url])用以上方式接入MCP Server后具体的工具获取、工具调用方式与直接接入保持一致。5️⃣LazyLLM调用MCP工具步骤 1获取工具列表tools client.get_tools() # 同步获取 # 或 tools await client.aget_tools() # 异步环境步骤 2查看工具详情for t in tools: print(fTool name: {t.__name__}) print(fTool desc: {t.__doc__}) print(fTool params: {t.__annotations__}\n)步骤 3调用MCP工具以读取文件工具为例假设 tools[0] 为 read_file。t1 tools[0] result t1(pathxxx/xxx/xxx/test.md)6️⃣LazyLLMMCP智能体Demo接下来我们使用filesystemplaywright结合LazyLLM的Agent模块创建一个智能体import lazyllm import lazyllm.tools.agent from lazyllm.tools import ReactAgent import MCPClient if __name__ __main__: mcp_configs { file_system: { command: cmd, args: [ /c, npx, -y, modelcontextprotocol/server-filesystem, ./ ] }, play_wright: { url: http://127.0.0.1:11244/sse } } client1 MCPClient(command_or_urlmcp_configs[file_system][command], argsmcp_configs[file_system][args]) client2 MCPClient(command_or_urlmcp_configs[play_wright][url]) llm lazyllm.OnlineChatModule(sourcedeepseek) agent ReactAgent(llmllm.share(), toolsclient1.get_tools()client2.get_tools(), max_retries15) print(agent(浏览谷歌新闻并写一个今日新闻简报以markdown格式保存至本地。))通过本次实践我们可以了解到MCP Server的出现直接省去了Agent开发环节中工具研发和调试的成本大大提升了研发效率。LazyLLM对于MCP提供了灵活的接入方式让开发者使用MCP的成本大大降低。总结在大模型时代开发效率就是核心竞争力。从头造轮子或许可以练手但在真正落地AI应用的过程中我们更应该把宝贵的时间和脑力留给真正创造价值的部分——如业务逻辑设计、用户体验优化、创新交互方式等而不是重复造工具、上下文拼接等基础组件。MCP提供了一套高效、统一的标准协议LazyLLM则提供了一套灵活的MCP接入方案让每一个开发者都能轻松上手快速构建属于自己的智能Agent应用从而站在社区和开源生态的“肩膀”上看得更远、做得更多。4理性看待 MCP尽管MCP简化了开发流程但需注意其局限性依赖性风险过度依赖第三方MCP服务可能导致业务受制于外部稳定性与政策变化。工具选择MCP没有解决当前Agent的一个困境当工具比较多的时候如何快速而准确地选到最合适的工具。开发者应根据实际需求权衡选择优先在轻量级场景中尝试MCP逐步验证其适用性。3Agentic RAG 简介基本概念Agentic RAG 是 RAG 的一种扩展它通过引入 AI智能体 来增强 RAG 的功能使得系统能够执行更复杂的任务。举个例子如果说 RAG 是带着书本去考试的考生AI Agent 是专家那么 Agentic RAG 就是带着专家去考试的考生简单来看下图中单个 LLM 就好比一个去参加闭卷考的学生我们给这个学生带本书那么就可以获得一个RAG如果我们把书替换为专家那我们就获得了一个 Agentic RAG。基本架构Agentic RAG 就是引入了 AI智能体的 RAG。前面的示例中我们将 RAG 的搜索组件Retrieval Component给替换为了单AI智能体。除此之外我们还可以将搜索组件给替换为多AI智能体甚至也可以把生成组件Generative Component给替换为 AI 智能体。1单 Agent RAG下面是一个常见的 Agentic RAG其中的 AI Agent 模块提供了两个外挂知识库、一个网络搜索工具、一个计算器和一个数据库这样智能体可以根据上下文的需求决定从哪里来检索信息。并且如果在一轮检索中不能获得满意的信息智能体还可以再次重新检索它可以自动更换检索的关键词选取不同的工具等等。在 Agentic RAG 中可以将 AI 智能体融入检索组件形成 Retrieval Agent。检索过程变得智能智能体能根据 query 循环检索动态优化结果。同时智能体可接入网络、数据库等多种工具突破单一知识库限制获取更丰富、准确的上下文信息。单Agent RAG的工作流程可以拆解为用户输入Query → Agent动态规划检索策略多次检索更换关键词/工具→ 多源数据融合结果增强 → LLM生成回复引入智能体后查询过程实现自动化与智能化系统可自主多轮检索无需人工干预即可提升信息匹配效果。2多 Agent RAG我们还可以引进专家组是的就是多Agent智能体下图中 Retrieval Agent A 专家负责两个知识库的检索Retrieval Agent B 专家负责网络搜索Retrieval Agent C 专家负责两个数据库的搜索他们都是各个数据源的搜索专家最后有一个Retrieval Agent 专家作为总指挥他擅长搜索任务的分配。如果你想我们当然也可以把生成模块给替换为一个 AI 智能体如下图所示。这样我们就拥有了两个专家一个专家负责检索另外一个专家负责生成内容。如下图所示检索专家拥有很多途径来自主决策检索信息生成专家也可以边搜索边生成内容如果它觉得生成的内容不满意还会自动重新生成完整的大模型学习和面试资料已经上传带到CSDN的官方了有需要的朋友可以扫描下方二维码免费领取【保证100%免费】​​工作流程在 Agentic RAG 中可以将 AI 智能体融入到不同的组件中一般常见的是将检索组件替换为AI 智能体变成Retrieval Agent。这也就意味着检索组件将变得智能可以根据 query 不断地去检索来获取更加丰富和准确的上下文。同时由于 AI 智能体可以接入很多工具这极大增强了检索的能力甚至如果在知识库中无法检索到合适的内容AI 智能体也能从网络、数据库或者其他一切可访问的工具中来获得更多的内容。让我们以单 Agent RAG 为例如下图所示来看一下在不同的智能体工作流下是如何完成检索的。1️⃣首先一条 query 被传给了智能体①如果智能体是Function Call Agent那么它会根据 query 来不断调用工具并观察查询到的信息以此不断循环②直到查询到令它满意的信息或者达到最大循环次数如果智能体是React那么它先根据 query 来做个思考然后开始调用工具并观察查询到的信息以此不断循环②也是直到查询到令它满意的信息或达到最大循环次数如果智能体是PlanAndSolve那么它会先根据 query 来做个计划将查询任务进行分解为子任务然后它开始执行子任务比如调用查询知识库的工具在知识库返回信息后它会观察结果如果结果不满意它会重新修改计划如果结果还行它会继续沿着计划执行下一个子任务以此不断循环②直到最后完成它自己制定的所有任务而获得查询的信息如果智能体是ReWOO那么它也会根据 query 来做个计划将查询任务分解为子任务然后它会依次将子任务全部执行完毕②最后将综合所有的执行结果来给出它查询的结果。2️⃣在智能体查询到信息后就回到了经典的 RAG 工作流查询到的信息已经是被智能体将 query 融合增强后的结果③会被送给 LLM 来完成内容生成任务④。至此一个单 Agent RAG 的工作流程就完成了。从中我们可以看出在查询阶段由于我们引入了智能体查询变得更加智能智能体会自己不断去查询我们不用操心查询的过程以及担心只查一次找不到匹配的信息。引入动机Agentic RAG 仅是在原有 RAG 的工作流中将其组件替换为了智能体。为什么要这样为什么要搞出 Agentic RAG? 或者说为什么要给 RAG 中引入智能体一个很简单原因就是为了让它更强大更加智能化。经典的 RAG 仅进行单次查询如果单次无法召回到合适的文档信息那么后续的生成过程的效果是无法保障的。但是 Agentic RAG 可以进行多次查询(multiple query)如果此次召回效果不好智能体会自动更换表示方式或更换工具进行检索经典的 RAG 的数据来源很单一往往只有一个知识库。但是 Agentic RAG 可以接入大量的知识库而且不止于此它还可以接入数据库甚至是联网搜索这意味着 Agentic RAG 的数据来源是多样的(multi source)多样的数据源不仅可以补充单数据源的信息不足拥有更多的信息多样的数据源也可以对查询到的信息进行相互佐证保障查询结果的准确性Agentic RAG 额外还有多工具调用的能力这充满了无限的功能(multi-function)它可以对信息进行处理和加工Agentic RAG 更重要的是它可以智能决策(smart decision-making)它可以自动制定计划来实现复杂的查询过程。整个过程都不需要我们操心。可以想象这就是带着一本教科书和带着专家去考试的区别搭建实现让我们从一个基础的 RAG 开始然后示例在 LazyLLM 中如何注册工具并使用 React AI 智能体最后将两者结合实现一个简单的 Agentic RAG。1搭建基础 RAG在之前教程的基础上我们可以使用 LazyLLM 来快速搭建一个 RAG 应用。该应用的逻辑如下具体代码如下所示在这个RAG中我们设置了个检索器 Retriever 和 Reranker 用于检索知识库。代码GitHub链接https://github.com/LazyAGI/Tutorial/blob/7abc91dbb82a007a78731845dd8c360ac0cc1e75/rag/codes/chapter18/basic_rag.pyimport lazyllm from lazyllm import pipeline, bind, OnlineEmbeddingModule, SentenceSplitter, Document, Retriever, Reranker prompt You will play the role of an AI QA assistant and complete a dialogue task. In this task, you need to provide your answer based on the given context and question. documents Document(dataset_pathrag_master, embedOnlineEmbeddingModule(), managerFalse) documents.create_node_group(namesentences, transformSentenceSplitter, chunk_size1024, chunk_overlap100) with pipeline() as ppl: ppl.retriever Retriever(documents, group_namesentences, similaritycosine, topk1) ppl.reranker Reranker(ModuleReranker, modelOnlineEmbeddingModule(typererank), topk1, output_formatcontent, joinTrue) | bind(queryppl.input) ppl.formatter (lambda nodes, query: dict(context_strnodes, queryquery)) | bind(queryppl.input) ppl.llm lazyllm.OnlineChatModule(streamFalse).prompt(lazyllm.ChatPrompter(prompt, extra_keys[context_str])) if __name__ __main__: lazyllm.WebModule(ppl, portrange(23467, 24000)).start().wait()让我们运行一下看看结果2AI智能体 ReactAgentic RAG 就是引入了 AI 智能体的 RAG这里让我们用 LazyLLM 来注册一个假的知识库搜索工具实现一个 React:代码GitHub链接https://github.com/LazyAGI/Tutorial/blob/main/rag/codes/chapter18/react.pyimport json import lazyllm from lazyllm import fc_register, ReactAgent fc_register(tool) def search_knowledge_base(query: str): Get info from knowledge base in a given query. Args: query (str): The query for search knowledge base. return 无形 llm lazyllm.OnlineChatModule(streamFalse) tools [search_knowledge_base] agent ReactAgent(llm, tools) if __name__ __main__: res agent(何为天道) print(Result: \n, res)让我们尝试来运行一下有了 React我们就可以将它的工具替换为 RAG 中的 Retriever 和 Reranker 来作为一个真实的知识库。让它可以调用检索器import lazyllm from lazyllm import (pipeline, bind, OnlineEmbeddingModule, SentenceSplitter, Reranker, Document, Retriever, fc_register, ReactAgent) documents Document(dataset_pathrag_master, embedOnlineEmbeddingModule(), managerFalse) documents.create_node_group(namesentences, transformSentenceSplitter, chunk_size1024, chunk_overlap100) with pipeline() as ppl_rag: ppl_rag.retriever Retriever(documents, group_namesentences, similaritycosine, topk3) ppl_rag.reranker Reranker(ModuleReranker, modelOnlineEmbeddingModule(typererank), topk1, output_formatcontent, joinTrue) | bind(queryppl_rag.input) fc_register(tool) def search_knowledge_base(query: str): Get info from knowledge base in a given query. Args: query (str): The query for search knowledge base. return ppl_rag(query) tools [search_knowledge_base] llm lazyllm.OnlineChatModule(streamFalse) agent ReactAgent(llm, tools) if __name__ __main__: res agent(何为天道) print(Result: \n, res)运行结果如下3实现 Agentic RAG让我们将 RAG 的检索组件替换为带单个知识库的React实现下面逻辑这里简单起见只用了一个知识库作为工具对应代码如下代码GitHub链接https://github.com/LazyAGI/Tutorial/blob/main/rag/codes/chapter18/rag_react.pyimport lazyllm from lazyllm import (pipeline, bind, OnlineEmbeddingModule, SentenceSplitter, Reranker, Document, Retriever, fc_register, ReactAgent) prompt You will play the role of an AI QA assistant and complete a dialogue task. In this task, you need to provide your answer based on the given context and question. documents Document(dataset_pathrag_master, embedOnlineEmbeddingModule(), managerFalse) documents.create_node_group(namesentences, transformSentenceSplitter, chunk_size1024, chunk_overlap100) with pipeline() as ppl_rag: ppl_rag.retriever Retriever(documents, group_namesentences, similaritycosine, topk3) ppl_rag.reranker Reranker(ModuleReranker, modelOnlineEmbeddingModule(typererank), topk1, output_formatcontent, joinTrue) | bind(queryppl_rag.input) fc_register(tool) def search_knowledge_base(query: str): Get info from knowledge base in a given query. Args: query (str): The query for search knowledge base. return ppl_rag(query) tools [search_knowledge_base] with pipeline() as ppl: ppl.retriever ReactAgent(lazyllm.OnlineChatModule(streamFalse), tools) ppl.formatter (lambda nodes, query: dict(context_strnodes, queryquery)) | bind(queryppl.input) ppl.llm lazyllm.OnlineChatModule(streamFalse).prompt(lazyllm.ChatPrompter(prompt, extra_keys[context_str])) if __name__ __main__: lazyllm.WebModule(ppl, portrange(23467, 24000)).start().wait()效果如下至此一个简单的 Agentic RAG 我们就实现了。4更多的尝试你可以尝试使用不同的 AI 智能体工作流来替换上面的 ReactFunctionCallAgent代码GitHub链接https://github.com/LazyAGI/Tutorial/blob/main/rag/codes/chapter18/rag_functioncall.pyPlanAndSolveAgent代码GitHub链接https://github.com/LazyAGI/Tutorial/blob/main/rag/codes/chapter18/rag_planandsolve.pyReWOOAgent代码GitHub链接https://github.com/LazyAGI/Tutorial/blob/main/rag/codes/chapter18/rag_rewoo.pyfrom lazyllm import FunctionCallAgent, PlanAndSolveAgent, ReWOOAgent # Use FunctionCallAgent: ppl.retriever FunctionCallAgent(lazyllm.OnlineChatModule(), tools) # Use PlanAndSolveAgent: ppl.retriever PlanAndSolveAgent(lazyllm.OnlineChatModule(), tools) # Use ReWOOAgent: ppl.retriever ReWOOAgent(lazyllm.OnlineChatModule(), tools)这里我们尝试将ReactAgent 分别替换为FunctionCallAgent, PlanAndSolveAgent, ReWOOAgent来查看效果FunctionCallAgentFunctionCallAgent的效果PlanAndSolveAgentPlanAndSolveAgent的效果ReWOOAgentReWOOAgent的效果甚至你也可以引入多AI智能体以及更多的RAG组件快试试看吧。扩展案例多Agent RAG为提升复杂问题的覆盖率与响应质量还可以引入多Agent RAG的架构设计 Agent 分工检索Agent根据查询内容确定检索工具本地知识库/网络搜索。Agent A知识库专家负责本地知识库的高效检索优先处理结构化、稳定信息。Agent B网络搜索专家执行网页搜索、数据内容提取并写入本地。检索完成后所有结果统一送入LLM生成响应保证语言质量与上下文一致性MCP网络搜索工具定义与注册# MCP-Search Web and Save Local mcp_client1 lazyllm.tools.MCPClient(command_or_urlpython, args[-m, mcp_server_fetch],) search_agent CustomReactAgent(llmlazyllm.OnlineChatModule(sourcesensenova, streamFalse), streamFalse, custom_promptsearch_prompt, toolsmcp_client1.get_tools()) fc_register(tool) def search_web(query: str): Perform targeted web content retrieval using a combination of search terms and URL. This tool processes both natural language requests and specific webpage addresses to locate relevant online information. Args: query (str): Combined input containing search keywords and/or target URL (e.g., AI news from https://example.com/tech-updates) query search_prompt res search_agent(query) return resRAG工具定义与注册应用编排# RAG-Retriever documents Document(dataset_pathpath/to/kb, managerFalse) documents.add_reader(*.json, process_json) with pipeline() as ppl_rag: ppl_rag.retriever Retriever(documents, Document.CoarseChunk, similaritybm25, topk1, output_formatcontent, join*20) fc_register(tool) def search_knowledge_base(query: str): Get info from knowledge base in a given query. Args: query (str): The query for search knowledge base. res ppl_rag(query) return res # Agentic-RAG: tools [search_knowledge_base, search_web] with pipeline() as ppl: ppl.retriever CustomReactAgent(lazyllm.OnlineChatModule(streamFalse), tools, agent_prompt, streamFalse) ppl.formatter (lambda nodes, query: dict(context_strnodes, queryquery)) | bind(queryppl.input) ppl.llm lazyllm.OnlineChatModule(streamFalse).prompt(lazyllm.ChatPrompter(gen_prompt, extra_keys[context_str])) # Launch: Web-UI lazyllm.WebModule(ppl, portrange(23467, 24000), streamTrue).start().wait()多模态Agentic RAG论文系统1配置两个MCP工具及Agent代码GitHub链接https://github.com/LazyAGI/Tutorial/blob/main/rag/courseware_codes/chapter18/mcp_agent.pyimport json import lazyllm from lazyllm import ReactAgent mcp_client1 lazyllm.tools.MCPClient( command_or_urlpython, args[-m, mcp_simple_arxiv], ) mcp_client2 lazyllm.tools.MCPClient( command_or_urlpython, args[-m, mcp_server_calculator], ) llm lazyllm.OnlineChatModule(streamFalse) paper_agent ReactAgent(llm, mcp_client1.get_tools(), return_traceTrue) calculator_agent ReactAgent(llm, mcp_client2.get_tools(), return_traceTrue)环境中需提前安装好两个工具pip install mcp-simple-arxiv pip install mcp-server-calculator2应用编排代码GitHub链接https://github.com/LazyAGI/Tutorial/blob/7abc91dbb82a007a78731845dd8c360ac0cc1e75/rag/courseware_codes/chapter18/paper_assistant_multimodal.py#L25# 构建 rag 工作流和统计分析工作流 rag_ppl build_paper_rag() sql_ppl build_statistical_agent() # 搭建具备知识问答和统计问答能力的主工作流 def build_paper_assistant(): llm OnlineChatModule(sourceqwen, streamFalse) vqa lazyllm.OnlineChatModule(sourcesensenova,\ modelSenseNova-V6-Turbo).prompt(lazyllm.ChatPrompter(gen_prompt)) with pipeline() as ppl: ppl.ifvqa lazyllm.ifs( lambda x: x.startswith(lazyllm-query), lambda x: vqa(x), lambda x:x) with IntentClassifier(llm) as ppl.ic: ppl.ic.case[论文问答, rag_ppl] ppl.ic.case[统计问答, sql_ppl] ppl.ic.case[计算器, calculator_agent] ppl.ic.case[网页最新论文搜索, paper_agent] return ppl if __name__ __main__: main_ppl build_paper_assistant() lazyllm.WebModule(main_ppl, port23459, static_paths./images, encode_filesTrue).start().wait()​最后我在一线科技企业深耕十二载见证过太多因技术卡位而跃迁的案例。那些率先拥抱 AI 的同事早已在效率与薪资上形成代际优势我意识到有很多经验和知识值得分享给大家也可以通过我们的能力和经验解答大家在大模型的学习中的很多困惑。我整理出这套 AI 大模型突围资料包✅AI大模型学习路线图✅Agent行业报告✅100集大模型视频教程✅大模型书籍PDF✅DeepSeek教程✅AI产品经理入门资料完整的大模型学习和面试资料已经上传带到CSDN的官方了有需要的朋友可以扫描下方二维码免费领取【保证100%免费】​​为什么说现在普通人就业/升职加薪的首选是AI大模型人工智能技术的爆发式增长正以不可逆转之势重塑就业市场版图。从DeepSeek等国产大模型引发的科技圈热议到全国两会关于AI产业发展的政策聚焦再到招聘会上排起的长队AI的热度已从技术领域渗透到就业市场的每一个角落。智联招聘的最新数据给出了最直观的印证2025年2月AI领域求职人数同比增幅突破200%远超其他行业平均水平整个人工智能行业的求职增速达到33.4%位居各行业榜首其中人工智能工程师岗位的求职热度更是飙升69.6%。AI产业的快速扩张也让人才供需矛盾愈发突出。麦肯锡报告明确预测到2030年中国AI专业人才需求将达600万人人才缺口可能高达400万人这一缺口不仅存在于核心技术领域更蔓延至产业应用的各个环节。​​资料包有什么①从入门到精通的全套视频教程⑤⑥包含提示词工程、RAG、Agent等技术点② AI大模型学习路线图还有视频解说全过程AI大模型学习路线③学习电子书籍和技术文档市面上的大模型书籍确实太多了这些是我精选出来的④各大厂大模型面试题目详解⑤ 这些资料真的有用吗?这份资料由我和鲁为民博士共同整理鲁为民博士先后获得了北京清华大学学士和美国加州理工学院博士学位在包括IEEE Transactions等学术期刊和诸多国际会议上发表了超过50篇学术论文、取得了多项美国和中国发明专利同时还斩获了吴文俊人工智能科学技术奖。目前我正在和鲁博士共同进行人工智能的研究。所有的视频教程由智泊AI老师录制且资料与智泊AI共享相互补充。这份学习大礼包应该算是现在最全面的大模型学习资料了。资料内容涵盖了从入门到进阶的各类视频教程和实战项目无论你是小白还是有些技术基础的这份资料都绝对能帮助你提升薪资待遇转行大模型岗位。智泊AI始终秉持着“让每个人平等享受到优质教育资源”的育人理念‌通过动态追踪大模型开发、数据标注伦理等前沿技术趋势‌构建起前沿课程智能实训精准就业的高效培养体系。课堂上不光教理论还带着学员做了十多个真实项目。学员要亲自上手搞数据清洗、模型调优这些硬核操作把课本知识变成真本事‌​​​​如果说你是以下人群中的其中一类都可以来智泊AI学习人工智能找到高薪工作一次小小的“投资”换来的是终身受益应届毕业生‌无工作经验但想要系统学习AI大模型技术期待通过实战项目掌握核心技术。零基础转型‌非技术背景但关注AI应用场景计划通过低代码工具实现“AI行业”跨界‌。业务赋能 ‌突破瓶颈传统开发者Java/前端等学习Transformer架构与LangChain框架向AI全栈工程师转型‌。获取方式有需要的小伙伴可以保存图片到wx扫描二v码免费领取【保证100%免费】**​
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

微企帮做网站设计平台是什么

软件RAID创建指南 在当今的数据存储领域,RAID(独立磁盘冗余阵列)技术扮演着至关重要的角色。它不仅可以提高数据的安全性,还能提升存储性能。本文将详细介绍如何创建软件RAID,包括磁盘分区、不同RAID模式的设置以及文件系统的创建等内容。 1. 准备工作 在开始创建RAID之…

张小明 2025/12/25 23:09:55 网站建设

设计类网站策划案win2008 网站服务器

本文深入剖析WebRTC的核心架构、ICE连接建立流程,并通过实战代码演示如何搭建一个点对点视频通话应用。前言 打开浏览器,无需安装任何插件,就能进行视频通话——这在十年前是难以想象的。 WebRTC(Web Real-Time Communication&…

张小明 2026/1/9 17:05:31 网站建设

山西省网站建设哪里好电子商务网站技术方案

LobeChat 能否对接 GitHub?代码仓库智能搜索与建议 在现代软件开发中,一个常见的困境是:项目越做越大,代码越来越多,新成员加入时面对成千上万行的代码库,往往无从下手;而老员工虽然熟悉系统&am…

张小明 2025/12/25 23:10:04 网站建设

微网站网站模板建站wordpress 海量数据

文章目录LeetCode 高频“字符串操作”题通关:3道题教你玩转字符处理一、 最长回文子串(LeetCode 5,中等)—— 中心扩展法的高效应用题目痛点题目回顾常规思路的局限性优化技巧:中心扩展法完整代码实现思维提炼二、 字符…

张小明 2026/1/1 4:04:19 网站建设

微信网站 微信支付视频链接生成网站

如何快速掌握uWebSockets性能优化:从基础配置到高级调优的完整指南 【免费下载链接】uWebSockets 项目地址: https://gitcode.com/gh_mirrors/uwe/uWebSockets uWebSockets作为C高性能WebSocket框架,凭借其卓越的并发处理能力和低延迟特性&#…

张小明 2025/12/26 3:35:24 网站建设

网站建设一年多少长春网络公司问询垚鑫科技

Windows设备管理器错误代码与BIOS开机自检蜂鸣代码解析 在使用Windows XP系统时,设备管理器错误代码和BIOS开机自检(POST)蜂鸣代码能帮助我们快速定位和解决计算机硬件及驱动相关的问题。下面将详细介绍这些错误代码及其解决方法。 1. 查看设备管理器错误代码 要查看设备…

张小明 2025/12/26 17:35:52 网站建设