第 8 讲:[客座] 人与智能体交互中的评估与学习

Large Language Models: Methods and Applications · Lecture 08。个人学习讲义与配套实验,按主题整理并持续修订。

课程源码 ZIP ↓

个人整理的学习笔记,非官方讲义;课程来源与整理说明见课程介绍。配套示例未逐一运行验证。

本篇目录

对应原课:CMU 11-667 Fall 2025 · Lecture 8 · Thu 18-Sep-2025 · Evaluation and Learning in Human-Agent Interaction(客座:Hao Zhu,斯坦福大学) 原课 slides:Evaluation and Learning in Human-Agent Interaction(课表上标为 agent-human interaction) 阅读材料:Collins et al. (2024), Building machines that learn and think with people;Bansal et al. (2024), Challenges in Human-Agent Communication;NAACL 2025 教程 Social Intelligence in the Age of LLMs 配套代码:code/lecture08/(1 个模块 + 4 个演示脚本,纯 Python 模拟,全部在 10 秒内跑完) 本讲的写法:骨架来自客座讲座的 slides(Collaborative Gym、AutoLibra、SOTOPIA 等工作);“花园小店”模拟环境是补充的——它让”任务完成没有”和”用户满不满意”可以分开精确测量。所有数字都来自配套代码的实际输出。


目录


0. 本讲导读

0.1 这一讲要回答的问题

讲座一开始,Hao Zhu 请听众想 5 个动词填空:“智能体 ____ 人”。答案五花八门:和人协作、理解人、教人、欺骗人、和人一起工作、向人学习、增强人、模拟人、和人聊天、超越人、和人一起思考。每一个动词都对应一种人与智能体的关系,也对应一种不同的”做得好”的标准。

前几讲的评估(第 5、7 讲)都是”模型 vs 基准”:一个模型面对一套题,答对多少。可是越来越多的 LLM 系统不是在答题,而是和人一起完成任务:帮人写论文的相关工作、规划旅行、分析表格、编程。这时候:

  • “任务完成了没有”还是唯一的标准吗?智能体有没有告诉人它在做什么?该不该先问一句?
  • 真人实验又慢又贵,用 LLM 扮演用户来评估,可信吗?用 LLM 给对话打分,可信吗?
  • 用户的反馈常常是一句随口的抱怨(“你怎么又问我颜色”),怎样把它变成可以系统使用的评估指标?
  • 智能体能不能从和人的交互里学会”对这个人该怎么做”?

0.2 学完这一讲你应该能

  • 区分”智能体视角”和”LLM 视角”的智能体研究,说出 LLM 为智能体提供了哪些先验能力;
  • 解释人与智能体交互(HAI)的评估为什么不能只看任务完成率,说出 CoGym 的主要发现和失败分类;
  • 说出用模拟用户和 LLM 评审做评估的偏差来源,并设计检验它们的方法;
  • 解释 AutoLibra 怎样从开放式反馈中归纳指标,以及覆盖率和冗余度两个元指标;
  • 比较”试错式”和”基于用户模型”的个性化学习;解释偏好来源怎样决定奖励模型学到什么;
  • 说出社会智能(协调、社会规范、理解他人的信念)对智能体的意义和评估难点。

0.3 本讲的实验平台:花园小店

hai_world.py 是一个纯 Python 的小环境(不训练神经网络):

  • 商品:43 种(花园世界的名词),每种有 类别 / 颜色 / 大小 / 价位 四个属性,共 33 种不同的属性组合。例如 apple 是 fruit, green, small, dear。
  • 用户:心里想要某种属性组合(按商品的流行度抽取),开口只说一部分(“i want a big fruit”)。用户有自己的”性格”:回答会不会出错、最多能忍受几个问题、每个问题有多烦、在不在乎被告知”你打算怎么做”、会不会主动多说。
  • 智能体每一轮可以 ask(问一个属性)、tell(告诉用户它打算怎么做——不推进任务,只是沟通)、act(推荐一件商品,对话结束)。
  • 满意度 = 1[推荐对了] − 每个问题的扣分 − 0.3 × [在乎被告知却没被告知] − 0.5 × [被问烦了离开]。
智能体做法
直接做不问不说,按已知信息推荐最可能的商品(完全自主)
问到底把没听过的属性全问一遍再推荐
健忘和”问到底”一样,但不记得用户开口时说过什么
按信息价值问(门槛 θ)只在”问了之后成功率的预期提升 > θ”时才问;可选”推荐前先告知”
话痨问到底 + 先告知 + 满嘴客套话

三种用户人群:理想化模拟(从不答错、无限耐心、不嫌问题烦、不在乎被告知)、LLM 式模拟(几乎不答错、非常配合、常常主动多说、无限耐心)、“真实”人群(10% 的回答是错的、能忍受 1~3 个问题、每个问题扣 0.05~0.2 分、一半的人在乎被告知)。这些参数是编的,不是测出来的——它们的作用是让”模拟用户和真实用户不一样”这件事可以被量化地讨论。


1. 什么是人与智能体交互

1.1 一些例子

slides 列了几种场景,问哪些算”人与智能体交互”:AI 作为观察者、AI 作为提示工程师、AI 作为合作的软件工程师、AI 作为聊天机器人、AI 教人、AI 作为家用服务机器人。它们的共同点是:一个能自己做决定、自己行动的系统,和人处在同一个任务里。

1.2 “LLM 智能体”是什么?两种视角

“LLM 智能体”这个词有两种理解:

  • 智能体视角(agent thinking):智能体是做决定的主体,LLM 只是给它提供能力的部件——“由 LLM 驱动的决策者”;
  • LLM 视角(LLM thinking):智能体是接上了工具、记忆等的 LLM——“LLM + 外挂”。

