chintan-02/arti-409-ai-chatbot
GitHub: chintan-02/arti-409-ai-chatbot
一个 SAIT 课程的课堂实验项目,通过构建 Anthropic API 聊天机器人来演示 AI 应用的测试、CI/CD、回归检测与安全回滚等工程维护实践。
Stars: 0 | Forks: 0
# ARTI 409 AI Chatbot — AI 维护与 CI/CD 课堂实验







**这是一个 2026 年春季 SAIT 课堂实验,演示了 AI API 集成、自动化测试、持续集成、pull request、回归检测和安全回滚。**
## 项目概述
本代码库最初是 2026 年春季 **SAIT — Southern Alberta Institute of Technology** **AI 管理与维护 (ARTI-409-A)** 课程的课堂聊天机器人实践活动。
该应用程序是一个轻量级的 Python 命令行聊天机器人,可连接到 Anthropic API 并在终端会话期间保持对话上下文。随后,该活动扩展为一个实用的 AI 维护和软件工程实验,涵盖:
- LLM API 集成
- 环境变量配置
- 密钥管理基础
- Git 分支与结构化提交
- Pull request 工作流
- 使用 `pytest` 进行自动化测试
- 使用 GitHub Actions 进行持续集成
- 有意回归测试
- CI 失败调查
- 使用 `git revert` 进行安全回滚
该代码库展示了一个重要的 AI 工程原则:
## 课程背景
| 字段 | 详情 |
|---|---|
| 机构 | SAIT — Southern Alberta Institute of Technology |
| 专业 | 综合人工智能 |
| 课程 | AI 管理与维护 |
| 课程代码 | ARTI-409-A |
| 学期 | 2026 年春季 |
| 活动类型 | 课堂学习实验 |
| 主要焦点 | AI API 集成、Git 工作流、测试、CI/CD、故障检测和回滚 |
| 状态 | 已完成 |
该应用程序刻意保持精简,以便将重点放在维护、测试、保护和恢复支持 AI 的代码库上,而不是构建庞大的聊天机器人产品。
## 工程概览
| 领域 | 实现 |
|---|---|
| 应用程序 | Python 命令行聊天机器人 |
| AI 提供商 | Anthropic API |
| 对话行为 | 会话内消息历史记录 |
| 配置 | 使用 `.env` 的环境变量 |
| 测试 | `pytest` 冒烟测试 |
| 持续集成 | GitHub Actions |
| 协作工作流 | 功能分支与 pull request |
| 故障演练 | 有意回归 |
| 恢复方法 | `git revert` |
| 主要目的 | AI 管理与维护、Git、CI/CD、测试和 API 集成实践 |
## 聊天机器人的功能
用户在终端中输入消息,应用程序将对话发送到配置好的 Anthropic 模型,并将响应流式传输回命令行。
交互示例:
```
============================================================
ARTI 409 AI Chatbot (type 'quit' to exit)
============================================================
You: Explain what an API is in simple language.
Claude: An API is a structured way for two software systems
to communicate with each other...
You: quit
Goodbye!
```
聊天机器人会在活动会话期间保留对话历史记录,以便后续问题可以使用之前的上下文。
## 高层架构
```
User enters terminal message
↓
Python validates the input
↓
Conversation history is updated
↓
Anthropic API request is created
↓
Model response is streamed
↓
Response is displayed in the terminal
```
## 代码库结构
```
arti-409-ai-chatbot/
│
├── chatbot.py
├── test_chatbot.py
├── requirements.txt
├── .env.example
├── .gitignore
├── TEACHING_GUIDE.md
├── LICENSE
├── README.md
│
└── .github/
└── workflows/
└── ci.yml
```
### 文件职责
| 文件 | 用途 |
|---|---|
| `chatbot.py` | 运行命令行聊天机器人和 Anthropic API 交互 |
| `test_chatbot.py` | 包含 CI 使用的冒烟测试 |
| `requirements.txt` | 列出 Python 依赖项 |
| `.env.example` | 记录所需的环境变量结构 |
| `.gitignore` | 防止常见的本地文件和密钥文件被追踪 |
| `TEACHING_GUIDE.md` | 提供原始的 GitHub Desktop 学习指南 |
| `.github/workflows/ci.yml` | 定义自动化的 GitHub Actions 测试工作流 |
| `LICENSE` | MIT 许可证 |
## 本地设置
### 1. 克隆代码库
```
git clone https://github.com/chintan-02/arti-409-ai-chatbot.git
cd arti-409-ai-chatbot
```
### 2. 创建虚拟环境
```
python3 -m venv .venv
source .venv/bin/activate
```
在 Windows 上:
```
.venv\Scripts\activate
```
### 3. 安装依赖
```
pip install -r requirements.txt
```
### 4. 配置 API 密钥
复制示例环境文件:
```
cp .env.example .env
```
添加你的 Anthropic API 密钥:
```
ANTHROPIC_API_KEY=your-api-key
```
### 5. 运行聊天机器人
```
python chatbot.py
```
### 6. 运行测试
```
pytest
```
## GitHub Actions 持续集成
代码库包含一个 GitHub Actions 工作流,该工作流会在推送代码或打开 pull request 时自动运行测试套件。
### CI 工作流
```
Push or pull request
↓
GitHub Actions starts
↓
Repository code is checked out
↓
Python environment is created
↓
Dependencies are installed
↓
pytest executes
↓
Workflow passes or fails
```
该工作流执行以下核心步骤:
1. 检出代码库
2. 配置 Python
3. 安装依赖项
4. 安装或调用 `pytest`
5. 运行自动化测试
6. 在 GitHub 中报告结果
这在合并代码更改之前提供了自动化的安全检查。
## 分支与 Pull Request 工作流
本实验使用功能分支工作流,而不是将每次更改都直接提交到 `main` 上。
```
Create feature branch
↓
Implement tests and CI workflow
↓
Commit changes
↓
Push branch
↓
Open pull request
↓
GitHub Actions runs
↓
Review CI result
↓
Merge into main
```
示例命令:
```
git checkout -b add-ci
git add test_chatbot.py .github/workflows/ci.yml
git commit -m "Add CI workflow and chatbot tests"
git push -u origin add-ci
```
在 pull request 经过审查并且 CI 通过后,该分支被合并到 `main`。
## 有意回归演练
为了了解 CI 如何保护代码库,我们以违反现有测试预期的方式对聊天机器人进行了刻意的更改。
自动化测试期望系统配置包含课程标识符:
```
ARTI 409
```
该值被临时更改,导致测试失败。
GitHub Actions 检测到了回归,并显示了失败的工作流结果。
此演练表明,CI 可以在基于损坏状态进行额外更改之前捕获意外行为。
## 使用 `git revert` 安全恢复
回归通过以下方式得到修正:
```
git revert HEAD
```
与删除或重写 Git 历史记录不同,`git revert` 会创建一个新的提交,用于撤销之前的更改。
这在协作代码库中更安全,原因在于:
- 原始更改保持可见
- 纠正措施已记录在案
- 团队成员无需修复被重写的历史记录
- 代码库恢复到已知的工作状态
- CI 可以验证纠正是否成功
恢复工作流:
```
Broken commit reaches main
↓
GitHub Actions fails
↓
Failure is investigated
↓
git revert creates corrective commit
↓
Corrective commit is pushed
↓
GitHub Actions runs again
↓
Tests pass
```
## 测试范围
代码库使用轻量级的冒烟测试,因为主要目标是学习 CI 和 Git 工作流基础知识。
这些测试验证了选定的应用程序假设,例如:
- 预期的模型配置格式
- 系统提示词中包含课程上下文
- 可导入的应用程序配置
- 基本的回归保护
测试套件是刻意保持精简的,不应将其解释为生产级别的 LLM 应用程序覆盖率。
大型的 AI 应用程序还应测试:
- API 故障处理
- 超时与重试
- 无效或空输入
- 结构化响应验证
- 速率限制行为
- 提供商故障转移
- 提示词注入控制
- 输出安全检查
- Token 和成本限制
- 可观测性与日志记录
## 展现的技能
### AI 与 API 集成
- Anthropic API 使用
- 对话历史记录处理
- 流式模型响应
- 基于环境的配置
- 密钥与源代码分离
### 软件工程
- 模块化的 Python 应用程序结构
- 依赖管理
- 基础自动化测试
- 回归保护
- 错误感知开发实践
### Git 与协作
- 功能分支
- 结构化提交
- Pull request
- 合并工作流
- 远程代码库
- 透明的历史记录
- 安全回滚
### DevOps 基础
- GitHub Actions
- 持续集成
- 自动化测试执行
- 失败工作流调查
- 恢复验证
## 局限性
- 小型命令行学习应用程序
- 无 Web 或移动端界面
- 无数据库或持久化对话存储
- 无身份验证或用户管理
- 测试覆盖率极低
- 无结构化日志记录或监控
- 无重试或备用提供商架构
- 无提示词评估框架
- 无 Token、延迟或成本仪表板
- 无生产安全审查
- 不可用作生产级聊天机器人
## 关键学习心得
此项课堂活动强化了一个观念:专业的 AI 工程和维护需要的不仅仅是调用模型 API。
一个可靠的工作流还需要:
```
Build
→ Test
→ Commit
→ Review
→ Integrate
→ Detect failures
→ Recover safely
→ Verify stability
```
最重要的成果是学习自动化测试、持续集成、pull request 和透明的回滚实践如何协同工作以保护代码库。
## 当前应用型 AI/ML 工作
我目前的旗舰项目包括:
- [TriageAI — ESI 临床入院与护理路由助手](https://github.com/chintan-02/triageai-esi-care-routing)
- [PolicyGPT Enterprise — 针对政策与合规的 Evidence-First RAG](https://github.com/chintan-02/policygpt-enterprise)
- [ResumeIQ — AI 简历智能平台](https://github.com/chintan-02/smart-resume-classifier)
- [应用型 AI/ML 工程作品集](https://chintan-patel-ai.netlify.app/)
## 作者
**Chintan Patel**
- [GitHub](https://github.com/chintan-02)
- [LinkedIn](https://www.linkedin.com/in/chintan-patel-987765129/)
- [作品集](https://chintan-patel-ai.netlify.app/)
## 许可证
本项目基于 [MIT 许可证](LICENSE) 提供。
## 代码库说明
此代码库保持公开,作为 2026 年春季 SAIT **AI 管理与维护 (ARTI-409-A)** 课堂实验中所培养实践技能的证据,包括 API 集成、Git、测试、CI/CD、pull request、回归检测和回滚。它不是我目前的旗舰 AI 工程项目之一。标签:Anthropic API, Python, Retryablehttp, 安全规则引擎, 教学实验, 数据管道, 无后门, 网络安全研究, 软件工程