【AI大模型应用开发】【项目实战】29.Agent智扫引擎项目-(三)项目/代码架构,数据集介绍,ReAct模块实现,模型选择及实现(Agent模块实现,LLM模型选择及实现)
一.项目架构整体架构如下:二.代码架构代码架构如下所示:在项目开始之前,需要在服务端(或者本机)使用ollama部署模型如下:ollama run qwen3:8b ollama run qwen3:1.7b ollama run gemma3:1b ollama run deepseek-r1:1.5b ollama run bge-m3:latest三.数据集介绍具体保存位置如下:/data架构如下:本项目数据来源于扫地机器人的产品手册及相关知识库,方便为用户解答使用问题。具体问题包括:基础与技术类、产品功能类、智能交互类、维护与保养类、选购指南类、技术发展类、使用技巧类、配件与耗材类、安全与隐私类、特殊场景类等问题,基本内容如下:四.模型选择以及实现1.Agent模块实现该项目(InsightScan)是基于Streamlit框架和LangChain技术栈,主要由Agent模块、LLM模块、工具模块、提示词模块组成,是一个融合了ReAct框架、RAG技术、多模态能力、提示词工程、工具调用、报告生成模块构建的智能客服Agent系统1.1 Agent简介项目中Agent是基于ReAct框架实现的,它主要包括推理(Reasoning)模块以及行动(Acting)模块(1).推理模块动态思考链(COT-Chain-of-Thought):Agent每一步生成自然语言推理逻辑,解释当前决策的原因错误回溯机制:当行动失败时,Agent能分析原因并调整策略(如:“用户输入与目前所有的工具不匹配,但是提示词工程中要求必须使用工具,因此可能需要使用Rag工具,但用户输入与Rag工具不匹配,重新思考一下确认应该使用的工具”)(2).行动模块工具集成(Tool Calling):调用外部API、第三方数据库以及计算器等方式环境状态感知:实时接收行动结果,作为下一步决策的输入(如:“获取到北京气温25度,建议用户带薄外套”)1.2具体实现具体代码位置如下:/Agent(1).Action实现具体代码位置如下:/Agent/Action.py,整体代码如下:# BaseModel: Pydantic 的核心基类,继承它可以自动获得数据验证、类型转换和序列化/反序列化功能 # Field: 用于为模型字段提供额外的元数据(如描述、默认值、校验规则等 from pydantic import BaseModel, Field # typing 模块: 导入了 List(列表)、Optional(可选类型)、Dict(字典)、Any(任意类型), # 用于严谨的类型提示。(注:代码中导入了 List,但在当前模型中并未实际使用) from typing import List, Optional, Dict, Any class Action(BaseModel): """ 用于 AI Agent(智能体)或工具调用(Tool Calling)的场景中,用来结构化地表示“要执行的动作”及其“参数” """ """ tool_name: 类型:str(字符串,必填) 作用:指定要调用的工具名称 Field(description=...):为字段添加了描述信息,这在结合大语言模型(LLM)时非常有用,LLM 可以通过读取这个 description 来准确理解该字段的含义并正确生成内容 """ tool_name: str = Field(description="The name of a tool") """ args: 类型:Optional[Dict[str, Any]](可选的字典,键为字符串,值为任意类型) 作用:存储传递给该工具的参数,因为是 Optional,所以如果不传参数,它的值可以是 None """ args: Optional[Dict[str, Any]] = Field(description="Input args of a tool, containing names and values") def __str__(self): """ 重写了 Python 内置的 __str__ 魔法方法,决定了对 Action 实例使用 print() 或 str() 时的输出格式 :return: """ # 初始化字符串 rst,以 Action(tool_name=xxx 开头 rst = f"Action(tool_name={self.tool_name}" # 检查 self.args 是否存在且非空。如果存在,遍历字典的键值对,以 , key=value 的格式拼接到字符串后面 if self.args: for k, v in self.args.items(): rst += f", {k}={v}" # 最后补上右括号 ) 并返回 rst += ")" """ 效果示例: 无参数时:Action(tool_name=search_web) 有参数时:Action(tool_name=search_web, query=pydantic, max_results=5) """ return rst总结:这段代码是一个非常典型的LLMFunction Calling /Tool Use 协议的数据结构当大模型决定调用外部工具时,它会输出符合这个Action结构的 JSON,然后后端代码可以通过Action.model_validate(json_data)将其安全地转换为 Python 对象,再根据tool_name和args去执行真实的函数调用,自定义的__str__方法则方便在日志或控制台直观地查看模型决定调用了什么工具(2).ReAct实现具体代码位置如下:/Agent/ReAct.py1).模块功能解析(1).基础方法JSON提取:从RST(reStructuredText结构,其实就是大模型输出的结构)文本中提取JSON代码块观察格式化:清理响应并追加动作和观察结果(2).初始化流程存储LLM、工具列表和提示文件路径初始化提示模板(读取文件+工具信息格式化)构建处理链(提示→LLM→输出解析)(3).工具管理根据名称查找匹配的工具(4).核心执行流程单步执行:生成动作并解析响应动作执行:验证并调用工具,返回观察结果任务执行:循环执行“推理→动作→观察”直到完成(5).整体架构初始化 → 接收任务 → 逐步推理 → 动作生成 → 工具执行 → 观察反馈 → 循环处理 → 结果输出2).代码架构/Agent/ReAct.py整体代码如下:import os import re from typing import List, Optional, Tuple import pandas as pd # 导入 LangChain 的内存聊天历史,用于短期记忆 from langchain_community.chat_message_histories.in_memory import ChatMessageHistory from langchain_core.language_models.chat_models import BaseChatModel # 导入输出解析器:Pydantic解析器、容错修复解析器、字符串解析器 from langchain.output_parsers import PydanticOutputParser, OutputFixingParser,JsonOutputToolsParser from langchain.schema.output_parser import StrOutputParser # BaseTool: RAG报告生成 from langchain.tools.base import BaseTool # 导入提示词模板和MessagesPlaceholder: 位置保持器 from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder # 用于将工具列表渲染为文本描述 from langchain_core.tools import render_text_description from pydantic import ValidationError from langchain_core.prompts import HumanMessagePromptTemplate # 导入定义的 Action 数据结构 from Agent.Action import Action class ReActAgent: """ 推理, 行动, 观察 """ # 1.两个静态基础方法 # JSON提取:从RST文本中提取JSON代码块 # 观察格式化:清理响应并追加动作和观察结果 @staticmethod def extract_json_from_action_rst(text: str) - str | None: """ JSON提取:从RST文本中提取JSON代码块 从RST(reStructuredText结构,其实就是大模型输出的结构)格式文本中提取JSON代码块内容, 大模型有时会在 JSON 前后加上废话或 markdown 标记,此方法用于精准提取 该函数使用正则表达式匹配文本中的json代码块,并返回最后一个匹配到的JSON字符串 :param text: str, 包含RST格式的输入文本,可能包含代码块 :return: str | None: 如果找到JSON代码块则返回其中的内容(不包括json和标记), 如果没有找到则返回None """ # 使用正则表达式匹配json代码块 # 使

