メインコンテンツへスキップ

概要

ShannonはOpenAPI 3.x仕様からツールを自動生成でき、コードを書くことなく任意のREST APIを統合できます。OpenAPIローダーは以下の機能を持っています:
  • ✅ OpenAPI 3.0/3.1仕様を解析
  • ✅ 操作ごとに1つのツールを生成
  • ✅ 認証を処理(Bearer、API Key、Basic)
  • ✅ パス/クエリ/ヘッダーのパラメータをサポート
  • ✅ サーキットブレーカーとレート制限を含む
  • ✅ スキーマに対してリクエストを検証
  • $ref参照をローカルで解決
クイックスタート: ステップバイステップの手順についてはカスタムツールの追加ガイドを参照してください。

設定リファレンス

基本設定

フィールドの説明

認証タイプ

認証なし

Bearerトークン

使用例: GitHub、GitLab、ほとんどの最新API
環境変数:
送信されるヘッダー:

ヘッダー内のAPIキー

使用例: OpenAI、Anthropic、多くのSaaS API
環境変数:
送信されるヘッダー:

クエリパラメータ内のAPIキー

使用例: OpenWeather、一部のレガシーAPI
リクエストURL:

Basic認証

使用例: レガシーAPI、内部サービス
環境変数:
送信されるヘッダー:

カスタムヘッダー

ベンダー固有の認証のために:
動的ヘッダーテンプレート:
  • "${ENV_VAR}" - 環境から解決
  • "{{body.field}}" - 実行時にリクエストボディから解決
  • 静的文字列 - そのまま使用

高度な機能

操作フィルタリング

operationIdによるフィルタリング(推奨):
タグによるフィルタリング:

ベースURLのオーバーライド

仕様からベースURLをオーバーライド:
ユースケース:
  • ステージング/開発環境でのテスト
  • 内部プロキシやゲートウェイ
  • ローカル開発

レート制限

外部APIを過負荷から保護:
ツールごとの制限: 仕様から生成された各操作はこの制限を継承します。 動作:
  • トークンバケットアルゴリズムで強制
  • すべてのツールインスタンスで共有(単一のShannonインスタンス)
  • 制限を超えた場合はエラーを返す

サーキットブレーカー

自動的な障害保護: 設定(環境経由):
状態:
  1. 閉じた(通常): すべてのリクエストが通過
  2. 開いた(失敗中): すべてのリクエストが即座に拒否
  3. 半開き(テスト中): 1回の試行リクエストが許可される
動作:
  • 5回連続で失敗 → サーキットを開く
  • サーキットは60秒間オープンのまま
  • その後、1回の試行リクエストを許可(半開き)
  • 成功 → サーキットを閉じる
  • 失敗 → さらに60秒間再オープン

レスポンスサイズ制限

メモリの枯渇を防ぐ:
動作:
  • 制限を超えるレスポンスは切り捨てられる
  • 切り捨てマーカー付きのエラーが返される

トラブルシューティング

ツールが登録されていない

症状: ツールが /tools/list に表示されない デバッグ:
一般的な原因:
  • config内の enabled: false
  • 無効なOpenAPI仕様
  • OPENAPI_ALLOWED_DOMAINS にドメインが含まれていない
  • 仕様取得タイムアウト
  • 循環参照の $ref

ドメイン検証エラー

症状: URL host 'example.com' not in allowed domains 修正:
docker-compose.yml内:

仕様取得タイムアウト

症状: Failed to fetch OpenAPI spec: timeout 修正:

サーキットブレーカーがトリガーされた

症状: Circuit breaker open for https://api.example.com デバッグ:
修正:
  • 自動回復のために60秒待つ
  • 基本的なAPIの問題を修正
  • APIが遅い場合はタイムアウトを増加:

レート制限超過

症状: Rate limit exceeded for tool my_tool 修正:

認証失敗

症状: 401 Unauthorized または 403 Forbidden デバッグ:
一般的な原因:
  • 環境変数が設定されていない
  • トークンが期限切れ
  • 認証タイプが間違っている(api_key ではなく bearer であるべき)
  • APIキー認証のための Bearer プレフィックスが欠落

例 1: GitHub API

使用法:

例 2: OpenWeather API

使用法:

例 3: ベンダーアダプターを使用した内部API

ベンダーアダプター (python/llm-service/llm_service/tools/vendor_adapters/mycompany.py):

セキュリティベストプラクティス

  • Shannonは外部APIのHTTPを自動的にHTTPSにアップグレードします
  • localhost/127.0.0.1は開発用にHTTPで許可されています

関連情報

カスタムツールの追加

ツール統合ガイド

ベンダーアダプター

ドメイン特化型統合

Shannonの拡張

その他の拡張方法

OpenAPIテスト

テスト例と検証

クイックリファレンス

ヘルプが必要ですか?
  • 問題を報告: GitHub Issues
  • 例: tests/e2e/06_openapi_petstore_test.sh