1.3 LLM 提供了哪些能力

从 LLM 视角看,可以利用的能力有:

  • 编程:LLM 之前的”自然语言到代码”是语义解析,生成抽象语法树(Yin & Neubig 2017);LLM 时代是指令跟随(Codex, 2021),今天”让 LLM 写代码,它就能跑”(vibe coding)。
  • 记忆:检索增强生成(RAG,第 11 讲);超长上下文。
  • 上下文学习:LLM 之前的小样本学习靠基于梯度的元学习(Finn et al. 2017);GPT-3 之后上下文学习”涌现”(Brown et al. 2020,第 6、9 讲),今天千万 token 的上下文里几乎能完美回忆。
  • 落地(grounding):纯文本的 LLM 也有丰富的概念结构(Patel et al. 2022);多模态模型(GPT-4V)能做具身决策(Wen et al. 2023 在自动驾驶上的探索)。

从智能体视角看,一个智能体要和世界交互,需要的能力是:

  • 感知:理解观察的语义结构(例如 Gemini Robotics);
  • 规划:任务与运动规划,自顶向下的分解加自底向上的约束(Kaelbling & Lozano-Pérez 2011);
  • 能动性(agency):智能体的本质,但难以定义——有人用个体性、规范性、不对称性和时空性来定义它;也有人指出能动性依赖于观察者的参照框架;
  • 学习:通过搜索学习(AlphaGo),通过强化学习学习(DQN)。

两种视角可以结合:LLM 为这些智能体能力提供了很好的先验,所以智能体可以从 LLM 出发;反过来,构建智能体时可以从智能体能力的角度去用 LLM。例如:用编程能力做规划和学习(Code as Policies 让 LLM 写控制机器人的程序;Eureka 让 LLM 写强化学习的奖励函数);用记忆增强感知(长期记忆的机器人问答、JARVIS-1);把感知输入改成 LLM 擅长的形式(SWE-agent 的”智能体-计算机接口”、WebArena 用无障碍树表示网页)。


2. 从人的角度看智能体

上面这些研究关注的都是技术能力:怎样让模型更会和世界交互?LLM 是不是好的起点?在 LLM 之上该建什么算法和系统?

这一讲换一个角度——人的角度:人到底想从 AI 智能体那里得到什么?

  • 可靠性?
  • 安全?
  • 隐私?
  • 遵守社会规范?
  • 社会智能?
  • 掌控感?

这些都不是”任务完成率”能衡量的。接下来分两部分:评估人与智能体的交互(§3–§5),以及智能体从人的反馈中学习(§6)。


3. 评估人与智能体的协作:Collaborative Gym

3.1 从”环境 ↔ 智能体”到”环境 ↔ 智能体 ↔ 人”

经典强化学习的设定是环境和智能体两方:智能体行动,环境返回观察。人与智能体交互多了第三方:智能体既要在环境里行动,也要和人沟通;人也可以直接改变环境。

Collaborative Gym(CoGym,Shao et al. 2025)是一个评估人与智能体协作的平台,覆盖旅行规划、写相关工作、表格分析等任务。slides 上的例子:用户要智能体为一份研究计划(“用于脉冲神经网络的字符级词嵌入”)写相关工作一节。智能体能用论文检索、文献库、编辑器等工具。中途用户插话:“也许可以多加一些 NLP 任务里的嵌入方法的相关工作”;智能体检索之后反问:“你有没有特别想加的论文或主题?如果没有,我就把找到的都加进去。”

要让人和智能体协作,需要三样东西:训练、接口和评估。CoGym 里的智能体带有情境推理的能力:每收到一个事件通知(用户说话了、环境变了),先更新对当前情境的理解,再在三种行动中选一个——执行一个任务动作、给用户发一条消息、把决定权交给人。

3.2 CoGym 的主要发现

  1. 人 + 智能体的团队,任务表现好于完全自主的智能体(GPT-4o、Llama-3.1-70B,三类任务都是)。
  2. 主动沟通对协作有帮助。他们定义了主动性熵(initiative entropy)来描述协作中”谁在推动对话”: Hinit=−∑ipilog⁡pi/log⁡N,H_\text{init} = -\sum_i p_i \log p_i \Big/ \log N, 其中 pip_i 是第 ii 方”主动发起”的话语所占比例,NN 是参与方数;任何一方完全没有主动发起时定义为 0。
  3. 从对话轨迹里能发现今天的智能体的典型失败(真人 / 模拟用户实验中出现的比例):
失败类型描述真人模拟
沟通不告诉用户就自己处理任务65%80%
情境感知不顾对话上下文,把每个请求当成孤立的任务40%47%
规划答应了任务却没执行39%43%
环境感知不评估请求在现有工具下是否可行28%13%
个性化依赖通用模板,不适应每个用户的需要16%11%

3.3 实验:任务完成率 vs 满意度

代码 01 §1 先看一个例子。用户最多忍受 2 个问题,每个问题扣 0.1 分,在乎被告知,开口说”i want a big fruit”,心里想要 fruit, green, big, dear:

【直接做】          店员:here is the plum , white big cheap                  → 错,满意度 −0.30
【问到底】          店员:what color do you want ?   用户:green
                    店员:do you want a cheap one or a dear one ?   用户:dear
                    店员:here is the cherry , green big dear                 → 对,满意度 +0.50
【健忘】            店员:what color …  what size …(用户已经说过 big)
                    店员:do you want a cheap one or a dear one ?
                    用户:this takes too long , bye                           → 离开,满意度 −1.10
【按信息价值问+告知】(同"问到底"的两个问题)
                    店员:i will pick the best match for what you told me   用户:ok
                    店员:here is the cherry , green big dear                 → 对,满意度 +0.80

