构建Python AI代理的终极初学者指南

TL;DR · AI 摘要
本文为初学者提供构建Python AI代理的入门指南,涵盖基本概念、工作原理及简单实现步骤,但缺乏深度机制解析和实际应用案例。
核心要点
- AI代理可自主决策并完成任务,区别于传统聊天机器人
- 构建AI代理需掌握Python基础与IDE环境配置
- 推荐使用PyCharm作为Python开发环境进行项目搭建
结构提纲
按章节快速跳转。
思维导图
用一张图看清主题之间的关系。
查看大纲文本(无障碍 / 无 JS 友好)
- AI代理构建指南
- AI代理定义
- 自主决策能力
- 任务执行
- 技术实现
- Python编程
- IDE环境
金句 / Highlights
值得收藏与分享的关键句。
AI代理是能够观察、思考、决定并行动以最小人工输入完成任务的软件程序。
AI代理接受目标并在无需明确指令的情况下自动执行任务。
我们推荐使用PyCharm作为编码环境,因其内置终端和易于安装库的功能。
AI代理简介
本世纪最具变革性的技术之一。无论是在职位描述中、科技公司的介绍里,还是自由职业者的项目中,你都能听到这个词。虽然听起来可能令人望而生畏,但构建一个AI代理并没有想象中那么困难。相反,你可以在几分钟内轻松构建一个简单的AI代理。这就是我们在本文中要实现的目标。
在本文中,我们将逐步介绍构建AI代理的过程。你无需具备任何先验知识,因为我们会用简单易懂的初学者语言解释项目的每个部分。我们还将提供安装Python及相关IDE的分步指南,你将在其中构建这个项目。这将是编程、编码和人工智能领域初学者的专属AI代理教程。
什么是AI代理?
但首先,究竟什么是AI代理?AI代理是能够不仅回答特定问题(像简单的聊天机器人),而且更进一步的软件程序。它们不仅能回答问题,还能自主决策,创造事物并完成任务!它们可以观察、思考、决定并行动,以最少的人工输入完成任务。假设我们要购买一台用于重度编程的新笔记本电脑,我们可以向聊天机器人和AI代理提出同样的问题。聊天机器人的方法是推荐适合重度编程的笔记本电脑,然后逐一回应具体问题。它等待用户输入,内存有限,主要作为文本生成器工作。而AI代理则不同,它接收目标并自动执行任务,无需明确要求或指导特定功能。它会进行研究、比较、规划并分析需求,做出基于研究的决策。对于我们的重度编程笔记本电脑问题,聊天机器人只会用一行话回答,而AI代理会给我们提供一张对比表,列出不同的产品、价格以及优缺点,并帮助我们做出决策。
AI代理是如何工作的?
AI代理是一个智能程序,被编码来实现特定目标。一旦我们给它分配任务,AI代理首先接收请求,将其分解为更小的问题来解决,并根据需要通过提问从用户那里获取更多信息,以正确理解和满足所有需求。然后,它使用适当的工具,如网络搜索、计算器和自身的记忆,收集额外信息,并仔细分析这些信息。它比较不同的选项,并为用户的需求定制答案。

AI代理工作流程(作者供图)
现在我们了解了什么是AI代理以及它们如何工作,让我们开始编写我们自己的个性化AI代理。
在Python中构建AI教育代理
在本文中,我们将构建一个AI教育代理,它将充当你的个人教育助手。
在开始编码和解释之前,让我们确保已满足平台要求:
安装Python
如果你是完全的初学者,很可能从未在系统上安装过Python。这是一个基于Python的项目,所以我们需要在系统上安装它。点击此链接,然后按照步骤操作。
安装过程中,请勾选“将Python添加到PATH”选项,然后点击“立即安装”。
#### 安装和设置PyCharm
当我们进行编码时,我们需要一个合适的平台或工作空间,允许我们编写代码、运行代码、安装相关库和包,并调试代码中的错误。这就是集成开发环境(IDE)发挥作用的地方。IDE是一个提供编写、测试和调试代码平台或工作空间的应用程序。对于Python编码,我们可以使用许多IDE,如Spyder、Jupyter Notebook和Visual Studio等。选择特定IDE应取决于你的编码熟练程度、舒适区,最重要的是你的专业领域和你想通过编码达成的目标。在本教程中,我们将使用PyCharm作为我们的编码环境,因为它提供了内置终端和易于安装库的功能,非常适合初学者项目。
你可以从以下链接安装IDE:https://www.jetbrains.com/pycharm/download
只需选择“社区版”,然后选择适用于你操作系统的下载选项。

PyCharm社区版(作者供图)
安装PyCharm后,让我们继续创建项目文件。
#### 设置项目并创建Python文件
接下来,我们在PyCharm中创建项目文件。PyCharm中的项目就像一个文件夹,可以包含不同的文件:Python代码文件、库、环境文件等。我们的操作方式是首先启动PyCharm,创建新项目,选择项目位置,然后创建项目。接着,我们将创建一个名为main.py的Python文件,其中包含主代码。文件创建完成后,你可以通过编写通用代码并运行它来测试安装是否成功。

