详细摘要 摘要
生成:2025-05-23 13:10摘要详情
- 音频文件
- CS 194⧸294-196 (LLM Agents) - Lecture 3, Chi Wang and Jerry Liu
- 摘要类型
- 详细摘要
- LLM 提供商
- openai
- LLM 模型
- gemini-2.5-pro-exp-03-25
- 已创建
- 2025-05-23 13:10:39
摘要内容
CS 194/294-196 (LLM Agents) - Lecture 3, Chi Wang and Jerry Liu
概览/核心摘要 (Executive Summary)
本次讲座由两位演讲者 Chi Wang 和 Jerry Liu 主持,深入探讨了大型语言模型(LLM)代理(Agents)的现状与未来。
Chi Wang 首先阐述了未来 AI 应用的趋势将是“代理化”(Agentic),即通过 AI 代理与数字世界交互并执行复杂任务。他强调了生成式 AI 的进步为此奠定了基础,并列举了代理化 AI 的多项优势,如更自然的交互界面、高度自动化以及作为新型软件架构的潜力。Wang 详细介绍了其团队开发的 AutoGen 框架,该框架以“多代理对话编程”为核心,允许开发者通过定义可对话代理并编排其交互来构建复杂应用。他通过供应链优化、科学发现(MIT 的 Science Agents)、网页自动化(Emerge AI 的 Agent E)等案例展示了 AutoGen 的能力和广泛应用前景,并提及了 AutoBuild 等前沿研究,旨在自动构建和优化代理团队。最后,他指出了代理化 AI 面临的挑战,包括优化工作流设计、提升代理能力、可扩展性及安全性。
Jerry Liu 随后聚焦于构建“多模态知识助手”的具体用例,并介绍了 LlamaIndex 在此领域的实践。他首先指出了基础 RAG(检索增强生成)在处理复杂数据和任务时的局限性,如数据处理粗糙、仅将 LLM 用于合成而非推理、缺乏个性化等。为克服这些不足,Liu 提出了构建更优知识助手的四个要素:高质量的多模态检索流程、更泛化的输出(如报告生成)、对输入的代理化推理以及可靠的部署。他重点阐述了 LlamaIndex 如何通过先进的文档解析(如 LlamaParse 处理复杂 PDF)、层级化索引和多模态 RAG 来提升数据处理质量和信息检索的准确性,使其能够理解和利用文档中的文本、表格和图像。Liu 还讨论了“代理化 RAG”的概念,即在 RAG 之上增加代理层,利用 LLM 进行查询分解、工具使用和反思等高级推理,并探讨了约束性与非约束性代理流程的权衡。最后,他提及了将代理工作流作为微服务部署到生产环境的实践和挑战。
Speaker 1: Chi Wang - AI 代理的未来与 AutoGen 框架
未来 AI 应用的趋势:代理化 (Agentic AI)
- 背景: 自 2022 年左右,语言模型和其他生成式模型的强大能力显现,尤其在内容生成(文本、图像)方面远超传统技术。
- 核心观点: 未来的 AI 应用将是“代理化的”(Agentic)。AI 代理将成为人类与数字世界交互、执行日益复杂任务的新方式。
- 这一观点正获得越来越多的证实,例如伯克利有文章指出 AI 成果正从使用简单语言模型转向构建“复合 AI 系统”(Compound AI Systems)。
- 代理化 AI 的新旧应用:
- 旧应用增强: 个人助理、聊天机器人、游戏代理等,借助新技术变得更易构建且能力更强。
- 新型应用: 超越以往想象,如科学发现代理、网页自动化代理、从零开始构建软件的软件代理。
代理化 AI 能力演示:Zinli 网站构建
- Chi Wang 展示了一个由初创公司 Zinli 提供的最新演示:AI 自动构建一个从 Hugging Face 提取并下载模型的网站。
- 过程:
- AI 接收需求后自动开始工作。
- 分析任务、寻找信息、安装必要依赖。
- 采用多代理框架,不同角色的代理协同完成任务。
- AI 自动创建不同文件,代理间的推理和交互(使用 LLM 和工具)自动进行。
- 开发网站,最终编译并成功构建。
- 自愈能力: 演示中,人为删除一行关键代码后,AI 再次运行时能够发现错误(如
missing script),并在几步内自动修正错误,补全被删除的代码行,最终完成任务。 - 启示: AI 代理展现了强大的自动化和自我修复能力,可能彻底改变未来的软件构建方式。
AI 代理的关键优势
- 自然交互: 用户可以通过自然语言与 AI 沟通需求并进行迭代。
- 复杂任务自动化: 代理具备更强能力,能以最少的人工监督完成复杂任务,具有巨大的自动化价值。
- 新型软件架构: 多个代理协同工作,以递归方式完成更复杂的任务。这一点 Chi Wang 认为讨论较少,但他特别强调其重要性。
实例:AutoGen 在云端供应链优化中的应用
- 场景: 咖啡店主希望了解改变运输约束对其运营成本的影响。这类问题无法直接从 ChatGPT 等通用模型获得答案,因其需要理解用户特定数据、约束和优化工具。
- AutoGen 解决方案: 构建了三个代理:
Commander(指挥官)、Writer(编写器)、Safeguard(安全员)。 - 工作流程:
- 用户向
Commander提问。 Commander暂停当前对话,与Writer(使用大语言模型作为后端)发起新对话。Writer理解问题并提出 Python 代码方案。Commander收到代码后,暂停与Writer的对话,与Safeguard(另一个使用语言模型的代理)发起新对话,检查代码安全性。- 若代码安全,
Commander执行代码,得到结果。 Commander将执行结果返回给Writer。Writer基于结果生成最终答案,通过Commander回复用户。
- 用户向
- 鲁棒性: 系统能处理代码不安全(
Safeguard阻止执行)或执行出错(Writer需重写代码)等情况,可能涉及多轮交互。 - 用户体验: 终端用户仍使用自然语言提问和获取答案,无需了解编码或优化细节。
AI 代理的编程范式
- 步骤:
- 创建代理: 如
Writer,Safeguard,Commander,UserProxy(用户代理),每个一行代码。 - 定义交互模式: 注册代理间的消息聊天,明确发送者、接收者、对话摘要方法等。
- 启动对话: 从
UserProxy向Commander发起初始任务请求,后续步骤自动进行。
- 创建代理: 如
- 多代理编程的益处:
- 处理更复杂任务,提升响应质量:
- 通过交互自然改进。
- “分而治之”:将复杂任务分解为小任务。
- 可定义非 LLM 依赖的专用代理(如执行验证、接地的代理),弥补模型固有缺陷。
- 实验数据: 将任务分解为
Writer和Safeguard两个代理,对比单代理。对于 GPT-4,多代理设置在保障方面比单代理召回率高 20%;对于 GPT-3.5,差异更大。这表明任务越复杂、模型能力越弱,多代理工作流的需求越强。
- 易于理解、维护和扩展 (模块化设计):
- 可独立修改某个代理的行为(如
Safeguard从 LLM 改为工具或人工)而不影响其他代理。 - 支持自然的人工参与:人类可接管系统中任一代理角色。
- 可独立修改某个代理的行为(如
- 处理更复杂任务,提升响应质量:
- 潜力: 赋能快速、创造性的实验和构建新颖应用。
设计 AI 代理框架的考量因素
- 统一的代理抽象: 能够统一表示不同实体(不同角色的人、工具、不同提供商的 LLM)。
- 灵活的多代理编排: 满足不同应用需求。
- 静态工作流 vs. 动态工作流。
- 自然语言控制 vs. 编程语言精确控制。
- 上下文共享 vs. 隔离(如层级结构)。
- 合作 vs. 竞争。
- 中心化 vs. 去中心化。
- 自动化 vs. 人工干预。
- 有效实现设计模式:
- 对话 (Conversation): 灵活处理。
- 提示与推理技术: ReAct, Reflection, Chain-of-Thought (CoT) 等。
- 规划 (Planning)。
- 多模态与记忆 (Memory) 集成。
- 核心设计原则 (Chi Wang 个人观点): 对话 (Conversation)。他认为这是学习和问题解决的正确途径,受 ChatGPT 启发,将多代理对话作为核心机制。
主流 AI 代理框架概览
- AutoGen: 基于多代理对话编程,全面且灵活,能集成多种设计模式和其他框架。
- LlamaIndex: Jerry Liu 后续会详细介绍。
- 基于 LangChain 的框架:
- LangGraph: 专注于提供基于图的控制流。
- CrewAI: 专注于提供高级静态代理任务工作流。
AutoGen 框架详解
- 历史与发展:
- 最初在开源项目 FLAML(用于自动化机器学习和超参数调优)内部开发。
- 后独立为一个项目,并于近期成立了独立的 GitHub 组织,采用开放治理结构。
- 2023 年初开始原型设计,8月发表首篇研究论文,10月项目迁移至独立 GitHub 仓库。
- 获得社区广泛认可,包括 ICLR 2024 Agents Workshop 的最佳论文奖。
- 与 DeepLearning.AI 合作推出了关于 AI 代理设计模式与 AutoGen 的在线课程。
- 核心概念: 简化复杂工作流的构建为两步:1. 定义代理;2. 让它们对话。
- 可对话代理 (Conversable Agent): 高度通用,后端可以是 LLM、工具或人工输入,也可混合。代理内部可包含其他代理并进行内部对话,实现递归复杂性。
- 对话编程 (Conversation Programming):
- 双代理对话: 可实现反思(Reflection)等高级推理,如
Writer写博客,Critic提建议,两者迭代改进。 - 嵌套聊天 (Nested Chat):
Critic代理内部可以包含一个顺序聊天的子流程(如先给 SEO 审阅者,再给法律审阅者,最后由元审阅者总结),而Writer看来仍只与一个Critic交互。 - 通过对话使用工具: 以“对话国际象棋”为例。两个 LLM 代理直接下棋易出错。引入第三方基于工具的
Chessboard代理(使用 Python 库管理棋盘和规则),LLM 代理提议走法,Chessboard代理验证合法性,确保游戏顺利进行。 - 群聊 (Group Chat): 用户只需定义不同角色的代理并放入群聊,系统可自动决定下一个发言代理。
Group Chat Manager监控进展并选择发言者。可添加约束或有限状态机(FSM)逻辑来指导发言顺序,兼顾自主性与可控性。
- 双代理对话: 可实现反思(Reflection)等高级推理,如
- 资源: 官网提供大量 Notebook 示例,按标签分类,如 AutoGen 与 LlamaIndex 的集成。
AutoGen 的应用案例与社区影响
- 应用领域: 软件开发、代理平台、研究、数据处理、网页浏览、金融、医疗、教育,甚至区块链。
- 精选案例:
- 科学与工程 (MIT, Prof. Markus Buehler):
- 利用 AutoGen 构建代理团队模拟科研或工程团队行为(计算数据、生成假设、实验验证),应用于蛋白质设计、材料设计等。
- 开发了 "Science Agents",使用本体知识图谱进行特定科学领域的推理和发现。
- 网页代理 (Emerge AI, "Agent E"):
- 构建层级化代理团队执行复杂网页任务(如自动预订机票、填写医疗表格)。
- 利用规划代理、网页浏览代理,深入理解 HTML DOM 内容(目前未用多模态模型)。
- 在 WebArena 基准测试上取得当前最佳性能 (state-of-the-art),成功率 73%,优于之前使用多模态模型的技术。仍有很大提升空间。
- 科学与工程 (MIT, Prof. Markus Buehler):
- 社区反馈: 一家建筑公司提到 AutoGen 帮助他们“快速探索多种不同的代理设计模式、配置并大规模进行实验”。
- 广泛关注: 吸引了各垂直领域的大型企业客户,以及全球大学、组织和公司的用户与贡献者(如伯克利学生创建的
AutoGen Arena)。
AutoGen 的持续进展与未来挑战
- 进行中的工作:
- 评估 (Evaluation): 构建基于代理的评估工具,帮助开发者理解应用效果和代理表现,自动生成成功标准和评分。
- 接口学习 (Interface Learning): 代理的自我教学、基于代理的优化。
- 编程接口 (Programming Interface): 持续简化。
- AutoBuild (研究重点): 解决“应使用何种多代理工作流?”的问题。
- 用户提供高级任务需求 -> 系统自动建议不同角色的代理 -> 放入群聊解决任务。
- 可复用已创建的代理团队。
- AdaptiveBuild: 将复杂任务分解为步骤 -> 为每一步提议特定代理团队(从库中选择或新建)-> 动态选择下一步代理 -> 将新代理添加回库。在 MATH、编程、数据分析等基准测试上取得良好效果。
- 未来挑战 (通用):
- 设计最优代理工作流(综合考虑质量、成本、延迟、人工)。
- 提升代理能力(推理、规划、多模态、学习)。
- 确保可扩展性、人类引导的有效性、安全性等。
Speaker 2: Jerry Liu - 使用 LlamaIndex 和代理化 RAG 构建多模态知识助手
LlamaIndex 简介与知识助手概念
- LlamaIndex: 帮助开发者构建从原型到生产的“上下文增强的 LLM 应用”。
- 开源工具包: 用于构建基于数据的代理及各类 LLM 应用(从 RAG 系统到更高级的多步骤推理)。
- 企业产品: 托管服务,用于数据索引、RAG 等,特别关注文档/数据解析。
- 知识助手核心理念:
- 企业拥有大量数据(PDF、PPT、Excel 等)。
- 目标是构建一个接口,接收任务输入,给出相应输出(如聊天机器人)。
- LLM 理解数据并基于数据执行任务(如生成简答、结构化输出、研究报告,或执行发送邮件、安排会议、编写代码等操作)。
理解基础 RAG (Retrieval Augmented Generation) 及其局限性
- 基础 RAG 流程:
- 加载非结构化数据(使用标准文档解析器)。
- 分块(如每 1000 词元)。
- 嵌入每个数据块(如使用 OpenAI embeddings)。
- 存入向量数据库。
- 检索时,进行语义/向量搜索,返回最相关条目。
- 将检索到的上下文送入 LLM 进行综合生成。
- 局限性:
- 数据处理层原始: 分块方式粗糙,未考虑数据内元素(表格、图片)和语义结构。
- LLM 仅用于合成: 未利用其进行推理或规划,浪费了高级模型(如 GPT-4o, Claude 3.5 Sonnet, Gemini)的能力。
- 通常是“一次性”的,非个性化: 每次交互都是无状态的。
- 导致在处理复杂问题时容易产生“幻觉”。
迈向更好的(多模态)知识助手
- 目标: 构建能处理任意复杂度问题、基于任意数量数据的通用知识助手。
- 焦点: 多模态,即不仅处理文本,还要能理解和推理视觉数据(如图表、图片)。
- 四大要素:
- 核心的高质量多模态检索流程。
- 更泛化的输出: 不仅是聊天回复,还包括研究报告、数据分析、执行动作等。
- 对输入的代理化推理 (Agentic Reasoning): 如思维链、工具使用、反思、规划。
- 部署。
1. 建立多模态 RAG
- 核心挑战: 有效处理和利用文档中的视觉元素(如图表、复杂布局)。
- 数据处理至关重要: “垃圾进,垃圾出”原则同样适用于 LLM 应用开发。高质量数据是生产级 LLM 应用的必要条件。
- LLM 的 ETL 流程:解析、智能分块、智能索引。
- 复杂文档的特性: 包含嵌入式表格、图表、图像,不规则布局,页眉页脚等。标准解析器常处理不佳。
- LlamaParse: LlamaIndex 提供的“相当好的人工智能驱动的 PDF 解析器”。
- 目前已有 3 万多用户,每人每天可获 1000 页免费额度。
- 能将文本块、表格、图表等元素以语义一致的方式解析出来。
- 层级化索引与检索 (Hierarchical Indexing and Retrieval):
- 解析后,对文档中的每个元素(文本块、表格、图表):
- 传统 RAG 直接嵌入元素本身。
- LlamaIndex 提出更优方法:为源元素提取多种表征 (representations)(如为表格或图片生成摘要),这些表征(称为“节点” Nodes)被嵌入并索引。
- 检索时,先检索这些“节点”,再通过节点引用找到原始元素,然后将原始元素(可以是文本和图像)送入多模态 LLM。
- 解析后,对文档中的每个元素(文本块、表格、图表):
- 多模态 RAG 流程:
- 输入任意文档,存储文本和图像块。
- 索引图像块:可使用 CLIP embeddings,或如上所述用文本表征链接到图像块。
- 检索时,返回文本和图像块,并一同送入多模态模型。
- 注意:此阶段尚未涉及复杂的代理行为,仅为设置好多模态数据基础。
2. 泛化输出 (如报告生成)
- (由于时间关系,Jerry Liu 此部分未详细展开)
- 代理的潜力: 不仅是聊天回复,而是生成完整的输出单元,如 PPT、PDF、代码或执行动作。
- 企业常见用例: 咨询顾问、知识工作者希望 AI 生成可直接使用的内容。
3. 输入的代理化推理 (Agentic RAG)
- 动机: 初级 RAG 难以处理复杂任务,如需整合整个文档的摘要、多文档比较、多部分问题、高级别任务等。
- 代理化应用的谱系:
- 通用代理架构:
- ReAct 循环: 思维链 + 工具使用。
- LLMCompiler: 进行预先规划(生成 DAG)、优化、执行和周期性重规划。
- 约束性架构 (Constrained Architectures): 更常见,追求可靠性。
- 针对特定用例,利用特定组件。
- 包括:工具使用、记忆模块、函数调用、结构化输出生成、查询分解(思维链或并行子查询)。
- 通用代理架构:
- 代理化 RAG (Agentic RAG): 在 RAG 之上构建代理层,将检索视为一种“工具”。
- 查询首先进入通用代理推理层,该层决定如何处理查询、调用何种工具。
- 结果:更个性化的问答系统,能处理更复杂的问题。
- 非约束性 vs. 约束性流程:
- 约束性流程: 控制流由人工定义(如简单的路由器提示选择下游工具,然后是反思层,无循环)。更可靠,但表达能力有限。
- 非约束性流程 (通用代理): 代理自行规划(如 ReAct, LLMCompiler)。表达能力更强,但可靠性较低(可能陷入循环、不收敛),且成本更高(提示更长、工具调用更多)。
- 经验法则:使用 ReAct 时,工具数量建议 4-5 个,少于 10 个。
- LlamaIndex 的核心工作流能力:
- 将所有这些都视为“工作流”,本质上都是代理化的(粗略定义:包含非零 LLM 调用的计算机程序)。
- 提供事件驱动的编排系统: 每个步骤可以监听消息、向下游传递消息、在步骤间来回传递。步骤可以是 Python 代码、LLM 调用等。
- 认为代理行为本质上是事件驱动的,这为生产部署提供了良好基础。
实用案例与生产部署
- 案例:
- 报告生成:
- 架构示例:
Researcher代理(执行 RAG,获取信息存入数据缓存)+Writer代理(使用缓存数据生成包含文本、图像、表格的报告)+ 可能还有Reviewer代理。 - LlamaIndex 有生成完整幻灯片(而非仅报告)的示例代码库。
- 架构示例:
- 客户支持 (Customer Support): (未在幻灯片中但非常重要)
- 可能是面向外部的代理应用中排名第一的实用企业用例。
- 通过自动化决策流程提高问题解决率 (deflection rate),改善用户体验。
- 报告生成:
- 生产中运行代理:
- 起点: 通常是 Jupyter Notebook(本地、小范围测试)。
- 目标: 在生产基础设施上运行复杂的多代理架构。
- 理想情况:每个代理封装其行为并通过 API 接口暴露,通过核心消息传递层进行通信,系统可扩展,能处理大量客户端请求和会话。
- LlamaIndex 的实践: 致力于将代理工作流作为微服务 (microservices) 部署到生产环境。
- 每个代理工作流建模为一个服务 API(可在本地或 Kubernetes 上运行)。
- 所有代理通信通过中央消息队列。
- 支持“人在回路” (Human-in-the-loop) 即服务:代理需要人工输入时,可向用户发送消息,等待用户响应后继续执行(例如 Cognition Labs 的 Devin 编码代理有时会请求用户澄清)。
结论
Jerry Liu 总结道,上述组件是构建生产级多模态知识系统的逐步实践。