什么是AI Agent

img

人工智能代理 (AI-Agents) 正在通过自动执行复杂任务和自行做出决策来改变我们使用技术的方式。从本质上讲,这些代理是使用大型语言模型 (LLM) 作为“大脑”的计算机程序。这些代理将查询分解为较小的部分,决定哪些工具可以解决每个部分,并将结果组合起来以实现最终目标。

有人能理解人类语言,并使用不同的工具自主解决问题!听起来熟悉吗?是的,确实熟悉……你还记得日本卡通人物***Doremon吗?我知道这听起来可能很有趣,但从轻松的角度来说,我个人认为****Doremon* 和 AI-Agent之间有一些相似之处,坦白说,这有助于轻松理解 AI-Agent 背后的核心概念。

只是为了好玩……其核心特点*如下*

***语言理解:***多啦 A 梦可以理解人类语言,就像人工智能代理使用 LLM 来理解语言并找到上下文一样。

***决策:***多啦 A 梦会根据情况选择最佳的小工具,就像人工智能代理分析查询并决定使用哪些工具以及以何种顺序使用一样。

***行动执行:***人工智能代理使用各种工具来完成任务,就像多啦 A 梦使用他的小工具并运行它们来解决问题一样。

执行

让我们探索和了解最简单的单个代理以及它在幕后的工作方式。既然我们已经在谈论 Doremon,让我们来谈谈代理*AgentDora*

我们的第一个目标是掌握简单 AI 代理的基础知识。为此,我们将使用任何开源库,如 LangChain、LlamaIndex 等。这些库通过包装复杂的实现来简化流程,这可能会掩盖 AI 代理的内部工作方式。现在,让我们避免这些捷径,并通过在没有任何相关库或框架的情况下实现 AI 代理来专注于核心概念

img

最简单的单代理实现

现在,让我们为代理定义工具。在此示例中,我们将使用两个简单的函数(工具)。第一个是add_numbers,它将两个数字相加,并且不需要访问外部世界来获取信息。第二个函数是get_ip,它将单个 URL 作为输入并查找该网站的 IP 地址。

每个工具都会有文档字符串,这很重要。清晰的文档字符串解释了每个函数的作用,因此 AI 代理可以理解并选择适合该任务的工具。

img

AgentDora 工具定义

**需要时,多啦 A 梦*会使用他的“4D 口袋”取出任何工具。同样,我们可以创建一个ToolPocket类来存储和检索有关工具的详细信息。在ToolPocket类中,我们将定义一个add_tool将工具添加到字典中的方法,以工具名称作为键,以工具的文档字符串作为值。此设置将帮助我们的AgentDora***浏览可用工具列表并找到适合该任务的工具。另一个方法tool_details将仅以字符串格式返回所有工具详细信息。

img

现在,让我们定义提示,指示***AgentDora***理解输入的查询并从 ToolPocket 中找到正确的工具来实现所需的结果。

img

现在,让我们开始构建我们的*AgentDora*

定义 AgentDora 类,它是主要代理实现。在此示例中,我们将使用gpt-3.5-turboOpenAI LLM。

img

***向AgentDora***类添加更多方法

当代理初始化时,以下方法为*AgentDora*ToolsPocket准备工具袋。初始化代理时,我们将以工具对象列表作为参数,并使用先前定义的类,此方法将准备工具袋以供使用。

img

***AgentDora***类中还有一个方法,用于从模板准备提示并调用 LLM。

img

***下面是AgentDora***类中的主要运行方法,它调用 llm,从 LLM 提供的响应中提取匹配的函数(工具)和所需的参数。

img

定义工具列表、OpenAI模型并初始化*AgentDora*

img

现在就让我们让***AgentDora***开始行动吧。

对于给定的查询,***AgentDora***能够理解get_ip需要使用什么工具(函数)来获得所需的结果

img

现在让我们提供不同的查询来检查***AgentDora***是否能够识别正确的工具并从查询中提取给定的输入以借助该工具实现给定的目标。

在下面的执行中,***Agentdora***自动理解add_numbers 需要使用的工具,并将3,9其作为参数传递以执行该工具并获取结果。

img

以上结果清楚地表明,***AgentDora***足够智能,可以通过选择正确的工具并使用正确的参数执行来获得结果。

如果***AgentDora***在提供的列表中找不到合适的工具该怎么办?

如果您记得,我们已指示代理在给定的列表中未提供合适的工具时使用 LLM 自动生成响应。

在下面执行中,***AgentDora***自动理解到没有合适的工具来回答给定的查询,因此它自动请求 LLM 提供结果并做出响应。

img

太棒了!!!我们的***AgentDora***现在可以自主决定是否使用提供的列表中的任何合适工具或直接从 LLM 提供响应来回答用户的查询。

请注意,如果我们使用开源库(如 LangChain 或 LlamaIndex)来定义代理,或使用多代理框架(如 LangGraph 或 Crew.AI),则无需编写上述所有代码。我们只需定义一组工具,然后初始化代理,其余部分将由库或框架处理。本文主要侧重于了解代理的幕后情况,因此我们没有使用任何库,在接下来的文章中,我们将重点介绍使用开源库和框架实现代理。

概括

AI-Agent 是一个利用大型语言模型 (LLM) 来理解用户查询的实体,根据需要将其分解为较小的任务,从给定列表中找到合适的工具并执行它们以获取结果。这些操作可以自动执行,无需用户输入。

通过使用自然语言理解目标,AI代理可以自行行动并完成任务,为检索增强生成 (RAG) 和其他自动化场景开辟了巨大的可能性。

在本文中,我们重点介绍了如何在不使用任何库的情况下从头实现基本核心代理。这有助于我们了解计算机程序如何使用 LLM 作为“大脑”来自主执行任务。

在实际应用中,多个代理可以协同工作,执行任务,相互协调和通信,以在几乎无需用户干预的情况下完成复杂操作。为了实现这样的代理大军,有多个可用的框架,如 LangGraph Crew.AI、AutoGen 等,我们将在后续文章中探讨这些框架。

类似的帖子