GitHub、フレームワーク非依存のJava向けCopilot SDK公開

SDKの位置づけ

フレームワーク非依存の設計
既存Java基盤への依存不要
BYOKでAIベンダー中立

主なAPI機能

注釈だけでツール定義
1行で完結するエージェントループ
イベント購読で実時間UI更新

企業システム対応

仮想スレッドで並行処理
ToolSetでツール権限を限定
詳細を読む

GitHubは8月10日、技術ブログで、サーバーサイドのJavaコードからAIエージェントを操作する「GitHub Copilot SDK for Java」の使い方を公開しました。同SDKは特定のフレームワークに依存しない初のJava向けAI連携手段と位置づけられ、Langchain4jやSpring AIといった既存ライブラリを介さずに、エージェントセッションの生成やツール登録を行えます。

名称にCopilotとありますが、用途はGitHubのサービスに限りません。provider/ProviderConfigに独自のbaseUrlとAPIキーを渡すBYOK(自前の鍵を持ち込む方式)に対応しており、OpenAIやAzure、AnthropicOpenAI互換エンドポイントを直接利用できます。この場合、Copilotの契約は不要とされています。

APIはJava開発者になじむ形で設計されています。メソッドに@CopilotTool注釈を付けるだけでモデルが呼び出せるツールになり、JSONスキーマの生成や引数の解析、呼び出しの振り分けはSDKが担います。session.sendAndWaitの1行で、モデルの推論とツール呼び出しを繰り返すエージェントループが完結し、session.onで一つひとつのツール実行やメッセージをイベントとして受け取れます。

エンタープライズ用途で効いてくるのが、仮想スレッドとの組み合わせです。Jakarta ConcurrencyのManagedThreadFactoryから生成したコンテナ管理の仮想スレッドをExecutorとして渡すと、ツール実行時のコールバックにもCDIやJNDI、トランザクションの文脈が引き継がれます。待機中にプラットフォームスレッドを消費しないため、同時接続の多いサーバーでも負荷を抑えられます。

記事にはJakarta EE 11で組んだ不動産リード管理のサンプルアプリが付属します。Open Liberty 26.0.0.5とPrimeFaces、インメモリのH2データベースで構成され、問い合わせごとに独立したエージェントを仮想スレッド上で起動し、WebSocketで進捗をブラウザへ配信する仕組みです。複数の問い合わせを同時に投入すれば、並行動作の様子をそのまま確認できます。

一方、本番投入では権限設計が課題になります。SessionConfigのToolSetでセッションごとに使えるツールを明示的に指定でき、ファイル操作やシェル実行を含む組み込みツールを無制限に開放しない運用が推奨されています。サンプルが採用する全承認(APPROVE_ALL)はあくまで開発用で、実運用では呼び出し可否を検証する権限ポリシーの実装が求められます。