在接下来的几年里,它们将彻底改变我们的生活方式,无论是线上还是线下。 -- Bill Gates
如果一篇论文提出了某种不同的训练方法,OpenAI内部会嗤之以鼻,认为都是我们玩剩下的。但是当新的AI Agent论文出来时,我们会十分认真且兴奋地讨论。普通人、创业者和极客在构建AI Agents方面相比OpenAI这样的公司更有优势。 --- OpenAI联创Andrej Karpathy
1. AI Agents: AI 前沿
当前AI Agents 成为继大语言模型(LLMs)之后又一AI热点。
- 2023.4,以AutoGPT为代表的Autonomous Agent 热度快速蹿升,AutoGPT成为GitHub历史上star数增长最快的项目(154K)。同期比较受关注的类似项目包括:TaskMatrix.ai,HuggingGPT, AgentGPT, Toolformer, BabyAGI等等。
- 2023.6,OpenAI 应用研究主管 Lilian Weng 发布博文《LLM Powered Autonomous Agents》进一步推动了agent的热度,Lilian提出Agent = 大语言模型+记忆+规划技能+工具使用。
- 多Agent框架相继发布,相对于单一Agent框架能够更好地解决复杂问题。目前比较火的多Agent框架包括:Camel(4月发布,3.4k star), MetaGPT(8月发布,29.7k star), AutoGen(9月发布,微软团队,13.6k star)
- 2023.11.6,OpenAI DevDay,推出其官方Agent开发框架Assistant API,赋能开发者更加高效方便地基于GPT模型进行的Agent开发。
AI 的研究方向从最初的启发式地设计,经历特征设计的机器学习时代,网络结构设计的深度学习时代, 追求规模的大语言模型时代,到现在的复杂任务为导向的AI Agents时代。
从另一个角度看,AI Agents是划时代的:Deep learning 是AI 感知发展阶段, LLMs是AI的认知发展阶段,AI Agents 则是在此基础上的行动执行阶段,也即完成了“知行合一”。
2. AI Agents: 为任务而生
Agents原义是代理, “代理”一词意思是“代为处理事务的(人或物)”。由此我们归纳一下在机器学习领域Agents的含义:基本可解释为:Agents是在与环境交互过程中,实现某项任务的一套解决方案。
Agents的复杂程度各不相同,一个简单的恒温器可以是一个 Agent,一台扫地机器人,一个人,甚至一个国家也可以是 Agent。
2.1 AI Agents是智能地处理任务的智能体
本文关注的是AI Agents或称Autonomous AI Agents,或更具体地,主要讨论大语言模型驱动的 Agents。AI Agents的基本思想是,通过在一定的环境中感知、思考和行动,来实现特定的目标。AI Agents 可以在不需要或极少人类干预的情形下,完成相对复杂的任务。当前, 为体现Agents中智能的部分,(AI) Agents 大多译为“智能体”。
不过,在大模型出现之前,AI Agents 的应用进展缓慢,AI Agents 通常只能完成相对简单的任务,或一项复杂任务中的一步或几步简单子任务。因为其本质属于AGI(通用人工智能)范畴,或者说只有AGI的技术进步才能推动AI Agent 技术进步。因此,在LLMs的AGI能力的初步显现,使得AI Agents 已经初步具备了完成一项复杂任务的多步子任务或完整任务的能力。
LLMs是一类基于深度神经网络架构(主要为Transformer架构),通过学习大规模语料库中的文本数据,捕捉到单词、短语和句子之间的语义和语法规律。建立起强大的语言理解和表达能力的模型。比较熟悉的有ChatGPT, LLama, 文心一言等等。 正是LLMs这种具有强大的语言理解和表达能力模型的出现,使得AI Agents成为当前学术界与工业界最热衷追逐的对象。因其潜力无限。
AI Agents 的理想状态应该具备像人一样,甚至强于人类的任务完成能力。其应该可以接收各种可用信息,并对信息进行消化总结,学习并沉淀成有用的知识,为后续的决策、行动提供帮助。而且应该可以根据环境交互,制定计划,并在不确定情况中做出决策。
2.2 AI Agents 具有感知、认知、决策、行动的闭环架构
可见感知环境、自主决策、具备行动能力,设定明确的目标和任务,适应环境及学习能力,都是AI Agents 的关键特点。
请注意,这是理想状态的AI Agents,具体有很高的智能,是各方努力的方向,但也应该知道,根据场景、成本、任务复杂度等判断,AI Agents 有时也不需要这么高的智能化的。根据AI Agents的能力水平与复杂度,AI Agents 可分为:
- 简单反射智能体(Simple Reflex Agents) 在行动选择上依赖于当前的感知和条件规则,而不需要事先建立模型或依赖先前的信息。
- 基于模型的反射智能体(Model-Based Reflex Agents)不仅根据当前感知的情况,还会追踪其感知历史,并利用这些信息来指导行动选择。
- 基于目标的智能体(Goal-Based Agents)一种高度适应性强的实体,利用知识和搜索算法来选择能够最佳实现其目标的选项。意味着当环境发生变化或者任务要求发生改变时,Agents可以通过更新其知识库和调整搜索算法来适应新的要求。这种灵活性使得基于目标的Agents能够适应复杂和动态的环境,并具备处理各种任务的能力。
- 基于效用的智能体(Utility-based agents)一种根据其目标做出决策并评估多个场景以最大化预期效用函数的Agents方法。基于效用的智能体被认为是一种理性智能体,特别在面对复杂和不确定的情况下具有重要作用。这种Agents能够考虑多种因素和潜在结果,并通过比较效用价值来做出最优决策。通过权衡不同的选择并选择那些能够最大化预期效用的行动。
- 学习智能体(Learning Agents)能够利用当前和以前的经验,避免不必要的行为,并学习新的选项以提高性能。此种类型Agents能够将感知能力整合到早期未见的环境观察中,并将其存储为内部状态,从而为未来的决策和行动提供有用的信息。因此,Learning Agents 不仅仅是执行任务,还包括研究和规划。
- 多智能体(Multi Agents) 多种智能体协同合作,处理任务。
2.2.1 Perception 感知模块
感知模块是AI agent接收环境交互信息的模块,其格式可以是文本(可以自然语言对话文本,代码,表格或位置信息等等任何可转化为文本的信息)、图片、音频、视频等一种或多种。这些信息是环境作用Agent的媒介,用于触发Agent工作。如果mini-gpt4; GPT4等。
2.2.2 Knowledge知识模块
Knowledge是用以记录Agent与环境交互所需要的所有额外信息,是AI Agents 智能的重要组成部分。
Knowledge 可以包括Agent 之前与环境交互的先验经验、记忆或知识;可以包括环境的画像特征(如与Agent交互对象,是一个人,那么环境画像可能包括此人的爱好,年龄,受教育程度等等);可以包括Agent自己的设定,如Agent应用的场景、作用,个性信息等;也可以包括当前世界信息,比如当前时间,当前天气,或当前发生地任何可能事件。
2.2.3 Brain 认知模块
Brain是AI或者说LLM主要起作用的模块,是AI Agents 的认知(执行)模块。
Brain或者说LLM(可能是一个LLM或多个LLMs协作)需要提取环境与Knowledge的有用信息;需要根据以上信息了解接下来的主要任务或目标; 需要根据已有信息、目标以及可用技能或工具,制定计划。这个计划可以是完整的,从开始到结束,每一步都已经定制完整,也可以是制定一步或几步,然后执行,再根据执行后的中间结果再作下一步思考,计划,直到目标完成或过程不可进行; 根据交互结果反思、提取更新Knowledge和Skills.
2.2.4 Skills技术模块
AI Agents 的技能模块,技能模块包括AI Agents 可利用的所有工具,比如计算器,机械手臂等,也可包含一些习得技能,比如骑自行车,做红烧排骨等这样的技能。
2.2.5 Plan计划模块:
计划是由Brain模块制定的接下来Agent的行为地图,如上所说,这个计划可以是完整的,也可以是一部分,然后根据接下来Agent行动产生的中间结果再进行完善(如图16 HuggingGPT)。
3. 炙手可热的AI Agents 项目
3.1 Auto-GPT
AutoGPT 的核心逻辑是一个 Prompt Loop,步骤如下
- AutoGPT 基于一定策略自动组装 Command Prompt ,这些首次会包含用户输入的 Name, Role和Goals
- Command Prompt 的目标不是为了拿到最终结果,而是通过 GPT Chat API(对应界面Thinking 的过程)返回下一步的 Command (包含name和arguments, 如browser_website(url = "www.google.com") )
- 这些 Command 都是可扩展的,每一种命令代表一种外部能力(比如爬虫、Google搜索,也包括GPT的能力),通过这些 Command 调用返回的 Result 又会成为到 Command Prompt 的组成元素,
- 回到第 1 步往复循环,直到拿到最终结果结果(状态为“compelete”)。
AutoGPT的prompt 内容
You are Guandata-GPT, 'an AI assistant designed to help data analysts do their daily work.'
Your decisions must always be made independently without seeking user assistance. Play to your strengths as an LLM and pursue simple strategies with no legal complications.
GOALS:
1. 'Process data sets'
2. 'Generate data reports and visualizations'
3. 'Analyze reports to gain business insights'
Constraints:
1. ~4000 word limit for short term memory. Your short term memory is short, so immediately save important information to files.
2. If you are unsure how you previously did something or want to recall past events, thinking about similar events will help you remember.
3. No user assistance
4. Exclusively use the commands listed in double quotes e.g. "command name"
Commands:
1. Google Search: "google", args: "input": "<search>"
2. Browse Website: "browse_website", args: "url": "<url>", "question": "<what_you_want_to_find_on_website>"
3. Start GPT Agent: "start_agent", args: "name": "<name>", "task": "<short_task_desc>", "prompt": "<prompt>"
4. Message GPT Agent: "message_agent", args: "key": "<key>", "message": "<message>"
5. List GPT Agents: "list_agents", args:
6. Delete GPT Agent: "delete_agent", args: "key": "<key>"
7. Clone Repository: "clone_repository", args: "repository_url": "<url>", "clone_path": "<directory>"
8. Write to file: "write_to_file", args: "file": "<file>", "text": "<text>"
9. Read file: "read_file", args: "file": "<file>"
10. Append to file: "append_to_file", args: "file": "<file>", "text": "<text>"
11. Delete file: "delete_file", args: "file": "<file>"
12. Search Files: "search_files", args: "directory": "<directory>"
13. Evaluate Code: "evaluate_code", args: "code": "<full_code_string>"
14. Get Improved Code: "improve_code", args: "suggestions": "<list_of_suggestions>", "code": "<full_code_string>"
15. Write Tests: "write_tests", args: "code": "<full_code_string>", "focus": "<list_of_focus_areas>"
16. Execute Python File: "execute_python_file", args: "file": "<file>"
17. Generate Image: "generate_image", args: "prompt": "<prompt>"
18. Send Tweet: "send_tweet", args: "text": "<text>"
19. Do Nothing: "do_nothing", args:
20. Task Complete (Shutdown): "task_complete", args: "reason": "<reason>"
Resources:
1. Internet access for searches and information gathering.
2. Long Term memory management.
3. GPT-3.5 powered Agents for delegation of simple tasks.
4. File output.
Performance Evaluation:
1. Continuously review and analyze your actions to ensure you are performing to the best of your abilities.
2. Constructively self-criticize your big-picture behavior constantly.
3. Reflect on past decisions and strategies to refine your approach.
4. Every command has a cost, so be smart and efficient. Aim to complete tasks in the least number of steps.
You should only respond in JSON format as described below
Response Format:
{
"thoughts": {
"text": "thought",
"reasoning": "reasoning",
"plan": "- short bulleted\n- list that conveys\n- long-term plan",
"criticism": "constructive self-criticism",
"speak": "thoughts summary to say to user"
},
"command": {
"name": "command name",
"args": {
"arg name": "value"
}
}
}
Ensure the response can be parsed by Python json.loads
AutoGPT 根据用户请求生成网站。
3.2 Generative Agents 斯坦福小镇
- 目标是创造出一个具有连贯记忆和行为的Agents社会,能够进行社交互动和响应环境变化。
- 设计了一个Agents架构,包含记忆流、反思和计划三个模块,可以存储Agents的全部经历,进行更高层次的推理,并利用相关记忆制定行动计划。
- 基于该架构,作者在类似The Sims的沙盒环境中实例化了25个Agents,用户可以通过自然语言与其交互。
3.3 AI Agents全景(截止2023 10月)
4. AI Agents 技术支持
AI Agents进步仰赖于大语言模型。大语言模型的发展同时促进AI Agents的发展, 同时,大语言模型当前的局限也是AI Agents研发过程需要额外关注的。比如大模型的能力发挥仰赖提示学习,那么提示学习在AI Agents研发过程中需要聪明的设计;大语言模型不能记住所有历史,那么我们需要数据库来存储内容,而向量库天然适配embedding;还有就是AI Agents 的研发也是相对复杂的过程,这时有一个称手的工具,则会事半功倍,因此研发框架的发展也很重要。
4.1 Large Language Models(LLMs) 大语言模型
大语言模型是AI Agents的基础。 它的发展也是经历了几个阶段:
目前大语言模型蓬勃发展,国内外很多LLMs相继发布:
4.2 CoTs 思维链
提示学习是释放LLMs能力的关键技术,而其中COTs技术,则是提示学习应对复杂问题的杀手锏。通过让LLMs将一个复杂问题分解为一步一步的子问题并依次进行求解的过程,就可以显著提升LLMs的性能。而这一系列推理的中间步骤就被称为思维链(Chain of Thoughts)。
当前思维链发展非常迅速。CoTs 的发展方向有三条主要的路径,如图从左到右分别是 “Prompt 模式”,“推理结构”以及“应用场景”。
4.3 ANNS近似最近邻算法与Vector Store向量库
因为LLMs可接受token 长度限制及成本、场景等原因,需要数据库保存数据。而语义相关内容使用embedding存储是一个不错的选择,那么向量数据库则必不可少。 以下是一个query 检索向量库的过程:
向量库高效检索的背后是近似最近邻算法ANNs在起作用,以下是主要常用的ANNs算法:
不需要从头实现一个向量库,现在有很多好用的向量数据库,以下展示其中几个相对常用向量库:
4.4 AI Agents 研发框架
AI Agents让任务处理变得简单高效,但其实现仍是有很多需要处理的内容,这时有一个高效的搭建框架,让你只需要关注AI Agents逻辑实现,会让工作事半功倍。以下是当前比较常用的AI Agents 构建框架:
4.5 AI Agents 测评
AI Agents 的正确评价也是AI Agents 很关键的步骤,清华出品的Agentbench,以及AutoGPT的benchmark是为数不多的评测标准中的两个:
5. Agents未来大有可为
11 月 24 日下午,奇绩创坛在北京中关村举办了 2023 年秋季路演日,共有 67 家公司参与了路演。项目赛道涉及人工智能(包含大模型和 agent)、机器人、游戏、教育、B2B、企业服务、开发者工具、B2C、社区等 34 个细分行业。人工智能方向上,51 家大模型主题公司,34 家 agent 相关。
国外的AutoGPT与LangChain分别获得1200万美元与1000万美元的投资。
当前无论学界,工业界,投资界等都非常看好AI Agents的赛道,蓝海赛道,商机无限。
6. Agents 面临的挑战
- 在未知领域中的泛化能力:尽管 AI Agent 的出现本身就拓展了大模型解决更加复杂未知领域问题的能力,但是由于缺乏与现实世界真正“具身”的交互,因此一个可以做到浏览网页的 Agent 是否通过同一套框架与工程手段就可以做到操控无人机编组,这一问题仍然悬而未决;
- Agent 的过度交互问题:为了完成任务,Agent 需要与环境进行大量复杂多步的交互,而一些研究也表明 Agent 很有可能会陷入到不断交互的循环陷井之中,在交互循环中无意义的空转,并且,由于 Agent 解决问题缺乏“效率”,由此派生的日志的存储与信息检索也将成为新的问题;
- 个性化 Agent:人手一个的私人智能助理是一个美好的畅想但是一个真正的个性化 Agent 的实现还面临许多问题,目前个性化 Agent 的研究有三条技术进路,分别是从定制化的 Prompt 出发,从微调出发以及从模型编辑出发,但是这些进路都有各自的问题,并且当下研究都主要聚焦于特定的问题背景,目前还不存在一套完整统一的解决方案;
- 多智能体社会:如何扩大大模型 Agent 的数量,以组成一个多智能体的社会用于观察“社会行为的涌现”也是一个非常有意思的方向,但是多智能体的计算开销是阻碍这一领域发展的关键问题;
- Agent 安全问题:当 Agent 逐步进入人们的日常生活,Agents 与 CoTs 的安全性问题须得提上日程,譬如老生常谈的隐私泄露、权限滥用、有毒信息等等问题,此外,由于缺少现实世界真正多模态的反馈,譬如人类智能可以感受到“痛”,而 AI Agent 不会有这方面的信息输入,因此如何对完全不同质的两类主体进行“对齐”也将是关键问题;
- Agent 的评价:如何客观的评估一个 Agent 的能力也将是 AI Agent 发展带给我们的新问题,想想几年前 NLP 时代的数据集刷榜的评估方式,这种传统评价方式必然不适用于一个不断与外部环境打交道的 Agent。如一个做对了 99 步但生成答案错误的智能体可能本身能力要优于一个做错了 99 步但生成答案正确的智能体。 Agent 评价也呼唤除了评估执行任务的成功率以外的新指标、新方法。
最后,AI Agents 东风渐起,青云唤你!
7. 参考资料
5000长文原创:一文读懂Agent,大模型的下一站;万物皆Agent,更轻、更宽的下一个风口
复旦NLP团队发布80页大模型Agent综述,一文纵览AI智能体的现状与未来
AI Agent的千亿美金问题:如何重构10亿知识工作职业,掀起软件生产革命?
社区干货 | multi-agent:多角色Agent协同合作,高效完成复杂任务
Agent : 一文读懂LLM Agent架构,详解Profile,Memory,Planning,Action模块作用
What is an AI Agent? Characteristics, Advantages, Challenges, Applications
6 Types of AI Agents: Exploring the Future of Intelligent Machines
Agents in Artificial Intelligence - GeeksforGeeks
Agents in Artificial Intelligence: Leveraging AI Models for Better CX
GitHub - kaixindelele/ChatPaper: Use ChatGPT to summarize the arXiv papers. 全流程加速科研,利用chatgpt进行论文全文总
GitHub - microsoft/JARVIS: JARVIS, a system to connect LLMs with ML community. Paper: https://arxiv.
Reflexion: Language Agents with Verbal Reinforcement Learning
五万字综述!Prompt-Tuning:深度解读一种新的微调范式
Similarity Search, Part 2: Product Quantization
Similarity Search, Part 4: Hierarchical Navigable Small World (HNSW)
Similarity Search, Part 5: Locality Sensitive Hashing (LSH)
What is a Vector Database? 8 of the best Vector DBs in 2023 and how to use them
GitHub - erikbern/ann-benchmarks: Benchmarks of approximate nearest neighbor libraries in Python
近似最近邻搜索 (一) Approximate Nearest Neighbor Search(ANNS) - Vpegasus - 博客园
近似最近邻搜索 (二) 树方法 - Vpegasus - 博客园
近似最近邻搜索 (三) 局部敏感哈希 LSH - Vpegasus - 博客园
近似最近邻搜索 (四) HNSW: Hierarchical Navigable Small World graphs - Vpegasus - 博客园
近似最近邻搜索 (五) PQ 算法 - Vpegasus - 博客园
奇绩创坛2023秋季路演日,67个项目,51个大模型主题相关
GitHub - CLUEbenchmark/SuperCLUE-Agent: SuperCLUE-Agent: 基于中文原生任务的Agent智能体核心能力测评基准
BabyAGI: a pared-down version of the original Task-Driven Autonomous Agent
【万字长文】全球AI Agent大盘点,大语言模型创业一定要参考的60个AI智能体