欢迎来到AI应用课程的高级能力构建阶段!本项目包含4个进阶实验,帮助你掌握工作流编排、工具调用、知识检索增强(RAG)和质量控制等生产级AI应用开发技术。
通过这4个实验,你将学习:
cd ai-course-labs
pip install -r requirements.txt
新增依赖包括:
langgraph>=0.2.0 - 实验5工作流编排chromadb>=0.4.22 - 实验7-8向量存储langchain-chroma>=0.1.0 - ChromaDB集成实验7-8需要预置的知识库文档,已包含在 test_data/knowledge_base/ 目录:
langchain_intro.txt - LangChain框架介绍vector_db.txt - 向量数据库原理prompt_engineering.txt - Prompt工程技术# 运行单个实验测试
pytest grader/test_lab5.py -v
pytest grader/test_lab6.py -v
pytest grader/test_lab7.py -v
pytest grader/test_lab8.py -v
# 运行所有实验5-8测试
pytest -m "lab5 or lab6 or lab7 or lab8" -v
# 运行全部测试
pytest grader/ -v
# 查看详细错误信息
pytest grader/test_lab5.py -v --tb=short
ai-course-labs/ ├── grader/ # 测评系统 │ ├── fixtures.py # 共享测试夹具(Ollama健康检查、ChromaDB初始化) │ ├── test_lab5.py # 实验5测评脚本 │ ├── test_lab6.py # 实验6测评脚本 │ ├── test_lab7.py # 实验7测评脚本 │ └── test_lab8.py # 实验8测评脚本 │ ├── student_code/ # 学生代码目录 │ ├── lab5/main.py # 实验5:LangGraph工作流 │ ├── lab6/main.py # 实验6:工具调用Agent │ ├── lab7/main.py # 实验7:RAG系统 │ └── lab8/main.py # 实验8:人工审核RAG │ ├── test_data/ │ └── knowledge_base/ # 预置知识库文档 │ ├── langchain_intro.txt │ ├── vector_db.txt │ └── prompt_engineering.txt │ ├── requirements.txt # Python依赖 ├── pytest.ini # Pytest配置 └── README.md # 本文件
目标:使用 LangGraph 构建状态图工作流,实现基于输入意图的条件路由
文件位置:student_code/lab5/main.py
需要实现:run_workflow(input_data: dict) -> dict
任务要求:
关键要求:
intent == "order" 时,路由到 order_handlerintent == "info" 时,路由到 info_handlererror_handlerroute_taken、final_output、execution_path测试用例:
目标:构建具备工具调用能力的 AI Agent
文件位置:student_code/lab6/main.py
需要实现:agent_executor(query: str, available_tools: List) -> dict
模拟工具(已提供):
get_stock_price(symbol) - 查询股票价格(AAPL返回175.0)add_numbers(a, b) - 计算两数之和get_weather(city) - 查询天气(北京返回25℃晴)任务要求:
关键要求:
tool_used、tool_input、tool_output、final_answer测试用例:
目标:构建完整的 RAG(检索增强生成)系统
文件位置:student_code/lab7/main.py
需要实现:ask_rag(question: str, collection_name: str) -> dict
任务要求:
关键要求:
answer、source_chunks、similarity_scores、has_answer测试用例:
目标:在 RAG 基础上增加质量控制机制
文件位置:student_code/lab8/main.py
需要实现:ask_rag_with_review(question: str, confidence_threshold: float) -> dict
任务要求:
关键要求:
status、confidence_score、answer、review_reason、source_chunkssuccess - 高置信度(≥0.7)low_confidence - 中等置信度(0.5-0.7)review_needed - 低置信度(<0.5),需要人工审核测试用例:
| 问题现象 | 可能原因 | 解决方法 |
|---|---|---|
| LangGraph 导入错误 | 依赖未安装 | pip install langgraph |
| ChromaDB 初始化失败 | 依赖未安装 | pip install chromadb langchain-chroma |
| 知识库文档未找到 | 文件路径错误 | 检查 test_data/knowledge_base/ 目录 |
| 向量化速度慢 | 文档过大 | 调整 chunk_size 参数 |
| Agent 不选择工具 | Prompt 设计问题 | 优化工具描述,使用 ReAct Prompt |
| 相似度分数异常 | 嵌入模型问题 | 确认 Ollama 服务正常 |
每个实验文件都包含测试代码:
# 调试实验5
python student_code/lab5/main.py
# 调试实验6
python student_code/lab6/main.py
# 调试实验7
python student_code/lab7/main.py
# 调试实验8
python student_code/lab8/main.py
# 显示打印输出
pytest grader/test_lab7.py -v -s
# 显示完整错误堆栈
pytest grader/test_lab7.py -v --tb=long
# 只运行失败的测试
pytest grader/test_lab7.py -v --lf
每个实验的测试用例都有明确的权重:
| 实验 | 必需测试 | 加分项 | 总分 |
|---|---|---|---|
| 实验5 | 100% | 额外加分 | 100+ |
| 实验6 | 100% | 额外加分 | 100+ |
| 实验7 | 100% | 额外加分 | 100+ |
| 实验8 | 100% | 额外加分 | 100+ |
当你看到以下输出时,恭喜你完成了实验5-8!
======================== test session starts ========================= ... grader/test_lab5.py::TestLab5::... PASSED [...] grader/test_lab6.py::TestLab6::... PASSED [...] grader/test_lab7.py::TestLab7::... PASSED [...] grader/test_lab8.py::TestLab8::... PASSED [...] ======================== XX passed in XX.XXs =========================
祝学习愉快! 🚀
完成实验5-8后,你将掌握生产级AI应用开发的核心技术,包括工作流编排、工具集成、知识检索和质量控制!