用 API 做應用
從一次呼叫走向一個真正的程式:多輪對話、流式輸出、工具呼叫、出錯重試和費用記錄,最後做出貫穿專案 RepoBot 的第一版。
各課
- 01多輪對話:模型其實什麼都不記得
寫一個命令列聊天程式,親眼看到模型沒有記憶,"記憶"只是每次把歷史訊息重新發一遍。再看歷史太長時截斷和摘要兩種辦法各自的效果。
35 分鐘 · 入門 - 02流式輸出
讓回答一邊生成一邊顯示。實測流式和非流式的首字時間,處理流式裡的 usage 和思考內容,再用 FastAPI 把模型的輸出即時推給瀏覽器。
35 分鐘 · 進階 - 03工具呼叫:讓模型能動手
模型自己查不到即時資料,也不能執行任何操作。給它一個真實的工具,去 PyPI 查包的最新版本,把工具呼叫的完整流程走一遍,包括並行呼叫、出錯處理和思考模式下的注意事項。
45 分鐘 · 進階 - 04出錯、重試、限流和花錢
復現幾種最常見的 API 錯誤,看 openai SDK 預設幫你做了哪些重試,再寫一個帶超時、指數退避、併發限制和費用記錄的呼叫函式,放進專案裡就能用。
40 分鐘 · 進階 - 05專案:答疑助手的第一版
把多輪對話、流式輸出、重試和費用統計組裝成 RepoBot v1,一個 httpx 答疑助手。用 6 道有標準答案的題測它,看它答對了什麼、編造了什麼。
60 分鐘 · 進階
前面兩個模組,每個例子都是"呼叫一次,列印結果"。真實的應用要面對更多問題:使用者會連著問好幾句;回答太長,使用者等不及;需要查即時的資料;網路會斷,服務會限流,賬單要算清楚。
這個模組把這些問題一個個解決掉,最後把它們組裝成貫穿專案 RepoBot 的第一版:一個能在命令列裡連續對話、流式輸出、自動重試、每輪顯示花費的 httpx 答疑助手。
為什麼是這個順序
第 1 課先弄清楚"對話"在 API 層面到底是什麼,後面每一課都建立在訊息列表之上。第 2 課的流式輸出改善的是使用者體驗,相對獨立。第 3 課的工具呼叫最重要,也最複雜,它是第 05 模組智慧體的基礎。第 4 課處理的是所有前面這些功能在真實環境裡都會遇到的問題:出錯和花錢。第 5 課把前四課組裝起來。
學完的標準
- 能寫一個命令列聊天程式,並在歷史過長時截斷或壓縮。
- 能用流式輸出把回答一邊生成一邊顯示,並知道怎麼把它轉發給瀏覽器。
- 能從零寫出完整的工具呼叫迴圈:說明書、執行、把結果傳回、處理並行呼叫和工具出錯。
- 能寫一個帶超時、指數退避重試、併發限制和費用記錄的呼叫函式。
- RepoBot v1 在你的電腦上跑起來,並能說出它在哪類問題上會答錯、為什麼。
本模組的程式碼
程式碼和執行結果保留原樣(簡體中文),與實際執行時完全一致。