Agents 课程文档

什么是 Agent?

Hugging Face's logo
加入 Hugging Face 社区

并获得增强的文档体验

开始使用

什么是 Agent?

Unit 1 planning

在本节结束时,您将对 Agent 的概念及其在 AI 中的各种应用感到得心应手。

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

宏观视角:Agent 阿尔弗雷德

认识一下阿尔弗雷德。阿尔弗雷德是一个 Agent

This is Alfred

想象一下阿尔弗雷德 收到一个命令,例如:“阿尔弗雷德,请给我一杯咖啡。”

I would like a coffee

因为阿尔弗雷德 理解自然语言,他很快就理解了我们的请求。

在完成订单之前,阿尔弗雷德进行 推理和计划,弄清楚他需要的步骤和工具,以便

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

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

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

Make coffee

最后,阿尔弗雷德把新鲜煮好的咖啡带给我们。

Bring coffee

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

我们称之为 Agent 是因为它具有能动性,即它具有与环境互动的能力。

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 输出控制迭代和程序继续 多步骤 Agent while llm_should_continue(): execute_next_step()
★★★ 一个 Agentic 工作流程可以启动另一个 Agentic 工作流程 多 Agent if llm_trigger(): execute_agent()

表格来自 smolagents 概念指南

我们为 Agent 使用哪种类型的 AI 模型?

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 的质量有很大的影响。有些任务需要制作非常特定的工具才能解决,而另一些任务可以使用像“web_search”这样的通用工具来解决。

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

允许 Agent 与其环境互动 使公司和个人能够进行实际生活的应用

示例 1:个人虚拟助理

像 Siri、Alexa 或 Google Assistant 这样的虚拟助理,当他们代表用户使用其数字环境进行互动时,可以作为 Agent 工作。

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

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

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

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

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

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

由 LLM 驱动的 AI Agent 可以使非玩家角色 (NPC) 更加动态和不可预测。

他们可以 根据上下文做出响应,适应玩家互动,并生成更细致的对话,而不是遵循僵化的行为树。这种灵活性有助于创建更生动、更具吸引力的角色,这些角色可以随着玩家的行为而发展。


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

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

  • 推理和计划: 分析信息、做出决策并制定解决问题的策略。

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

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

< > 在 GitHub 上更新