> ## 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.

# Guide de démarrage de l’API Gemini : utiliser des requêtes natives et compatibles OpenAI avec CometAPI

> Appelez des modèles de texte Gemini via CometAPI avec des requêtes natives generateContent ou des requêtes Chat Completions compatibles OpenAI.

## Ce que vous allez créer

Vous allez envoyer une requête native Gemini `POST /v1beta/models/\{model\}:generateContent`, puis la comparer avec l’option compatible OpenAI `POST /v1/chat/completions` pour les applications qui utilisent déjà des formats de requête Chat Completions.

## Prérequis

* Une clé API CometAPI stockée dans `COMETAPI_KEY`
* Un model ID de modèle de texte Gemini depuis la [page Models](/fr/overview/models)
* `curl`, Python 3.10+ ou Node.js 18+

## Clé API, URL de base, authentification

Utilisez l’endpoint natif Gemini lorsque vous voulez des champs de requête Gemini :

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

Utilisez `x-goog-api-key` pour les requêtes HTTP natives Gemini directes :

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

Utilisez l’URL de base compatible OpenAI uniquement lorsque votre application utilise déjà Chat Completions :

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

## Format natif Gemini

Les requêtes natives Gemini utilisent `contents`, `parts` et `generationConfig`. Utilisez ce chemin lorsque vous avez besoin de champs spécifiques à Gemini comme les contrôles de réflexion, les parties média, l’ancrage Google Search ou les opérateurs de Streaming natifs.

<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>

## Option compatible OpenAI

Utilisez la route compatible OpenAI lorsque vous migrez un SDK OpenAI existant ou une application Chat Completions existante et que vous n’avez pas besoin des champs de requête natifs Gemini.

<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>

## Explication du flux

| Chemin            | Endpoint                                        | Format de requête                                  | SDK                             | À utiliser quand                                                                                                                    |
| ----------------- | ----------------------------------------------- | -------------------------------------------------- | ------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- |
| Natif Gemini      | `POST /v1beta/models/\{model\}:generateContent` | `contents`, `parts`, `generationConfig`            | SDK Google GenAI ou HTTP direct | Vous avez besoin de champs spécifiques à Gemini, de parties Multimodal, de contrôles de réflexion, d’ancrage ou de Streaming natif. |
| Compatible OpenAI | `POST /v1/chat/completions`                     | `messages`, `temperature`, `max_completion_tokens` | SDK OpenAI ou HTTP direct       | Votre application utilise déjà Chat Completions et a seulement besoin d’un modèle de texte Gemini derrière ce format.               |

Ne mélangez pas les deux formats de requête. Les champs natifs Gemini comme `contents` et `generationConfig` appartiennent à la route `generateContent`. Les champs Chat Completions comme `messages` appartiennent à la route compatible OpenAI.

## Dépannage / FAQ

<AccordionGroup>
  <Accordion title="Par quel chemin dois-je commencer">
    Commencez avec le `generateContent` natif Gemini lorsque vous créez un nouveau workflow Gemini. Utilisez la route compatible OpenAI lorsqu’une application existante dépend déjà du SDK OpenAI ou de formats de requête Chat Completions.
  </Accordion>

  <Accordion title="Les champs natifs Gemini échouent sur Chat Completions">
    Envoyez les requêtes `contents`, `parts`, `generationConfig` et `streamGenerateContent` vers l’endpoint natif Gemini. La route compatible OpenAI attend `messages` et les paramètres Chat Completions.
  </Accordion>

  <Accordion title="Le model ID Gemini échoue">
    Confirmez que le model ID est disponible pour votre compte et prend en charge la route que vous appelez. Utilisez la [page Models](/fr/overview/models) pour trouver les model IDs actuels.
  </Accordion>

  <Accordion title="Le SDK pointe vers le mauvais service">
    Pour les requêtes du SDK Google GenAI, définissez l’URL de base sur `https://api.cometapi.com`. Pour les requêtes du SDK OpenAI, définissez `base_url` en Python ou `baseURL` en Node.js sur `https://api.cometapi.com/v1`.
  </Accordion>
</AccordionGroup>

## Étapes suivantes

* Utilisez la [référence de l’API native Gemini](/api/text/gemini-generating-content) pour tous les champs de requête et de réponse `generateContent`.
* Consultez la [référence de l’API Chat Completions](/api/text/chat) pour le format de requête compatible OpenAI.
* Configurez les clients SDK OpenAI dans [Utiliser CometAPI avec les SDK OpenAI](/fr/guides/use-cometapi-with-openai-sdk).
* Listez les modèles disponibles avec [Lister les modèles CometAPI disponibles](/fr/guides/how-to-list-available-models).
* Ajoutez la gestion des nouvelles tentatives et des limites de débit avec [Codes d’erreur et stratégie de nouvelle tentative](/fr/guides/error-codes-and-retry-strategy).
