模块 03 · 用大模型做东西

用 API 做应用

从一次调用走向一个真正的程序:多轮对话、流式输出、工具调用、出错重试和费用记录,最后做出贯穿项目 RepoBot 的第一版。

各课

  1. 01
    多轮对话:模型其实什么都不记得

    写一个命令行聊天程序,亲眼看到模型没有记忆,"记忆"只是每次把历史消息重新发一遍。再看历史太长时截断和摘要两种办法各自的效果。

    35 分钟 · 入门
  2. 02
    流式输出

    让回答一边生成一边显示。实测流式和非流式的首字时间,处理流式里的 usage 和思考内容,再用 FastAPI 把模型的输出实时推给浏览器。

    35 分钟 · 进阶
  3. 03
    工具调用:让模型能动手

    模型自己查不到实时数据,也不能执行任何操作。给它一个真实的工具,去 PyPI 查包的最新版本,把工具调用的完整流程走一遍,包括并行调用、出错处理和思考模式下的注意事项。

    45 分钟 · 进阶
  4. 04
    出错、重试、限流和花钱

    复现几种最常见的 API 错误,看 openai SDK 默认帮你做了哪些重试,再写一个带超时、指数退避、并发限制和费用记录的调用函数,放进项目里就能用。

    40 分钟 · 进阶
  5. 05
    项目:答疑助手的第一版

    把多轮对话、流式输出、重试和费用统计组装成 RepoBot v1,一个 httpx 答疑助手。用 6 道有标准答案的题测它,看它答对了什么、编造了什么。

    60 分钟 · 进阶

前面两个模块,每个例子都是"调用一次,打印结果"。真实的应用要面对更多问题:用户会连着问好几句;回答太长,用户等不及;需要查实时的数据;网络会断,服务会限流,账单要算清楚。

这个模块把这些问题一个个解决掉,最后把它们组装成贯穿项目 RepoBot 的第一版:一个能在命令行里连续对话、流式输出、自动重试、每轮显示花费的 httpx 答疑助手。

为什么是这个顺序

第 1 课先弄清楚"对话"在 API 层面到底是什么,后面每一课都建立在消息列表之上。第 2 课的流式输出改善的是用户体验,相对独立。第 3 课的工具调用最重要,也最复杂,它是第 05 模块智能体的基础。第 4 课处理的是所有前面这些功能在真实环境里都会遇到的问题:出错和花钱。第 5 课把前四课组装起来。

学完的标准

  • 能写一个命令行聊天程序,并在历史过长时截断或压缩。
  • 能用流式输出把回答一边生成一边显示,并知道怎么把它转发给浏览器。
  • 能从零写出完整的工具调用循环:说明书、执行、把结果传回、处理并行调用和工具出错。
  • 能写一个带超时、指数退避重试、并发限制和费用记录的调用函数。
  • RepoBot v1 在你的电脑上跑起来,并能说出它在哪类问题上会答错、为什么。

本模块的代码