> ## Documentation Index
> Fetch the complete documentation index at: https://apidoc.cometapi.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Gemini API クイックスタート: CometAPI でネイティブリクエストと OpenAI 互換リクエストを使う

> CometAPI を通じて Gemini テキストモデルを、ネイティブな generateContent リクエストまたは OpenAI 互換のチャット補完リクエストで呼び出します。

## 作成するもの

ネイティブな Gemini `POST /v1beta/models/\{model\}:generateContent` リクエストを送信し、その後、すでにチャット補完のリクエスト形式を使っているアプリ向けの OpenAI 互換 `POST /v1/chat/completions` オプションと比較します。

## 前提条件

* `COMETAPI_KEY` に保存された CometAPI API キー
* [Models page](/ja/overview/models) の Gemini テキスト model ID
* `curl`、Python 3.10+、または Node.js 18+

## API キー、base URL、認証

Gemini のリクエストフィールドを使いたい場合は、Gemini ネイティブエンドポイントを使用します:

```text theme={null}
https://api.cometapi.com/v1beta/models/{model}:generateContent
```

Gemini ネイティブの直接 HTTP リクエストでは `x-goog-api-key` を使用します:

```text theme={null}
x-goog-api-key: $COMETAPI_KEY
```

アプリケーションがすでにチャット補完を使っている場合にのみ、OpenAI 互換の base URL を使用します:

```text theme={null}
https://api.cometapi.com/v1
```

## ネイティブ Gemini 形式

ネイティブ Gemini リクエストでは `contents`、`parts`、`generationConfig` を使用します。thinking controls、メディアパート、Google Search grounding、またはネイティブのストリーミング演算子のような Gemini 固有フィールドが必要な場合は、このパスを使います。

<CodeGroup>
  ```bash cURL theme={null}
  curl "https://api.cometapi.com/v1beta/models/your-gemini-model-id:generateContent" \
    -H "x-goog-api-key: $COMETAPI_KEY" \
    -H "Content-Type: application/json" \
    -d '{
      "contents": [
        {
          "parts": [
            {
              "text": "Explain why base URL configuration matters."
            }
          ]
        }
      ],
      "generationConfig": {
        "temperature": 0.3
      }
    }'
  ```

  ```python Python theme={null}
  import os
  from google import genai

  client = genai.Client(
      api_key=os.environ["COMETAPI_KEY"],
      http_options={"api_version": "v1beta", "base_url": "https://api.cometapi.com"},
  )

  response = client.models.generate_content(
      model="your-gemini-model-id",
      contents="Explain why base URL configuration matters.",
      config={
          "temperature": 0.3,
      },
  )

  print(response.text)
  ```

  ```javascript Node.js theme={null}
  import { GoogleGenAI } from "@google/genai";

  const ai = new GoogleGenAI({
    apiKey: process.env.COMETAPI_KEY,
    httpOptions: {
      baseUrl: "https://api.cometapi.com",
      apiVersion: "v1beta",
    },
  });

  const response = await ai.models.generateContent({
    model: "your-gemini-model-id",
    contents: "Explain why base URL configuration matters.",
    config: {
      temperature: 0.3,
    },
  });

  console.log(response.text);
  ```
</CodeGroup>

## OpenAI 互換オプション

既存の OpenAI SDK またはチャット補完アプリを移行していて、Gemini ネイティブのリクエストフィールドが不要な場合は、OpenAI 互換ルートを使用します。

