详细摘要 摘要

生成: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 提取并下载模型的网站。
  • 过程:
    1. AI 接收需求后自动开始工作。
    2. 分析任务、寻找信息、安装必要依赖。
    3. 采用多代理框架,不同角色的代理协同完成任务。
    4. AI 自动创建不同文件,代理间的推理和交互(使用 LLM 和工具)自动进行。
    5. 开发网站,最终编译并成功构建。
  • 自愈能力: 演示中,人为删除一行关键代码后,AI 再次运行时能够发现错误(如 missing script),并在几步内自动修正错误,补全被删除的代码行,最终完成任务。
  • 启示: AI 代理展现了强大的自动化和自我修复能力,可能彻底改变未来的软件构建方式。

AI 代理的关键优势

  1. 自然交互: 用户可以通过自然语言与 AI 沟通需求并进行迭代。
  2. 复杂任务自动化: 代理具备更强能力,能以最少的人工监督完成复杂任务,具有巨大的自动化价值。
  3. 新型软件架构: 多个代理协同工作,以递归方式完成更复杂的任务。这一点 Chi Wang 认为讨论较少,但他特别强调其重要性。

实例:AutoGen 在云端供应链优化中的应用

  • 场景: 咖啡店主希望了解改变运输约束对其运营成本的影响。这类问题无法直接从 ChatGPT 等通用模型获得答案,因其需要理解用户特定数据、约束和优化工具。
  • AutoGen 解决方案: 构建了三个代理:Commander(指挥官)、Writer(编写器)、Safeguard(安全员)。
  • 工作流程:
    1. 用户向 Commander 提问。
    2. Commander 暂停当前对话,与 Writer(使用大语言模型作为后端)发起新对话。Writer 理解问题并提出 Python 代码方案。
    3. Commander 收到代码后,暂停与 Writer 的对话,与 Safeguard(另一个使用语言模型的代理)发起新对话,检查代码安全性。
    4. 若代码安全,Commander 执行代码,得到结果。
    5. Commander 将执行结果返回给 Writer
    6. Writer 基于结果生成最终答案,通过 Commander 回复用户。
  • 鲁棒性: 系统能处理代码不安全(Safeguard 阻止执行)或执行出错(Writer 需重写代码)等情况,可能涉及多轮交互。
  • 用户体验: 终端用户仍使用自然语言提问和获取答案,无需了解编码或优化细节。