相关新闻

构建数据语义层:从OSI模型到AI Agent,破解数据孤岛与语义鸿沟

构建数据语义层:从OSI模型到AI Agent,破解数据孤岛与语义鸿沟

1. 从“数据孤岛”到“语义鸿沟”:一个老问题的现代困境 干了这么多年数据,我越来越觉得,我们这行最头疼的从来不是技术本身,而是“沟通”。你肯定也遇到过这种场景:业务部门指着报表问“这个数是什么意思?…

2026/8/5 11:58:21 阅读更多 →
个体战略操作系统:从能力余量到生态位统治

个体战略操作系统:从能力余量到生态位统治

1. 项目背景与核心概念解析"新一人公司的战略操作系统"这个概念源于当前数字经济时代个体价值崛起的趋势。随着远程办公、自由职业和微型创业的普及,越来越多的专业人士开始以独立个体或极小团队的形式提供高价值服务。这种新型组织形式打破了传统企业架构…

2026/8/5 11:57:21 阅读更多 →
NoFences:3分钟拯救你的Windows桌面混乱,免费开源的终极分区神器

NoFences:3分钟拯救你的Windows桌面混乱,免费开源的终极分区神器

NoFences:3分钟拯救你的Windows桌面混乱,免费开源的终极分区神器 【免费下载链接】NoFences 🚧 Open Source Stardock Fences alternative 项目地址: https://gitcode.com/gh_mirrors/no/NoFences 你是否每天面对Windows桌面上杂乱无章…

2026/8/5 11:57:21 阅读更多 →

最新新闻

SpringBoot集成UAI-Censor实现自动化内容审核:从爬虫到AI服务的完整实践

SpringBoot集成UAI-Censor实现自动化内容审核:从爬虫到AI服务的完整实践

1. 项目缘起:一个“不务正业”的自动化需求 那天晚上,我正百无聊赖地刷着某个以程序员社区闻名的网站,突然看到一个帖子,标题大意是“如何批量下载某Hub站上的学习资料”。帖子下面讨论得热火朝天,但核心痛点很明确&am…

