智能体课程文档

什么是 Agent?

Hugging Face's logo
加入 Hugging Face 社区

并获得增强的文档体验

开始使用

什么是 Agent?

Unit 1 planning

学完本节后,你将对 Agent 及其在人工智能中的各种应用有充分的理解。

为了解释什么是 Agent,让我们先从一个类比开始。

大局:Agent Alfred

认识一下 Alfred。Alfred 是一个 Agent

This is Alfred

想象一下 Alfred 收到一个指令,例如:“Alfred,请给我一杯咖啡。”

I would like a coffee

因为 Alfred 理解自然语言,他很快就明白了我们的请求。

在执行订单之前,Alfred 会进行 推理和规划,找出他需要执行的步骤和工具:

  1. 去厨房
  2. 使用咖啡机
  3. 冲泡咖啡
  4. 把咖啡带回来
Reason and plan

一旦他有了计划,他 就必须行动。为了执行他的计划,他可以使用他所知道的工具列表中的工具

在这种情况下,为了制作咖啡,他使用咖啡机。他启动咖啡机来冲泡咖啡。

Make coffee

最后,Alfred 把刚冲好的咖啡端给我们。

Bring coffee

这就是 Agent:一个 能够推理、规划并与其环境交互的 AI 模型

我们称之为 Agent,因为它具有“能动性”(agency),即它具有与环境交互的能力。

Agent process

我们来更正式地定义

现在你已经有了大局观,下面是一个更精确的定义

Agent 是一个利用 AI 模型与环境交互以实现用户定义目标的系统。它结合了推理、规划和行动的执行(通常通过外部工具)来完成任务。

将 Agent 视为包含两个主要部分:

  1. 大脑(AI 模型)

这里是所有思考发生的地方。AI 模型 处理推理和规划。它根据情况 决定采取哪些行动

  1. 身体(能力和工具)

这部分代表 Agent 能够执行的一切

可能行动的范围 取决于 Agent 配备了什么。例如,因为人类没有翅膀,他们不能执行“飞”这个 行动,但他们可以执行“走”、“跑”、“跳”、“抓”等 行动

“能动性”的范围

根据这个定义,Agent 存在于一个能动性不断增加的连续光谱上

代理能力等级 描述 名称 示例模式
☆☆☆ Agent 输出对程序流程没有影响 简单处理器 process_llm_output(llm_response)
★☆☆ Agent 输出决定基本控制流 路由器 if llm_decision(): path_a() else: path_b()
★★☆ Agent 输出决定函数执行 工具调用者 run_function(llm_chosen_tool, llm_chosen_args)
★★★ Agent 输出控制迭代和程序继续 多步智能体 while llm_should_continue(): execute_next_step()
★★★ 一个代理工作流可以启动另一个代理工作流 多智能体 if llm_trigger(): execute_agent()

表格来自 smolagents 概念指南

我们使用哪种类型的 AI 模型来构建 Agent?

Agent 中最常见的 AI 模型是 LLM(大型语言模型),它以 文本 作为输入并输出 文本

著名的例子有 OpenAIGPT4MetaLlamaGoogleGemini 等。这些模型在大量的文本上进行训练,并且能够很好地泛化。我们将在下一节中了解更多关于 LLM 的信息。

也可以使用接受其他输入作为 Agent 核心模型的模型。例如,视觉语言模型(VLM),它类似于 LLM,但也能理解图像输入。我们目前将重点放在 LLM 上,稍后将讨论其他选项。

AI 如何对其环境采取行动?

LLM 是很棒的模型,但 它们只能生成文本

然而,如果你要求 HuggingChat 或 ChatGPT 等知名聊天应用程序生成图像,它们可以做到!这怎么可能呢?

答案是,HuggingChat、ChatGPT 和类似应用程序的开发者实现了额外的功能(称为 工具),LLM 可以使用这些工具来创建图像。

Eiffel Brocolis
该模型使用图像生成工具生成了此图像。

我们将在 工具 部分了解更多关于工具的信息。

Agent 可以执行哪些类型的任务?

Agent 可以通过 工具 执行我们实现的任何任务来完成 行动

例如,如果我编写一个 Agent 作为我在电脑上的个人助理(像 Siri),我要求它“给我的经理发送一封邮件,要求推迟今天的会议”,我可以给它一些发送邮件的代码。这将是一个 Agent 可以在需要发送邮件时使用的新工具。我们可以用 Python 编写它

def send_message_to(recipient, message):
    """Useful to send an e-mail message to a recipient"""
    ...

正如我们将看到的,LLM 将在需要时生成代码来运行该工具,从而完成所需的任务。

send_message_to("Manager", "Can we postpone today's meeting?")

工具的设计非常重要,对 Agent 的质量有很大影响。有些任务需要非常特定的工具来制作,而另一些任务可能使用“网络搜索”等通用工具来解决。

请注意,行动与工具不同。例如,一个行动可能涉及使用多个工具才能完成。

允许 Agent 与其环境交互 实现了公司和个人的实际应用

示例 1:个人虚拟助理

Siri、Alexa 或 Google Assistant 等虚拟助理在代表用户与数字环境交互时,就充当 Agent 的角色。

它们接收用户查询,分析上下文,从数据库中检索信息,并提供响应或启动操作(如设置提醒、发送消息或控制智能设备)。

示例 2:客户服务聊天机器人

许多公司部署聊天机器人作为 Agent,以自然语言与客户互动。

这些 Agent 可以回答问题,引导用户完成故障排除步骤,在内部数据库中打开问题,甚至完成交易。

它们的预定义目标可能包括提高用户满意度、缩短等待时间或提高销售转化率。通过直接与客户互动、从对话中学习并随着时间的推移调整其响应,它们展示了 Agent 在行动中的核心原则。

示例 3:视频游戏中的 AI 非玩家角色

由 LLM 提供支持的 AI Agent 可以使非玩家角色(NPC)更具动态性和不可预测性。

它们不再遵循僵化的行为树,而是可以 根据上下文做出响应,适应玩家互动,并生成更细致的对话。这种灵活性有助于创建更逼真、更引人入胜的角色,这些角色随着玩家的行动而演变。


总而言之,Agent 是一个使用 AI 模型(通常是 LLM)作为其核心推理引擎的系统,用于:

  • 理解自然语言: 以有意义的方式解释和响应人类指令。

  • 推理和规划: 分析信息,做出决策,并制定策略来解决问题。

  • 与环境互动: 收集信息,采取行动,并观察这些行动的结果。

现在你对 Agent 有了扎实的理解,让我们通过一个简短的、不计分的测验来巩固你的理解。之后,我们将深入探讨“Agent 的大脑”:LLM

< > 在 GitHub 上更新