Gemini API 接続ガイド:Google互換呼び出しと大規模コンテキスト対応

Google Gemini APIと互換性のある方式で当サイトのモデルを利用する方法。リクエストペイロード、エンドポイント、認証、curl例、ストリーミング設定、エラーコードについて解説します。

1. 概要

当サイトでは Google Gemini API と互換性のある接続を提供しており、generateContent およびストリーミング生成の両方に対応しています。Google GenAI SDK や Gemini 互換クライアントを使用しているプロジェクトであれば、リクエスト先を当サイトのゲートウェイに変更し、APIキーを当サイトで発行した sk- から始まるキーに置き換えるだけで接続可能です。

現在利用可能な Gemini シリーズのモデルは、モデル一覧ページに準じます(gemini-3.7-flashgemini-3.6-flashgemini-3.5-flashgemini-3.5-flash-lite など)。モデルの詳細なリストや単価は GET /v1/models から確認できます。

2. インターフェースアドレス

メソッドパス説明
POST/v1beta/models/{model}:generateContentGemini 生成エンドポイント、リクエストボディは generateContent ペイロード
POST/v1beta/models/{model}:streamGenerateContent?alt=sseストリーミング生成 (SSE)
GET/v1/modelsモデルと単価の一覧(認証不要)

ゲートウェイURL: https://www.relay-api.com。モデル名はURLパスの {model} 部分に指定します(/v1beta/models/{model}:generateContent、Google公式仕様に準拠)。

3. 認証方法

当サイトの他インターフェースと同様に、発行された sk- で始まるキーを使用します:

Authorization: Bearer sk-あなたのキー

また、x-api-key ヘッダー、および Google 公式の x-goog-api-key: sk-あなたのキー ヘッダーにも対応しています。

4. クイックスタート (curl)

4.1 非ストリーミング

curl -X POST https://www.relay-api.com/v1beta/models/gemini-3.7-flash:generateContent \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer sk-あなたのキー" \
  -d '{
    "contents": [
      {
        "role": "user",
        "parts": [{"text": "Gemini APIについて一言で説明して"}]
      }
    ],
    "generationConfig": {
      "temperature": 0.7,
      "maxOutputTokens": 512
    }
  }'

4.2 システムプロンプトの使用 (systemInstruction)

curl -X POST https://www.relay-api.com/v1beta/models/gemini-3.7-flash:generateContent \
  -H "Content-Type: application/json" \
  -H "x-api-key: sk-あなたのキー" \
  -d '{
    "model": "gemini-3.5-flash",
    "systemInstruction": {
      "parts": [{"text": "あなたは熟練のAPIエンジニアです。簡潔に回答してください。"}]
    },
    "contents": [
      {"role": "user", "parts": [{"text": "ストリーミングと非ストリーミングの使い分け方は?"}]}
    ]
  }'

5. リクエストパラメータ

フィールド必須説明
modelstringはいモデル名(slug)、例:gemini-3.7-flash
contentsarrayはい会話内容、要素は {role, parts[]};role は user または model
contents[].partsarrayはい内容ブロック、通常は {text}
systemInstructionobjectいいえシステムプロンプト、構造は {parts: [{text}]}
generationConfig.temperaturenumberいいえサンプリング温度、デフォルト 1.0
generationConfig.topPnumberいいえコアサンプリング
generationConfig.topKintいいえTop-K サンプリング
generationConfig.maxOutputTokensintいいえ最大出力トークン数
generationConfig.stopSequencesarrayいいえ停止シーケンス
streamboolいいえストリーミングの有無、デフォルト false

6. レスポンス構造

{
  "candidates": [
    {
      "content": {
        "role": "model",
        "parts": [{"text": "Gemini APIはテキスト、マルチモーダル入力、ストリーミング出力をサポートしています。"}]
      },
      "finishReason": "STOP",
      "index": 0
    }
  ],
  "usageMetadata": {
    "promptTokenCount": 16,
    "candidatesTokenCount": 20,
    "totalTokenCount": 36
  }
}
フィールド説明
candidates[].content.parts[].textモデルが生成したテキスト
candidates[].finishReason終了理由:STOP / MAX_TOKENS / SAFETY / RECITATION
usageMetadata.promptTokenCount入力トークン数(課金対象)
usageMetadata.candidatesTokenCount出力トークン数(課金対象)
usageMetadata.totalTokenCount合計トークン数

7. ストリーミング出力

リクエストボディに "stream": true を含めると、サーバーは SSE 形式で逐次データを返します:

data: {"candidates": [{"content": {"parts": [{"text": "Gemini"}]}, "index": 0}]}

data: {"candidates": [{"content": {"parts": [{"text": " APIはストリーミング"}]}, "index": 0}]}

data: {"candidates": [{"content": {"parts": [{"text": "対応です。"}]}, "index": 0, "finishReason": "STOP"}]}

クライアント側で各 data: 行をパースし、candidates[0].content.parts[0].text を結合してください。最後のチャンクの finishReasonSTOP になれば生成完了です。

8. エラーコード一覧

HTTP ステータス意味対処法
400リクエスト形式エラーリクエストボディとモデル名を確認
401APIキー無効または不足Authorization / x-api-key ヘッダーを確認
403キー停止、残高不足、または権限外チャージまたは権限を確認
404モデルまたはエンドポイント未存在モデルのslugを確認
429リクエスト過多少し時間を置いて再試行
500サーバー内部エラー後ほど再試行、解決しない場合はサポートへ連絡

エラーレスポンスは {"code": ステータスコード, "message": "エラー内容", "data": null} 形式で返されます。

9. 互換性について

  • Google GenAI SDK (google-genai) はカスタムエンドポイント設定により接続可能です。
  • generateContent をターゲットとするあらゆる Gemini 互換クライアントをサポートしています。
  • 利用可能なモデル名は GET /v1/models で返される slug に準じます。