当前位置: 首页 > article >正文

Agent智能体架构 第二章 单智能体架构

单智能体架构 (Single Agent) 这是最简单的形式指代的是一个智能体独立完成所有任务。代表AutoGPT、BabyAGI 的早期版本。优点上下文一致性强没有协作开销。缺点能力受限于单一模型的上下文窗口难以处理超长链条的复杂任务1. 单智能体架构的内部结构比“一个智能体”更复杂虽然叫“单智能体”但其内部依然是模块化设计否则连简单任务都无法闭环。典型结构如下┌─────────────────────────────────────────┐ │ 单智能体 (Single Agent) │ ├─────────────────────────────────────────┤ │ 感知模块 → 规划模块 → 记忆模块 → 执行模块 │ │ ↑ ↓ ↑ ↓ │ │ └──────────┴──────────┴──────────┘ │ │ 循环迭代直到任务完成 │ └─────────────────────────────────────────┘ ┌─────────────────────────────────────────────┐ │ 智能体执行流程 │ ├─────────────────────────────────────────────┤ │ │ │ ┌─────────────┐ │ │ │ 用户指令 │ │ │ └──────┬──────┘ │ │ ↓ │ │ ┌─────────────┐ │ │ │ Agent解析任务│ │ │ └──────┬──────┘ │ │ ↓ │ │ ┌─────────────────┐ │ │ │ 是否需要工具/ │ │ │ │ 多步推理 │ │ │ └────────┬────────┘ │ │ │ │ │ ┌────────┴────────┐ │ │ ↓ ↓ │ │ 是 否 │ │ ↓ ↓ │ │ ┌─────────────┐ ┌─────────────┐ │ │ │ 调用工具/ │ │ 直接调用 │ │ │ │ 拆分子任务 │ │ Ollama模型 │ │ │ └──────┬──────┘ │ 回复 │ │ │ │ └──────┬──────┘ │ │ ↓ ↓ │ │ ┌─────────────┐ ┌─────────────┐ │ │ │ 整合工具结果/│ │ 返回最终答案 │ │ │ │ 子任务结果 │ └─────────────┘ │ │ └──────┬──────┘ │ │ ↓ │ │ ┌─────────────┐ │ │ │ 返回最终答案 │ │ │ └─────────────┘ │ │ │ │ ┌─────────────────────────────────┐ │ │ │ 循环如需多步则重复以上流程 │ │ │ └─────────────────────────────────┘ │ └─────────────────────────────────────────────┘用户指令 → Agent解析任务 → 是否需要工具/多步推理 ├─ 是 → 调用工具/拆分子任务 → 整合结果 → 返回答案 └─ 否 → 直接调用Ollama模型回复 → 返回答案关键模块规划模块负责将用户目标拆解为步骤如ReAct、CoT、Plan-and-Solve。记忆模块短期记忆当前会话的上下文受模型窗口限制。长期记忆外部向量数据库如Chroma、Pinecone存储历史经验或领域知识。执行模块调用工具API、代码、浏览器并解析返回结果。核心难点单智能体必须自己完成规划→执行→反思→再规划的闭环一旦在某个环节陷入死循环如重复调用同一错误工具整个任务就会失败。2. “缺点”背后的技术根源① 上下文窗口限制表象当任务步骤超过模型窗口如128K tokens时智能体会“忘记”早期信息。深层问题即使窗口足够大如Google Gemini的2M tokens注意力衰减依然存在——模型对中间步骤的关联能力会下降导致规划逻辑断裂。当前解法滑动窗口只保留最近的k步对话关键摘要。任务分解强制智能体在每次行动后生成“阶段性摘要”压缩历史。② 难以处理超长链条任务典型失败模式智能体在20步以上的任务中开始出现“重复行动”“目标漂移”“提前终止”。根本原因缺乏层级化规划能力。单智能体往往使用扁平规划步骤1→2→3…一旦某步失败缺乏动态重构计划的鲁棒性。改进方案Plan-and-Solve先生成完整计划图含依赖关系再按拓扑顺序执行。反思机制每N步插入一次“回顾”让模型自我评估进度并修正计划类似AutoGPT的“critique”环节。3. 单智能体架构的适用场景并非总是劣势在以下场景中单智能体反而是最优解场景类型原因任务明确、步骤有限10步避免多智能体的通信开销和一致性问题强依赖用户交互如Copilot类应用用户本身充当“监督者”弥补单智能体的弱点工具调用链短单次任务只需调用1-3个API不需要复杂协调对成本敏感多智能体意味着多倍token消耗和多次模型调用典型案例Cursor的代码生成智能体、Perplexity的搜索智能体本质上都是单智能体架构因为它们每次只处理一个明确的子任务且用户随时可介入纠偏。4. 单智能体 vs 多智能体的选择标准在实际架构选型中可以按以下决策树判断任务复杂度高吗 ├─ 否 → 单智能体足够 └─ 是 ├─ 任务可以明确分解为独立子任务吗 │ ├─ 否 → 单智能体强反思机制如AutoGPT │ └─ 是 │ └─ 子任务之间需要协调或并行吗 │ ├─ 否 → 单智能体顺序执行 │ └─ 是 → 多智能体架构5. 技术演进单智能体架构的“增强”路径当前单智能体架构并非停滞不前而是通过以下方式向“准多智能体”能力靠拢① 工作记忆增强不再依赖模型原生窗口而是外挂结构化工作记忆如JSON对象智能体每次行动前先读取当前状态行动后更新状态。代表框架LangGraph的StateGraph​允许智能体在循环中维护复杂状态机。② 虚拟多角色单智能体内通过角色提示模拟多智能体协作如“现在你作为产品经理思考…现在你作为工程师实现…”。优点避免多智能体间的通信延迟缺点容易产生角色混淆。③ 自省与重试策略引入异常处理层当工具调用失败时不直接报错而是让模型分析错误原因并尝试替代方案如换个API参数、改用另一种工具。总结如果要在生产环境中使用单智能体关键在于严格控制任务粒度——不要让它处理超过15步的复杂任务。外挂记忆与状态管理——用结构化存储补偿上下文窗口限制。设计强健的循环终止条件——避免无限循环或token浪费。简单大模型调用实现#pip install openai from openai import OpenAI import os api_key 这里输入api-key client OpenAI( api_keyapi_key, base_urlhttps://dashscope.aliyuncs.com/compatible-mode/v1, #选用的是千问模型地址 ) completion client.chat.completions.create( modelqwen-max-latest, #模型型号 messages[ {role: system, content: 你是一个专业的厨师助手。}, #设置角色 {role: user, content: 你好请问如何做红烧牛肉} #提出问题 ] ) print(AI 回复completion.choices[0].message.content) #显示内容 #按照需求换成其他大模型 记得更换url 更换api-key【保密】 更换模型名词#这里直接使用http调用deepseek大模型 import requests import json def call_deepseek_api(api_key):# DeepSeek API调用示例 url https://api.deepseek.com/v1/chat/completions headers {Authorization: fBearer {api_key}, Content-Type: application/json } payload { model: deepseek-chat, messages: [{role: user, content: 你好}] } response requests.post(url, headersheaders, jsonpayload) # 发送请求 result response.json()# 获取JSON响应 print(完整响应:) print(json.dumps(result, indent2, ensure_asciiFalse)) print(分析返回数据) print(fresult 类型: {type(result)} 键: {result.keys()}) choices result[choices] print(fchoices 类型: {type(choices)} 长度: {len(choices)}) first_choice choices[0] print(ffirst_choice 键: {first_choice.keys()}) message first_choice[message] print(fmessage 键: {message.keys()}) content message[content] print(fcontent 对话: {content}) print() assistant_response result[choices][0][message][content] print(f\n最终提取的内容: {assistant_response}) print() return assistant_response if __name__ __main__: mock_responsecall_deepseek_api(sk-这里输入你的deepseek-apikey)简单大模型嵌入向量要实现RAG检索增强生成的第一步 将文本转变成嵌入向量#在这个.py文件下新建.env文件 #写入API_KEYsk-...你的千问api密钥... from dotenv import load_dotenv from openai import OpenAI import os load_dotenv() #加载.env文件 内容 # 1. 配置客户端 client OpenAI( api_keyos.getenv(API_KEY), # 从环境变量读取API Key base_urlhttps://dashscope.aliyuncs.com/compatible-mode/v1, # 千问API基础URL ) # 2. 调用嵌入API response client.embeddings.create( input[大模型], # 输入文本可以是列表 modeltext-embedding-v3 # 嵌入模型 ) # 3. 获取结果 embedding response.data[0].embedding # 提取向量 print(f向量维度: {len(embedding)}) print(f向量前10个值: {embedding[:10]})#在这个.py文件下新建.env文件 #写入API_KEYsk-...你的千问api密钥... from dotenv import load_dotenv from openai import OpenAI import os load_dotenv() #加载.env文件 内容 client OpenAI( api_keyos.getenv(API_KEY), # 使用.env文件下的阿里云千问API密钥 base_urlhttps://dashscope.aliyuncs.com/compatible-mode/v1, # 千问API基础URL ) def get_embeddings(texts, modeltext-embedding-v3):# text-embedding-v3是嵌入模型名称 texts: 是一个包含要获取嵌入表示的文本的列表 model: 用来指定要使用的模型的名称 生成文本的嵌入表示结果存储在data中。 data client.embeddings.create(inputtexts, modelmodel).data # 调用千问的嵌入API return [x.embedding for x in data] # 返回了一个包含所有嵌入表示的列表 test_query [大模型]# 测试查询 vec get_embeddings(test_query)# 获取嵌入向量 print(向量列表:, vec) print(第一个文本的嵌入向量:, vec[0]) print(嵌入向量的维度:, len(vec[0]))

