\documentclass[a4paper]{article}

% Basic packages
\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}

% Highlight boxes
\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
}

% Listings
\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
}

% Front-page metadata
\newcommand{\notetitle}{{[}LLM Agents F24{]} LLM Agents: Brief History and Overview — Shunyu Yao}
\newcommand{\noteauthors}{基于公开课程资料整理}
\newcommand{\notedate}{2024年9月16日}
\newcommand{\videochannel}{Berkeley RDI}
\newcommand{\videopublishdate}{2024年9月16日}
\newcommand{\videoduration}{约75分钟}
\newcommand{\videourl}{https://www.youtube.com/watch?v=RM6ZArd2nVc}
\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{引言：什么是 LLM Agent？}

Shunyu Yao（姚顺雨）是 ReAct 框架的提出者，现就职于 OpenAI。本次讲座系统梳理了 LLM Agent 的定义、历史发展脉络和未来方向。

\subsection{Agent 的定义}

\begin{importantbox}{Agent 的三层定义}
\begin{enumerate}
    \item \textbf{Text Agent}：与环境交互的智能系统，其动作（action）和观测（observation）均以语言（text）形式表达。Text Agent 不一定使用 LLM，早在 AI 诞生之初就有基于规则的 Text Agent。
    \item \textbf{LM Agent}：使用语言模型来生成动作的 Text Agent。
    \item \textbf{Reasoning Agent}：使用语言模型\textbf{推理后再行动}的 Agent——这是一个质的飞跃。
\end{enumerate}
\end{importantbox}

定义 Agent 需要回答两个子问题：什么是``智能''（intelligence）？什么是``环境''（environment）？

\begin{itemize}
    \item 环境可以是物理的（机器人、自动驾驶）或数字的（视频游戏、网页、代码编辑器）。
    \item ``智能''的定义随时代演变——60 年前简单聊天机器人就算智能，如今 ChatGPT 都不再令人惊讶。
\end{itemize}

\subsection{本章小结}

LLM Agent 的核心创新不是让语言模型执行动作，而是让它\textbf{先推理再行动}。Reasoning Agent 区别于此前所有 Agent 范式的关键在于：推理（thinking）是一种内部动作，具有无限的语言空间。

\section{LLM Agent 之前的历史}

\subsection{基于规则的 Text Agent}

\begin{knowledgebox}{ELIZA（1966）}
最早的聊天机器人之一，仅用少量规则（不断追问或复述用户所说）就能给人以"智能"的印象。然而，基于规则的方法具有严重的局限性：
\begin{itemize}
    \item 高度领域特定（domain-specific）
    \item 每个新领域需要重新编写规则
    \item 无法扩展到复杂开放域
\end{itemize}
\end{knowledgebox}

\subsection{基于强化学习的 Text Agent}

在 LLM 出现之前，另一个流行范式是用 RL 构建 Text Agent（如文字游戏 agent）：

\begin{itemize}
    \item 将文本观测和动作视为视频游戏中的像素和键盘输入
    \item 使用 RL 优化奖励信号
    \item \textbf{局限}：领域特定、需要精确的奖励信号、训练开销大
\end{itemize}

\subsection{LLM 的革命性变化}

LLM 仅通过在海量文本上训练 next-token prediction，就能在推理时通过 prompting 解决各种新任务。这种\textbf{通用性}和\textbf{少样本学习能力}使其成为构建 Agent 的理想``大脑''。

\subsection{本章小结}

从基于规则的 symbolic AI agent 到基于 RL 的 deep agent，再到基于 LLM 的 reasoning agent，Agent 的内部表示从符号逻辑到神经嵌入再到自然语言，一步步走向更灵活、更通用。

\section{推理与行动的融合：ReAct}

\subsection{Reasoning 范式与 Acting 范式}

在 ReAct 出现之前，LLM 的应用分裂为两个独立的范式：

\begin{itemize}
    \item \textbf{Reasoning}（如 Chain-of-Thought）：LLM 内部逐步推理，增强 test-time compute，但无法获取外部知识或工具。
    \item \textbf{Acting}（如 RAG、tool use）：LLM 调用外部环境（搜索引擎、计算器、API），获取知识和计算能力，但缺乏推理以适应复杂局面。
\end{itemize}

两个范式各自解决 QA 的不同子问题（推理类问题 vs. 知识类问题 vs. 计算类问题），导致方法碎片化（piecemeal）。

\subsection{ReAct：推理 + 行动的统一框架}

\begin{importantbox}{ReAct 的核心思想}
让 LLM 交替生成\textbf{思考}（thought）和\textbf{动作}（action），观测（observation）由环境返回。只需写一个示例轨迹作为 prompt，展示如何思考和行动来解决任务，LLM 就能模仿这种模式。
\end{importantbox}

具体工作流程：
\begin{enumerate}
    \item LLM 生成一个 thought（如 ``我需要查找这三家公司的市值''）
    \item LLM 生成一个 action（如 \texttt{Google{[}Apple market cap{]}}）
    \item 环境返回 observation（搜索结果）
    \item 将 thought + action + observation 追加到上下文，LLM 继续生成下一步
    \item 重复直到任务完成
\end{enumerate}

\begin{knowledgebox}{推理与行动的双向增益}
\begin{itemize}
    \item \textbf{行动帮助推理}：从外部获取实时信息、执行计算
    \item \textbf{推理帮助行动}：根据当前情况规划策略、在异常时重新调整计划。例如，当搜索返回股价而非市值时，推理可以指导下一步查找股份数量来间接计算。
\end{itemize}
\end{knowledgebox}

\subsection{ReAct 的通用性}

ReAct 不局限于问答——任何可以转化为``文本游戏''的任务都可以使用 ReAct 框架：

\begin{itemize}
    \item 网页浏览、在线购物
    \item 视频游戏（通过 image captioning 将像素转为文本）
    \item 家庭任务模拟（ALFWorld）
    \item 软件工程（SWE-bench）
\end{itemize}

\begin{warningbox}{没有推理的 Acting Agent 的局限}
在 ALFWorld 游戏中，纯 acting agent（不生成 thought）在遇到异常时（如目标物体不在预期位置）会反复执行同一动作，无法适应。加入 thinking action 后，agent 可以反思当前状况并重新规划。
\end{warningbox}

\subsection{本章小结}

ReAct 的贡献不仅是一个具体方法，更是提出了 Reasoning Agent 的范式——将推理作为 Agent 的一种特殊``内部动作''。这种范式系统性地优于纯推理或纯行动。

\section{Reasoning Agent 的理论意义}

\subsection{推理作为无限维的内部动作}

传统 Agent（无论 symbolic 还是 RL）的动作空间由环境固定定义（如上下左右），而 Reasoning Agent 引入了一种全新的动作类型——\textbf{推理}：

\begin{itemize}
    \item 推理可以是任意长度的自然语言，动作空间是\textbf{无限的}
    \item 推理不改变外部环境，只改变 Agent 自身的上下文（内部状态）
    \item 推理影响后续的行动决策
\end{itemize}

\subsection{三种 Agent 范式的对比}

\begin{table}[H]
\centering
\begin{tabular}{lccc}
\toprule
& \textbf{Symbolic AI Agent} & \textbf{Deep RL Agent} & \textbf{Reasoning Agent} \\
\midrule
内部表示 & 符号状态 & 神经嵌入（向量） & 自然语言 \\
构建方式 & 手写规则 & 训练数百万步 & Prompting / Fine-tuning \\
领域迁移 & 极差 & 差 & 好 \\
表示维度 & 有限符号集 & 固定维度向量 & 无限语言空间 \\
\bottomrule
\end{tabular}
\caption{三种 Agent 范式对比}
\end{table}

自然语言作为中间表示的优势：
\begin{itemize}
    \item 利用 LLM 预训练的丰富知识，无需大量额外训练
    \item 表达能力无限——可以思考一个词，也可以思考一百万个 token
    \item 天然支持 inference-time scaling
\end{itemize}

\subsection{本章小结}

Reasoning Agent 的本质创新在于用自然语言作为 Agent 的内部表示和推理媒介，这赋予了 Agent 无限维的内部动作空间和预训练知识的零样本迁移能力。

\section{长期记忆（Long-term Memory）}

\subsection{短期记忆的局限}

LLM Agent 的``短期记忆''即上下文窗口（context window），存在三个根本限制：

\begin{enumerate}
    \item \textbf{只能追加}（append-only）：只能不断添加新 token，不能编辑或删除
    \item \textbf{容量有限}：即使有百万 token 窗口，仍有上限
    \item \textbf{不持久}：任务结束或上下文清空后，所有"记忆"消失
\end{enumerate}

\begin{warningbox}{金鱼困境}
没有长期记忆的 Agent 就像金鱼——即使今天证明了黎曼猜想，明天也得从头再来。更严重的是，下次尝试不一定能成功。
\end{warningbox}

\subsection{Reflexion：最简单的长期记忆}

Reflexion 是 ReAct 的自然扩展：

\begin{enumerate}
    \item Agent 尝试解决任务（如编写代码）
    \item 任务失败（如单元测试未通过）
    \item Agent \textbf{反思}失败原因（如 ``我忘记处理边界情况''）
    \item 将反思结果写入长期记忆
    \item 下次尝试时读取长期记忆，避免重复错误
\end{enumerate}

\begin{knowledgebox}{一种新型学习范式}
Reflexion 本质上是一种\textbf{通过语言进行学习}的方法，区别于传统 RL 通过梯度下降更新权重：
\begin{itemize}
    \item 不需要标量奖励信号，可以利用任何文本反馈（编译错误、测试结果、教师评语等）
    \item 不通过反向传播更新参数，而是通过更新文本记忆影响未来行为
\end{itemize}
\end{knowledgebox}

\subsection{更复杂的长期记忆形式}

\begin{itemize}
    \item \textbf{Voyager}：在 Minecraft 中学习技能，将成功的代码（如``制作剑''）存入技能库，后续任务可直接调用。
    \item \textbf{Generative Agents}：25 个模拟人类的 Agent 在小镇中生活，每个 Agent 维护一份事件日志（episodic memory）和从经验中提炼的语义记忆（semantic memory），这些记忆影响其后续行为。
    \item \textbf{Fine-tuning 作为长期记忆}：也可以直接 fine-tune 模型参数，将经验"写入"神经网络权重。
\end{itemize}

\subsection{KOALA：Agent 的统一抽象}

Shunyu Yao 提出了 KOALA 框架，用三个组件统一描述任意 Agent：

\begin{enumerate}
    \item \textbf{Memory}：信息存储的位置（上下文窗口 + 外部存储 + 模型参数）
    \item \textbf{Action Space}：Agent 可以执行的动作集合
    \item \textbf{Decision-making Procedure}：给定记忆和动作空间，如何选择下一步动作
\end{enumerate}

\subsection{本章小结}

长期记忆使 Agent 从``无状态''的一次性求解器进化为能够积累经验、持续改进的学习系统。记忆可以是文本日志、技能代码库，甚至模型参数本身。

\section{新兴应用领域}

\subsection{数字自动化（Digital Automation）}

LLM Agent 开启了全新的应用维度——\textbf{数字自动化}：

\begin{itemize}
    \item \textbf{WebShop}：Agent 在模拟亚马逊网站上执行购物任务（搜索、比较、定制、购买），基于百万级真实商品数据构建。
    \item \textbf{网页交互}：Agent 操作真实网页完成各种任务。
    \item \textbf{SWE-bench}：Agent 给定 GitHub 仓库和 issue，需要理解代码库、编写测试、生成修复补丁——真正的软件工程任务。
\end{itemize}

\subsection{科学发现}

如 CHEM-AI 工作：Agent 分析化学数据、使用工具（Python、搜索引擎），提出新化合物方案，方案在湿实验室中被合成验证——Agent 的动作空间延伸到物理世界。

\subsection{本章小结}

LLM Agent 的应用已从传统 NLP/RL 的问答和游戏扩展到实际的数字自动化和科学发现，这是以往 Agent 范式无法企及的。

\section{未来方向}

Shunyu Yao 提出了五个关键研究方向：

\subsection{训练（Training）}

\begin{importantbox}{模型-Agent 协同进化}
当前 LLM 的训练数据主要来自互联网文本，缺乏 Agent 轨迹数据（思考过程、动作序列、环境反馈）。解决方案：用 prompted agent 生成大量轨迹数据，再用这些数据 fine-tune 模型，形成正向循环。类比 GPU 与深度学习的协同进化。
\end{importantbox}

\subsection{接口（Interface）}

\begin{itemize}
    \item 人机接口（HCI）已研究数十年，但 Agent 的最优接口与人类不同
    \item 例如：人类搜索文件用 \texttt{ls} + \texttt{cd}（每次一个结果），但 Agent 更适合一次获取多个结果
    \item 不优化 Agent，而是优化\textbf{环境}——同一模型在更好的接口下表现更好
\end{itemize}

\subsection{鲁棒性（Robustness）}

\begin{warningbox}{Pass@K vs. 鲁棒性}
学术界关注 pass@K（K 次尝试中至少成功一次），但现实应用需要\textbf{鲁棒性}（K 次中每次都成功）。当前所有模型在采样次数增加时，鲁棒性单调下降。客服 Agent 失败一次就可能失去客户——不能仅追求``能做到''，还要``总能做到''。
\end{warningbox}

\subsection{人机协作（Human-in-the-loop）}

真实场景中 Agent 需要与人交互——客户不会一次给出所有信息，Agent 需要多轮对话获取所需信息。

\subsection{评测基准（Benchmarks）}

\begin{itemize}
    \item 需要更实际、更大规模的基准（如 Tau-Bench：客服场景）
    \item 需要评估鲁棒性而非仅评估能力上限
    \item 需要包含人机交互元素
\end{itemize}

\subsection{本章小结}

LLM Agent 领域的五个关键方向——训练、接口、鲁棒性、人机协作、评测——都有大量低垂果实，且不需要巨量 GPU 资源，适合学术界研究。

\section{总结与延伸}

\subsection{核心要点}

\begin{enumerate}
    \item \textbf{Reasoning Agent} 是一种全新的 Agent 范式，以自然语言作为内部表示，具有无限维的推理空间。
    \item \textbf{ReAct} 将推理和行动统一，两者相互增益：推理指导行动规划和异常处理，行动为推理提供外部信息和计算。
    \item \textbf{长期记忆}（Reflexion、Voyager、Generative Agents）使 Agent 能跨任务积累经验。
    \item \textbf{数字自动化}是 LLM Agent 开辟的全新应用维度。
    \item 简洁性（simplicity）是最有力的研究品质——简单意味着通用。
\end{enumerate}

\subsection{拓展阅读}

\begin{itemize}
    \item Yao et al., ``ReAct: Synergizing Reasoning and Acting in Language Models,'' ICLR 2023.
    \item Shinn et al., ``Reflexion: Language Agents with Verbal Reinforcement Learning,'' NeurIPS 2023.
    \item Wang et al., ``Voyager: An Open-Ended Embodied Agent with Large Language Models,'' 2023.
    \item Park et al., ``Generative Agents: Interactive Simulacra of Human Behavior,'' UIST 2023.
    \item Yao et al., ``WebShop: Towards Scalable Real-World Web Interaction with Grounded Language Agents,'' NeurIPS 2022.
    \item Zhou et al., ``WebArena: A Realistic Web Environment for Building Autonomous Agents,'' ICLR 2024.
    \item Yao et al., ``Tau-Bench: A Benchmark for Tool-Agent-User Interaction in Real-World Domains,'' 2024.
\end{itemize}

%% --- 正文内容结束 --- %%

\end{document}
