Ai-Agent
理论知识
agent的定义:
大模型时代的 AI Agent = LLM × (规划+记忆+工具)
Al Agent是一种能够感知环境、进行决策和执行动作的智能实体。
运行过程:接受用户输入 → 推理 + 记忆检索 → 工具调用 → 更新状态 → 再次行动
- 接受外部输入:(例如用户查询)
- 结合短期和长期记忆进行推理:(例如利用 CoT、ReAct 等推理框架)
- 调用外部工具或数据库:(如检索增强生成 RAG、搜索引擎、API 接口等)
- 更新状态并决定下一步行动:(例如基于策略调整决策)
- 持续执行,直到任务完成或达到终止条件。
![[file-20250609163836448.png]]
基本组件
- 推理/规划方法:包括 Prompting、CoT(思维链)、ReAct、ToT(思维树)、Reflection 等
- 记忆机制:短期记忆(Working Memory)、长期记忆(Episodic/Semantic Memory)等
- 工具使用:RAG、搜索引擎、API(如天气、票价)、计算模块等
推理/规划
推理:从已知知识出发,进行思考分析和推到,得到新的结论或判断
规划:在特定目标或任务的引导下,设计和选择执行步骤的过程(划分出一些子目标)
提升推理、规划的方法:提示工程、改进模型or系统结构、改进学习范式
提示词工程:
通过精心设计的 prompt,我们可以引导语言模型进行分步骤思考、自我验证甚至反思决策
CoT:
- 逐步采样中间推理步骤
![[file-20250609164802513.png]] - 计算最终答案
![[file-20250609164812232.png]]
CoT方法在提示词输入时,给出CoT的形式输入<输入,思维链,输出>示例
self-consistency:
- k次思维链采样:
![[file-20250609164901767.png]] - 多数投票选择最终答案
![[file-20250609164916459.png]]
ToT:先分步骤,然后每个步骤多个结果,在每一步的多个结果中进行选择后再进行下一步,输出多个结果。(开销更大,效果好)
![[file-20250609165102709.png]]
至此,上面都没有使用到环境的反馈;下面的方法会考虑到环境反馈。
ReAct:(现在agent系统易出现)
ReAct执行流程:
- 任务理解:首先对任务进行理解,提取关键信息。
- 推理阶段:对任务进行推理以生可能的解决方案或路径。
- 行动阶段:ReAct框架根据推理的结果采取实际的行动。。
- 反馈和调整:一旦采取行动后,系统会根据反馈调整策略。
![[file-20250609165250304.png]]
Reflection:把agent执行流程建模为一个MDP过程
一种通过自我反思之前采取的action,获得一些反思后的experience,作为接下来行动的prompt。
![[file-20250609165558360.png]]
记忆机制
可以建立知识库等。
![[file-20250609165731672.png]]
工具使用
openai:function call
下面就call了Temperature这个函数
![[file-20250609170120491.png]]
Multi-agent
![[file-20250609170408061.png]]
- 优势:
- 职责分离、并行协作、可扩展性强
- 可模拟合作/竞争/辩论关系
- 通信方式:
- 合作、辩论、竞争
- 通信结构:
- 层级/中心化/去中心化/共享信息池
- 推荐框架:
- LangGraph(支持流程控制、图结构建模)
- AutoGen(对话协作易用)
- CrewAI(任务分配与团队协作
- LlamaIndex(专注RAG与文档问答)
总体架构
agent所处环境种类:
- sandbox
- 真实物理环境
- 无环境(无需环境或文本环境)
agent profile来源:
- 预定义(人工生成)
- 模型生成
- 根据真实数据集派生(例如,数据集中存在某一个虚拟人物的详细介绍,直接把这个赋予给agent)
multi-agent的通信:
通信范式:
- 合作
- 辩论
- 竞争
通信结构:
- 层级结构
- 去中心化结构
- 中心化结构
- 共享信息池
![[file-20250609170835134.png]]
框架介绍
![[file-20250609171055819.png]]
langAgent:状态机
AutoGen:开创性的多智能体对话式ai应用框架
![[file-20250609171501144.png]]
![[file-20250609171515308.png]]
![[file-20250609171520859.png]]
CrewAI:编排角色扮演、自主ai智能体框架
![[file-20250609171537987.png]]
![[file-20250609171525806.png]]
![[file-20250609171636066.png]]
LangGraph:基于图结构的智能体开发框架
![[file-20250609171711424.png]]
![[file-20250609171715931.png]]
![[file-20250609171729603.png]]
实验任务
尝试利用开源的框架(推荐LangGraph、可以不造轮子)设计一个多智能体系统,要求:
场景/任务不限(任务求解、场景模拟、效率工具等)
包含Agent推理/规划方法的实现(ToT、ReAct、Reflection 等)
设计2种以上记忆机制(长期记忆、短期记忆)
使用2种以上的工具(rag检索、搜索引擎、计算工具等)也可自己定义工具。
说明1:尽量在已有的框架下去设计这些要素,这样可以避免无用的劳动。
说明2:模型api的使用推荐:
https://dashscope.console.aliyun.com/billing
多智能体系统中智能体数目>=4
- 每个智能体的功能有良好定位
- 每个智能体应该有适宜的提示词适配自己的任务
- 智能体间分工和运行流程合理
- 在系统中应至少实现一种智能体的推理/规划方法
- 在系统中设计智能体的长期记忆和短期记忆
- 在系统中至少使用两种类型以上的工具调用
- 请至少包含以上工作,成绩按照工作量和任务场景下的实现效果进行评判
提交要求
ddl 2025 7月6日
实现
实现目标
旅游规划助手:从用户的模糊需求出发,生成详细可行的旅游行程,结合搜索、天气、预算等多方面信息,体现智能体之间的协同和推理能力
系统架构:
Agent名称 | 功能简介 | 使用的推理方法 |
---|---|---|
UserIntentAgent | 理解用户需求(出发地、偏好、预算等) | ReAct |
DestinationAgent | 通过 RAG 检索 + 搜索引擎获取推荐目的地及热门景点 | ReAct |
ItineraryAgent | 使用 Tree-of-Thought 规划行程(日程安排、景点组合) | ToT |
InfoToolAgent | 获取实时天气、票价、交通等外部信息 | ReAct |
BudgetPlannerAgent | 分析成本并优化路线以满足预算(住宿、交通、门票等) | Reflection |
SummaryAgent | 汇总为旅行计划PDF或markdown文档,供用户保存 | 无(简单组合 |
工具使用:
- RAG
- 用于景点介绍、用户意图对话历史向量检索。
- 搜索引擎工具
- 实时获取票价、天气、景点开放时间。
- 计算工具(LangChain Math工具链)
- 计算预算、路线距离、时间总和等。
- 自定义工具(天气查询API、自建票价API)
记忆机制:
- 短期记忆
- 存储本轮对话内容、当前用户需求、暂存行程
- 用 LangChain 的
ConversationBufferMemory
管理。
- 长期记忆
- 存储用户历史偏好(城市、预算、交通方式等)
- 景点介绍、城市数据使用向量数据库(FAISS + RAG)
- 每个Agent访问记忆时有不同的过滤机制
构建基本聊天机器人
安装
1 |
|
尝试使用提供的与openai兼容的来调用并与大模型进行对话。