Created
Aug 1, 2024 12:20 AM
Favorite
Favorite
Priority
备注
推荐
类型
模型学习
这篇文章是关于如何从头开始用Python创建AI智能体的完整指南。文章首先介绍了AI智能体的概念,然后通过一个基本的AI智能体示例来帮助理解AI智能体的基本结构和发展过程。接着,文章将转向一个高级的现实世界示例。
如果我们向像ChatGPT这样的AI提问:"learnwithhasan.com的响应时间是多少?" 你可能会认为它不能回答这个问题。
如果我们向像ChatGPT这样的AI提问:"learnwithhasan.com的响应时间是多少?" 你可能会认为它不能回答这个问题。
作者:张长旺,图源:旺知识
1 - 什么是AI智能体?
如果我们向像ChatGPT这样的AI提问:"learnwithhasan.com的响应时间是多少?" 你可能会认为它不能回答这个问题。
但如果你回答可以,你也是对的!
两个答案都可能被认为是正确的。原因如下:
ChatGPT对这个问题的回答是:
我不能提供特定网站响应时间的实时信息。响应时间可能会因服务器负载、互联网连接速度和地理位置等因素而有所不同。
有趣的是,它没有能够回答这个问题!
但是,看看现在发生了什么:
为了理解这个概念,让我们看看LLM是如何能够回答我们的问题的。
答案:自治AI智能体
自治AI智能体将大型语言模型(LLM)与外部功能和增强的提示机制相结合。
为了理解这个概念,让我们看看LLM是如何能够回答我们的问题的。
1- 查询输入:首先,我们将我们的问题发送给LLM。
2- 使用ReAct系统提示进行处理:LLM由一个ReAct系统提示驱动,允许它思考问题以及应该如何回答。我们称之为一个思考。我们将在下一节中更详细地讨论这个问题。
3- 外部功能执行:然后LLM选择并执行一个外部功能,在这个例子中是"get_website_response_time(URL)"。
4- 响应生成:在获取实时数据后,AI根据结果制定并传递响应。
这种无缝集成思考、决策和行动的过程反映了人类的解决问题过程,展示了AI如何绕过传统的限制。
2 - 环境搭建
在本指南中,我们将使用Python从头开始构建AI智能体。让我们通过设置一个新的Python项目开始。你可以选择任何IDE,但在这个指南中,我将使用Visual Studio Code。
创建并激活虚拟环境
- 打开你的终端。
- 创建一个新的虚拟环境并激活它。
安装OpenAI包
在这个例子中,我们将使用OpenAI API作为我们的大型语言模型,尽管你也可以使用Anthropic、Gemini或开源模型。
确保你的API密钥已经准备好。在你的项目中创建一个
.env
文件并添加你的密钥:在激活虚拟环境后,安装OpenAI Python包:
完成了吗?太好了。
设置你的项目文件
创建三个Python文件:
actions.py
、prompts.py
和main.py
。你现在应该有类似这样的东西:
使用OpenAI API生成文本
打开
main.py
文件,创建一个简单的函数来使用OpenAI API生成文本。这个函数将为我们的AI智能体提供动力:以下是代码:
这个脚本从
.env
文件中加载你的API密钥,并创建一个OpenAI
实例来处理请求。generate_text_with_conversation
函数很简单,它接收两个参数—model
和messages
—来生成一个响应。测试你的函数
在继续之前,让我们确保一切按预期工作。通过模拟对话来测试这个函数:
完成了吗?完美!
现在我们的基本设置已经完成,我们准备进入构建我们的智能体的核心部分。
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
的消息,这是我们之前创建的函数:Agent39
实践教程2
Agent · 目录
上一篇多模态与多智能体系统合理性全面综述:一致性、可靠性、技术进展、评估方案、问题挑战下一篇AI进化论:AgentGym框架让AI智能体在多环境中自我成长
Scan to Follow