用基于Qwen-2.5-7B的Code Agent打造本地、开源的Multi-Agent RAG系统,零基础入门大模型,收藏这一篇就足够了

LLM 的潜力与局限性

LLM 在语言生成、复杂任务理解等方面展现了强大的能力,特别是在需要生成纯文本输出的场景(如聊天机器人、文本摘要)中,表现尤为出色。然而,当需要超出“纸上谈兵”的实际应用时,这些模型依赖于外部用户执行建议的操作并反馈结果。

Agent 系统的引入
 

Agent 系统通过赋予模型与环境交互的能力解决了上述问题。这些系统通常利用一组工具,让模型能够执行特定操作,实现通过试错过程迭代解决问题的能力。

Multi-Agent 系统的概念

Multi-Agent 系统的核心是让模型能够访问其他 Agent 作为工具,分配任务给专用模型,并将输出结果组合成完整的解决方案。典型的实现方式是使用一个管理 Agent 来协调其他 Agent 的工作流,从而解决复杂任务。

对底层模型的需求

Multi-Agent 系统需要一个强大的 LLM 作为核心支持,该模型必须能够理解工具的用途,灵活地将问题分解为各个可操作的子问题。这使得诸如 ChatGPT 和 Claude 这样的专有模型成为 Agent 系统的首选。然而,随着开源 LLM 性能的提升,一些开源模型在某些场景下表现得几乎与专有模型相当,甚至体积适中的开源模型现在也能完成几年前无法想象的复杂任务。

使用Qwen2.5-7B-Instruct的案例

本文展示了一种基于消费级硬件运行的“小型”开源 LLM,如何在 Multi-Agent 系统中取得良好效果。

具体来说,作者通过教程介绍了如何使用 Qwen2.5-7B-Instruct 构建一个 Multi-Agentic RAG 系统,代码实现已上传至 GitHub:

https://github.com/GabrieleSgroi/multiagentic_rag

ReAct 框架:将推理与操作结合的 LLM Agent 方案 

ReAct 是一种广受欢迎的框架,最早在论文《ReAct: Synergizing Reasoning and Acting in Language Models》中提出,专为构建基于 LLM 的 Agent 而设计。其核心理念是将链式思维(Chain of Thought)提示的优势整合到 Agent 框架中。

ReAct 的关键在于交替执行推理(Reasoning)操作(Acting)步骤:

  • 推理(Thought):模型生成一系列推理步骤,包括整体规划和特定工具使用建议。

  • 操作(Action):根据推理结果,模型调用相关工具。

  • 观察(Observation):模型接收来自环境的反馈,并据此更新高层计划。

通过这种交替方式,ReAct 框架允许模型动态生成推理路径,在与环境交互的同时不断调整计划,从而实现迭代和增量式的任务解决。

这种设计能够让模型在每个循环中优化操作路径,不断改进任务解决方案,尤其适用于复杂问题的分步解决。

图片

Code Agent  

Code Agent 是一种特殊的 LLM Agent,通过可执行的 Python 代码与环境交互。它基于论文《Executable Code Actions Elicit Better LLM Agents》中提出的 CodeAct 框架。与 ReAct 框架类似,CodeAct 的区别在于每个操作步骤(Action)由可执行的任意代码组成,能够执行多项操作。这些 Code Agent 通过预定义的工具(以常规 Python 函数形式提供)完成任务。

下面是原始论文中的一个具体例子,展示了 Code Agent 如何需要更少的操作来解决某些任务。

图片

Code Agent 相较于使用 JSON 或其他文本格式进行操作的传统 Agent,具有以下独特优势:

  • 灵活性:可以结合现有软件包和任务特定的手工工具,执行复杂任务。

  • 自我调试:Agent 能够利用错误信息自行调试生成的代码。

  • 自然性:LLM 在预训练数据中广泛接触代码,使代码成为一种更自然的操作格式。

  • 高效性:代码可以存储中间结果,并在单个操作中组合多项任务,而 JSON 或其他文本格式可能需要多步操作完成相同任务。

图片

基于这些特点,Code Agent 在性能和执行速度上优于传统 Agent。

Hugging Face 提供了构建 Code Agent 的模块化工具:

  • 清晰与模块化:Hugging Face 的 Transformer Agent 框架以清晰性和模块化为核心设计原则,便于用户掌控 Agent 系统中各个复杂的互联部分,是构建灵活自定义 Agent 系统的理想选择。

  • 与开源模型兼容:框架与 Hugging Face 生态系统的模型和工具无缝集成,方便用户访问和使用现有资源。

生成代码的安全性一直是 LLM Agent 面临的挑战,因为无约束的代码可能引发严重问题(如意外删除重要文件)。Hugging Face 的 Code Agent 采用自下而上的安全执行方式:

  • 操作授权:代码解释器仅能执行显式授权的操作,而非传统的“禁用危险操作”的顶层限制方式。

  • 功能白名单:实现包括一份可执行函数和安全模块的白名单,未经预先授权的代码将无法执行。

