前言
首先介绍一下什么是AI智能体
智能体(Agent)是指能够感知环境、自主决策并执行行动的智能化实体。它基于人工智能技术,通过传感器获取信息,利用算法分析数据,并借助执行器完成目标。智能体可分为软件型(如聊天机器人)和实体型(如自动驾驶汽车),具备学习、推理和适应性特征。其核心能力在于动态交互与任务优化,广泛应用于智能制造、智慧城市、医疗诊断等领域。随着深度学习与物联网技术的发展,智能体正从单一任务处理向多模态协同进化,成为推动数字化转型的核心技术之一。
从这篇文章开始我将手把手教大家从0开始搭建属于自己的智能体,包括聊天机器人、RAG对话应用以及数据库智能体。
一、开发环境
版本:Python 3.10.4 版本(注:Python版本至少3.9以上,最好是3.10版本) MySQL8.0
开发工具:PyCharm
二、申请大模型APIKey
我们这里调用的大模型是智谱AI的(glm-4-flash),这个模型是免费的而且对于目前阶段来说,这个免费的大模型是完全够我们使用的,不需要再额外充钱。
智谱AI官网 智谱AI开放平台
没有登录注册的需要先注册登录一下,然后在右上角点击添加新的 API key
API key的名称自行定义,这里建议最好是英文+数字
创建好API key之后,将它复制下来备用。这里建议你可以直接创建一个记事本,然后将你的API key 放到里面。因为后续我们还要申请不同平台的API key,都放在记事本里面方便管理。
三、代码编写
当我们申请好智谱AI的API key之后,下一步我们就要开始利用API调用大模型
1.安装智谱AI的第三方库
pip install --upgrade zhipuai
2.引入第三方库并使用API key
from zhipuai import ZhipuAI
api_key = "XXXXXXXX"
client = ZhipuAI(api_key=api_key)
3.定义智能体模板
prompt = '介绍一下你自己'
response = client.chat.completions.create(
model='glm-4-flash',
messages=[
{"role":"user","content":"你好"},
{"role":"assistant","content":"我是人工智能助手"},
{"role":"user","content":prompt}
],
)
client.chat.completions.create 是OpenAI API 中用于生成聊天式对话补全(Chat Completions)的方法,属于 OpenAI Python 库(版本 1.0+)
-
model: 指定使用的模型,这里使用的是 glm-4-flash
-
messages:对话消息列表,每条消息需包含
role
和content
字段。 -
role
:消息的角色,可以是system
、user
或assistant
。 -
content
:消息的内容 -
代码中第一条用的user(用户消息)角色,输入你提出的问题
-
第二条用的assistant(AI 回复)角色,代表 AI 的回答,用于记忆上下文(比较重要),如果省略 assistant 消息,AI 可能不会记住过去的回复
-
第三条用的user(用户消息)角色,输入你提出的问题
4.返回输出结果
print(response.choices[0].message.content)
这里如果直接返回response,它返回的是一个对象,对象中有很多我们不需要的参数和结果,但是我们只需要大模型回答的结果,所以这里我们需要对对象中的列表进行筛选,从而获得我们想到的结果。
5.运行结果
6.优化
上述写法虽然能够成功运行,但是输出结果的时候是生成全部答案之后整体输出,这不符合大模型的输出形式。所以我们需要开通流式输出,让我们的大模型能够实时输出结果。
response = client.chat.completions.create(
model='glm-4-flash',
messages=[
{"role":"user","content":"你好"},
{"role":"assistant","content":"我是人工智能助手"},
{"role":"user","content":prompt}
],
#开通流式输出
stream = True
)
for chunk in response:
print(chunk.choices[0].delta.content,end='')
开通流式输出之后,对应的我们输出结果的方式也要改变。这里使用了一个for循环,循环输出筛选之后的结果。
7.完整代码
#1.安装智谱AI第三方库 pip install --upgrade zhipuai
#2.引入第三方库
from zhipuai import ZhipuAI
api_key = "XXXXXXXXX"
client = ZhipuAI(api_key=api_key)
prompt = '介绍一下你自己'
response = client.chat.completions.create(
model='glm-4-flash',
messages=[
{"role":"user","content":"你好"},
{"role":"assistant","content":"我是人工智能助手"},
{"role":"user","content":prompt}
],
#开通流式输出
stream = True
)
# print(response.choices[0].message.content)
for chunk in response:
print(chunk.choices[0].delta.content,end='')