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 课堂实验
![Python](https://img.shields.io/badge/Python-3.11-3776AB?style=flat-square&logo=python&logoColor=white) ![Anthropic](https://img.shields.io/badge/Anthropic-API-191919?style=flat-square) ![Pytest](https://img.shields.io/badge/Testing-pytest-0A9EDC?style=flat-square&logo=pytest&logoColor=white) ![GitHub Actions](https://img.shields.io/badge/CI-GitHub_Actions-2088FF?style=flat-square&logo=githubactions&logoColor=white) ![License](https://img.shields.io/badge/License-MIT-green?style=flat-square) ![Course](https://img.shields.io/badge/SAIT-ARTI--409--A-005EB8?style=flat-square) ![Term](https://img.shields.io/badge/Term-Spring_2026-4B5563?style=flat-square) **这是一个 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, 安全规则引擎, 教学实验, 数据管道, 无后门, 网络安全研究, 软件工程