Video 4- Phase A Demos and Walkthrough

来源:AI时代学习营 · AI Builder 课程 · 在学习书房阅读原版(含图)

面部识别学习

fastapi写代码

FastAPI问答功能增加

  • API安全配置

  • 环境变量存储:使用.env文件存储API密钥,避免硬编码在代码中,防止密钥随代码上传至版本控制系统
  • gitignore配置:将.env文件添加到.gitignore中,确保不会被提交到代码仓库
  • 配置检查:在代码中添加检查逻辑,如果API token未设置会报错提示”AI_BUILDER_API_TOKEN未设置,请在.env文件中设置”
  • 接口开发流程

  • OpenAPI规范:从AI Builder Space下载OpenAPI JSON文件,该文件定义了API的使用规范
  • 兼容性设计:接口设计保持与OpenAI SDK兼容,方便未来直接调用
  • 请求转发:构建chat接口将用户请求转发到AI Builder的chat completion API
  • 接口测试验证

  • 测试方法:通过Swagger UI的”Try it out”功能直接测试接口
  • JSON格式:注意删除最后一个逗号保持合法的JSON格式
  • 示例请求:用户输入”法国的首都在哪里”,接口成功返回”法国的首都是巴黎”
  • Agentic AI系统特征核心特征:
  • 工具使用:AI能够判断何时需要使用工具(如搜索引擎)
    • 多步决策:AI可以自主决定处理流程的轮次,形成决策循环实现步骤:
  • 为AI提供可用工具定义
    • 编写代码构建决策循环机制工作流程:
  • 用户请求进入系统
  • AI判断是否需要使用工具
  • 系统执行工具调用(如搜索)
  • 将工具结果返回给AI进行下一步决策
  • 最终形成响应返回用户

FastAPI搜索功能实现

  • 环境配置管理

  • 安全存储:使用.env文件存储API token等敏感信息,避免直接写在代码中
  • 配置读取:通过load_dotenv()加载环境变量,使用os.getenv()获取配置
  • 版本控制:将.env文件添加到.gitignore,同时创建.env.example供开发者参考
  • 错误处理:未设置API token时会抛出明确错误提示”AI_BUILDER_API_TOKEN未设置”
  • 搜索API实现

  • 功能设计:新增/search端点接收搜索关键字,调用AI Builder Space的搜索API
  • 参数说明:
  • keyword:必需参数,搜索关键词
    • max_results:可选参数,默认6,范围1-20返回内容:包含搜索结果列表、综合答案和可能的错误信息
    • 测试验证:已测试”Python FastAPI”搜索,返回5个结果包含标题、URL等内容
  • 实际应用测试

  • 测试案例:搜索”西雅图天气”成功返回结果
  • 结果验证:
  • 包含天气网站(weather.com)的实时数据
  • 同时返回相关图片结果
  • 添加环境配置说明
  • 包含搜索API使用示例
    • 注明必需配置项版本控制:确保敏感配置不会提交到代码仓库
    • 启动检查:应用启动时自动验证配置完整性

