API でアプリを作る
1 回の呼び出しから本物のプログラムへ。マルチターン会話、ストリーミング出力、ツール呼び出し、エラー時のリトライと費用の記録を扱い、最後にコースを貫くプロジェクト RepoBot の第 1 版を作ります。
レッスン一覧
- 01マルチターン会話:モデルは実は何も覚えていない
コマンドラインのチャットプログラムを書き、モデルに記憶がないこと、「記憶」とは毎回履歴のメッセージを送り直しているだけであることを自分の目で確かめます。さらに、履歴が長くなりすぎたときの切り詰めと要約、二つの方法の効果を見ます。
35 分 · 入門 - 02ストリーミング出力
回答を生成しながら表示します。ストリーミングと非ストリーミングで最初の文字が出るまでの時間を実測し、ストリーミングでの usage と思考内容の扱い方を学び、FastAPI でモデルの出力をリアルタイムにブラウザへ送ります。
35 分 · 中級 - 03ツール呼び出し:モデルに手を動かさせる
モデルは自分ではリアルタイムのデータを調べられず、何の操作も実行できません。PyPI でパッケージの最新バージョンを調べる本物のツールを与え、並列呼び出し、エラー処理、思考モードでの注意点まで含めて、ツール呼び出しの流れを一通りたどります。
45 分 · 中級 - 04エラー、リトライ、レート制限、そして費用
よくある API エラーをいくつか再現し、openai SDK が既定でどんなリトライをしてくれるのかを見たうえで、タイムアウト、指数バックオフ、同時実行数の制限、費用の記録を備えた、プロジェクトにそのまま入れて使える呼び出し関数を書きます。
40 分 · 中級 - 05プロジェクト:Q&A アシスタントの第 1 版
マルチターン会話、ストリーミング出力、リトライ、費用の集計を組み合わせて、httpx の Q&A アシスタント RepoBot v1 を作ります。正解のある 6 問でテストし、何に正しく答え、何をでっち上げたかを見ます。
60 分 · 中級
前の二つのモジュールでは、どの例も「1 回呼び出して、結果を表示する」ものでした。実際のアプリはもっと多くの問題に向き合います。ユーザーは続けて何度も質問する。回答が長すぎてユーザーが待ちきれない。リアルタイムのデータを調べる必要がある。ネットワークは切れ、サービスはレート制限をかけ、請求はきちんと計算しなければならない。
このモジュールでは、これらの問題を一つずつ解決し、最後にそれらを組み合わせて、コースを貫くプロジェクト RepoBot の第 1 版を作ります。コマンドラインで続けて会話でき、ストリーミング出力、自動リトライを備え、毎ターン費用を表示する httpx の Q&A アシスタントです。
なぜこの順番なのか
第 1 課ではまず、API のレベルで「会話」とは実際には何なのかをはっきりさせます。この後のすべての課はメッセージのリストの上に成り立っています。第 2 課のストリーミング出力はユーザー体験を改善するもので、比較的独立しています。第 3 課のツール呼び出しは最も重要で最も複雑で、モジュール 05 のエージェントの土台になります。第 4 課が扱うのは、それまでのすべての機能が実環境で必ず出会う問題、つまりエラーとお金です。第 5 課では前の四つの課を組み立てます。
修了の目安
- コマンドラインのチャットプログラムを書き、履歴が長くなりすぎたら切り詰めたり圧縮したりできる。
- ストリーミング出力で回答を生成しながら表示でき、それをブラウザに転送する方法も知っている。
- ツール呼び出しのループ全体をゼロから書ける。説明書、実行、結果の返却、並列呼び出しとツールのエラーの処理まで。
- タイムアウト、指数バックオフのリトライ、同時実行数の制限、費用の記録を備えた呼び出し関数を書ける。
- RepoBot v1 を自分のパソコンで動かし、どんな種類の質問で間違えるのか、なぜ間違えるのかを説明できる。
このモジュールのコード
コードと実行結果は実際に動かしたときのまま載せているため、コメントと出力は中国語です。