1 RL时代的agent
- 人为定reward function
- 不同task不同的参数
2 LLM视角下的AI agent

- agent就是LLM
- 用文字(现在有些多模态任务可以直接是图片/语音)表述环境
- action也是文字,需要某种方式转换为实际环境中的action

- 从语言模型的角度看,依靠语言模型已经有的"文字接龙"的能力,看看能不能直接把他们当作agent来使用
- 相当于不train,只是语言模型的一种应用


- LLM可以将任何文字作为observation和action
- 有些问题解决不了的时候,可以调用各式各样的工具,解决之前解决不了的问题
2.1 Generative Agents: Interactive Simulacra of Human Behavior 202304 arxiv

- 里面的npc都是用语言文字来运行的

- 每个npc都有人为设定的目标,npc都会观察环境咨询(文字)
- 根据这些observation做出自己的动作(输出文字)
- 需要一个转译器把文字转换成动作(在这里对应的agent真走到床头)
2.2 AutoKaggle: A Multi-Agent Framework for Autonomous Data Science Competitions 202410 arxiv

- 提供目标的文字描述
- 提供LLM训练资料(observation 1)
- 根据observation 写程序(action 1)
- 得到训练结果(准确率等)(observation 2)
- 根据准确率(observation 2)重新写程序


- 刚才是回合制的互动
- 在很多地方action还没执行完的时候,外在环境就变了,需要立刻改变行动(比如语音对话)
- 对话可能会互相打断/互相提供回馈
- 有时候需要马上停下来开启下一轮对话
Full-Duplex-Bench: A Benchmark to Evaluate Full-duplex Spoken Dialogue Models on Turn-taking Capabilities 202503 arixv------衡量现在语音模型的互动能力

3 根据经验调整行为


- 机器学习时代:需要调整参数
- 但现在不train LLM
- 那LLM参数,如何改变行为?
- 直接把错误的信息给他当作下一轮的observation,他就会写对了
- ------因为对于LLM来说,不同的输入,输出的信息不同
- 当现在提供的输入信息是报错的时候,接龙的内容就可能是对的

- 比如我每次执行一个action,都得到一个observation,假如我要在第10000轮才能得到最终的答案
- 理论上来说,我把之前所有的observation和action当作记忆,最终能得到需要的答案
- 但受到算力等的限制,我无法一次性将所有之前的observation和action当作记忆提供给LLM

- 此时就需要一个类RAG的机制,从memory里面提取有关的observation和action(经验),当作下一轮action可以看到的observation
StreamBench: Towards Benchmarking Continuous Improvement of Language Agents 202406的结论是,提供给正向的经验是有用的,很多时候提供负向的经验反而在"帮倒忙"

但倘若我把所有无关紧要的经验全部放在memory里面,可能会把observation塞爆

- 解决方法是可以设计一个write模组,决定什么数据write进memory,什么数据丢弃
- write可能也是一个LLM,或者ai agent自己
- 根据observation和action,问这个经验值不值得被记录进memory

- 当然也可以设计一个reflection模块,对记忆中的数据做更high level 的重新整理'
- 得到一些总结,反思后的观点

比如GraphRAG和HippoRAG,对memory进行reflection之后构建知识图谱
4 ai agent使用工具





工具只要使用就可以,内部怎么做的不用管(举了一个肥宅修电脑的比喻。。。)
4.1 如何使用工具?

这是一种通用的LLM调用工具的方法
问题(user prompt)连同前面的system prompt给语言模型
如果LLM觉得要用指令的画,就会输出调用这个工具对应的指令
但此时指令也是一串文字,还无法真正地调用对应的功能

- 需要自己帮程序把"桥梁"搭建好(调用)
- 将<tool>里面的内容丢给称作temporature的function,得到output的结果
- 怎么调用,怎么输出,都是Agent开发者自己要定好的流程

4.2 调用语音工具
Speech-Copilot: Leveraging Large Language Models for Speech Processing via Task Decomposition, Modularization, and Program Generation 202407
- 如果不做特殊处理,纯文字模型是回答不了涉及语音的问题的
- ------>让文字模型使用一堆语音相关的工具
- 需要叙述每个工具是什么作用
4.3 如果工具过多怎么办?

OctoTools: An Agentic Framework with Extensible Tools for Complex Reasoning 202502
类似于工具的RAG


CRAFT: Customizing LLMs by Creating and Retrieving from Specialized Toolsets 202309
语言模型也可以自己打造工具(自己写一个function,当作工具放到工具包里面)
4.4 工具自己也会犯错------那LLM知不知道工具在犯错


看起来有一定程度的判断力

4.4.1 什么样的外部知识比较容易说服LLM?

How faithful are RAG models? Quantifying the tug-of-war between RAG and LLMs' internal prior 202404
- 首先先问LLM,药物的最大剂量是多少
- 得到内部知识是20mg
- 提供LLM医学报告
- 最大剂量是30,60时,LLM选择相信RAG(外部知识)
- 最大剂量是3,300时,LLM选择相信自己的内部知识
- ------>如果外部只是知识和内部知识的差距过大,那就不会相信外部知识
- ------>模型本身对内部信息的信念强度,对于发生动摇的可能性有影响

- 模型倾向于相信日期较新的外部知识
5 LLM有能力做计划么?

- 直接让语言模型产生规划(看到第一个observation后,让LLM生成计划)
- 把plan放到observation里面,当作输入的一部分,

- 可是,外部环境有随机性,导致原有计划不一定能正常进行
- 每一次observation后,重新思考一下要不要修改计划
- 如果需要修改的话,重订计划
5.1 TravelPlanner


直接让LLM调用工具生成规划是不太现实的
Large Language Models Can Solve Real-World Planning Rigorously with Formal Verification Tools 说已经解决了这个问题


5.2 强化AI Agent的规划能力

遍历所有可能的动作路线
但是这样需要遍历的时间太长

解决方法是不尝试一些看起来没有希望的路径
模型自己问自己:这一条路径还有必要继续搜么?

遍历+去掉不可能的路径(LLM的置信度低于某个阈值就不做了)
Tree Search for Language Model Agents 202407arxiv

这样遍历的一个缺点是,有些动作一旦做了就无法回溯(比如我定了个披萨,即使后续发现这个不是最佳路线,也无法撤回订单了,因为人家都已经做了)

一个想法是,之前所有的"遍历"都是模型自己"脑海里"的模拟


这就是一个案例:让模型自己去想做了某个action之后会发生什么