通过这些功能,Hugging Face 的 Code Agent 为构建安全、高效、灵活的 Multi-Agent 系统提供了强大的支持。

Agentic RAG  

RAG 是当前 LLM 信息检索任务的事实标准。其主要优势包括:

  • 保持信息更新:通过检索最新信息弥补模型训练数据的时效性不足。

  • 提供特定信息:访问特定领域的数据源,增强模型的专业性。

  • 减少幻觉现象:提高生成结果的准确性和可信度。

  • 提升可解释性:通过返回数据源帮助用户监督和理解生成过程。

然而,传统的 RAG 工作流程(基于用户查询的语义相似性进行检索,然后通过检索信息增强上下文)在以下场景中效果有限:

  • 需要与信息源交互的任务。

  • 需要多个信息片段来回答的复杂查询。

  • 需要非平凡数据操作以将查询与信息源连接的复杂任务。

一个具体挑战是多跳问题回答(Multi-Hop Question Answering, MHQA)。这类任务需要从多个信息片段中提取并组合信息,可能涉及多轮推理。例如,针对问题“桦木胶合板是否漂浮在乙醇中?”即使数据源包含两种材料的密度信息,传统 RAG 框架可能因为缺乏直接链接而无法完成推理。


为克服上述局限,Agentic 系统成为增强 RAG 的流行方法:

  • 任务分解:LLM Agent 可以将原始查询分解为一系列子查询。

  • 动态调整:Agent 通过语义搜索工具检索子查询的信息,并根据收集到的信息实时调整计划。

  • 自主决策:Agent 可自主判断是否已收集足够的信息回答问题,或是否需要继续检索。


将 Agentic RAG 扩展为 Multi-Agentic 系统可进一步提升性能:

  • 任务分工:为每个 Agent 分配明确职责,例如将高层次任务规划与文档交互分开。

  • 协作处理:多个 Agent 协同完成复杂任务,提高效率和准确性。


Multi-Agentic 系统可在复杂任务中表现出色。下一部分将展示这种系统的具体实现方案,以说明其如何提升 RAG 的能力。

Multi-Agent RAG 系统的架构与实现  

系统目标与架构设计

  • 目标:构建一个能够通过 Wikipedia 搜索回答用户问题的系统。

  • Agent 结构:由三个 Agent 组成,层级结构如下:

    1. 管理 Agent(Manager Agent):拆分任务并整合结果,返回最终答案。接收用户问题,拆分为子任务,调用 Wikipedia 搜索 Agent 收集信息,并整合返回最终答案。

    2. Wikipedia 搜索 Agent(Wikipedia Search Agent):检索相关页面并提取信息。基于 wikipedia 包,利用语义搜索定位潜在的 Wikipedia 相关页面,必要时调用页面搜索 Agent 提取更具体的信息,将页面列表及摘要返回给管理 Agent。

    3. 页面搜索 Agent(Page Search Agent):从特定 Wikipedia 页面提取与查询相关的信息。使用 LangChain 提供的 FAISS 向量数据库,将页面内容分块嵌入,利用语义相似度检索相关段落。

图片

每个 Agent 都可调用下层 Agent 作为工具,系统基于 ReAct 框架设计,使用代码执行实现 Agent 间的协作。

实现选择与优化策略

  1. 提示词优化

    • 每个 Agent 都有专门设计的系统提示词,包含针对性任务示例以增强模型性能。

    • 针对聊天模型(如 Qwen2.5–7B-Instruct),提示词模板遵循模型的交互格式。

  2. 历史记录总结

    • 为避免上下文过长影响性能,限制 Agent 仅接收必要的历史记录:系统消息、初始任务、最后的动作及所有观察结果。

    • 删除已解决错误的记录,仅保留最新错误。

  3. 工具管理与代理包装

    • 将 Agent 包装为工具,增强提示词控制,简化实现流程,同时减少提示词长度以提升计算速度。

  4. 限制页面搜索尝试次数

    • 避免页面搜索 Agent 在无关页面上浪费资源,设置最大尝试次数,超过限制后返回最后的观察结果。

  5. 工具响应优化

    • 针对 Qwen2.5–7B-Instruct 模型的聊天模板,仅支持 "system"、"user" 和 "assistant" 角色,将观察结果作为用户消息返回。

通过分层结构和定制化的提示词,实现了一个高效的 Multi-Agent RAG 系统。该架构结合 Wikipedia 数据和语义搜索技术,为复杂查询提供了解决方案,并展示了开源 LLM 在 Multi-Agent 场景中的潜力。

 我们该怎样系统的去转行学习大模型 ?

很多想入行大模型的人苦于现在网上的大模型老课程老教材,学也不是不学也不是,基于此,我用做产品的心态来打磨这份大模型教程,深挖痛点并持续修改了近100余次后,终于把整个AI大模型的学习门槛,降到了最低!

在这个版本当中:

第一不需要具备任何算法和数学的基础
第二不要求准备高配置的电脑
第三不必懂Python等任何编程语言

