ITSUKI.
技術706 文字2 分

Day 07|Model Client — 応答を少しずつ受け取る仕組み

#Codex#ソースコードリーディング#図解

この章しょうの答こたえ

Prompt を通信つうしんの要求ようきゅうに変かえ、届とどいたストリームを内部ないぶのイベントとして読よむ。

画面がめんに文字もじが少すこしずつ現あらわれる裏側うらがわでは、完成かんせいした一ひとつの文章ぶんしょうを待まつだけではない処理しょりが動うごいています。Model Client は、内部ないぶの入力にゅうりょくと外部がいぶ API の応答おうとうをつなぐ境界きょうかいです。

01|図でつかむ

図07|Model Client

ストリーム中なかのデータと、応答おうとう全体ぜんたいの完了かんりょうを区別くべつする。

02|3つのポイントで理解する

1. 送信内容を先に見る

Prompt にはユーザーの一文いちぶんだけでなく、履歴りれきやツール定義ていぎなどが関かかわります。まず何なにが入力にゅうりょくとして渡わたされるかを確認かくにんし、それから通信処理つうしんしょりを読よみます。

2. Client と Session の役割を追う

ModelClient と ModelClientSession の生成せいせい場所ばしょ、保持ほじする情報じょうほう、stream の呼び出よびだし元もとを見みます。名前なまえから寿命じゅみょうを推測すいそくしたら、実際じっさいにどこで再利用さいりようされるかで確たしかめます。

3. 途中のデータを完了と混同しない

ResponseStream を読よむ側がわは、文章ぶんしょうやツール呼び出よびだしに関かんするイベントを処理しょりします。通信つうしんが切きれた場合ばあい、途中とちゅうまでの出力しゅつりょくがある場合ばあい、完了かんりょうした場合ばあいを分わけて追おうと、再試行さいしこうの扱あつかいも理解りかいしやすくなります。

03|ソースで確かめる

以下いかの検索けんさくは Codex リポジトリのルートで実行じっこうします。最初さいしょに対象たいしょう commit を記録きろくし、検索結果けんさくけっかから定義ていぎと呼び出よびだし元もとを一ひとつずつ開ひらいてください。

git rev-parse --short HEAD
rg -n "ModelClientSession|ResponseStream" codex-rs

読よむ入口いりぐち: codex-rs/core/src/client.rs 。リンク先さきは照合しょうごうに使つかった固定こてい commit のファイルです。手元てもとの版はんと異ことなる場合ばあいは、上うえの検索語けんさくごから探さがし直なおします。

小さく試す

ModelClientSession の呼び出よびだし側がわから stream の戻り値もどりちへ進すすみ、完了かんりょうとエラーを処理しょりする分岐ぶんきを探さがします。

04|30秒で復習

  • Prompt と通信つうしん要求ようきゅうの境界きょうかいを見みる。
  • ストリームは複数ふくすうのイベントとして届とどく。
  • 途中とちゅう出力しゅつりょく・完了かんりょう・通信つうしん失敗しっぱいを分わける。

全ぜん30章しょうの目次もくじへ