【中级】AI 智能体构建入门
更新日志
| 版本 | 日期 | 变更描述 |
|---|---|---|
| 1.0.0 | 2026-01-30 | 初始版本,包含在 MTT AIBOOK(型号 A141)上从零构建一个 AI 智能体的完整开发指南。 |
1. 项目简介
本教程将指导开发者从零开始构建一个极简但完整的 AI 智能体,通过分步拆解让您理解每个模块的设计逻辑,最终独立完成一个包含 「思考 - 行动 - 记忆」 核心要素的智能助手原型。
难度:中级,适合有编程基础的开发者体验
AI 智能体简介: AI 智能体是一种能够通过 「感知环境 → 思考决策 → 执行动作」 循环实现目标的智能系统。无论多简单的 AI 智能体,都必须具备三大核心能力:
- 思考(Think):分析用户输入,识别意图并生成行动计划。
- 行动(Act):根据计划执行具体动作(如回复、调用工具)。
- 记忆(Memory):存储历史对话,为多轮交互提供上下文支持。
2. 前置条件
在开始本教程之前,请确保您已满足以下所有条件:
- 硬件:
- AI 算力本 MTT AIBOOK, 型号 A141
- 网络连接(用于下载依赖包)
- 软件:
- MTT AIBOOK 操作系统 AIOS(1.3.1-B15) 及以上版本。
- 已安装 Python 3.10 或更高版本(
python --version验证)。 - 已安装 pip 包管理工具(
pip --version验证)。 - 已安装 Conda 环境管理工具(可选,推荐使用)。
- 具备 Python 编程基础知识(熟悉类、方法、循环等基本概念)。
- 了解面向对象编程的基本原理(可选,教程中会详细说明)。
3. 环境部署
本章节描述如何创建项目目录并安装必要的依赖组件。
3.1 创建项目目录
-
打开终端(Linux Terminal)。
-
创建项目目录并进入:
mkdir my_first_agent && cd my_first_agent
项目目录将用于存放所有代码文件。

3.2 安装依赖
-
安装依赖包:
pip install colorama pyfiglet依赖说明:
colorama:用于控制台彩色输出pyfiglet:用于生成艺术字体,美化控制台输出
-
验证依赖安装成功:
pip list | grep -E "colorama|pyfiglet"若输出包含这两个包及其版本信息,说明依赖安装成功。
4. 最佳实践
本章节指导您逐步构建 AI 智能体的核心功能模块。
场景 1: 构建智能体基础框架
创建 SimpleAgent 类并实现初始化功能:
-
创建代码文件:
touch simple_agent.py或使用您喜欢的编辑器创建
simple_agent.py文件。 -
编写基础框架代码:
import timefrom typing import List, Dictfrom colorama import Fore, Style, initfrom pyfiglet import Figlet# 初始化控制台美化工具init()class SimpleAgent:def __init__(self, name):self.name = nameself.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") -
运行测试:
python simple_agent.py预期效果: 控制台将打印艺术字标题和欢迎语,标志智能体初始化完成。
代码解析:
__init__方法定义了 SimpleAgent 类的构造函数。- 当创建智能体实例时,会传入
name参数作为智能体的名称。 self.memory = []初始化一个空列表,用于存储后续的对话历史。- 通过 Figlet 类创建艺术字体生成器,将智能体名称转换为斜体艺术字并以青色打印输出。
场景 2: 实现思考能力
为智能体添加 think 方法,实现意图识别功能:
-
在 SimpleAgent 类中添加
think方法: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" # 默认意图 -
测试思考功能:
if __name__ == "__main__":agent = SimpleAgent("SimpleBot")# 测试思考功能print(agent.think("你好")) # 输出:greetingprint(agent.think("今天天气如何?")) # 输出:weatherprint(agent.think("你能做什么?")) # 输出:default设计思考:
- 通过关键词匹配实现意图分类,返回字符串作为「行动指令」。
- 解耦「意图识别」与「回复生成」,便于后续扩展复杂逻辑。
- 思考题: 为何不直接返回回复内容?(提示:分离决策与执行)。
代码解析:
think方法负责分析用户输入并识别其意图。- 首先将用户输入转换为小写,以避免大小写敏感问题。
- 通过条件判断 检查输入中是否包含特定关键词。
- 返回意图标签("greeting"、"weather" 或 "default"),而不是直接返回回复内容。
场景 3: 实现行动能力
为智能体添加 act 方法,根据意图生成具体回复:
-
在 SimpleAgent 类中添加
act方法:def act(self, plan: str) -> str:"""根据计划执行具体动作"""response_map = {"greeting": f"你好!我是{Fore.YELLOW}{self.name}{Style.RESET_ALL},很高兴为你服务!","weather": "抱歉,我暂时还不具备查询天气的能力 😔","default": "对不起,这个问题我还在学习中~可以换个话题吗?"}return response_map.get(plan, "发生未知错误,请重新输入") # 安全兜底 -
测试行动功能:
if __name__ == "__main__":agent = SimpleAgent("SimpleBot")# 测试完整流程plan = agent.think("你好")response = agent.act(plan)print(response) # 输出:你好!我是 SimpleBot,很高兴为你服务!设计思考:
- 使用字典映射计划与回复,提高可维护性。
- 分离「意图」与「回复内容」,方便后续修改话术或添加多语言支持。
代码解析:
act方法根据think模块返回的意图标签生成具体回复。- 通过字典
response_map建立意图标签与对应回复内容的映射关系。 - 使用字典的
get方法获取对应回复,若意图标签不存在则返回错误提示,确保系统的健壮性。
场景 4: 构建主循环
实现智能体的核心交互循环,完成「感知 → 思考 → 行动 → 记忆」的完整流程:
-
在 SimpleAgent 类中添加 run 方法:
def run(self):"""智能体主循环:感知→思考→行动→记忆"""while True:user_input = input(f"\n{Fore.BLUE}[{self.name}] 请输入你的问题(输入'exit'退出):{Style.RESET_ALL}")if user_input.lower() == "exit":print(Fore.RED + "再见!期待下次相遇~" + Style.RESET_ALL)break# 核心循环plan = self.think(user_input)response = self.act(plan)print(f"\n{Fore.GREEN}[{self.name}回复]{Style.RESET_ALL} {response}")# 存储对话到记忆self.memory.append({"timestamp": time.strftime("%Y-%m-%d %H:%M:%S"),"user_input": user_input,"response": response}) -
更新主程序入口:
if __name__ == "__main__":agent = SimpleAgent("SimpleBot")agent.run() # 启动主循环循环解析:
- 感知:获取用户输入(通过
input函数)。 - 思考:调用
think方法生成行动计划。 - 行动:调用
act方法生成回复。 - 记忆:以字典形式存储对话记录(含时间戳)。
代码解析:
run方法实现了智能体的核心交互循环。- 通过无限循环持续获取用户输入。
- 当检测到用户输入 "exit" 时,打印红色的退出提示并终止循环。
- 感知:获取用户输入(通过