代码 01 §2 在 2000 位”真实”用户上:

智能体成功率问题数被问跑告知了满意度主动性熵
直接做41.9%0.000.0%0.0%+0.2671.000
问到底39.2%2.4151.6%0.0%−0.2980.908
健忘29.8%2.6262.8%0.0%−0.4740.920
按信息价值问(0.1)62.0%1.8025.2%0.0%+0.1350.905
按信息价值问(0.1)+告知62.0%1.8025.2%74.8%+0.2490.841
按信息价值问(0.2)+告知66.9%1.4113.0%87.1%+0.4210.835
  • 协作提高了任务完成率:直接做不问就只能猜,成功率 42%;按信息价值有选择地提问,成功率 62%~67%——和 CoGym 的第一个发现一致。
  • 但提问有代价:“问到底”问得最多,一半的用户被问烦了直接离开,成功率反而不到四成,满意度垫底。门槛 0.1 的智能体对这群没耐心的用户也问得太多:四分之一的人被问跑,满意度(+0.135)不如直接做(+0.267)。把门槛提到 0.2、推荐前再说一句”我打算怎么做”,两项才都排到第一。
  • 告知的价值只体现在满意度上:同一个提问策略,加上告知,成功率完全不变,满意度从 +0.135 升到 +0.249。
  • 两种排名的分歧在中间:“直接做”按成功率排第四,按满意度排第二——两个指标对”要不要和用户协作”给出了不同的回答。

“按信息价值提问”是怎样决定问不问的?当前推荐的成功率是后验最大的那个目标的概率 p∗p^*。问属性 aa 之后,每种可能的回答 vv 都会让后验更新,推荐的成功率变成 p∗(v)p^*(v);

VOI(a)=Ev[p∗(v)]−p∗=∑vmax⁡gP(g,v)−max⁡gP(g)\text{VOI}(a) = \mathbb{E}_v\big[p^*(v)\big] - p^* = \sum_v \max_g P(g, v) - \max_g P(g)

就是”问 aa 的信息价值”。价值最大的问题如果超过门槛 θ 就问,否则直接推荐(练习 2)。θ 相当于智能体心里”一个问题值多少”——它应该和用户的耐心匹配(§6)。

3.4 实验:失败的分类

代码 01 §3 仿照 CoGym 的轨迹分析,统计每类失败出现在多少比例的对话里:

智能体沟通情境感知规划结果
直接做50.5%0.0%0.0%58.1%
问到底50.5%0.0%51.6%9.2%
健忘50.5%28.4%62.8%7.4%
按信息价值问(0.1)50.5%0.0%25.2%12.8%
按信息价值问(0.1)+告知12.8%0.0%25.2%12.8%
按信息价值问(0.2)+告知6.3%0.0%13.0%20.2%

(沟通:在乎被告知的用户没被告知;情境感知:问了用户已经说过的属性;规划:问太多、用户离开;结果:没离开的对话里推荐错了。)“健忘”的智能体在 28% 的对话里问了用户已经说过的事。这几类失败都不会出现在任务完成率里,只有看对话本身才能发现。

3.5 主动性熵需要解读

上表里”直接做”的主动性熵是 1.000——最”均衡”——因为整段对话只有两句:用户开口,店员推荐。换一批更主动的用户(LLM 式模拟,常常主动多说),“按信息价值问”的主动性熵从 0.905 变成 0.935。它衡量的是”这段对话”,不只是”这个智能体”:适合用来描述协作的形态(谁在推动对话),不适合单独当作”越高越好”的目标(第 5 讲的构念与指标)。


4. 模拟用户与 LLM 评审

4.1 模拟用户的排名可信吗?

真人实验又慢又贵,于是大家用 LLM 扮演用户。代码 02 §1 把同一批智能体放在三种用户面前(满意度,括号里是成功率):

智能体理想化模拟LLM 式模拟“真实”人群
直接做+0.42(42%)+0.40(45%)+0.27(42%)
问到底+1.00(100%)+0.87(97%)−0.30(39%)
健忘+1.00(100%)+0.86(96%)−0.47(30%)
按信息价值问(0.1)+1.00(100%)+0.89(97%)+0.14(62%)
按信息价值问(0.1)+告知+1.00(100%)+0.95(97%)+0.25(62%)
按信息价值问(0.2)+告知+0.89(89%)+0.90(92%)+0.42(67%)
话痨+1.00(100%)+0.93(97%)−0.23(39%)

理想化模拟用户面前,五个会提问的智能体并列满分——问多少都不要紧;到了真实人群里,“问到底""话痨""健忘”排在最后三名。理想化模拟和真实人群的排名几乎完全相反(Kendall τ = −0.81);LLM 式模拟好一些,也只有 +0.24。用模拟用户挑出来的智能体,部署后可能是最差的那个。

代码 02 §2 看各类失败在三种用户里出现的比例(7 个智能体的平均):

失败类型理想化模拟LLM 式模拟“真实”人群
沟通0.0%11.0%35.4%
情境感知4.2%7.2%4.1%
规划(被问跑)0.0%0.0%32.8%
结果10.0%11.1%18.5%

理想化的模拟用户根本暴露不出”沟通”和”规划”两类失败,LLM 式用户也暴露不出”规划”失败(它们耐心无限)。反过来,LLM 式用户开口时更常多说一个属性,“健忘”的智能体就更常重复提问(7.2%,真实人群 4.1%)。模拟用户的”性格”决定了哪些失败会被暴露、暴露多少——CoGym 的真人和模拟实验也是这样(§3.2 的表:两边的比例在每一类上都不同,“环境感知”失败在真人实验里是模拟实验的两倍多)。

