Files
wip-reference/4.1-ai-tools-example.md
T

3.7 KiB

4.1. 例:AI用Tools

目的

AI用Toolsは、WIP ClientがAIへ提供する想定インターフェースである。Core Protocolをそのまま露出せず、Clientが保持するKnown Space / Discoverable Spaceと組み合わせて、AIがWorldspaceを理解・探索・操作しやすい形へ投影する。

現時点では、discover / inspect / invoke の3操作を基本とする。

discover

discover(scope, query) は、Clientが保持するDiscoverable Spaceから目的に関連するエントリを探す。

検索対象は、Hostからfetch_treeによって取得されたindexableなエントリ公開情報に限定する。Operationによって新たに発見されたentry pathは、一時的な結果として扱うか、取得してKnown Spaceへ保持できるが、それだけではdiscoverの検索対象にはならない。

discoverはドメインデータを検索する操作ではない。Issue本文やRAG corpusなどを検索する場合は、その能力を持つObjectのOperationをinvokeする。

inspect

inspect(target) は、対象エントリ / Objectについて何ができるかを把握するための操作である。

Objectのドメインデータをpropertiesとして直接公開することは前提としない。データを読む行為もOperationとして表現する。

例えばIssueでは、次のような操作が示され得る。

  • read_body() — 本文を読む。
  • get_metadata() — 期日、担当者、ラベルなどを取得する。
  • get_related_items() — 関連Objectのentry pathを取得する。
  • close(reason: string) — 理由を添えてIssueをクローズする。

Operationはシグネチャだけでなく、AIが用途を判断できる短いdescriptionを持つ。長文ドキュメントを埋め込むことは想定しない。

Operationのinput / output schemaはWIP IDLとして取得する。ClientはIDLをparseし、利用するAI providerが要求するTool schemaへ変換する。JSON Schema等への変換はAI向けClient adapterの責務であり、HostがWIP interfaceとして提供する必要はない。

invoke

invoke(target, operation, input) は、inspectによって発見したOperationを実行する。inputはOperationのWIP IDLで定義された名前付きfieldを持つrecordであり、位置引数は用いない。引数を持たないOperationには空のrecordを渡す。

PTC / REPL bindingでは、通常のメソッド呼び出しへ投影してよい。

issue.close(reason="duplicate")

ClientはエントリをObjectへ解決し、WIPのcall_operationを利用して実行する。Object同一性やエントリとObjectの観測整合性はClient側で処理し、AI自身に追跡させない。

エントリの発見

AIが新しいエントリを知る経路は複数ある。

  • discoverによってDiscoverable Spaceから見つける。
  • Known Space上の既知エントリを辿る。
  • Operation Resultのentry型としてpathを受け取る。

ClientはOperation Resultからentry pathを抽出し、必要なpathをfetchまたはfetch_treeする。新たに取得したエントリの保持、Treeへの統合、indexableな範囲の管理はClientの責務とし、このページではAI向けToolの意味論だけを扱う。

ドメイン検索

全文検索、semantic retrieval、外部API検索などはWIP固有のToolにはしない。

検索能力を持つObjectがquerysearchなどのOperationを公開し、AIはそれをinvokeする。結果としてentry型のpathが返された場合、Clientは必要なpathを取得し、一時的な発見結果として利用するかKnown Spaceへ保持できる。