AI News HubLIVE
サイト内リライト2 分で読了

Shippyの構築から学んだエージェント開発の教訓

Shippyは、高い信頼性が求められる海洋状況認識のためのAIエージェントです。本稿では、そのアーキテクチャ(ソウル、スキル、設定)や、決定論的CLIによるAPIアクセス、ユーザー分離のためのサンドボックスホスティング、実データに対するエージェント全体の評価システムなど、主要な設計上の意思決定について説明します。また、得られた教訓と今後の計画についても述べます。

Shippyは、高い信頼性が求められる海洋状況認識のためのAIエージェントです。海洋分析において、誤った回答は巡視船を間違った方向に送り、貴重なリソースを浪費し、人員を危険にさらす可能性があります。そのため、SkylightチームはShippyを構築するにあたり、モデルそのものよりも、信頼できるシステムの構築に重点を置きました。つまり、回答が正確で、限界を理解し、幅広いタスクに対応できるシステムです。

Shippyのアーキテクチャは、ソウル(soul)、スキル(skills)、設定(config)の3つの部分からなります。ソウルはシステムプロンプトであり、Shippyの役割と行動境界を定義します。スキルは特定のリクエストを処理するための指示であり、Claude Codeなどのツールと同じ仕様に従ったMarkdownファイルです。設定には、エージェントフレームワーク(OpenClaw)、LLM(現在はClaude Opus 4.6)、実行時設定が含まれます。これらはDockerイメージにパッケージ化され、バージョン管理されたデプロイ可能なアーティファクトとなります。

Skylight APIとの対話は、専用CLIを介して行われます。Skylight APIは複雑なパラメータを持ち、初期のプロトタイプではエージェントがAPI呼び出しを直接構築した結果、さまざまな微細なバグが発生しました。CLIはこの複雑さを単純なコマンド(例:skylight events search)にカプセル化し、認証、ページネーション、構造化出力を処理します。また、詳細なヘルプテキストとエラーメッセージを提供し、出力は常にローカルJSONファイルに書き込まれます。

ユーザー分離も重要な設計です。Skylightは70か国以上の政府機関やNGOに利用されており、各ユーザーのデータと会話履歴は厳密に分離される必要があります。そのために、Mothershipエージェントホスティングプラットフォームが構築されました。ユーザーが会話を開始すると、システムはエージェントランタイム、スキル、CLIを含む一連のPodを起動し、ユーザーのJWTを注入してAPI呼び出しをスコープします。エージェントが書き込むファイルはそのセッション内にのみ存在し、ネットワークレベルでも必要なサービスにのみアクセスが制限されます。

評価に関しては、Shippyは静的なベンチマークではなく、エージェント全体(モデル、スキル、サンドボックス)を対象としたカスタム評価システムを採用しています。ドメイン専門家がシナリオとルーブリックを作成し、LLM審査員が各基準を0から1で採点し、重み付き合計が合格しきい値を超えるかどうかを判断します。評価はHarborフレームワークを介して実行され、各タスクは実際のShippyセッションで実行されます。スキル、モデル、データが変更されるたびに評価スイートが再実行され、回帰が発生した場合にはユーザーにリリースされません。最新の実行では、Shippyはデータ検索とガードレールタスクで一貫したスコアを示しましたが、パトロール計画タスクでは戦術的推奨に踏み込みすぎるケースや、境界線の単純化によるイベントの見逃し、存在しないCLIコマンドの生成などの問題が見られました。これらは次の改善に直接反映されます。

今後の方向性としては、エージェント主導のUI制御(Skylightマップの直接操作)、モデルルーティング(単純なクエリには小規模なモデルを使用)、スレッドを越えたメモリ(ユーザーの嗜好やコンテキストを記憶)などが計画されています。Shippyの経験は、Ai2の他のプラットフォーム(野生生物保護プラットフォームEarthRangerや地球観測ツール群OlmoEarth)にも応用されています。Mothershipは汎用的に設計されており、他のエージェントをホストすることも可能です。ShippyはAi2のSkylightチームによって構築され、Skylightは70か国以上で300以上のパートナーに利用されている無料の海洋状況認識プラットフォームです。