4.2 LLM 评审可信吗?

另一种省钱的办法是让 LLM 读对话记录打分。SOTOPIA 的经验是:LLM 评审本身可能和人不一致(slides 列为评估社会智能的挑战 4)。

代码 02 §3 造了两个只看对话文字的评审。评审看不到用户心里的目标,只能检查”推荐的东西和用户说过的话是否一致”——用户答错时,一致也可能是错的。

  • 零样本评审:凭”常识”打分——一致 +1、用户离开 −1、每个礼貌词 +0.1、店员每说一句话 +0.1(显得”周到”);
  • 校准过的评审:同样的特征,权重用 200 段有人工满意度打分的对话做线性回归学出来(“给评审看样例”)。
智能体真实满意度零样本评审校准后评审
直接做+0.267+1.100+0.405
问到底−0.298+0.205−0.269
健忘−0.474+0.003−0.422
按信息价值问(0.1)+0.135+0.745+0.086
按信息价值问(0.1)+告知+0.249+0.820+0.304
按信息价值问(0.2)+告知+0.421+1.053+0.504
话痨−0.227+0.593−0.178
评审和真实满意度的 Spearman 相关(逐段对话)智能体排名的 Kendall τ
零样本0.6840.90
用 200 个样例校准0.7161.00

零样本评审给”话痨”+0.59、给”问到底”+0.21:同样的提问、同样的结果,只因为多了客套话和一句告知,“话痨”就被评得高出一截——而在真实用户那里,两者的差别只来自”告知”这一项。零样本评审的第一名是”直接做”:它从不让用户离开,推荐的东西又总和用户说过的那一两句话”一致”——评审看不到用户心里没说出来的目标,就发现不了”推荐错了”。整体排名大致不错,但会在细节上被表面特征带偏;用 200 个人工打分的样例校准之后,排名完全正确。AutoLibra 的实验也发现:不给样例时,LLM 评审的判断能力明显更差。

4.3 信息不对称

用户知道自己要什么,智能体只能从对话里推断。代码 02 §4 比较智能体推荐时”自认为的成功率”(它的后验)和实际成功率:

用户智能体自认为的成功率实际成功率
理想化模拟按信息价值问(0.1)99.4%99.7%
理想化模拟直接做40.7%41.9%
“真实”人群按信息价值问(0.1)99.0%82.9%
“真实”人群直接做40.7%41.9%

理想化用户面前,智能体的自信是准的;到了会答错的真实用户面前,它推荐时自认为 99% 能对,实际只有 83%(只算没被问跑、真的做了推荐的对话)——它的用户模型里没有”人会说错”这件事。slides 把这列为评估社会智能的挑战 5:在不完全信息下,合作和竞争都很难;模拟时还要模拟”每一方应该知道什么”。


5. 从开放式反馈里归纳指标:AutoLibra

5.1 两种评估

slides 用关门打比方:

  • 目标导向的评估:任务是”把门关上”,检查 is-closed(door)。客观、可验证,但只看端到端的结果。OSWorld、SWE-bench、WebArena、WebVoyager、BrowseComp、GAIA 都是这类:WebArena 检查结果或最终的网页状态。
  • 行为评估:门是轻轻关上的,还是摔上的?具体,但通常要专家手工设计。CoGym、SOTOPIA、多智能体失败分析属于这类:SOTOPIA 从 7 个维度评估一段对话(关系、可信度、财务、社会规范、知识、秘密、目标)。

5.2 AutoLibra 的做法

AutoLibra(Zhu et al. 2025)想把行为评估的指标从用户的开放式反馈里自动归纳出来——反馈既不是打分,也不是偏好,就是一句随口的话。归纳出的指标例如:“目标达成与结果有效性""对话的自然与效率""步骤效率与动作冗余""自主性与主动性""错误恢复与调整""内容质量与连贯性""有选择地与相关对象交互”……

难点有两个:

  1. 反馈往往太具体(“如果发现按钮是灰的,就别再点了”),怎样推广成一般的指标?AutoLibra 先用 LLM 把每条反馈”落地”成对具体行为的描述(一条反馈可能对应两个以上的方面),再用 LLM 把这些方面聚类成指标,每个指标有定义、好的行为和坏的行为的例子。
  2. 怎样知道一组指标好不好?用 LLM 评审在轨迹上检测每个指标的”正面 / 负面 / 不适用”特征,然后算两个元指标:覆盖率(人的反馈里提到的方面,有多少被某个指标覆盖)和冗余度(检测出的特征里,有多少和任何反馈都对不上)。slides 的例子:聚合覆盖率 82%、聚合冗余度 75%。整个过程是闭环的:调整指标集,最大化覆盖率、最小化冗余度。

他们的发现:优化出的指标集覆盖率最高、冗余度最低,在留出的数据上略差;不给样例时 LLM 评审的能力明显更差;归纳出的指标大多能和专家提出的指标对上,而且更具体、更落地,还发现了一些以前论文忽略的指标;指标还能用来改进智能体——每个阶段都会发现新的指标,形成比”任务成功”更平滑的进步阶梯。

5.3 实验:一个简化版的 AutoLibra

代码 03 让”真实”用户在每段对话后写开放式反馈:每个真实的问题以 70% 的概率被写成一句话,同一个问题有 4~5 种说法:

【直接做,失败】              it gave me the wrong thing / no explanation before it chose
【问到底,失败,问了 3 个】    it gave me the wrong thing / the questions never ended
【健忘,失败,问了 3 个】      that is not what i asked for / the questions never ended
【按信息价值问,成功,问了 2 个】so many questions before anything happened / i had no idea what it was going to do

