はじめに
AIエージェントを業務システムにつなぐとき、重要なのはモデルの性能だけではなく、API設計と運用設計です。安全に使えるようにするには、入出力の形式、認可、監査、エラー処理を先に整える必要があります。
本記事では、公開されているAPI設計の知見をもとに、業務実装で押さえるべき要点を実装順に整理します。
最新動向
AIエージェント向けのAPI設計では、正確なOpenAPI仕様、入力検証、意味のあるエラー、レート制限が重要だと整理されています。The New Stackは、人間の開発者なら補える暗黙知をエージェントは補えないため、仕様を機械が解釈できる契約として整える必要があると指摘しています。 またOWASPは、エージェント固有の対策として、ツールごとの最小権限、高影響操作への人の承認、ツール呼び出しと結果の監査ログを挙げています。APIを「呼び出せるようにする」だけでなく、誤操作時の影響を限定し、後から追跡できる設計が必要です。
参考情報
- The New Stack: How To Prepare Your API for AI Agents
- OWASP: AI Agent Security Cheat Sheet
日本企業への示唆
日本企業では、まず小さく始めて、業務影響の小さい領域から段階的に広げる進め方が現実的です。たとえば、製造業の中堅企業なら設備点検記録の登録、物流企業なら在庫照会、バックオフィス中心の企業なら申請内容の下書き作成から始めると、導入効果とリスクを見極めやすくなります。
最初の1ステップとしては、1つの業務APIを選び、参照専用で試すことが有効です。更新や削除は後回しにし、まずは入出力スキーマ、認可、監査ログの3点を固めると、運用時の事故を減らしやすくなります。
特に、従業員数が数百〜数千人規模の企業では、部門ごとに権限や運用ルールが異なるため、APIレベルでの制御を先に決めておくことが重要です。
前提と準備
前提知識
- REST APIまたはRPC APIの基本
- 認証・認可の基本概念
- JSONスキーマやOpenAPIの読み方
- 業務システムの権限設計の基礎
準備物
- エージェントが呼び出す対象APIの一覧
- 各APIの入出力仕様
- 利用者ロールと権限表
- 監査ログの保存先
- テスト用のサンドボックス環境
筆者の見解
業務実装では、まず「失敗しても被害が限定されるか」を設計し、そのうえでモデルの使い方を決めると、運用で破綻しにくいです。
ただし、これは一般的な設計上の考え方であり、すべての現場に一律で当てはまるわけではありません。
手順
-
エージェントに許可する業務範囲を明確にする
まず、受発注照会、在庫確認、設備点検記録の登録など、対象業務を明確に定義します。
いきなり複数業務をつなぐと、権限と例外処理が複雑になり、検証が難しくなります。 -
APIごとに「やってよい操作」と「禁止操作」を分ける
例として、在庫照会APIは参照のみ、更新APIは人手承認後のみ、削除APIはエージェントからは呼ばせない、というように分離します。
ここで重要なのは、画面上の権限ではなく、APIレベルで制御することです。 -
入出力スキーマを固定する
返却値は自由文ではなく、JSONで項目名と型を固定します。
たとえばstatus、result_id、confidence、next_actionのように、エージェントが判断しやすい項目を定義します。
入力側も、必須項目、許容値、文字数、日付形式を明記します。 -
失敗時の返し方を標準化する
エラーは「失敗しました」ではなく、原因別に返します。
例:400: 入力不備401: 認証失敗403: 権限不足409: 競合429: 呼び出し過多500: システム障害
さらに、再試行してよいか、手動対応が必要かも返します。
-
認可を最小権限で設計する
エージェントには、人間の担当者と同じ権限をそのまま与えないでください。
業務単位、データ単位、操作単位で権限を分け、トークンの有効期限も短くします。
重要操作は二段階にして、エージェントの提案と人間の承認を分離します。 -
監査ログを最初から残す
少なくとも次の項目を記録します。- 誰が起点か
- どのエージェントが呼んだか
- どのAPIを呼んだか
- 入力値の要約
- 返却結果
- 実行時刻
- 承認の有無
事後確認ができないAPIは、業務利用では危険です。
-
サンドボックスで攻撃と失敗を試す
OWASPが推奨するように、本番から隔離した環境でツールの悪用、権限逸脱、想定外の連続実行を試します。 そのため、正常系だけでなく、想定外入力、権限不足、タイムアウト、連続呼び出し、曖昧な指示を含むテストを行います。
サンドボックスでは、以下のような手順で確認すると実務に落とし込みやすいです。- 本番と同じAPI仕様を持つ検証環境を用意する
- テスト用アカウントを作成し、権限を本番より絞る
- 正常系、異常系、境界値、連続呼び出しを順に実行する
- 失敗時のエラーコード、再試行可否、ログ記録を確認する
- 想定外の更新や削除が発生しないことを検証する
現実の利用環境では、テスト環境で見えなかった失敗が出る前提で運用します。
-
本番では段階展開する
最初は参照系APIのみ、次に下書き作成、最後に更新系へ進めます。
いきなり自動実行にせず、最初は提案のみ、次に人間承認付き、最後に限定自動化へ進めると安全です。
つまずきやすい点
自由文の返却に依存する
エージェントが自然文を解釈すると、判断がぶれます。
回避策: 返却形式をスキーマ化し、必須項目を固定します。
権限を広く与えすぎる
便利さを優先すると、誤操作の影響が大きくなります。
回避策: API単位で最小権限にし、更新系は承認フローを挟みます。
エラーを握りつぶす
再試行すべき失敗と、止めるべき失敗が混ざると、無限ループや誤処理が起きます。
回避策: エラーコードと再試行可否を明示します。
監査ログが後付けになる
本番後に追加すると、必要項目が残っていないことがあります。
回避策: 設計段階でログ項目を決めます。
テストが正常系だけ
現実運用では、入力揺れや権限境界で問題が出ます。
回避策: 異常系、境界値、連続呼び出しを必ず含めます。
実行チェックリスト
- エージェントに許可する業務範囲は明確か
- APIごとに参照・更新・削除の権限が分かれているか
- 入出力スキーマがJSONなどで固定されているか
- エラーコードごとの対応方針が決まっているか
- 重要操作に人間承認が必要な設計になっているか
- 監査ログに起点、操作、結果、時刻が残るか
- サンドボックスで異常系テストを実施したか
- 本番展開が段階的になっているか
まとめ
AIエージェント向けAPIの要点は、賢く見せることではなく、壊れ方を設計することです。入出力を固定し、権限を絞り、監査を残し、異常系を先に試す。この順番で進めると、業務実装の判断がしやすくなります。次の一歩は、1つの業務APIを選び、スキーマと権限表を先に書き出すことです。