AI 代理的编程范式

  • 步骤:
    1. 创建代理: 如 Writer, Safeguard, Commander, UserProxy(用户代理),每个一行代码。
    2. 定义交互模式: 注册代理间的消息聊天,明确发送者、接收者、对话摘要方法等。
    3. 启动对话: 从 UserProxyCommander 发起初始任务请求,后续步骤自动进行。
  • 多代理编程的益处:
    1. 处理更复杂任务,提升响应质量:
      • 通过交互自然改进。
      • “分而治之”:将复杂任务分解为小任务。
      • 可定义非 LLM 依赖的专用代理(如执行验证、接地的代理),弥补模型固有缺陷。
      • 实验数据: 将任务分解为 WriterSafeguard 两个代理,对比单代理。对于 GPT-4,多代理设置在保障方面比单代理召回率高 20%;对于 GPT-3.5,差异更大。这表明任务越复杂、模型能力越弱,多代理工作流的需求越强。
    2. 易于理解、维护和扩展 (模块化设计):
      • 可独立修改某个代理的行为(如 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. 让它们对话。
    1. 可对话代理 (Conversable Agent): 高度通用,后端可以是 LLM、工具或人工输入,也可混合。代理内部可包含其他代理并进行内部对话,实现递归复杂性。
    2. 对话编程 (Conversation Programming):
      • 双代理对话: 可实现反思(Reflection)等高级推理,如 Writer 写博客,Critic 提建议,两者迭代改进。
      • 嵌套聊天 (Nested Chat): Critic 代理内部可以包含一个顺序聊天的子流程(如先给 SEO 审阅者,再给法律审阅者,最后由元审阅者总结),而 Writer 看来仍只与一个 Critic 交互。
      • 通过对话使用工具: 以“对话国际象棋”为例。两个 LLM 代理直接下棋易出错。引入第三方基于工具的 Chessboard 代理(使用 Python 库管理棋盘和规则),LLM 代理提议走法,Chessboard 代理验证合法性,确保游戏顺利进行。
      • 群聊 (Group Chat): 用户只需定义不同角色的代理并放入群聊,系统可自动决定下一个发言代理。Group Chat Manager 监控进展并选择发言者。可添加约束或有限状态机(FSM)逻辑来指导发言顺序,兼顾自主性与可控性。
  • 资源: 官网提供大量 Notebook 示例,按标签分类,如 AutoGen 与 LlamaIndex 的集成。

AutoGen 的应用案例与社区影响

  • 应用领域: 软件开发、代理平台、研究、数据处理、网页浏览、金融、医疗、教育,甚至区块链。
  • 精选案例:
    1. 科学与工程 (MIT, Prof. Markus Buehler):
      • 利用 AutoGen 构建代理团队模拟科研或工程团队行为(计算数据、生成假设、实验验证),应用于蛋白质设计、材料设计等。
      • 开发了 "Science Agents",使用本体知识图谱进行特定科学领域的推理和发现。
    2. 网页代理 (Emerge AI, "Agent E"):
      • 构建层级化代理团队执行复杂网页任务(如自动预订机票、填写医疗表格)。
      • 利用规划代理、网页浏览代理,深入理解 HTML DOM 内容(目前未用多模态模型)。
      • 在 WebArena 基准测试上取得当前最佳性能 (state-of-the-art)成功率 73%,优于之前使用多模态模型的技术。仍有很大提升空间。
  • 社区反馈: 一家建筑公司提到 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 流程:
    1. 加载非结构化数据(使用标准文档解析器)。
    2. 分块(如每 1000 词元)。
    3. 嵌入每个数据块(如使用 OpenAI embeddings)。
    4. 存入向量数据库。
    5. 检索时,进行语义/向量搜索,返回最相关条目。
    6. 将检索到的上下文送入 LLM 进行综合生成。
  • 局限性:
    1. 数据处理层原始: 分块方式粗糙,未考虑数据内元素(表格、图片)和语义结构。
    2. LLM 仅用于合成: 未利用其进行推理或规划,浪费了高级模型(如 GPT-4o, Claude 3.5 Sonnet, Gemini)的能力。
    3. 通常是“一次性”的,非个性化: 每次交互都是无状态的。
    4. 导致在处理复杂问题时容易产生“幻觉”。

迈向更好的(多模态)知识助手

  • 目标: 构建能处理任意复杂度问题、基于任意数量数据的通用知识助手。
  • 焦点: 多模态,即不仅处理文本,还要能理解和推理视觉数据(如图表、图片)。
  • 四大要素:
    1. 核心的高质量多模态检索流程
    2. 更泛化的输出: 不仅是聊天回复,还包括研究报告、数据分析、执行动作等。
    3. 对输入的代理化推理 (Agentic Reasoning): 如思维链、工具使用、反思、规划。
    4. 部署

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 调用等。
    • 认为代理行为本质上是事件驱动的,这为生产部署提供了良好基础。

实用案例与生产部署

  • 案例:
    1. 报告生成:
      • 架构示例:Researcher 代理(执行 RAG,获取信息存入数据缓存)+ Writer 代理(使用缓存数据生成包含文本、图像、表格的报告)+ 可能还有 Reviewer 代理。
      • LlamaIndex 有生成完整幻灯片(而非仅报告)的示例代码库。
    2. 客户支持 (Customer Support): (未在幻灯片中但非常重要)
      • 可能是面向外部的代理应用中排名第一的实用企业用例
      • 通过自动化决策流程提高问题解决率 (deflection rate),改善用户体验。
  • 生产中运行代理:
    • 起点: 通常是 Jupyter Notebook(本地、小范围测试)。
    • 目标: 在生产基础设施上运行复杂的多代理架构。
      • 理想情况:每个代理封装其行为并通过 API 接口暴露,通过核心消息传递层进行通信,系统可扩展,能处理大量客户端请求和会话。
    • LlamaIndex 的实践: 致力于将代理工作流作为微服务 (microservices) 部署到生产环境。
      • 每个代理工作流建模为一个服务 API(可在本地或 Kubernetes 上运行)。
      • 所有代理通信通过中央消息队列。
      • 支持“人在回路” (Human-in-the-loop) 即服务:代理需要人工输入时,可向用户发送消息,等待用户响应后继续执行(例如 Cognition Labs 的 Devin 编码代理有时会请求用户澄清)。

结论

Jerry Liu 总结道,上述组件是构建生产级多模态知识系统的逐步实践。