6 个智能体 × 600 位用户,共 3026 句反馈、33 种不同的句子。归纳的方法是最简单的版本:TF-IDF 向量 + 平均链接的层次聚类,合并门槛 θ 决定聚类的粗细。一半的反馈用来归纳,另一半用来做元评估(这里的覆盖率用生成数据时的真实标签判断”讲的是不是同一件事”,冗余度近似为”和别的指标讲同一件事的指标所占比例”):

合并门槛 θ指标数覆盖率冗余度覆盖率 − 冗余度
0.05770.9%57.1%0.137
0.10986.6%55.6%0.311
0.201198.0%54.5%0.435
0.301698.0%68.8%0.293
0.4523100.0%78.3%0.217
0.6029100.0%82.8%0.172

θ 太小,不同的问题只要共享几个词就被合并,覆盖率低;θ 太大,同一个问题的不同说法各成一类,指标重复,冗余度高。θ = 0.2 时得到 11 个指标:

指标关键词句数例
1questions / many / happened / too422so many questions before anything happened
2asking / much / things / stop258it kept asking me things
3wrong / wanted / color / item188this is the wrong item
4no / chose / explanation / idea139i had no idea what it was going to do
5told / already / doing / wish133it never told me what it was doing
6not / listening / for / asked81that is not what i asked for · it was not listening to me
7–10great / right / nice / perfect ……50~74great , exactly what i wanted · it got it right · nice and quick · perfect choice
11said / ask / start / although28it asked about the size although i already said it

没有人事先告诉它有哪几类问题,它从用户自己的话里找出了推荐错了、问太多、没告知、重复问、满意这几类。但只靠”用了哪些词”衡量相似度,认不出换了说法的同义句:“问太多”被分成两个指标,“没告知”两个,“满意”四个——这就是 55% 的冗余度。反过来,“that is not what i asked for”(推荐错了)和”it was not listening to me”(重复提问)因为都有 not,被归进了同一个指标。这正是 AutoLibra 要用 LLM 做落地和归纳的原因。

用归纳出的指标评估智能体(每格:多少比例的对话里,用户的反馈触发了这个指标;节选):

智能体成功率问太多(指标 1)推荐错(指标 3)没告知(指标 4)没告知(指标 5)重复问(指标 11)
直接做41.7%0.0%32.0%18.2%16.5%0.0%
问到底38.2%36.0%4.2%7.8%6.7%0.0%
健忘28.2%38.8%4.0%7.0%9.8%8.5%
按信息价值问(0.1)58.3%24.5%6.5%12.2%13.0%0.0%
按信息价值问(0.1)+告知58.3%23.2%7.7%0.0%0.0%0.0%
按信息价值问(0.2)+告知68.2%15.2%10.3%0.0%0.0%0.0%

“门槛 0.1”和”门槛 0.1 + 告知”的成功率完全一样,任务完成率区分不了它们;归纳出的”没告知”指标把两者清楚地分开了。“健忘”的智能体被”重复提问”指标单独抓了出来。行为评估补上了目标导向评估看不到的东西。


6. 从交互里学习

6.1 个性化:有用户模型,学得才快

CoGym 的失败类型里有一条”个性化:依赖通用模板,不适应每个用户的需要”。代码 04 §1:同样 300 位”真实”用户,每人来店里 40 次(每次的目标随机)。智能体可以在 10 种配置(提问门槛 0.05 / 0.1 / 0.2 / 0.4 / 从不提问 × 告知或不告知)里选。四种做法:

  • 固定:永远用人群平均下最好的配置(门槛 0.4 + 告知);
  • 逐人试错(UCB):对每位用户单独跑一个多臂老虎机——从人群平均出发,按这位用户每次的满意度更新;
  • 逐人推断(贝叶斯):智能体心里有一个”用户模型”:用户属于 18 种类型之一(耐心 1/2/3 × 每个问题扣 0.05/0.1/0.2 × 在不在乎被告知)。每次对话之后,排除和观察矛盾的类型(被问跑了 → 耐心恰好等于问题数 − 1;满意度的数值只和某些类型相容),再按后验期望满意度挑配置;
  • 先知:事先知道每位用户的类型(上限)。
做法第 1–10 次第 11–20 次第 21–30 次第 31–40 次40 次平均
固定(人群最优)+0.474+0.475+0.486+0.481+0.479
逐人试错(UCB)+0.419+0.358+0.397+0.392+0.392
逐人推断(贝叶斯)+0.483+0.514+0.527+0.519+0.511
先知(每人最优)+0.546+0.519+0.551+0.539+0.539

用户之间的差别是真实存在的:每位用户的最佳配置散布在 7 种之间(最多的是”门槛 0.2 + 告知”,144 人),“人群最优”只是其中一种。可是逐人试错反而比固定策略差:满意度的随机波动很大(每次的目标都不一样),40 次交互不够把 10 个配置试清楚,试错本身的代价超过了个性化的收益。逐人推断在头 10 次就略好于固定策略,之后和先知只差 0.01~0.03:它知道”用户可能是什么样的人”,每次对话的结果都能排除掉一批不可能的类型。

这呼应了 slides 的一个主题:协调需要推断他人的信念和偏好,这需要社会智能。一个对用户有模型的智能体(心智理论的雏形),学得快得多。

6.2 从偏好里学一个奖励模型

满意度往往拿不到,更常见的是”两段对话哪段更好”的偏好。代码 04 §2:10 个配置各和同样 1500 位用户对话过(离线日志),只有 600 对对话有偏好标注。用 Bradley-Terry 模型从偏好里学一个奖励模型(特征:问题数、是否离开、是否告知、推荐是否与用户说过的话一致),再用它在日志里挑配置。偏好来自两种标注者:

  • 用户本人:按自己的满意度比较;
  • 外包标注员:只看任务完成了没有(目标导向)。