相关文章:

Agent智能体架构 第二章 单智能体架构

单智能体架构 (Single Agent) 这是最简单的形式,指代的是一个智能体独立完成所有任务。代表:AutoGPT、BabyAGI 的早期版本。优点:上下文一致性强,没有协作开销。缺点:能力受限于单一模型的上下文窗口,难以处…...

Lychee-rerank-mm在VSCode插件开发中的应用:智能代码搜索

Lychee-rerank-mm在VSCode插件开发中的应用:智能代码搜索 让代码搜索像对话一样自然 作为一名开发者,你一定遇到过这样的情况:明明记得项目中有个处理用户登录的模块,但就是想不起来具体文件名;或者想找一个特定的函数…...

别再傻傻分不清了!一文搞懂金融‘量化交易’和AI‘模型量化’到底啥区别

金融量化交易与AI模型量化的本质差异解析 1. 当"量化"遇上不同领域:概念迷雾的源头 第一次接触"量化"这个术语时,很多人都会被它的多义性所困扰。在金融圈里,人们谈论着"量化交易策略";而在AI工程师…...

实验室见面考核 复现

文件查看器 这题需要同时配合远程靶机和题目食用 打开题目先试试用常见的flag文件地址./var/www/html/flag尝试一下 不能使用英文句号,先连接靶机试试 在kali中使用 sudo service ssh status 查看ssh状态 使用 sudo apt install openssh-server 下载ssh或者…...