FastAPI聊天API改造为Agentic Loop

  • 搜索API实现与测试

  • 接口功能:在FastAPI中添加/search端点,接收关键词搜索请求
  • 参数说明:
  • keyword:必需参数,搜索关键词(如”Python FastAPI”)
    • max_results:可选参数,默认返回6条结果,范围1-20返回内容:包含搜索结果列表、综合答案(如有)和错误信息(如有)
    • 测试验证:
  • 已测试搜索”Python FastAPI”返回5条结果
  • 结果包含标题、URL、内容和评分等信息
  • 可通过Swagger UI访问:http://localhost:8001/docs
  • Agentic Loop初步实现

  • 核心机制:
  • 第一轮提供search工具,由LLM决定是否调用
  • 若调用工具则执行搜索,强制生成最终回复
    • 第二轮不再提供工具,直接生成最终结果实现特点:
  • 采用单轮工具调用策略,避免复杂度
  • 自动测试机制确保功能正确性
  • 示例问题:“西雅图地区最近水灾情况如何,有决堤吗?”
  • 调试与优化

  • 常见问题:
  • 回复被截断:需增加max_tokens参数(测试值1880)
    • 工具多次调用:需处理LLM可能发起的多个工具调用调试方法:
  • 添加详细日志记录工具调用参数和结果
  • 观察prompt_tokens大小判断工具调用情况
  • 示例:当输入token>1880时说明使用了search工具
  • 多轮工具调用扩展

  • 升级方案:
  • 支持最多三轮工具调用
  • 前两轮提供工具,第三轮强制生成最终回复
    • 重构代码增加round_request.update(base_params)调试增强:
  • 打印完整消息历史:包括初始消息、工具调用、原始结果和最终回复
  • 终端日志显示执行进度,解决”黑盒”问题
  • 实际应用测试

  • 测试结果:
  • 成功搜索到西雅图历史性暴雨和堤坝溃决新闻
  • 验证了多轮工具调用的可行性
    • 日志系统有效展示执行流程开发建议:
  • 避免在调试时使用—reload参数
  • 对于复杂查询可分阶段测试
  • 注意处理LLM可能发起的并行工具请求

用户界面设计

  • 产品架构:构建类似ChatGPT的网页界面,用户输入内容后,后台调用API进行新闻调研和搜索,最终返回结果形成完整产品闭环
    • 开发要点:前端通过FastAPI服务网页
    • 主页直接渲染聊天界面
    • 需包含输入框和发送按钮的交互设计

日志记录机制

  • 实现方法:使用Python的logging模块记录关键信息
  • 需记录工具调用过程、参数传递和返回结果
  • 示例日志内容包含:URL、请求数据、响应状态等
  • 调试优势:当API调用出现问题时,可通过日志快速定位
  • 能清晰追踪工具调用链(如搜索工具调用3次)
  • 可验证参数传递正确性(如keyword参数值)

前端功能实现

  • 交互流程:用户输入文本后触发API调用
  • 显示”正在思考”动画提升用户体验
  • 后台调用chat completion API获取响应
  • 渲染处理:需要支持Markdown转HTML的渲染器
  • 处理可能包含的多媒体内容(如图片、链接)
  • 保持聊天记录的历史上下文
  • 异常处理:端口冲突时需自动清理占用进程(如8881端口)
  • 实现服务自动重启机制(使用uvicorn reload)
  • 错误信息需友好提示前端用户

FastAPI聊天应用

FastAPI网站添加GUI

  • 静态网页服务:通过GET/根路径配置静态网页服务,使FastAPI能够直接serve类似ChatGPT的交互界面
  • 界面元素:包含输入框和消息展示区域,支持Markdown渲染和自动滚动到最新消息
  • 启动方式:使用命令uvicorn main:app —reload —port 8881启动服务后,访问http://localhost:8001/即可使用

提问与后台分析

  • 用户提问示例:如”西雅图最近水灾情况如何?“会触发后台的思考和分析过程
    • 工具调用策略:多关键词搜索:自动生成多个搜索关键词组合(如”seattle flooding recent news December 2025”)
    • 智能决策:像秘书一样判断需要调用哪些工具,避免单一关键词搜索的不准确性
  • 状态反馈:前端显示”正在思考”动画,后台日志记录完整的API调用过程

第二轮工具调用

  • 历史记录整合:将第一轮工具调用的结果自动添加到对话历史中
  • 异常处理:当LLM返回空content时,需要检查是否为工具调用未正确处理的情况
  • 强制生成机制:在适当轮次后强制LLM生成最终回复,避免无限循环

用户体验优化

  • 调试关键:需要向AI准确描述问题现象(如将完整对话日志和错误信息提供给AI分析)
  • 可视化改进:建议将工具调用过程和中间结果也显示给用户,提升交互透明度
  • 痛点转化:通过实际使用发现体验问题,再用自然语言描述给AI进行优化

