開発トラブルシューティング
API Connector テストガイド
プロンプトカードAPI Connector機能のテスト手順と設定
API Connector テストガイド
このドキュメントでは、プロンプトカードの「API Connector」機能をテストするためのサンプルAPIと、その設定方法について説明します。
1. 基本的な設定方法
API Connectorカードを作成し、以下の項目を設定します。
- API URL: 取得先のURL(https://... または /api/...)
- Method: GET または POST
- JSON Selector: レスポンスのJSONから特定の値を抽出するためのドット記法(例:
data.text) - Headers (JSON):
{"Authorization": "Bearer ...", "Accept": "application/json"}のような形式で指定 - Body (JSON): POSTリクエスト時に送信するデータ
プロンプトの本文(Content)欄に {{DATA}} を含めると、取得したデータがその場所に埋め込まれます。含めない場合は、コンテンツの先頭にデータが自動的に挿入されます。
2. テスト用サンプルAPI案
案A: 公開されているシンプルなJSON API (GET)
外部ネットワークへの接続確認に適しています。
- API URL:
https://official-joke-api.appspot.com/random_joke - Method:
GET - JSON Selector:
setup(またはpunchline) - 期待される結果: ランダムなジョークの冒頭部分が埋め込まれる
案B: 構造化データの抽出テスト (GET)
ネストされたオブジェクトからの抽出を確認します。
- API URL:
https://api.open-meteo.com/v1/forecast?latitude=35.6762&longitude=139.6503¤t=temperature_2m - Method:
GET - JSON Selector:
data.current.temperature_2m - 期待される結果: 20.5 のような数値(現在の東京の気温)
案C: クエリパラメータやカスタムHeaderのテスト (GET)
外部ネットワークへの接続確認に適しています。
- API URL:
https://httpbin.org/get?name=PlotToProse - Method:
GET - Headers (JSON):
{"X-Custom-Header": "TestValue"} - JSON Selector:
data.headers.X-Custom-Header - 期待される結果:
"TestValue"
案D: POSTリクエストのテスト
データの送信とレスポンスの受け取りを確認します。
- API URL:
https://httpbin.org/post - Method:
POST - Body (JSON):
{"test_input": "Hello World"} - JSON Selector:
data.json.test_input - 期待される結果:
"Hello World"
3. 実装上の改善点(反映済み)
ガイド作成にあたり、以下の機能を「API Connector」に追加実装しました。
- Method選択 (GET/POST): 単純な取得だけでなく、データの送信を伴うリクエストも可能にしました。
- カスタムHeader (JSON):
Authorizationなどの認証用ヘッダーや、Accept等のコンテントタイプ指定を手動で行えるようにしました。 - Request Body (JSON): POSTメソッド使用時に、任意のJSONデータを送信できるようにしました。
- 型定義の拡張:
DynamicConfigインターフェースにapiHeadersとapiBodyを追加し、永続化に対応させました。 - エラーハンドリングの強化: JSONのパース失敗時にログ出力を行い、可能な限り元の文字列を維持してフォールバックするように調整しました。
4. トラブルシューティング
- ECONNRESET エラー: ネットワーク環境やプロキシの制限により接続が切断されることがあります。再試行ロジックが組み込まれていますが、頻発する場合はAPIサーバー側の制限も確認してください。
- Selectorが効かない: コンソールログ(F12)を開き、
📦 [PromptResolver] API Response Structureというグループを探してください。実際のJSON構造とSelectorが一致しているか確認できます。 - 内部API (/api/...): 内部APIを叩く場合は、
/api/proxyを経由せずブラウザから直接リクエストが送信されます。