Created
Aug 1, 2024 12:20 AM
Favorite
Favorite
Priority
备注
推荐
类型
这篇文章是关于如何从头开始用Python创建AI智能体的完整指南。文章首先介绍了AI智能体的概念,然后通过一个基本的AI智能体示例来帮助理解AI智能体的基本结构和发展过程。接着,文章将转向一个高级的现实世界示例。
notion image
如果我们向像ChatGPT这样的AI提问:"learnwithhasan.com的响应时间是多少?" 你可能会认为它不能回答这个问题。
notion image
如果我们向像ChatGPT这样的AI提问:"learnwithhasan.com的响应时间是多少?" 你可能会认为它不能回答这个问题。
作者:张长旺,图源:旺知识

1 - 什么是AI智能体?

notion image
如果我们向像ChatGPT这样的AI提问:"learnwithhasan.com的响应时间是多少?" 你可能会认为它不能回答这个问题。
但如果你回答可以,你也是对的!
两个答案都可能被认为是正确的。原因如下:
ChatGPT对这个问题的回答是:
notion image
我不能提供特定网站响应时间的实时信息。响应时间可能会因服务器负载、互联网连接速度和地理位置等因素而有所不同。
有趣的是,它没有能够回答这个问题!
但是,看看现在发生了什么:
notion image
为了理解这个概念,让我们看看LLM是如何能够回答我们的问题的。
答案:自治AI智能体
自治AI智能体将大型语言模型(LLM)与外部功能和增强的提示机制相结合。
notion image
为了理解这个概念,让我们看看LLM是如何能够回答我们的问题的。
notion image
1- 查询输入:首先,我们将我们的问题发送给LLM。
2- 使用ReAct系统提示进行处理:LLM由一个ReAct系统提示驱动,允许它思考问题以及应该如何回答。我们称之为一个思考。我们将在下一节中更详细地讨论这个问题。
3- 外部功能执行:然后LLM选择并执行一个外部功能,在这个例子中是"get_website_response_time(URL)"。
4- 响应生成:在获取实时数据后,AI根据结果制定并传递响应。
这种无缝集成思考、决策和行动的过程反映了人类的解决问题过程,展示了AI如何绕过传统的限制。

2 - 环境搭建

在本指南中,我们将使用Python从头开始构建AI智能体。让我们通过设置一个新的Python项目开始。你可以选择任何IDE,但在这个指南中,我将使用Visual Studio Code。

创建并激活虚拟环境

  • 打开你的终端。
  • 创建一个新的虚拟环境并激活它。
notion image

安装OpenAI包

在这个例子中,我们将使用OpenAI API作为我们的大型语言模型,尽管你也可以使用Anthropic、Gemini或开源模型。
确保你的API密钥已经准备好。在你的项目中创建一个.env文件并添加你的密钥:
在激活虚拟环境后,安装OpenAI Python包:
完成了吗?太好了。

设置你的项目文件

创建三个Python文件:actions.pyprompts.pymain.py
你现在应该有类似这样的东西:
notion image

使用OpenAI API生成文本

打开main.py文件,创建一个简单的函数来使用OpenAI API生成文本。这个函数将为我们的AI智能体提供动力:
以下是代码:
这个脚本从.env文件中加载你的API密钥,并创建一个OpenAI实例来处理请求。
generate_text_with_conversation函数很简单,它接收两个参数—modelmessages—来生成一个响应。

测试你的函数

在继续之前,让我们确保一切按预期工作。通过模拟对话来测试这个函数:
完成了吗?完美!
现在我们的基本设置已经完成,我们准备进入构建我们的智能体的核心部分。

3 - 定义功能

在本指南的这部分中,我们将指定我们的AI智能体可以访问的动作或功能。这使我们的智能体能够在响应用户查询时利用外部功能。

创建基本功能

打开actions.py文件。在这里,我们将定义一个简单的函数来模拟不同网站的响应时间:
这个虚拟函数根据提供的URL返回固定的响应时间。它作为一个基本示例帮助我们理解智能体如何利用外部功能。

理解设置

通过定义这些函数,我们建立了一个框架,AI智能体在需要时可以参考。
这种方法对于将现实世界的功能集成到我们的智能体中至关重要,我们将在后续部分更全面地探索。
接下来,我们将进入AI智能体的另一个重要组成部分:ReAct系统提示。
这将增强智能体以动态和上下文感知的方式思考和响应的能力。

4 - ReAct提示

ReAct提示使我们的AI智能体能够模仿人类行为。
这个系统提示引导模型通过思考、行动和响应的循环,允许它有效地处理用户查询。
简单来说,ReAct提示指示模型思考用户查询,理解它,决定如何回答,如果需要,选择一个动作,然后使用这个动作尽可能好地回答问题。
让我分享提示,然后我会解释。

定义ReAct提示

prompts.py文件中,添加以下系统提示配置:
这个系统提示指示LLM在思考、行动和行动响应的循环中运行。
循环结构(思考、行动、暂停、行动响应)引导LLM:
  • 思考:理解并解释查询。
  • 行动:从可用动作中选择并执行适当的功能。
  • 行动响应:使用行动的结果来制定响应。

可用动作

然后,我们告诉LLM有哪些动作可用,通过一个简单的例子,展示参数和简单的描述,以便模型理解功能。
确保将函数名称与你在Python中定义的名称匹配。

示例会话

然后,我们向LLM展示了一个示例,展示它将如何行动以回答一个样本查询。
这里最重要的部分是它将如何返回动作:
你可以看到,我指示LLM以JSON格式返回动作。
这将帮助我们稍后在最后部分将事情整合起来时,使用函数并按你将要做的方式运行它们。

为什么是循环?

这种循环机制模仿了LLM采取的步骤:理解问题,基于该理解采取行动,并使用行动的结果来响应。
这个过程可能从简单任务的几个循环到更复杂场景的数百个不等。

5 - 系统整合

已经建立了ReAct系统提示并定义了必要的功能,我们现在可以整合这些元素来构建我们的AI智能体。
让我们回到我们的main.py脚本来完成设置。

定义可用功能

首先,列出智能体可以利用的函数。在这个例子中,我们只有一个:
在我们的情况下,我们只有一个函数。
这将使智能体能够高效地选择正确的函数。

设置用户和系统提示

定义用户提示和将传递给generate_text_with_conversation的消息,这是我们之前创建的函数:
notion image
notion image
Agent39
实践教程2
Agent · 目录
上一篇多模态与多智能体系统合理性全面综述:一致性、可靠性、技术进展、评估方案、问题挑战下一篇AI进化论:AgentGym框架让AI智能体在多环境中自我成长
Scan to Follow
Loading...