\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{]} Course Introduction — Dawn Song \& Xinyun Chen}
\newcommand{\noteauthors}{基于公开课程资料整理}
\newcommand{\notedate}{2024年9月9日}
\newcommand{\videochannel}{Berkeley RDI}
\newcommand{\videopublishdate}{2024年9月9日}
\newcommand{\videoduration}{约60分钟}
\newcommand{\videourl}{https://rdi.berkeley.edu/llm-agents/f24}
\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{课程导论：这门课在讲什么}

这节课是 Berkeley ``Large Language Model Agents'' 的开场导论，由 Dawn Song 介绍课程定位、教学团队和学习目标。她把 Agent 放在 LLM 快速进化的大背景下讨论：语言模型已经足够强，但若想解决真实任务，就必须让模型与环境、工具、记忆和反馈形成闭环。

\begin{figure}[H]
\centering
\includegraphics[page=2,width=0.9\textwidth]{slides.pdf}
\caption{课程教学团队与协作角色。导论首先明确师资、助教和课程支持资源。}
\end{figure}

\begin{knowledgebox}{这门课的出发点}
课程并不把 Agent 视为单次 prompt 的技巧集合，而是把它定义为一个完整系统：LLM 负责推理与规划，外部模块负责工具使用、记忆、检索和环境交互。只有把这些能力串起来，LLM 才能从``回答问题''转向``完成任务''。
\end{knowledgebox}

\subsection{大模型为什么自然走向 Agent}

导论指出，近两年 LLM 的能力提升极快，但纯文本输入到纯文本输出的模式很快触到了上限。真实世界任务通常不是一次性问答，而是需要：
\begin{itemize}
    \item 与环境交互，读取页面、文件、数据库或设备状态；
    \item 保留任务上下文和长期记忆；
    \item 在失败后重试、调整计划，并从反馈中修正行为；
    \item 调用外部工具弥补模型在计算、检索和执行上的短板。
\end{itemize}

\begin{importantbox}{从 LLM 到 Agent 的关键跳变}
一旦模型拥有了记忆、工具使用、检索和反馈回路，它的行为单位就不再是``回答一句话''，而是``在多步交互中推进任务''。这也是 Agent 研究和普通 chatbot 应用的根本分界线。
\end{importantbox}

\subsection{本章小结}

课程导论先把问题讲清楚了：Agent 不是给 LLM 再包一层 UI，而是把模型放进一个能持续观察、规划、行动和修正的执行框架中。

\section{什么是 LLM Agent}

\subsection{Agent 的系统组成}

\begin{figure}[H]
\centering
\includegraphics[page=4,width=0.9\textwidth]{slides.pdf}
\caption{课程用 Memory、Tool Use、Retrieval、Reasoning/Planning 和 Environment Feedback 概括 Agent 的标准组件。}
\end{figure}

课程给出的图景很清晰：Agent 的中心仍是 LLM，但 LLM 不再孤立运行，而是通过多个接口与外部系统耦合。

\begin{itemize}
    \item \textbf{Memory}：保存任务上下文、用户偏好、历史轨迹，避免每轮对话都从零开始。
    \item \textbf{Tool use}：让模型调用搜索、代码执行、API、数据库或浏览器操作。
    \item \textbf{Retrieval}：从文档和知识库中拉取外部证据，避免全靠参数记忆硬答。
    \item \textbf{Reasoning \& Planning}：把复杂目标拆成若干步骤，而不是直接给出单轮输出。
    \item \textbf{Feedback / Environment}：让 Agent 根据执行结果回看自己，形成 trial-and-error 的闭环。
\end{itemize}

\begin{knowledgebox}{为什么要保留这些模块边界}
如果把记忆、检索、工具调用和规划全都塞回一个超长 prompt，系统将很难观测、调试和优化。Agent 框架的重要价值就在于把这些能力显式拆开，使每个组件都可以被替换、约束和评估。
\end{knowledgebox}

\subsection{Agent 活跃的环境类型}

\begin{figure}[H]
\centering
\includegraphics[page=5,width=0.9\textwidth]{slides.pdf}
\caption{LLM Agent 不只存在于聊天界面，还可以进入网页、软件开发、企业工作流和机器人等多种环境。}
\end{figure}

课程特别强调 Agent 的环境多样性。它既可以工作在数字环境中，例如 IDE、浏览器、工作流平台，也可以延伸到具身环境，如机器人和多模态感知任务。环境越开放，Agent 越需要：
\begin{itemize}
    \item 在不完整信息下做局部决策；
    \item 从失败中恢复，而不是一次错误直接终止；
    \item 同时协调符号操作、自然语言交互和外部动作。
\end{itemize}

\subsection{本章小结}

LLM Agent 的定义不是``会调用工具的 LLM''这么简单，而是一个由模型、外部能力和反馈回路构成的任务执行系统。

\section{为什么要研究 Agent Framework}

\subsection{从单 Agent 到多 Agent 协作}

\begin{figure}[H]
\centering
\includegraphics[page=6,width=0.9\textwidth]{slides.pdf}
\caption{导论把多 Agent 协作描述为复杂任务中的``分工机制''，不同模块负责不同子任务。}
\end{figure}

当任务跨度足够长、子任务差异足够大时，单个 Agent 往往会在上下文拥挤、职责混杂和推理漂移中失效。课程因此把多 Agent 协作列为核心主题之一：
\begin{itemize}
    \item 专门的 planner 负责任务拆解；
    \item specialized executor 负责代码、检索、表格分析等局部操作；
    \item verifier / reviewer 负责检查事实性、一致性和安全性。
\end{itemize}

\begin{importantbox}{Framework 的真正价值}
Agent framework 的价值不在于多套 API，而在于它为复杂任务提供了稳定的组织方式：如何拆分模块、如何传递上下文、如何让多个角色协作、如何把失败恢复写进执行流程。
\end{importantbox}

\subsection{应用机会与评测压力}

\begin{figure}[H]
\centering
\includegraphics[page=8,width=0.9\textwidth]{slides.pdf}
\caption{课程把代码生成、工作流自动化、个人助手和机器人并列展示，说明 Agent 的应用边界正在快速扩张。}
\end{figure}

\begin{figure}[H]
\centering
\includegraphics[page=9,width=0.9\textwidth]{slides.pdf}
\caption{GAIA、WebArena、SWE-Bench 等基准构成了 Agent 研究的早期评测坐标。}
\end{figure}

课程一开始就把应用和 benchmark 放在一起，是因为 Agent 系统很容易做出 demo，却很难稳定上线。导论中列出的挑战包括：
\begin{itemize}
    \item 复杂任务中的推理和规划不稳；
    \item 长时程任务中对环境反馈的利用效率不高；
    \item 多模态理解和 world model 仍不成熟；
    \item 多 Agent 协作、理论解释和安全隐私尚未形成稳固框架。
\end{itemize}

\begin{warningbox}{导论里最重要的风险提醒}
Agent 系统的失败通常不是``答错一道题''，而是长期任务中的累积偏差：错误计划、错误调用工具、错误读写外部环境，最后把小问题放大成系统性故障。也因此，部署 Agent 比部署普通 LLM 应用更强调可观测性和评测。
\end{warningbox}

\subsection{本章小结}

研究 Agent framework 的原因很实际：它既决定系统能否处理真实任务，也决定这些系统能否被稳定评估、调试和部署。

\section{课程结构、作业与项目}

\subsection{课程内容分层}

\begin{figure}[H]
\centering
\includegraphics[page=11,width=0.9\textwidth]{slides.pdf}
\caption{本课程把内容分成模型能力、Agent framework、应用和安全伦理四条主线。}
\end{figure}

课程结构分为四层：
\begin{enumerate}
    \item \textbf{Model core capabilities}：推理、规划、多模态理解。
    \item \textbf{LLM agent frameworks}：workflow、tool use、RAG、多 Agent。
    \item \textbf{Applications}：软件开发、工作流自动化、多模态和企业应用。
    \item \textbf{Safety \& ethics}：部署风险、人机交互、隐私和控制问题。
\end{enumerate}

\begin{knowledgebox}{项目方向的设计意图}
课程项目不是让学生重复做一个聊天机器人，而是鼓励围绕五类主题展开：应用、基准、基础能力、安全、多 Agent / 去中心化系统。这个设计本身就在提示学生，Agent 研究并不是单一方向，而是一个由能力、系统和治理共同组成的研究空间。
\end{knowledgebox}

\subsection{考核与项目组织}

导论中也给出了清晰的课程交付方式：
\begin{itemize}
    \item 每周阅读任务，用于建立跨讲次的共识背景；
    \item 一次 hands-on lab，把框架和工具真正跑起来；
    \item semester-long project，鼓励五人组队并围绕完整问题展开。
\end{itemize}

从质量要求上看，课程把 1--4 unit 分别对应到不同强度的实现深度，说明它更重视``把 Agent 系统做成一个可说明、可展示、可验证的工程实体''，而不只是阅读论文或写概念综述。

\subsection{本章小结}

这门课的组织方式与它的主题高度一致：课程本身就是一个从阅读、实验到项目落地的 Agent 系统训练场。

\section{总结与延伸}

这节导论课完成了三件事：定义 LLM Agent 的系统结构、说明为什么 Agent framework 值得单独研究、以及给出整门课的能力地图与项目路线。它的核心信息非常直接：大模型能力已经足够强，但若想进入真实世界任务，关键瓶颈会从``模型会不会说''转向``系统会不会做''。

\subsection{拓展阅读}

\begin{itemize}
    \item Mialon et al., ``GAIA: a benchmark for General AI Assistants,'' 2023--2024.
    \item Zhou et al., ``WebArena: A Realistic Web Environment for Building Autonomous Agents,'' 2024.
    \item Jimenez et al., ``SWE-Bench: Can Language Models Resolve Real-World GitHub Issues?,'' 2024.
    \item Yao et al., ``ReAct: Synergizing Reasoning and Acting in Language Models,'' ICLR 2023.
\end{itemize}


\end{document}
