11

16:34 - 17:45

オントロジーをツール結果の検証ループに組み込む

この章では、エージェントがツールを使った後、その結果をすぐに受け入れない設計を見ます。話者は、ツールから返った情報をオントロジーで検証し、結果が妥当かどうかを判断する流れを示します。

オントロジーを置く場所

話者が示す挿入点は、LLMやツールを置き換える場所ではありません。ツールが実行されて情報を返した後、その情報をバリデーター(validator)が扱える形にします。そのうえで、ドメイン(対象分野)についてのオントロジーを使い、LLMの応答やツール結果が妥当かを調べます。

流れを順番に書くと、次のようになります。

  1. LLMが問題を解くために、ツールの使用を提案します。
  2. 周囲のプログラムが、その提案に含まれるパラメーターを使ってツールを呼び出します。
  3. ツールが情報を返します。
  4. プログラムが返った情報を、バリデーターが読める形にします。
  5. バリデーターが、ドメインのオントロジーに照らして結果を検証します。
  6. 妥当ならループを続け、妥当でなければLLMに戻すか、人間に確認を求めます。

ここでいう「妥当」は、単に文字列の形が正しいという意味ではありません。結果がドメインの概念、関係、制約に合っているかという意味です。したがって、文法的には正しい応答でも、ドメインのルールに反していれば受け入れません。話者は、この判断をオントロジーに基づくバリデーターに担当させる考え方を説明しています。

図1 Claudeエージェントのループと、ツール呼び出しをはさむ二つの検証ゲートです。

このスライドでは、run_tool(call) の前後に入力側と出力側のゲートがあります。入力側にはPydantic、出力側にはオントロジーが置かれています。つまり、ツールを実行する前の提案だけでなく、ツールが返した結果も確認します。これはスライドから読める構成の説明であり、具体的な検証ライブラリの実装方法まで示すものではありません。

検証に失敗したときの分岐

エージェント・ループでは、ツールの結果が返るだけでは処理を完了できません。プログラムは停止理由(stop_reason)を確認し、ツール使用を求める応答かどうかを判断します。ツールを使う場合は呼び出しを実行し、その結果を実行中のコンテキストに戻します。その後、オントロジーに基づく出力検証を通します。

検証の結果に応じて、少なくとも次の二つの道があります。

  • 結果が妥当なら、結果を受け入れてループを続けます。必要なら、その情報を次のLLMの判断材料にします。
  • 結果が妥当でなければ、何かがうまくいかなかったという情報をLLMに返して、もう一度考えさせます。それでも自動処理に任せにくい場合は、人間をループに入れて判断を求めます。

図2 ツールを呼び出し、停止理由を確認し、入力と出力の検証ゲートを通して繰り返すループです。

このコード・スライドでは、ツール使用を示す停止理由からツール呼び出しへ進み、返った結果を実行中のコンテキストに追加して、処理を繰り返します。二つのゲートは、入力の検証と出力の検証を分けています。スライドに見えるのはツール・ループと検証位置であり、人間への引き継ぎまでは表示されていません。

ガードレールは「悪い提案をゼロにする」ことではない

LLMは確率的に応答を生成します。そのため、LLMがツールの使い方やパラメーターを提案しても、それだけでドメイン上の正しさが保証されるわけではありません。オントロジーを使う検証は、LLMを別の仕組みに置き換えるのではなく、提案と実行の周りに確認を加えます。

前の章で見たRDFSやOWLは、この確認の材料になります。たとえば、関係のドメインとレンジからエンティティの型を推論できます。また、プロパティの制約や、同時には成り立たない種類(disjointness)の規則を使えば、結果がドメインの前提と合わないことを見つけられます。こうした推論や制約が、ツール結果を受け入れる前の判断を支えます。

例(補足)として、ツールが返した結果を考えます。結果の文章が読みやすくても、そこに現れる対象の型や関係がオントロジーの規則と合わなければ、プログラムはその結果をそのまま採用しません。LLMに修正を求めるか、人間に確認します。この例は検証の考え方を説明するためのもので、話者が特定の業務データや検証ライブラリを指定したという意味ではありません。

まとめ

この設計の要点は、LLMの柔軟な提案、ツールの実行、オントロジーによる意味の検証を一つのループに組み込むことです。ツール結果を受け取った後に検証することで、プログラムは「返事が来たか」だけでなく「ドメイン上、妥当か」を確認できます。妥当でない結果はLLMへの再試行や人間の確認に回せます。これはガードレールの提案であり、LLMが誤りを出さないという保証ではありません。

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