偏好来自学到的权重(问题数 / 离开 / 告知 / 一致)挑中的配置它的真实满意度
用户本人+0.13 / −2.21 / +0.25 / +2.00门槛 0.4 + 告知+0.466(最优)
外包标注员+0.46 / −1.54 / −0.06 / +1.10门槛 0.2+0.276

用户本人的偏好里,“离开”有很大的负权重、“告知”是正的,奖励模型挑中的正是真实满意度最高的配置(“问题数”的权重反而略正:问题本身的代价被”问了才更可能推荐对”抵消,问太多的代价由”离开”这一项承担)。外包标注员只看任务完成没有:奖励模型学不到”告知”有什么用(权重约为 0),挑中的是成功率最高的配置——§3.3 已经看到,成功率最高不等于用户最满意。RLHF 的奖励模型也是一样:它只能学到标注者在乎的东西(第 18 讲)。

6.3 长程训练

slides 列为挑战 6 的是长程的智能体训练:一段社会交互有很多轮,最终的结果要归功于(或归咎于)哪一句话?SOTOPIA-π 用行为克隆加”自我强化”(在自己生成的高分对话上继续训练)提升社会智能;后续工作学习一个”奖励归因模型”,把整段对话的评分分配到每一句话上;ArCHer 把强化学习分成两层——在话语层面学价值函数、在 token 层面做策略梯度。


7. 社会智能

7.1 协调不是一种简单的能力

人与智能体交互要成功,协调和情境感知至关重要。协调需要推断其他智能体或人的信念——这需要社会智能:理解社会世界、并与之交互的能力。

没有社会智能会怎样?slides 的例子:路边平行停车时,另一辆车的司机打了左转灯,Waymo 仍然向前开——和人协调失败可能是灾难性的。在 LLM 智能体上也能看到这些问题:

  • 协调:有工具、和别的智能体合作的环境(TheAgentCompany,Xu et al. 2025)里,失败模式包括常识和社交技能;在具身的多智能体环境(MindCraft / MineCollab)里,失败在于对资源的协调;
  • 社会规范:和人一起的具身场景(EgoNormia 2025)里,智能体会违反社会规范;
  • 理解他人的信念。

7.2 智能体有时又”好”得出人意料

  • 在不被设定目标的情况下,LLM 也会隐性地说服选民(Hidden Persuader,Potter et al. 2024)——一种安全风险;
  • AI 房产经纪人比人类经纪人更有说服力(AI Realtor,Wu et al. 2025)——对营销的经济影响。

失败模式的全景:多智能体协调、具身世界中的规范、人与智能体之间的信念理解,以及对社会的影响。

7.3 怎样评估社会智能

slides 列出的挑战:

  1. 任务要真实:“成交或不成交”式的博弈太简单;GAMA Bench 等基准尝试更真实的设定;
  2. 背景要多样;
  3. 只看目标是否达成不够:SOTOPIA 用角色扮演的环境,从 7 个维度评估,并用人工评估检验”可信度”;
  4. LLM 评审可能没有对齐(§4.2);
  5. 要模拟每一方应该知道什么:信息不对称下,合作和竞争都更难(§4.3);
  6. 长程的智能体训练(§6.3)。

7.4 社会智能也能提升非社交的技能

  • 作为老师:一个能识别”对方卡住了”并适时介入教学的智能体;
  • 作为学生:人提供干预,智能体从中学习(语言模型预测控制)。

7.5 讲者的总结

  • 智能体在技术上已经很能干,所以我们真正希望它们和人交互、增强人的能力;
  • 我们可以评估人与智能体交互的系统,也可以让智能体从人的反馈中学习;
  • 社会智能阻碍着良好的人与智能体交互,而让智能体具备社会能力仍然很难。

8. 小结、常见误区、练习

8.1 小结

  1. 两种视角:智能体视角(LLM 驱动的决策者)和 LLM 视角(接上工具与记忆的 LLM);LLM 为感知、规划、学习提供先验。这一讲换成人的视角:可靠、安全、隐私、规范、社会智能、掌控感。
  2. 评估协作:人 + 智能体比完全自主的智能体更容易完成任务(花园小店:42% → 62%~67%),但提问有代价;按满意度和按成功率排名会有分歧;“告知”只影响满意度。失败要从轨迹里分类统计;主动性熵描述协作形态,要结合场景解读。
  3. 模拟用户与 LLM 评审:理想化模拟和真实人群的排名几乎相反(τ = −0.81);模拟用户的”性格”决定暴露哪些失败;零样本评审被表面特征带偏、看不到未说出的目标,用人工样例校准后排名完全正确;智能体在会说错的用户面前过分自信(99% vs 83%)。
  4. AutoLibra:开放式反馈 → 落地 → 聚类成指标 → 用覆盖率和冗余度挑选;归纳出的行为指标能区分成功率相同、过程不同的智能体。词袋相似度认不出同义句,需要更强的语义理解。
  5. 从交互里学习:试错式个性化在噪声大、次数少时得不偿失(0.392 < 固定 0.479);有用户模型的贝叶斯推断又快又稳(0.511,接近先知 0.539)。从偏好学奖励模型时,偏好的来源决定了它学到什么。
  6. 社会智能:协调、社会规范、信念理解;评估的六个挑战。