设置项目并创建Python文件(作者供图)
print("欢迎来到我的新 AI Agents 项目")
从上面的截图中可以看到,显示了项目名称、项目的路径、用于测试的通用代码、执行代码的运行按钮,以及最后的代码输出。如果你能成功到达这一步,说明一切运行正常!
#### 创建环境文件
现在,我们将创建一个新文件,即环境文件。环境文件用于安全地存储项目的密钥信息,通常命名为 .env。它用于保存项目的密钥、密码和配置设置,使我们的项目更加安全和专业。在这个项目中,我们将创建一个环境文件,并将其 API 密钥存储在其中(稍后会详细介绍 API)。

用于保护 API 密钥的环境文件(作者供图)
如图所示,我们已经创建了一个名为 environment 的新文件。在这个文件中,我们将安全地将本项目的 API 密钥存储在一个变量 API_KEY 中(我已经预先添加了 API 密钥并进行了隐藏)。之后我们会安装并导入 dotenv Python 库,该库可以帮助程序从 .env 文件中读取密钥信息,即我们的 API 密钥。
#### 创建 API 密钥
接下来的任务是创建一个 API 密钥以在代码中使用。但在开始之前,让我们先了解一下什么是 API 密钥!
API 是 Application Programming Interface(应用程序编程接口)的缩写。它是一组规则或协议,允许两个不同的软件系统相互通信。我们可以使用 API 在程序之间共享信息。你可以把它理解为餐厅里的服务员,作为顾客与厨房之间的中介。顾客向厨房发送点餐请求,而这个过程通过指定的服务员来完成。在编程领域,一个软件应用通过 API 向另一个软件应用发送请求。天气应用使用 API 从相关天气服务器获取实时天气数据。在我们用 Python 构建 AI Agent 的项目中,我们使用 API 连接已构建好的 AI 模型,并在程序中使用它们的功能。

API 工作原理(作者供图)
为了让我们的程序连接到 AI 模型,我们需要一个 API 密钥。API 密钥授权这种通信的发生。目前有很多方式可以在线获取 API 密钥并访问 AI 模型。有些方式是免费的,有些则不是。在本项目中,我们将使用 OpenRouter,这是一个统一的 LLM 和 AI 模型接口。一旦创建账户,我们就可以轻松创建 API 密钥并在项目中免费使用。我们选择 OpenRouter 而不是其他 AI 平台(如 Google Gemini、OpenAI 等)的原因是,它不仅免费,还允许我们使用该 API 密钥选择任意 AI 模型。此外,它也为初学者提供了无需高计算能力的模型。
现在,要在 OpenRouter 上创建 API 密钥,请前往其官方网站并登录您的账户。账户创建完成后,进入 OpenRouter 控制台,点击“Get API Key”。

OpenRouter 控制台(作者供图)

