\documentclass[a4paper]{article}
\usepackage[fontset=fandol]{ctex}
\usepackage{amsmath, amssymb}
\usepackage{graphicx}
\usepackage[margin=2.5cm]{geometry}
\usepackage[most]{tcolorbox}
\usepackage{etoolbox}
\usepackage{listings}
\usepackage{hyperref}
\usepackage{booktabs}
\usepackage{subcaption}
\usepackage{float}

\newtcolorbox{knowledgebox}[1]{enhanced, colback=blue!5!white, colframe=blue!75!black, colbacktitle=blue!75!black, coltitle=white, fonttitle=\bfseries, title=#1, attach boxed title to top left={yshift=-2mm, xshift=2mm}, boxrule=1pt, sharp corners}
\newtcolorbox{importantbox}[1]{enhanced, colback=yellow!10!white, colframe=yellow!80!black, colbacktitle=yellow!80!black, coltitle=black, fonttitle=\bfseries, title=#1, sharp corners}
\newtcolorbox{warningbox}[1]{enhanced, colback=red!5!white, colframe=red!75!black, colbacktitle=red!75!black, coltitle=white, fonttitle=\bfseries, title=#1, sharp corners}

\lstset{language=Python, basicstyle=\ttfamily\small, keywordstyle=\color{blue}, stringstyle=\color{red!60!black}, commentstyle=\color{green!60!black}, breaklines=true, frame=single, numbers=left, numberstyle=\tiny\color{gray}, captionpos=b, extendedchars=false}

\newcommand{\notetitle}{{[}LLM Agents F24{]} Agentic AI Frameworks \& AutoGen + Building a Multimodal Knowledge Assistant}
\newcommand{\noteauthors}{基于公开课程资料整理}
\newcommand{\notedate}{2024年9月23日}
\newcommand{\videochannel}{Berkeley RDI}
\newcommand{\videopublishdate}{2024年9月23日}
\newcommand{\videoduration}{约80分钟}
\newcommand{\videourl}{https://www.youtube.com/watch?v=OOdtmCMSOo4}
\newcommand{\videocoverpath}{cover.jpg}
\newcommand{\repourl}{https://github.com/hqhq1025/ai-course-notes}


% Footer with repo info
\usepackage{fancyhdr}
\pagestyle{fancy}
\fancyhf{}
\fancyfoot[C]{\thepage}
\fancyfoot[R]{\footnotesize\color{gray}\href{\repourl}{AI Course Notes}}
\renewcommand{\headrulewidth}{0pt}
\renewcommand{\footrulewidth}{0pt}

\begin{document}
\begin{titlepage}\centering
{\Large 课程笔记\par}\vspace{1.2cm}
{\huge\bfseries \notetitle\par}\vspace{0.8cm}
{\large \noteauthors\par}\vspace{0.3cm}
{\large \notedate\par}\vspace{1.2cm}
\ifdefempty{\videocoverpath}{{\small 请在生成笔记时填入视频封面图的本地路径。\par}}{\includegraphics[width=0.82\textwidth,height=0.45\textheight,keepaspectratio]{\videocoverpath}\par}
\vfill
\begin{tcolorbox}[width=0.9\textwidth, colback=black!2!white, colframe=black!60, sharp corners]
\textbf{视频作者/频道}：\videochannel\par
\textbf{发布日期}：\videopublishdate\par
\textbf{视频时长}：\videoduration\par
\ifdefempty{\videourl}{}{\textbf{视频链接}：\href{\videourl}{\nolinkurl{\videourl}}\par}\par
\textbf{项目主页}：\href{\repourl}{\nolinkurl{\repourl}}\par
\end{tcolorbox}
\end{titlepage}

\tableofcontents\newpage

\section{引言：Agentic AI 的未来}

本讲由两位嘉宾联合呈现：\textbf{Chi Wang}（Microsoft Research，AutoGen 框架核心开发者）介绍 Agentic AI 框架与 AutoGen；\textbf{Jerry Liu}（LlamaIndex 创始人兼 CEO）介绍多模态知识助手的构建。

\subsection{什么是 Agentic AI？}

\begin{importantbox}{Agentic AI 的核心价值}
\begin{enumerate}
    \item \textbf{自然语言接口}：用户用自然语言描述需求，Agent 自动理解并执行
    \item \textbf{自主执行复杂任务}：通过多步推理和工具调用，在最少人类监督下完成任务
    \item \textbf{新型软件架构}：多个 Agent 协作构成模块化、可递归组合的系统
\end{enumerate}
\end{importantbox}

示例展示了 Magentic-One（基于 AutoGen）自动构建网站的全过程：分析任务、安装依赖、多 Agent 协作编写代码、编译运行，甚至在关键代码被删除后能自我修复。

\subsection{本章小结}

Agentic AI 不仅是 LLM 的应用层，更代表了一种全新的软件开发范式——从``编写代码''到``编排 Agent''。

\section{AutoGen：多 Agent 对话编程框架}

\subsection{核心设计理念}

AutoGen 的设计基于一个核心洞察：\textbf{对话（conversation）是最基础的 Agent 交互原语}。

\begin{knowledgebox}{为什么选择对话作为基础原语}
对话是人类推进学习和证明定理的基本方式。从 ChatGPT 的成功可以看出，多轮对话天然适合迭代改进和协作求解。以对话为中心的设计可以自然地派生出所有其他 Agent 交互模式。
\end{knowledgebox}

构建 Agent 应用只需两步：
\begin{enumerate}
    \item \textbf{定义 Agent}：每个 Agent 可以使用 LLM、工具或人类输入作为后端
    \item \textbf{让 Agent 对话}：通过对话模式（两人对话、嵌套对话、群聊等）编排协作
\end{enumerate}

\subsection{Conversable Agent 抽象}

AutoGen 的统一抽象——\textbf{Conversable Agent}——将不同类型的实体（LLM、工具、人类）统一为可对话的 Agent：
\begin{itemize}
    \item 可以选择 LLM 作为后端（如 GPT-4、Claude）
    \item 可以使用工具（Python 代码执行、API 调用等）
    \item 可以接入人类输入
    \item 可以混合多种后端
    \item 支持嵌套——Agent 内部可以包含其他 Agent 的对话
\end{itemize}

\subsection{对话模式}

\begin{itemize}
    \item \textbf{两人对话}：最简单的模式，已支持 Reflection（写作 Agent + 评审 Agent 迭代改进）
    \item \textbf{Sequential Chat}：多个两人对话串联，如嵌套的多角度评审（SEO 评审 → 法律评审 → 伦理评审 → 元评审）
    \item \textbf{Nested Chat}：Agent 内部发起子对话，如 Commander Agent 先与 Writer 对话获取代码，再与 Safeguard 对话验证安全性
    \item \textbf{Group Chat}：多个不同角色的 Agent 在群组中动态选择发言者，支持约束条件和状态转移逻辑
\end{itemize}

\subsection{Multi-Agent 的优势}

\begin{importantbox}{为什么多 Agent 比单 Agent 好？}
实验表明，将任务分解给专门的 Agent（如 Writer + Safeguard）比让单个 Agent 同时处理所有指令效果更好：GPT-4 多 Agent 方案比单 Agent 方案在安全检查上高出 20\%，GPT-3.5 差距更大。任务越复杂、模型越弱，多 Agent 的优势越明显。
\end{importantbox}

从编程角度看，多 Agent 架构还具有：
\begin{itemize}
    \item 更好的模块化和可维护性
    \item 支持自然的人类参与（人类接管任一 Agent 角色）
    \item 易于扩展（替换单个 Agent 不影响整体）
\end{itemize}

\subsection{AutoBuild：自动构建 Agent 团队}

AutoBuild 解决``为特定任务设计什么 Agent 团队''的问题：
\begin{enumerate}
    \item 用户描述高层需求
    \item 系统自动建议不同角色的 Agent
    \item Agent 组成 Group Chat 协作完成任务
    \item Adaptive Build 进一步支持动态分步构建 Agent 团队
\end{enumerate}

\subsection{本章小结}

AutoGen 以对话为核心原语，提供了灵活且强大的多 Agent 编程框架。其设计哲学是``定义 Agent + 让它们对话''，通过嵌套和组合，可以递归地构建任意复杂的 Agent 系统。

\section{LlamaIndex：构建多模态知识助手}

\subsection{从 Basic RAG 到 Advanced RAG}

Jerry Liu 指出 Basic RAG 的四大局限：
\begin{enumerate}
    \item \textbf{数据处理粗糙}：简单的文本分块无法处理表格、图片、复杂布局
    \item \textbf{LLM 仅用于合成}：没有利用推理和规划能力
    \item \textbf{无状态}：每次查询独立，无个性化记忆
    \item \textbf{输出单一}：只能生成简单文本回答
\end{enumerate}

\begin{warningbox}{Garbage In Garbage Out}
RAG 应用的质量取决于数据处理管线的质量。如果 PDF 解析器无法正确提取表格和图片，后续的 LLM 推理无论多强大都无法弥补。数据质量是生产级 LLM 应用的必要条件。
\end{warningbox}

\subsection{多模态 RAG 管线}

构建多模态 RAG 的关键步骤：

\begin{enumerate}
    \item \textbf{高质量文档解析}：将 PDF 中的文本、表格、图表、图片分别提取为结构化元素
    \item \textbf{层次化索引}：为每个元素生成多种文本表示（摘要、子块等），指向源元素
    \item \textbf{多模态检索}：给定查询，检索文本和图片 chunk，利用多模态 LLM 同时处理文字和视觉信息
\end{enumerate}

\begin{knowledgebox}{多模态模型的新机遇}
当前主流模型（GPT-4o、Claude 3.5 Sonnet、Gemini）都支持同时输入文字和图片。这意味着即使使用文本嵌入模型建立索引，在最终推理阶段仍可以将原始图片喂入 LLM，实现真正的视觉理解。
\end{knowledgebox}

\subsection{Agentic RAG：在 RAG 之上添加推理层}

\begin{importantbox}{Agentic RAG 的核心思想}
将 RAG 检索视为一种工具（tool），在其上层添加 Agent 推理层。Agent 可以决定如何分解问题、调用哪些检索工具、何时进行反思验证，从而处理基础 RAG 无法回答的复杂问题（摘要、多文档比较、多步骤分析等）。
\end{importantbox}

两种架构选择：
\begin{itemize}
    \item \textbf{约束型流程}：开发者手动定义 if-else 逻辑和路由规则，更可靠但灵活性低
    \item \textbf{通用 Agent 架构}（如 ReAct）：Agent 自主选择工具和推理路径，更灵活但可靠性较低、成本较高
\end{itemize}

经验法则：通用 Agent 架构中，工具数量尽量控制在 4--5 个，不超过 10 个。

\subsection{生产部署}

LlamaIndex 提供事件驱动的编排系统，支持：
\begin{itemize}
    \item 将每个 Agent 工作流封装为微服务 API
    \item 通过中央消息队列实现 Agent 间通信
    \item Human-in-the-loop：Agent 可暂停等待人类输入后继续执行
    \item 支持本地开发和 Kubernetes 部署
\end{itemize}

\subsection{本章小结}

LlamaIndex 从数据处理质量出发，构建了从文档解析到多模态检索再到 Agentic 推理的完整管线。其核心理念是：好的数据质量是基础，Agent 推理是上层建筑，两者缺一不可。

\section{总结与延伸}

\subsection{核心要点}

\begin{enumerate}
    \item \textbf{AutoGen} 以对话为核心抽象，支持多 Agent 递归组合，适合构建复杂的 Agent 协作系统。
    \item \textbf{LlamaIndex} 从数据质量出发，通过多模态 RAG + Agentic 推理构建生产级知识助手。
    \item 多 Agent 架构相比单 Agent 在任务分解、安全保障和可维护性方面具有显著优势。
    \item 约束型 vs. 通用型 Agent 架构存在可靠性-灵活性权衡。
    \item 生产部署需要考虑微服务化、消息队列和 human-in-the-loop。
\end{enumerate}

\subsection{拓展阅读}

\begin{itemize}
    \item Wu et al., ``AutoGen: Enabling Next-Gen LLM Applications via Multi-Agent Conversation,'' 2023.
    \item Liu, ``LlamaIndex: A Data Framework for LLM Applications,'' 2022--2024.
    \item Lewis et al., ``Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks,'' NeurIPS 2020.
\end{itemize}

\end{document}