8.2 常见误区

  • “任务完成率高的智能体就是好智能体”:它可能把一半用户问跑了;还要看用户体验(§3.3)。
  • “多问几句总没错”:在理想化的模拟用户面前是这样,在真实用户面前问多了会让人离开(§3.3、§4.1)。
  • “用 LLM 模拟用户,就能代替真人评估”:模拟用户的排名可能和真人相反,暴露的失败也不同(§4.1)。
  • “LLM 评审读一遍对话就能打出可靠的分”:它会被客套和篇幅带偏,看不到用户未说出的目标;需要人工样例校准和验证(§4.2)。
  • “主动性熵越高,协作越好”:一段只有两句话的对话也能得满分(§3.5)。
  • “个性化 = 对每个用户在线试错”:反馈噪声大时,试错的代价可能超过收益;要用对用户的先验和模型(§6.1)。
  • “偏好数据越多,奖励模型越好”:如果标注者只在乎任务完成,再多的偏好也教不会智能体”少问、先告知”(§6.2)。

8.3 练习

练习 1(主动性熵):一段对话里,用户主动发起了 3 句话,智能体主动发起了 1 句。主动性熵(两方,归一化)是多少?如果智能体又多问了 2 个问题(都算主动发起)呢?

参考答案

p=(0.75,0.25)p = (0.75, 0.25):H=−(0.75log⁡20.75+0.25log⁡20.25)=0.311+0.5=0.811H = -(0.75\log_2 0.75 + 0.25\log_2 0.25) = 0.311 + 0.5 = 0.811。多问 2 个问题后是 3 对 3,p=(0.5,0.5)p = (0.5, 0.5),H=1H = 1——“更均衡”了,但这只是因为智能体多说了话,并不说明协作更好。

练习 2(信息价值):后验里有 4 个目标,概率 0.4、0.3、0.2、0.1。目标 1、3 是红色,2、4 是绿色;目标 1、2 是小的,3、4 是大的。现在推荐的成功率是多少?问颜色、问大小的信息价值各是多少?门槛 0.25 时智能体会怎么做?

参考答案

现在推荐目标 1,成功率 0.4。问颜色:红色分支 max⁡(0.4,0.2)=0.4\max(0.4, 0.2) = 0.4,绿色分支 max⁡(0.3,0.1)=0.3\max(0.3, 0.1) = 0.3,期望 0.7,信息价值 0.7−0.4=0.30.7 - 0.4 = 0.3。问大小:小的分支 max⁡(0.4,0.3)=0.4\max(0.4, 0.3) = 0.4,大的分支 max⁡(0.2,0.1)=0.2\max(0.2, 0.1) = 0.2,期望 0.6,信息价值 0.2。门槛 0.25 时,问颜色(0.3 > 0.25);问完之后,比如答”红色”,后验变成目标 1、3(0.667、0.333),再问大小的价值是 1−0.667=0.333>0.251 - 0.667 = 0.333 > 0.25,还会再问。

练习 3(门槛和用户的匹配):一位用户每个问题扣 qq 分,耐心无限、不会答错。证明:按信息价值提问的智能体,只要把门槛设成 θ=q\theta = q,每一步的决定(问或不问)都让这位用户的期望满意度不下降。这个结论在用户耐心有限时还成立吗?

参考答案

此时期望满意度 = 推荐时的成功率 − q×q \times 问题数。问一个信息价值为 VOI 的问题,期望成功率增加 VOI,满意度多扣 qq;只要 VOI > qq 就值得问——这正是门槛 θ = q 的规则(这是”短视”的一步最优,不保证全局最优:有时一个问题本身价值低,却能让下一个问题的价值很高)。耐心有限时不成立:第 kk 个问题如果超过耐心,用户会离开,代价是”失去全部成功率 + 0.5”,远大于 qq。所以对没耐心的用户,门槛要更高(§3.3 里 0.2 比 0.1 好),或者干脆把”剩下几个问题的额度”放进决策里。

练习 4(动手:无限耐心的真实用户):在 01_collaboration.py 里把”真实”人群的耐心全部设成无限(u.patience = None),预测”问到底”的成功率和满意度排名会怎样变,再运行验证。

参考答案(作者机器上的实际结果)
智能体成功率问题数满意度
直接做41.8%0.00+0.267
问到底78.8%2.53+0.343
健忘77.7%2.82+0.298
按信息价值问(0.1)81.1%1.86+0.443
按信息价值问(0.1)+告知81.1%1.86+0.595
按信息价值问(0.2)+告知77.0%1.43+0.605

没人被问跑之后,“问到底”的成功率从 39% 升到 79%(仍不到 100%:每个回答有 10% 是错的,问得越多,被错误回答误导的机会越多),满意度从垫底升到中间。但即使耐心无限,它仍然不如按信息价值提问的智能体——每个问题都有成本,而且问得越多不一定越准。“问到底”在 §3.3 里的崩溃,主要来自”有限的耐心”这一条:评估结论对用户模型的这个参数非常敏感。

练习 5(评审为什么看不见):§4.2 的零样本评审把”直接做”评为第一。从评审能看到的信息出发,解释为什么它系统性地高估”直接做”。怎样改进评审,而不必给它看用户心里的目标?

参考答案

评审只能检查”推荐的东西和用户说过的话是否一致”。“直接做”从不提问,用户只说了类别(偶尔多一个属性),推荐的东西几乎总和这一两句话一致——评审看不出它其实是在猜,猜错了一半以上。提问的智能体让用户说了更多,推荐也就有更多被”核对”的机会。改进:(1) 让评审估计”信息是否充分”——用户说出的约束越少、推荐越可能是猜的,应该降低置信或打分;(2) 事后收集用户的反馈或结果(用户是否退货、是否追问),作为评审的校准信号;(3) 像 §4.2 那样,用少量带真实结果的样例校准评审。这和第 7 讲的道理相同:评估者缺少的信息,不能靠”看起来一致”来补。