OpenRouter 创建新密钥(作者供图)
点击“+ New Key”图标创建您的 API 密钥。指定项目名称。获取密钥后,复制并粘贴到我们之前创建的 env 文件中的 API_KEY 变量中。此密钥不应公开分享!
#### 安装相关依赖项
现在我们的 API 密钥已经创建并安全地存储在 .env 文件中,让我们回到 main.py 文件并开始编码。首先要做的是安装并导入相关的依赖项/包。我们在这个项目中使用 Python,它是一种具有基本内置函数和工具的编程语言。但为了扩展功能,我们需要一些标准 Python 库未提供的更强大的工具和函数。因此,我们会使用其他 Python 包和库,首先在 Python 系统中安装它们,然后在代码中导入它们。
在这个项目中,我们需要 Python 与已构建好的 AI 模型通信、发送请求并处理请求。由于这些功能在标准 Python 库中不可用,我们将安装 OpenAI Python 库,然后将其导入到我们的代码中。要安装,请转到 PyCharm IDE 中的终端图标,然后输入:
pip install openai
安装 OpenAI Python 包(作者供图)
OpenAI 库安装完成后,我们将它导入到 main.py 文件中:
from openai import OpenAI
接下来,为了访问我们 .env 文件中的 API,我们将安装并导入 dotenv Python 库,该库专门用于从 .env 文件中读取信息。
在终端(不是 Python 文件)中输入以下命令安装 dotenv 库:
pip install python-dotenv
库安装完成后,像导入 OpenAI 库一样导入它。我们还将导入 Python 的 os 库。该库帮助 Python 与操作系统通信,管理与系统相关的任务、访问文件夹和环境变量,并创建路径。在我们的项目中,我们将使用 dotenv 库加载 .env 文件,使用 os 库从中检索值。
from dotenv import load_dotenv
import os#### 在主 Python 文件中加载 API 密钥
在完成库的导入后,接下来我们将读取 .env 文件并获取 API 密钥。为此,我们将使用两个函数:load_dotenv() 用于告诉 Python 打开并读取 .env 文件,以及 getenv() 用于从该文件中检索我们需要的信息。
load_dotenv()
api_key = os.getenv("API_KEY")#### 创建客户端
我们将继续构建项目所需的客户端。client 实际上是 OpenAI 类的一个对象(如果你了解面向对象编程),它允许你的代码与 OpenAI 的服务器进行通信。它负责身份验证,并提供一种结构化的方式来向 AI 模型发送请求。我们可以将其视为一个信使,需要 API 密钥来进行身份验证,并在 AI 模型之间发送和接收请求及响应。
以下是客户端初始化的语法:
client = OpenAI(
api_key,
base_url="https://openrouter.ai/api/v1"
)我们使用了 OpenAI 库提供的现成模板来创建一个客户端对象,该对象接受我们已经从 .env 文件中获取的 API 密钥。这个密钥将允许客户端通过我们提供的 URL 与 AI 模型进行通信。在我们的例子中,我们选择了 OpenRouter AI 模型:https://openrouter.ai/api/v1
#### 创建无限聊天循环
接下来,我们将创建一个无限循环,该循环将持续运行直到我们手动停止它(或者我们可以添加其他功能)。在 Python 中,可以通过 while 循环实现无限循环,即重复执行直到某个条件变为假。在我们的项目中,while 循环将用于持续运行聊天机器人。因此,在 AI Agent 回答完一个问题后,它会询问用户下一个提示。除了 while 关键字外,我们还会加上 True 关键字,这样循环就不会自动停止。
while True:
# 此循环中的代码将持续运行直到手动停止#### 获取用户输入并显示处理状态
下一步是获取用户的输入。这基本上就是用户向 AI Agent 提出的问题。我们将创建一个名为 question 的变量,用于存储用户的输入。为了显示程序正在后台运行的状态(即使运行得较慢也不会卡死),我们会输出“Thinking...”这一行文本。我们将使用 Python 的 print 函数来实现这一点,如下代码块所示。这样一来,用户就知道他们的输入问题已被接收并且正在处理中。
question = input("You: ")
print("Thinking...\n")#### 发送 AI 请求、选择模型和消息系统
现在用户已提出问题并将其存储在变量 question 中,下一步是让我们的程序能够与现有的 AI 模型进行通信。我们将使用 OpenAI Python 库中的 chat.completions.create() 方法来生成来自 AI 模型的回复。经过有效沟通后,用户问题的答案将存储在变量 response 中。我们将从这个链接中选择一个模型。我使用的是 baidu/cobuddy:free 模型,因为它比之前使用的其他模型更快。一旦我们指定了来自 OpenRouter 的模型名称,接下来我们将处理用户与 AI 之间的对话。
我们将此对话存储在一个名为 messages 的变量中,它实际上是一个 Python 字典,包含键:role 和 content。Python 字典的工作方式是我们有键及其对应的值。
角色 系统 用户 内容 你是一个有用的教育导师
在我们的字典中,我们将定义 system 和 user 两种角色的内容。对于 system,role 的 content 是 "你是一个有用的教育导师",这实现了我们构建 AI 教育代理的目标。而用户的 content 则是用户所提出的问题。让我们编写上述场景的代码:
response = client.chat.completions.create(
model="baidu/cobuddy:free",
messages=[
{
"role": "system",
"content": "You are a helpful educational tutor."
},
{
"role": "user",
"content": question
}
]
)每当处理以上内容时,AI 模型将结合用户的提问和系统的提示一起生成答案。生成的答案会返回到变量 response 中。这是项目的主要步骤,此时我们的 AI Agent 实际上正在与 AI 模型对话。我们可以在第二行更改模型名称。
#### 提取 AI 响应并打印给用户
接下来,我们需要输出/打印由 AI 生成的文本。为此,我们将获取存储在 response 变量中的完整生成答案。AI 模型的响应会有多个 choices 可供选择,我们将选择第一个响应,即索引 [0]。然后,我们将访问消息的内容,也就是 AI 的实际回答。编码如下所示:
answer = response.choices[0].message.content
print("\nAI:", answer)
print("\n-------------------\n")请注意,我们访问了字典 message,然后打印出键为“content”的值。
#### 运行代码
现在让我们运行这段代码!

运行代码(作者供图)
你可以在上面的图片中看到代码的运行效果,以及 AI 对问题的响应。但你很可能会发现生成的答案非常缓慢。这是因为我们在项目中使用了一个免费模型,而其他人也在使用它,有时它可能托管在较慢的服务器上。尽管如此,如果处理时间过长,请考虑从 OpenRouter 更换 AI 模型。通过一些尝试和试验,你将能够找到一个性能良好的快速模型!
结论
在本文中,我们成功创建了一个教育类 AI 代理,它能够回答我们的问题。我们从零开始编写了这个项目,并借助了一些依赖项,看到了如何作为初学者用 Python 编写此类项目。这是一个非常简单的教程,运用了基础知识,向我们展示了构建 AI 并没有想象中那么困难。关键在于掌握基本概念,并能够使用已创建的包和模块来帮我们完成工作。