音声原稿 02-a:説明とエラー
このパートでは、モデルがツールを選ぶ材料と、失敗を次の手が分かる形で返すことを扱います。ノートの、説明が選択の本文であること、システムプロンプトの語が説明に勝つこと、四つの失敗、成功したゼロ件、と同じ中身です。
モデルに渡るツールの一覧は、名前、説明、入力の形です。名前が顧客取得でも、説明が、情報を取得する、だけなら、注文番号に見える文字列をこちらへ渡します。隣の注文参照が、詳細を取得する、だと、モデルは両方を同じ道具として扱います。ハーネスが、たぶん注文だろう、と補完することはありません。
説明に書くのは四つです。何のためのツールか。入力はどの形式か。どんな依頼の例で使うか。似たツールの、どちらを使わないか。注文番号はエーで始まる。利用者の表示名では呼ばない。本人確認は顧客取得の仕事で、このツールは確認済みの識別子を前提にしない。ここまで書くと、表示名だけの依頼は顧客取得へ、番号だけの依頼は注文参照へ分かれます。
同じ依頼で、前後を比べます。届いていないヘッドホン、注文はエー十九、です。直す前は両方の説明が、情報を取得する、なので、エー十九が顧客取得へ流れます。直したあとは、注文ツールの目的が配送状態、入力がエーで始まる番号、使わない場合は氏名だけ、です。同じ依頼は注文参照に寄ります。名前だけを変えて説明を残すと、寄りの変化は小さいです。モデルは名前の雰囲気より、説明を読みます。
説明がほぼ同じ二つの分析ツールは、名前を変えても説明を放置すると揺れます。ウェブの抽出に限るなら、名前も説明も、HTMLから本文とURLを抜く、PDFは受けない、に変えます。一つの分析に、要点も要約も出典との照合もさせると、呼び出しごとに返す形が変わります。契約を分けます。欄を返すもの、段落を返すもの、主張と抜粋と一致可否を返すもの。呼び出した側は、どの形が戻るかを名前で知れます。
形式は、説明と、入力の形の両方に置きます。注文番号はエーに続く数字、顧客の識別子はシーに続く数字、と形を分けると、説明を読み違えた引数がAPIまで届きにくくなります。形だけを分けて説明を一文のままにすると、拒否の理由が次のターンに伝わらず、モデルは同じ文字列を別の欄へ入れ替えます。説明だけだと、実行時の検査が無く、表示名がAPIまで届きます。
説明を丁寧にしたあとも選択が悪いときは、システムプロンプトに、分析という言葉が出たらこのツール、のような行が残っていないかを見ます。常時の指示がキーワードでツールを結びつけると、説明の境界が負けます。直す順序は、キーワードの行を消し、説明の境界を残す、です。ログの読み方は、要求された名前と、その直前の利用者の文と、当時の説明の三点です。説明を変えたあとに同じ文で取り違えが減るなら、原因は説明でした。減らないなら、キーワードか、両方の入力が自由な文字列です。
最初の一手として、具体例を十件足すのは後です。例はトークンを使い、説明が短いままなら、同じ取り違えが新しい言い回しで起きます。発話から正規表現でツールを決める前処理は、返して、が返金なのか返却なのか、という文脈の差を捨てます。二つのツールをすぐ一つに統合すると、入力の契約が曖昧なまま内部の分岐へ隠れ、失敗の理由も混ざります。説明を直したあとに、まだ契約が一つだと分かってから統合します。
失敗は、次の行動が分岐できる形で返します。失敗のフラグが立っていない結果を、モデルは成功として読みます。本文に失敗と書いてあっても、フラグが無いと、成功の文章として扱われることがあります。失敗はフラグと構造の両方です。
種類を分ける理由は、次の手が違うからです。一時的な失敗は、タイムアウトや、一時的に落ちているサービスです。少し待って同じ依頼を再試行してよい。サブエージェントの中で短い再試行を終えてから、それでも駄目なら親へ上げます。検証の失敗は、電話番号の欄に名前が入った、のような入力の誤りです。同じ引数の再試行は無駄です。どの欄が不正かを書きます。方針の違反は、返金期限を過ぎている、のようなビジネスの規則です。再試行せず、利用者にそのまま読める文を返します。権限の失敗は、この認証では注文を読めない、です。再試行では直りません。
一律の、操作が失敗しました、は、この四つを同じにします。モデルは再試行するか、謝るか、人へ渡すかを選べません。再試行を選ぶと、権限エラーを十回繰り返します。人に読める文を、開発者向けのトレースにすると、モデルはそのトレースを利用者に話し始めます。利用者向けの文と、ログ向けの詳細は欄を分け、モデルには利用者向けの文だけを渡します。
タイムアウトなら、種別は一時的、再試行は可、文は、注文サービスが応答しませんでした、少しあとで同じ番号をもう一度見られます、です。検証なら、再試行は不可、文は、注文番号はエーで始まる番号です、渡されたのは表示名です、です。方針なら、再試行は不可、文は、配送から十四日を過ぎているため、このツールでは返金できません、です。権限なら、再試行は不可、文は、この認証では他者の注文を読めません、です。再試行してよいかの真偽値は、リトライアブルとも、リトライアブルの別綴りとも書かれます。意味は、無駄な再試行を止めることです。
一致がゼロ件だった検索は、失敗ではありません。問い合わせは成功し、該当が無かった、です。これを失敗にすると、モデルはクエリを変えて再試行し続けます。空の配列を、失敗フラグなしで返します。タイムアウトの空と、成功の空を同じ空にすると、後段は、記事が無かった、と、記事を取りにいけなかった、を区別できません。後者は穴であり、前者は調査の結論です。
サブエージェントは、一時的な失敗を自分の中で、小さい回数まで復旧します。三回でまだタイムアウトなら、四回目をモデルのターンで繰り返させず、親へ構造で上げます。復旧できないものだけを、種類、試したクエリ、取れた部分結果とともに返します。検索を利用できません、の一文は、親からクエリを変える材料を奪います。空を成功として返すのは、失敗を消します。一つのタイムアウトで調査全体を終了するのは、取れていた部分まで捨てます。
このパートの判断は、こうです。似たツールの取り違えは、説明に入力、例、端、使わない場合を書きます。キーワードの常時指示が説明に勝っていないかを見ます。失敗はフラグと、種類と、再試行可否と、人に読める文です。ゼロ件の成功と、タイムアウトを、同じ空にしません。
選択が揺れたときの直し順を、固定します。まず説明に、入力、例、端、使わない場合を書きます。次に、システムプロンプトのキーワード行を消します。そのあと同じ依頼を再度投げ、取り違えが減ったかを見ます。減らないなら、両方の入力が自由な文字列なので、形を分けます。例を十件足す、発話の名詞でツールを決める、すぐ一つに統合する、はこの三つより後です。説明が境界を持ったあとに、まだ契約が一つだと分かってから統合します。
エラーの文面を、四つの依頼で聞き分けます。注文サービスが応答しませんでした、は一時的で、再試行してよいです。注文番号はエーで始まる番号です、渡されたのは表示名です、は検証で、同じ引数は再試行しません。配送から十四日を過ぎているため、このツールでは返金できません、は方針で、再試行せず、利用者にその文を話してよいです。この認証ではその注文を読めません、は権限で、再試行では直りません。四文を、操作が失敗しました、に潰すと、モデルは権限エラーをタイムアウトと同じように十回繰り返します。
子の中の再試行は、一時的なものに限り、回数を小さく固定します。三回でまだタイムアウトなら、四回目を会話のターンでモデルに決めさせません。親へ、種類と、試したクエリと、部分結果を上げます。モデルに再試行の判断を任せると、同じタイムアウトが、会話の長さだけ続きます。成功したゼロ件は、この再試行に入れません。空は結論です。失敗にすると、クエリを変えるループが止まりません。