ITSUKI.
技術704 文字2 分

Day 08|Context と History — 保存した情報と渡す情報

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

この章しょうの答こたえ

保持ほじしている履歴りれきを、モデルが受け取うけとれる形かたちに整ととのえて送おくる。

会話かいわ画面がめんに見みえているもの、内部ないぶに保持ほじしている履歴りれき、次つぎのモデル要求ようきゅうに含ふくめるもの。この三みっつは必かならずしも同おなじではありません。履歴りれきの記録きろくから Prompt の生成せいせいまでを追おって違ちがいを確たしかめます。

01|図でつかむ

図08|Context と History

履歴りれきはそのまま全部ぜんぶ送おくるとは限かぎらない。送信前そうしんまえに整合性せいごうせいや対応たいおう形式けいしきを調整ちょうせいする。

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

1. まず何を記録するか

ContextManager の record_items 周辺しゅうへんから、メッセージやツール結果けっかがどの単位たんいで加くわわるかを見みます。表示用ひょうじようの文字列もじれつだけを保存ほぞんしている、と決きめつけないことが出発点しゅっぱつてんです。

2. for_prompt の前後を比べる

確認かくにんした実装じっそうでは for_prompt が正規化せいきかを経へて ResponseItem の列れつを返かえします。内部ないぶメタデータを保たもつ処理しょりとモデルへ渡わたす内容ないようを取り出とりだす処理しょりを区別くべつします。

3. モデルの対応形式も条件になる

正規化せいきかには入力にゅうりょくモダリティの情報じょうほうが関かかわり、非対応ひたいおうの画像がぞう・音声おんせいなどを調整ちょうせいする経路けいろがあります。記録きろくされたものが送信そうしんされない場合ばあい、単たんなる履歴りれき消失しょうしつとは限かぎりません。

03|ソースで確かめる

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

git rev-parse --short HEAD
rg -n "for_prompt|normalize_history" codex-rs

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

小さく試す

for_prompt と normalize_history を読よみ、入力にゅうりょくと出力しゅつりょくで変かわり得える項目こうもくを一ひとつ見みつけます。

04|30秒で復習

  • 表示ひょうじ・保持ほじ・送信そうしんは別べつの層そう。
  • for_prompt で送信用そうしんようの履歴りれきを作つくる。
  • モデルの対応たいおう形式けいしきも正規化せいきかに影響えいきょうする。

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