【AI百炼实训】008:手把手教你写个 AI 智能体!
前言
想亲手搭建属于自己的Agent吗?让AI跳出对话框,成为你的得力助手。
本期为大家带来【AI百炼实训】的第八弹!让我们一起用AIBOOK算力本打造全新智能体。
📄 项目介绍
** 什么是 AI 智能体(AI Agent ) ** AI 智能体是一种能够通过「感知环境→思考决策→执行动作」循环实现目标的智能系统。想要深入理解其核心原理?最好的方式就是亲手搭建一个!
本项目将引导你从零开始构建一个极简但完整的 AI 智能体。我们不提供现成代码,而是通过分步拆解,让你理解每个模块的设计逻辑,最终独立完成一个包含「思考 - 行动 - 记忆」核心要素的 智能助手。即使功能简单,却能让你透彻掌握 AI 智能体的底层工作机制。
🧠 项目难度
中级。本项目推荐有编程基础知识的用户体验,无需复杂算法基础,重点聚焦原理理解与流程实现。
🎓 适用人群
-
具有编程基础知识和实作能力者
-
想了解 AI 智能体原理的技术爱好者
-
学生课程项目开发者
-
希望构建 AI 应用底层框架的入门工程师
✨ 项目亮点
● 原理导向学习: 从基础概念到代码实现逐步拆解,拒绝「复制粘贴」,确保知其然且知其所以然。
● 渐进式成就感: 每完成一个方法即可看到智能体能力提升,学习过程充满反馈。
● 极简完整架构: 包含「思考 (Think)- 行动 (Act)」核心循环(即AI智能体的「感知 - 决策 - 执行」核心循环),代码简洁但原理清晰易读。
● 可扩展框架: 预留功能扩展接口,为后续添加复杂能力(如多轮对话、工具调用)奠定基础。
● 核心学习成果保障: 通过本项目,你将扎实掌握:
-
AI 智能体的「感知 - 决策 - 执行」核心循环
-
基于规则的意 图识别方法
-
对话记忆系统的设计与实现
-
面向对象编程在智能系统中的应用模式
📚 小知识:
**AI 智能体的三要素:**无论多简单的AI智能体,都必须具备如下三大核心能力
-
思考(Think)- 分析用户输入,识别意图并生成行动计划;
-
行动(Act)- 根据计划执行具体动作(如回复、调用工具);
-
记忆(Memory)- 存储历史对话,为多轮交互提供上下文支持。
🛠️ 操作步骤与代码解析
第一步:环境准备
1.1 打开终端并创建项目目录

mkdir my_first_agent && cd my_first_agent
1.2 激活musa环境并安装依赖包
conda activate musa&&pip install colorama pyfiglet # 用于控制台美化输出
第二步:构建智能体基础框架
2.1 代码实现 (simple_agent.py)
此代码块定义了SimpleAgent类及其构造函数。当创建智能体实例时,会传入name参数作为智能体的名称,并将其存储在实例变量self.name中。同时,初始化一个空列表self.memory,用于存储后续的对话历史。通过Figlet类创建艺术字体生成器,将智能体名称转换为斜体艺术字并以青色打印输出,随后打印绿色的欢迎语,完成智能体的初始化展示。
import time
from typing import List, Dict
from colorama import Fore, Style, init
from pyfiglet import Figlet
# 初始化控制台美化工具
init()
class SimpleAgent:
def __init__(self, name):
self.name = name
self.memory = [] # 记忆存储列表
# 欢迎语
f = Figlet(font='slant')
print(Fore.CYAN + f.renderText(self.name) + Style.RESET_ALL)
print(f"我是 {Fore.GREEN}{self.name}{Style.RESET_ALL},一个简单的AI助手!")
if __name__ == "__main__":
agent = SimpleAgent("SimpleBot")
2.2 运行效果
控制台将打印艺术字标题和欢迎语,标志智能体初始化完成。
第三步:实现思考能力 ——think 方法
3.1 代码增强(添加到 SimpleAgent 类中)
think方法负责分析用户输入并识别其意图。首先将用户输入转换为小写,以避免大小写敏感问题。接着通过条件判断检查输入中是否包含特定关键词:若包含 "你好" 或 "hello",则识别为问候意图,返回 "greeting";若包含 "天气" 或 "weather",则识别为天气查询意图,返回 "weather";若均不匹配,则返回 "default" 作为默认意图。这种设计将意图识别与后续的回复生成解耦,便于系统的扩展和维护。
def think(self, user_input: str) -> str:
"""分析用户输入,生成行动计划"""
user_input = user_input.lower() # 统一小写处理
if "你好" in user_input or "hello" in user_input:
return "greeting" # 问候意图
elif "天气" in user_input or "weather" in user_input:
return "weather" # 天气查询意图
else:
return "default" # 默认意图
🤔 设计思考:
-
通过关键词匹配实现意图分类,返回字符串作为「行动指令」
-
解耦「意图识别」与「回复生成」,便于后续扩展复杂逻辑
-
思考题:为何不直接返回回复内容?(提示:分离决策与执行)