针对工具调用逻辑的debug

  • 常见问题:第二轮回复content为空可能是工具调用逻辑未正确处理
    • 检查要点:是否遗漏了对工具调用返回值的处理
    • 是否设置了强制生成最终回复的机制
  • 解决方法:提醒AI检查工具调用后的结果整合逻辑

并行调用工具的debug

  • 性能优化:将多个工具调用改为并行执行,显著减少等待时间
  • 实现方式:修改代码使AI返回多个工具调用时可以同时执行
  • 效果对比:优化后第二轮处理速度明显快于串行调用方式

优化后的效果

  • 响应速度:并行调用使整体响应时间缩短约50%
  • 结果质量:通过多关键词组合搜索获得更全面的信息
  • 典型输出:如返回”截止12月21日,12月上旬至中旬有很多降水…”等结构化信息

工具调用体验

  • 与传统AI区别:支持主动调用外部工具获取实时信息
  • 可进行多轮工具调用和结果整合
  • 应用场景:特别适合需要调研最新信息的任务,比仅能翻译/润色的传统AI更实用
  • 交互特点:保持类ChatGPT的自然对话体验,同时具备工具调用能力

FastAPI项目总结

  • 项目构建流程:从零构建了一个最简单的FastAPI项目,逐步添加了AI功能对接、搜索引擎集成和网页界面开发等模块。
    • 核心功能:AI对接:实现了与AI模型的API对接,使系统具备智能对话能力
    • 工具调用:支持多种工具调用,包括搜索引擎等功能
    • 前端界面:开发了交互式网页应用,包含聊天历史面板等功能

并行工具调用优化

  • 实现方法:并行执行:使用asyncio.gather()同时执行所有工具调用
  • 顺序保持:asyncio.gather()会保持结果的顺序与输入顺序一致
  • 错误处理:每个工具调用独立处理错误,不会影响其他调用
  • 性能对比:串行执行:5个搜索调用,每个约6秒,总计约30秒
  • 并行执行:5个搜索调用同时执行,总计约6秒(取决于最慢的那个)

后端测试要点

  • 测试策略:全面测试:在构建UI前使用Swagger UI进行全面的后端测试
  • 测试场景:验证直接答案和工具使用两种场景
  • 文档驱动:将API文档作为测试依据,遵循”文档优先”的工作流程
  • 日志监控:重启服务后,多个工具调用会并行执行
  • 日志会显示”开始并行执行X个工具调用”和”所有工具调用完成”状态

前端开发指导

  • 开发步骤:从Swagger UI复制openapi.json的URL
  • 使用Cursor的聊天功能提供详细的前端构建提示
  • 创建包含聊天历史面板的网页应用
  • 用户体验:区分显示用户消息和助手消息
  • 在等待响应时显示”思考”动画
  • 测试时可通过输入任意消息进行端到端体验

知识小结知识点 核心内容 关键功能/特点 难度系数face one 分为face a、face b、 从破除AI陌生感→解决实 ⭐⭐课程体系 face a prime三个阶段, 际问题→深入技术实现强调实践学习fast API 提供可视化调试界面、自 Spider UI调试工具、 ⭐⭐优势 动生成API文档、AI友好型 OpenAPI.json标准化接口设计AI 集成多模型API调用工具包 统一API端口、预置搜索/ ⭐⭐⭐builder (GPT/Gemini等) 语音识别模块space agentic 具备工具调用+自主决策 多轮决策机制、实时搜索 ⭐⭐⭐⭐AI系统 能力的AI工作流 集成开发实战 构建支持搜索的聊天API→ 并行处理优化、日志调试 ⭐⭐⭐⭐案例 添加网页GUI→实现多轮 系统工具调用核心教学 “受控环境犯错学习法”: 三阶段渐进式实践(模仿 ⭐⭐方法 通过实际项目开发掌握AI →创新→优化)应用关键技术 FastAPI框架、OpenAPI 自动重载开发、 ⭐⭐⭐栈 规范、dotenv安全配置 Markdown渲染