12

17:45 - 18:45

入力にはPydantic、結果にはオントロジー

前の章では、ツールを呼び出したあと、その結果をオントロジーで確認する流れを見ました。この章では、話者が検証を二つの場所に分けます。入口で受け取る引数はPydanticで確認し、ツールが返した結果はオントロジーで確認します。

まず、入力の型を入口で確認します

話者は、エージェントを使うコードではPydanticを見ることを勧めています。Pydanticは、パラメーターの型を指定し、受け取った値がその型に合うかを検証するために使えます。ここでいう型とは、値が数値や文字列など、どのような種類であるべきかということです。型が合わなければ、ツールを実行する前に拒否したり、問題として知らせたりできます。

例(話者の対比を具体化したもの):あるツールが「顧客番号」を数値として受け取るとします。エージェントがその引数に文字列を渡したとき、入口の検証は不一致を見つけます。これにより、誤った形の呼び出しを、そのまま外部処理へ送らずに止められます。

話者は、Pythonでは、ある変数に最初は数値を入れ、あとで文字列を入れる例を使って、型の確認が弱い場合との違いを説明します。ここではその対比を、話者の説明として受け取るのが安全です。講演の資料だけでは、Pythonの正確な型仕様やPydanticの細かな動作までは確定できません。

結果の意味はオントロジーで確認します

Pydanticが主に確認するのは、入力パラメーターの形と型です。一方、オントロジーは、結果がドメインの意味に合うかを確認します。そこでは、エンティティ、関係、プロパティ、そして関係の制約を使います。したがって、文法的に正しいデータでも、ドメイン上ありえない関係なら、結果として受け入れない判断ができます。

「入口」と「台帳」という分担

話者はこの分担を、**「入口ではPydantic、台帳ではオントロジー」**という比喩で表します。入口は、エージェントからツールへ渡る入力です。ここで型を確認します。台帳は、ツールの実行後に残る情報や状態です。ここで、その結果がドメインのルールや関係に合うかを確認します。

この考え方を、前の章のエージェント・ループにつなげると、次の順番になります。

  1. エージェントがツールの引数を提案します。
  2. Pydanticが、引数の型や形を入口で検証します。
  3. 問題がなければ、プログラムがツールを実行します。
  4. ツールの結果を、オントロジーで検証できる形にします。
  5. オントロジーが、その結果の意味、関係、制約を確認します。
  6. 結果を受け入れるか、LLMに戻してやり直させるか、人間に確認を求めます。

図: 二つの検証ゲートと、副作用のないエージェント設計をまとめた三列のスライドです。

この視覚資料は、話者の設計を一つにまとめています。ツールを実行する前の入力ゲートではPydanticが働きます。ツールが返した結果を次へ伝える前の出力ゲートでは、オントロジーがドメインのルールに照らして確認します。エージェントには途中の副作用を持たせないため、結果を確認する前にデータベースを変更しません。

このスライドが示される講演中の時点は、次のリンクです。

結果を確認するまで、変更を確定しません

話者は、副作用(side effect)のないエージェントも勧めています。副作用とは、提案した処理がすぐにデータベースなどを変更することです。エージェントが作った結果をオントロジーで確認する前に変更を確定すると、誤った結果がそのままシステムに残る可能性があります。先に提案と結果を確認し、問題がないと判断できたあとで、変更を実行するほうが介入しやすくなります。

例(教師が具体化した流れ):エージェントがデータベースの更新を提案しても、最初は実際の更新を行いません。入力の型をPydanticで確認し、ツールから返った結果をオントロジーで確認します。結果が不合理なら、LLMに問題を返して再試行させるか、人間に渡します。結果が受け入れられる場合だけ、最後に変更を確定します。

この二つの検証は、互いの代わりにはなりません。Pydanticは「値の形が正しいか」を見る入口の検査です。オントロジーは「その値や関係がドメインの意味に合うか」を見る結果の検査です。正しい型の値でも、間違った相手に支払いを送るなど、意味の上で誤ることがあります。逆に、意味のある提案でも、引数の型が壊れていればツールを安全に呼べません。

まとめ

この章の提案は、入力と結果に別の守りを置くことです。Pydanticは、エージェントがツールへ渡す引数を入口で確認します。オントロジーは、ツールの結果をドメインの関係や制約に照らして確認します。さらに、エージェントに副作用を持たせなければ、検証が終わる前のデータベース変更を防げます。これは、LLMの提案を最初から正しいと見なす方法ではありません。提案し、確認し、必要なら戻すというループに、型と意味の二つの検証を組み込む方法です。

100% スペースキーとドラッグで移動 | Ctrl/Cmdとホイールで拡大縮小