保姆级教程:用NARUTO-AI漫画引擎,一键生成专属火影忍者头像

保姆级教程:用NARUTO-AI漫画引擎,一键生成专属火影忍者头像 1. 快速了解NARUTO-AI漫画引擎 NARUTO-AI漫画引擎是一款专为火影忍者风格优化的AI绘画工具,基于Tongyi-MAI Z-Image Turbo模型打造。它最大的特点就是能让普通用户轻松生成专业级…...

Whisper 音频转录

你好呀!今天我们来聊聊如何用 OpenAI 的 Whisper 工具把音频文件变成文字。这东西可厉害了,不管是 podcast、讲座还是自己录的语音,都能轻松转成文本,超方便的! 准备工作 📋 在开始之前,你需要准备好: Python 3.7 或更高版本(现在大部分电脑都有了) 一点磁盘空间(…...

用一套键鼠控制多台电脑:Barrier跨平台共享方案

用一套键鼠控制多台电脑:Barrier跨平台共享方案 【免费下载链接】barrier Open-source KVM software 项目地址: https://gitcode.com/gh_mirrors/ba/barrier Barrier是一款开源的KVM软件,能够让你使用一套键盘鼠标同时控制多台运行不同操作系统的…...

校园网福音:用UU加速器+PC热点搞定Switch联机(附详细广播原理分析)

校园网环境下Switch联机加速的终极方案:PC热点与广播机制深度解析 每次在宿舍想和室友来一局《Splatoon 3》时,最怕看到的就是那个令人绝望的"NAT类型:D"。校园网环境下没有路由器,Switch联机成了老大难问题。但你可能没…...

UEC++Part6--碰撞预设、委托、auto补充

一、碰撞预设1、碰撞设置主要4种类型NoCollision(无碰撞)、query、Physics、Probe。语法如图,其余类似。ALBox->SetCollisionEnabled(ECollisionEnabled::QueryAndPhysics);ALBox->SetCollisionEnabled(ECollisionEnabled::QueryOnly);2、自身碰撞类型ALBox-&…...

EcomGPT-7B电商模型数据库课程设计参考:构建智能电商知识图谱系统

EcomGPT-7B电商模型数据库课程设计参考:构建智能电商知识图谱系统 最近几年,知识图谱在电商领域的应用越来越火,从智能搜索到个性化推荐,背后都有它的影子。但对于很多计算机专业的学生来说,数据库课程设计往往还停留…...

【数据结构实战】C 语言实现静态顺序栈:从原理到完整可运行代码

栈(stack)是限定仅在表尾进行插入或删除操作的线性表。因此对栈来说,表尾端有其特殊含义,称为栈顶(top),相应地,表头端称为栈底(bottom)。不含元素的空表称为空栈。假设 S(a1,a2,…,an),则称 a1为栈底元素,…...

LeetCode:148. 排序链表

简介 题目链接:https://leetcode.cn/problems/sort-list/description/ 解决方式:链表 分治法(递归 双指针) 这是作者学习众多大神的思路进行解题的步骤,很推荐大家解题的时候去看看题解里面大佬们的思路、想法&#…...

告别ROS多机通信的繁琐配置:用swarm_ros_bridge和ZeroMQ实现WiFi集群的即插即用

告别ROS多机通信的繁琐配置:用swarm_ros_bridge和ZeroMQ实现WiFi集群的即插即用 在机器人集群开发中,多机通信一直是令人头疼的问题。想象一下这样的场景:实验室里几台TurtleBot需要协同完成地图构建,比赛现场无人机编队需要实时共…...

Windows和Ubuntu双系统下GitHub访问慢?3分钟搞定Hosts配置(附最新IP查询方法)

双系统开发者必备:GitHub访问优化全攻略(Windows/Ubuntu通用方案) 每次在Windows和Ubuntu之间切换开发环境时,最让人抓狂的莫过于GitHub的龟速访问。作为一名长期使用双系统的全栈工程师,我深刻理解这种痛苦——明明代…...

Android事件分发:长按事件与双击事件的实现原理

本文同步发表于我的微信公众号,微信搜索 程语新视界 即可关注,每个工作日都有文章更新 一、长按事件的源码实现 长按事件的触发需要满足: 手指按下后持续一段时间(默认500ms) 期间没有移动超过阈值 期间没有抬起 …...

Qwen-Image-2512与LaTeX集成:学术论文图像生成

Qwen-Image-2512与LaTeX集成:学术论文图像生成 学术研究者每天需要为论文制作大量图表和示意图,传统绘图工具耗时耗力且专业门槛高 撰写学术论文时,图像质量往往直接影响研究成果的呈现效果。传统绘图工具如Photoshop或专业绘图软件需要大量学…...

嵌入式自定义通信协议设计与实现指南

1. 自定义协议设计原理与工程实践在嵌入式系统开发中,通信协议是连接不同功能模块的神经中枢。当标准协议(如Modbus、CANopen、HTTP)无法满足特定应用场景的轻量化、低开销或业务逻辑耦合需求时,自定义协议便成为工程师手中最灵活…...

计算机毕业设计springboot社区服务系统 基于SpringBoot的数字化社区综合服务管理平台 基于SpringBoot的社区便民信息服务系统

计算机毕业设计springboot社区服务系统gv80n9 (配套有源码 程序 mysql数据库 论文) 本套源码可以在文本联xi,先看具体系统功能演示视频领取,可分享源码参考。随着城市化进程加快和信息技术的发展,传统社区管理模式已难以满足居民多…...

避坑指南:Unity URP遮挡显示常见的5个问题及解决方案(含模板测试详解)

Unity URP遮挡显示实战:5大高频问题解析与深度优化方案 在Unity URP管线中实现遮挡显示效果,是许多3D项目提升视觉反馈的关键技术。无论是角色被墙壁遮挡时的轮廓高亮,还是特殊道具的透视效果,这一功能都能显著改善玩家体验。然而…...

VoxCPM-1.5-TTS模型Web界面部署:从安装到生成语音全记录

VoxCPM-1.5-TTS模型Web界面部署:从安装到生成语音全记录 1. 为什么选择VoxCPM-1.5-TTS 在当今AI语音合成领域,VoxCPM-1.5-TTS以其出色的音质和易用性脱颖而出。这个模型特别适合那些希望快速部署高质量语音合成系统,但又不想陷入复杂技术细…...

RMBG-2.0极速抠图:5分钟搞定透明背景PNG,小白也能轻松上手

RMBG-2.0极速抠图:5分钟搞定透明背景PNG,小白也能轻松上手 1. 为什么选择RMBG-2.0进行抠图? 在日常工作和设计中,我们经常需要处理图片背景去除的需求。无论是电商产品图、社交媒体配图还是设计素材,一个干净利落的透…...

打卡信奥刷题(2993)用C++实现信奥题 P6121 [USACO16OPEN] Closing the Farm G

P6121 [USACO16OPEN] Closing the Farm G 题目背景 本题和 银组同名题目 在题意上一致,唯一的不同是数据范围。 题目描述 FJ 和他的奶牛们正在计划离开小镇做一次长的旅行,同时 FJ 想临时地关掉他的农场以节省一些金钱。 这个农场一共有被用 MMM 条…...

RT-Thread在SF32LB52超低功耗MCU上的最小可运行工程

1. 项目概述“Hello HSPI”是一个面向黄山派(SiFli)SF32LB52系列超低功耗MCU的最小可运行验证工程,其核心目标并非实现复杂外设交互,而是建立一条端到端、可复现、可调试的嵌入式软件开发链路:从RT-Thread实时操作系统…...

Wan2.1 VAE赋能AIGC内容生产:自动化营销素材生成平台构建

Wan2.1 VAE赋能AIGC内容生产:自动化营销素材生成平台构建 1. 引言 想象一下,一个电商运营团队,每天需要为几十款新品制作社交媒体海报。设计师忙得焦头烂额,运营人员反复沟通修改,从创意到上线,一张图可能…...

Python实战:用奇异谱分析(SSA)给股票数据降噪,5步搞定时间序列预处理

Python实战:用奇异谱分析(SSA)给股票数据降噪,5步搞定时间序列预处理 金融数据分析师们每天面对海量股票数据时,最头疼的莫过于如何从市场噪音中识别出真实信号。去年我在分析某科技股季度波动时,发现传统移动平均方法会抹平重要转…...

Youtu-2B快速上手教程:WebUI交互界面部署详解

Youtu-2B快速上手教程:WebUI交互界面部署详解 想体验一个既轻快又聪明的AI对话助手吗?今天要介绍的Youtu-2B,就是一个能在普通电脑上流畅运行,还能帮你写代码、解数学题、创作文案的全能小帮手。它基于腾讯优图实验室开源的轻量化…...

丢失MSCOMCTL.OCX组件无法打开程序 教你免费修复方法

在使用电脑系统时经常会出现丢失找不到某些文件的情况,由于很多常用软件都是采用 Microsoft Visual Studio 编写的,所以这类软件的运行需要依赖微软Visual C运行库,比如像 QQ、迅雷、Adobe 软件等等,如果没有安装VC运行库或者安装…...

双模型策略:OpenClaw同时接入Qwen3-32B与Llama3的配置实战

双模型策略:OpenClaw同时接入Qwen3-32B与Llama3的配置实战 1. 为什么需要双模型策略? 去年我在尝试用OpenClaw自动化处理日常工作时,发现一个有趣的现象:简单的文件整理任务用轻量模型就能快速完成,但遇到需要复杂逻…...

e-Paper触控驱动库PDLS_EXT3_Basic_Touch解析与迁移指南

1. 项目概述PDLS_EXT3_Basic_Touch 是 Pervasive Displays 公司为其单色电子墨水屏(e-Paper Display, EPD)配套开发的嵌入式驱动库,专为搭载 EXT3.1 主控扩展板与 EXT3-Touch 触控扩展板的硬件平台设计。该库已正式进入废弃(Depre…...

用Matlab实现NGO - TCN - BiGRU - Attention多变量时间序列预测

Matlab完整源码和数据 1.基于NGO-TCN-BiGRU-Attention北方苍蝇算法优化时间卷积双向门控循环单元融合注意力机制多变量时间序列预测,要求Matlab2023版以上; 2.输入多个特征,输出单个变量,考虑历史特征的影响,多变量时间…...