您只需要听我讲,跟着我做即可,为了让学习的道路变得更简单,这份大模型教程已经给大家整理并打包,现在将这份 LLM大模型资料 分享出来: 😝有需要的小伙伴,可以 扫描下方二维码领取🆓↓↓↓

一、大模型经典书籍(免费分享)

AI大模型已经成为了当今科技领域的一大热点,那以下这些大模型书籍就是非常不错的学习资源。

二、640套大模型报告(免费分享)

这套包含640份报告的合集,涵盖了大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。(几乎涵盖所有行业)
在这里插入图片描述

三、大模型系列视频教程(免费分享)

在这里插入图片描述

四、2025最新大模型学习路线(免费分享)

我们把学习路线分成L1到L4四个阶段,一步步带你从入门到进阶,从理论到实战。

L1阶段:启航篇丨极速破界AI新时代

L1阶段:我们会去了解大模型的基础知识,以及大模型在各个行业的应用和分析;学习理解大模型的核心原理、关键技术以及大模型应用场景。

L2阶段:攻坚篇丨RAG开发实战工坊

L2阶段是我们的AI大模型RAG应用开发工程,我们会去学习RAG检索增强生成:包括Naive RAG、Advanced-RAG以及RAG性能评估,还有GraphRAG在内的多个RAG热门项目的分析。

L3阶段:跃迁篇丨Agent智能体架构设计

L3阶段:大模型Agent应用架构进阶实现,我们会去学习LangChain、 LIamaIndex框架,也会学习到AutoGPT、 MetaGPT等多Agent系统,打造我们自己的Agent智能体。

L4阶段:精进篇丨模型微调与私有化部署

L4阶段:大模型的微调和私有化部署,我们会更加深入的探讨Transformer架构,学习大模型的微调技术,利用DeepSpeed、Lamam Factory等工具快速进行模型微调。

L5阶段:专题集丨特训篇 【录播课】

全套的AI大模型学习资源已经整理打包,有需要的小伙伴可以微信扫描下方二维码,免费领取

### Qwen-2.5-7B 模型介绍 Qwen-2.5-7B 是通义千问系列中的一个重要版本,属于指令微调模型(Instruct Model),具有强大的多模态处理能力和广泛的适用场景。该模型基于大量高质量的数据集进行训练,在多个领域展现了卓越的表现能力,尤其是在自然语言理解、对话生成以及特定任务的应用方面[^1]。 #### 主要特点 - **参数规模**:Qwen-2.5-7B 的参数量为 70亿(7B),相较于更大规模的模型更加轻量化,适合资源有限的环境下的高效部署。 - **应用场景**:适用于文本生成、问答系统、代码编写等多种任务,尤其在指令跟随(Instruction Following)方面的表现尤为突出。 - **支持框架**:可以与多种推理框架集成,例如 vLLM 和 Ollama,从而实现高效的离线推理和性能优化][^[^23]。 --- ### 使用方法 以下是关于如何使用 Qwen-2.5-7B 模型的具体指导: #### 部署准备 为了成功运行 Qwen-2.5-7B 模型,需确保以下条件满足: 1. **硬件需求**:建议至少配备 NVIDIA A10 或更高规格的 GPU 设备以加速计算过程;如果仅依赖 CPU,则可能显著降低效率。 2. **软件配置**:安装 Python 环境并设置好必要的库文件,比如 `transformers` 和 `torch` 等深度学习工具包。 #### 实现步骤概述 虽然不采用具体步骤描述的方式,但仍可通过如下方式概括操作流程: 利用指定路径加载预训练权重至内存中,并定义输入格式以便于后续交互处理逻辑构建完成后的实例化对象即可投入使用。 下面提供一段简单的Python脚本作为示范用途展示如何初始化及调用此型号的功能特性: ```python from transformers import AutoTokenizer, AutoModelForCausalLM # 加载分词器和模型 tokenizer = AutoTokenizer.from_pretrained("/path/to/qwen2.5-7b-instruct") model = AutoModelForCausalLM.from_pretrained("/path/to/qwen2.5-7b-instruct") def generate_text(prompt): inputs = tokenizer.encode(prompt, return_tensors="pt").cuda() outputs = model.generate(inputs, max_length=100) result = tokenizer.decode(outputs[0], skip_special_tokens=True) return result if __name__ == "__main__": prompt = "Write a short story about an adventurous cat." response = generate_text(prompt) print(response) ``` 上述代码片段展示了怎样通过 Hugging Face Transformers 库来加载本地存储版次序排列好的 Qwen-2.5-7B Instruct 类型实体结构形式之后再执行相应功能请求命令序列的过程。 对于希望进一步提升服务端口可扩展性和并发处理能力的情况而言,还可以考虑引入像 vLLM 这样的高性能推理引擎来进行更深层次的技术改造工作[^2]。 另外值得注意的是当涉及到跨平台移植或者移动端适配等问题时也可以借助其他第三方解决方案如 Ollama 来简化整体架构设计思路同时保持原有业务逻辑不变的前提下达到更好的用户体验效果[^3]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值