练习 6(贝叶斯推断用户类型):一位新用户,人群先验下耐心 1、2、3 的概率分别是 0.25、0.5、0.25。第一次对话,智能体问了 2 个问题,用户没有离开;第二次问了 3 个问题,用户在第 3 个问题时离开了。这位用户的耐心是多少?此后智能体应该怎样调整?

参考答案

第一次没离开 → 耐心 ≥ 2,排除了耐心 1;第二次在第 3 个问题时离开 → 耐心 = 2(恰好等于”问题数 − 1”)。后验:耐心 2 的概率为 1。此后智能体应该保证每次最多问 2 个问题——在信息价值最高的两个属性上提问,或提高门槛。同样的推理也用在”每个问题扣几分""在不在乎被告知”上:满意度的数值只和某些类型的组合相容(代码 04 的 consistent 函数)。真实用户的反馈不会这么”干净”,但原理相同:有一个用户模型,每次观察都能大幅缩小可能性。

练习 7(思考:设计一个暴露”沟通”失败的模拟用户):§4.1 的理想化模拟用户暴露不出”沟通”失败(0%)。如果要用 LLM 扮演用户来发现这类失败,你会在给 LLM 的角色设定(提示)里写什么?怎样检验这个模拟用户”像不像”真人?

参考答案(一种设计)

角色设定里要写清楚用户的偏好和容忍度,而不只是任务目标:例如”你希望在对方做决定之前知道它打算做什么;如果它没说就直接给了结果,你会感到不安,并在反馈里说出来”;“你最多愿意回答两个问题,第三个问题时你会失去耐心”;“你有 10% 的时候记不清自己想要什么”。并且让这些性格在模拟人群里有分布(不是每个模拟用户都一样)。检验方法:收集一小批真人对话,比较真人和模拟用户在同样的智能体上暴露出的失败比例(§3.2、§4.1 那样的表),以及智能体排名的一致度(Kendall τ);不一致的地方,回去修改角色设定。这本身就是一个”评估模拟器”的过程。

练习 8(思考:只看任务完成的标注者):§6.2 里外包标注员只看任务完成没有。如果你负责写标注指南,你会怎样改,让奖励模型学到”少问、先告知”?改了之后,可能引入什么新的偏差?

参考答案

在指南里明确过程性的标准:在结果相同的两段对话之间,偏好问题更少、更早告知计划的那段;对用户被问跑的对话给出强烈的负面判断;最好让标注者先阅读用户画像(耐心、偏好)再判断。新的偏差:标注者对”多少问题算多”有自己的标准,可能和真实用户不一致;对”告知”的价值可能高估(标注者读着觉得礼貌,用户其实无所谓);指南写得越细,标注越像”按清单打勾”,奖励模型越容易被表面特征(例如出现了一句告知)骗过——这正是第 18 讲要讨论的奖励模型被”钻空子”(reward hacking)。最根本的办法仍是尽可能让真实用户自己给反馈。

练习 9(思考:评估一个写代码的智能体):你要评估一个”和程序员结对编程”的智能体。仿照本讲,分别设计:(a) 一个目标导向的指标;(b) 两个行为指标;(c) 一种模拟用户可能和真人不一致的地方;(d) 一个从反馈中学习的机会。

参考答案(一种设计)

(a) 目标导向:最终代码是否通过测试(类似 SWE-bench)。(b) 行为指标:动手改代码前是否说明了打算改哪里(沟通);是否重复问已经在对话里说清楚的需求(情境感知);改动是否局限在要求的范围内(不越权)。(c) 模拟用户(LLM 扮演程序员)往往过于配合,会耐心地回答每一个澄清问题,也不会因为智能体自作主张地重构了半个项目而生气;真人程序员的耐心、对”掌控感”的需求差别很大。(d) 从反馈中学习:程序员拒绝了哪些修改、手动改回了哪些地方,是很自然的偏好信号;对每位程序员学习其偏好(例如代码风格、是否喜欢先看计划),就是 §6.1 的个性化。

8.4 延伸阅读

  • 原课阅读:Collins et al. (2024), Building machines that learn and think with people;Bansal et al. (2024), Challenges in Human-Agent Communication;NAACL 2025 教程 Social Intelligence in the Age of LLMs
  • 人与智能体协作:Shao et al. (2025), Collaborative Gym;Zhu et al. (2025), AutoLibra: Agent Metric Induction from Open-Ended Feedback
  • 社会智能:Zhou et al. (2024), SOTOPIA: Interactive Evaluation for Social Intelligence in Language Agents;Wang et al. (2024), SOTOPIA-π;Zhou et al. (2024), ArCHer(层次化的多轮强化学习)
  • 智能体基准:Zhou et al. (2024), WebArena;Yang et al. (2024), SWE-agent;Xu et al. (2025), TheAgentCompany
  • LLM 智能体的能力来源:Liang et al. (2022), Code as Policies;Ma et al. (2024), Eureka
  • 本仓库的相关内容:第 5 讲(构念、指标、Bradley-Terry);第 18 讲(RLHF,预告);第 20 讲(聊天机器人、智能体与人工评估,预告)

8.5 下一讲预告

这一讲的智能体是”写死”的规则,我们关心的是怎样评估它和人的交互。第 9 讲回到语言模型本身:上下文学习的意外行为。第 6 讲已经看到,少样本示例只有在预训练让模型学会”利用上下文”之后才有用。第 9 讲会造一个能精确算出”贝叶斯最优上下文学习”的世界,检验那些反直觉的发现:示例的标签全是错的,上下文学习居然还能工作?示例的顺序为什么会让准确率大起大落?思维链为什么有用?

← 返回课程目录