<CodeGroup>
  ```bash cURL theme={null}
  curl https://api.cometapi.com/v1/chat/completions \
    -H "Authorization: Bearer $COMETAPI_KEY" \
    -H "Content-Type: application/json" \
    -d '{
      "model": "your-gemini-model-id",
      "messages": [
        {
          "role": "user",
          "content": "Explain why base URL configuration matters."
        }
      ]
    }'
  ```

  ```python Python theme={null}
  import os
  from openai import OpenAI

  client = OpenAI(
      api_key=os.environ["COMETAPI_KEY"],
      base_url="https://api.cometapi.com/v1",
  )

  completion = client.chat.completions.create(
      model="your-gemini-model-id",
      messages=[
          {
              "role": "user",
              "content": "Explain why base URL configuration matters.",
          }
      ],
  )

  print(completion.choices[0].message.content)
  ```

  ```javascript Node.js theme={null}
  import OpenAI from "openai";

  const client = new OpenAI({
    apiKey: process.env.COMETAPI_KEY,
    baseURL: "https://api.cometapi.com/v1",
  });

  const completion = await client.chat.completions.create({
    model: "your-gemini-model-id",
    messages: [
      {
        role: "user",
        content: "Explain why base URL configuration matters.",
      },
    ],
  });

  console.log(completion.choices[0].message.content);
  ```
</CodeGroup>

## フローの説明

| パス           | エンドポイント                                         | リクエスト形式                                            | SDK                         | 使用する場面                                                                                   |
| ------------ | ----------------------------------------------- | -------------------------------------------------- | --------------------------- | ---------------------------------------------------------------------------------------- |
| Gemini ネイティブ | `POST /v1beta/models/\{model\}:generateContent` | `contents`, `parts`, `generationConfig`            | Google GenAI SDK または直接 HTTP | Gemini 固有フィールド、マルチモーダル（Multimodal）パート、thinking controls、grounding、またはネイティブストリーミングが必要な場合。 |
| OpenAI 互換    | `POST /v1/chat/completions`                     | `messages`, `temperature`, `max_completion_tokens` | OpenAI SDK または直接 HTTP       | アプリがすでにチャット補完を使っており、その形式の背後で Gemini テキストモデルだけが必要な場合。                                     |

2 つのリクエスト形式を混在させないでください。`contents` や `generationConfig` のようなネイティブ Gemini フィールドは `generateContent` ルートで使用します。`messages` のようなチャット補完フィールドは OpenAI 互換ルートで使用します。

## トラブルシューティング / FAQ

<AccordionGroup>
  <Accordion title="どのパスから始めるべきですか">
    新しい Gemini ワークフローを構築する場合は、ネイティブ Gemini の `generateContent` から始めてください。既存アプリがすでに OpenAI SDK またはチャット補完のリクエスト形式に依存している場合は、OpenAI 互換ルートを使用します。
  </Accordion>

  <Accordion title="ネイティブ Gemini フィールドがチャット補完で失敗する">
    `contents`、`parts`、`generationConfig`、および `streamGenerateContent` リクエストは Gemini ネイティブエンドポイントに送信してください。OpenAI 互換ルートは `messages` とチャット補完パラメータを想定しています。
  </Accordion>

  <Accordion title="Gemini model ID が失敗する">
    その model ID があなたのアカウントで利用可能であり、呼び出しているルートをサポートしていることを確認してください。現在の model ID を確認するには [Models page](/ja/overview/models) を使用してください。
  </Accordion>

  <Accordion title="SDK が誤ったサービスを指している">
    Google GenAI SDK リクエストでは、base URL を `https://api.cometapi.com` に設定します。OpenAI SDK リクエストでは、Python の `base_url` または Node.js の `baseURL` を `https://api.cometapi.com/v1` に設定します。
  </Accordion>
</AccordionGroup>

## 次のステップ

* `generateContent` の完全なリクエストフィールドとレスポンスフィールドについては、[Gemini ネイティブ API リファレンス](/api/text/gemini-generating-content) を使用してください。
* OpenAI 互換のリクエスト形式については、[チャット補完 API リファレンス](/api/text/chat) を参照してください。
* OpenAI SDK クライアントは [OpenAI SDK で CometAPI を使う](/ja/guides/use-cometapi-with-openai-sdk) で設定してください。
* 利用可能なモデルは [利用可能な CometAPI モデルを一覧表示する](/ja/guides/how-to-list-available-models) で確認できます。
* リトライとレート制限処理は [エラーコードとリトライ戦略](/ja/guides/error-codes-and-retry-strategy) で追加してください。