2026/8/5 12:51:43 阅读更多 →
VMware国产化迁移:技术挑战与实践指南

VMware国产化迁移:技术挑战与实践指南

1. VMware国产化迁移背景与核心挑战 虚拟化技术作为现代IT基础设施的核心组件,在企业级环境中扮演着关键角色。VMware作为全球领先的虚拟化解决方案提供商,其产品线已深度渗透到各行业的IT架构中。然而随着技术自主可控需求的提升,将现有VMwa…

2026/8/5 12:51:43 阅读更多 →
Unity游戏开发高效技巧:从协程优化到Shader视觉欺诈的实战指南

Unity游戏开发高效技巧:从协程优化到Shader视觉欺诈的实战指南

1. 项目概述:当“邪修”遇上Unity“Unity 游戏开发邪修秘籍:从入门到被策划追杀的艺术”这个标题,精准地戳中了无数游戏开发者的痛点与笑点。它描绘的,绝不是一个按部就班的官方教程路径,而是一条充满“野路子”、效率…

2026/8/5 12:51:43 阅读更多 →
Matlab文件读取:解决data10排在data2前的自然排序难题

Matlab文件读取:解决data10排在data2前的自然排序难题

1. 项目概述:文件名顺序读取的“坑”与“道” 如果你用Matlab处理过批量数据,比如一文件夹的图片、几十个文本文件或者一堆实验数据,那么“按文件名顺序读取文件”这个需求你一定不陌生。乍一看,这太简单了,不就是用 …

2026/8/5 12:51:43 阅读更多 →
危险化学品安全法数据合规解读法律要求到备案数据安全

危险化学品安全法数据合规解读法律要求到备案数据安全

危险化学品安全法数据合规解读:从法律要求到备案数据安全引言:危险化学品数据合规的关键,不在"看懂法条",而在"备案数据的安全闭环" 危险化学品安全法对危化品企业的数据管理提出了明确要求——重大危险源备案…

2026/8/5 12:51:42 阅读更多 →
3步掌握iFakeLocation:免费跨平台iOS虚拟定位完全指南

3步掌握iFakeLocation:免费跨平台iOS虚拟定位完全指南

3步掌握iFakeLocation:免费跨平台iOS虚拟定位完全指南 【免费下载链接】iFakeLocation Simulate locations on iOS devices on Windows, Mac and Ubuntu. 项目地址: https://gitcode.com/gh_mirrors/if/iFakeLocation 你是否曾想过瞬间"穿越"到世界…

2026/8/5 12:50:42 阅读更多 →

日新闻

Java缓存框架:JetCache

Java缓存框架:JetCache

TOC 一、简介 JetCache 是一个 Java 缓存抽象框架,为不同的缓存解决方案提供了统一的使用方式。 它提供的注解比 Spring Cache 更加强大。 JetCache 的注解支持原生 TTL、两级缓存以及在分布式环境中的自动刷新功能,同时你也可以通过代码直接操作 Cach…

2026/8/5 0:00:43 阅读更多 →
AD 铺铜设置十字连接,过孔全连接,新版AD的简单设置

AD 铺铜设置十字连接,过孔全连接,新版AD的简单设置

需求:通孔焊盘 十字花;过孔 Via 实心直连;贴片焊盘按需设置 AD 测试版本AD24 很多工程师踩坑:全部统一十字,导致接地过孔阻抗高、大电流发热! 一、快捷键打开规则 PCB 界面按下:D R 展开…

2026/8/5 0:00:43 阅读更多 →
AI素描转换技术深度拆解(2024最新论文+工业级落地代码):从Stable Diffusion ControlNet到LoRA微调全链路解析

AI素描转换技术深度拆解(2024最新论文+工业级落地代码):从Stable Diffusion ControlNet到LoRA微调全链路解析

更多请点击: https://kaifayun.com 第一章:AI生成素描效果 AI生成素描效果是计算机视觉与风格迁移技术融合的典型应用,其核心在于将彩色照片或RGB图像转换为具有手绘质感、明暗对比强烈、边缘清晰的单色素描图像。该过程通常依赖于深度学习模…

2026/8/5 0:00:43 阅读更多 →

周新闻

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

1. 从水管网络到最大流:一个核心问题的诞生想象一下,你是一个城市供水系统的总工程师。你的城市有多个水源(水库),需要通过一个复杂的地下管道网络,将水输送到各个居民区。每条管道都有其最大通水能力&…

2026/8/4 13:24:41 阅读更多 →
基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/4 11:41:39 阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/5 10:20:36 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/4 13:38:24 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/4 11:09:16 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/4 13:38:40 阅读更多 →