Envoyer une requête textuelle

Dans ce guide, vous allez envoyer une requête textuelle à Gemini à l'aide de l'API et afficher la réponse du modèle.

Vous pouvez suivre ce guide en utilisant des bibliothèques clientes pour Python dans votre environnement local ou en envoyant des requêtes en ligne de commande à l'API REST.

Découvrez les langues prises en charge par Gemini dans lesquelles vous pouvez envoyer vos requêtes.

Avant de commencer

Avant de pouvoir commencer à envoyer des requêtes textuelles à Gemini pour générer du texte, vous devez disposer d'un projet pour lequel l'API Gemini est activée, ainsi que des rôles et identifiants appropriés. Vous devez installer, initialiser et vous authentifier auprès de gdcloud CLI, puis installer les bibliothèques clientes pour Python.

Pour en savoir plus, consultez Premiers pas.

Envoyer une requête à l'API Gemini

Utilisez le code suivant pour envoyer une requête textuelle à l'API Gemini. Cet exemple renvoie la hauteur de l'Empire State Building.

Vous pouvez exécuter le code à partir de la ligne de commande, à l'aide d'un IDE ou en l'intégrant dans votre application.

Python

Pour envoyer une requête textuelle et générer du texte à partir d'un script Python :

  1. Enregistrez votre requête API dans un fichier JSON nommé request.json. Le fichier doit ressembler à l'exemple suivant :

    {
        "messages": [
          {
            "role": "system",
            "content": "You are a helpful assistant."
          },
          {
            "role": "user",
            "content": "How tall is the Empire State Building?"
          }
        ]
    }
    

    Pour en savoir plus sur le corps de la requête, consultez Mettre en forme vos requêtes d'API.

    Vous pouvez tester les paramètres de votre requête. Pour en savoir plus, consultez Fonctionnalités.

  2. Installez les bibliothèques Python requises :

    pip install openai
    pip install absl-py
    pip install typing
    pip install protobuf
    
  3. Définissez les variables d'environnement requises dans un script Python.

  4. Authentifiez votre requête API.

  5. Ajoutez le code suivant au script Python que vous avez créé :

    import json
    import os
    
    from absl import app
    from absl import flags
    from openai import OpenAI, OpenAIError
    
    from google.protobuf import json_format
    from google.protobuf.struct_pb2 import Value
    
    from typing import Sequence
    
    _INPUT = flags.DEFINE_string("input", None, "input", required=True)
    _HOST = flags.DEFINE_string("host", None, "Chat Completion endpoint", required=True)
    _TOKEN = flags.DEFINE_string("token", None, "STS token", required=True)
    
    def chat_completion_client(host):
        return OpenAI(
            api_key="None",
            base_url="https://" + host + "/v1/projects/PROJECT_ID/locations/PROJECT_ID"
        )
    
    def chat_completion(client, messages, token):
    
        try:
            response = client.chat.completions.create(
            model="MODEL_ID",
            messages=messages,
            extra_headers={"Authorization" : "Bearer " + token, "Content-Type": "application/json"}
            )
            print("response:", response)
        except Exception as e:
            print("Got exception:", e)
    
    def main(argv: Sequence[str]):
        del argv  # Unused.
        with open(_INPUT.value) as json_file:
            data = json.load(json_file)
    
        print("Request: ", data)
    
        client = chat_completion_client(_HOST.value,)
    
        chat_completion(client=client, messages=data["messages"], token=_TOKEN.value)
    
    if __name__=="__main__":
        app.run(main)
    

    Remplacez les éléments suivants :

  6. Enregistrez le script Python.

  7. Envoyez une requête à Gemini avec l'interface Chat Completions :

    python SCRIPT_NAME --input=request.json --host=ENDPOINT --token=TOKEN
    

    Remplacez les éléments suivants :

Vous devez obtenir une réponse semblable à celle-ci :

ChatCompletion(id='', choices=[Choice(finish_reason='', index=0, logprobs=0, message=ChatCompletionMessage(content='The Empire State Building is **1,454 feet** (443 meters) tall.\n', refusal=None, role='assistant', function_call=None, tool_calls=None))], created=0, model='', object='', service_tier=None, system_fingerprint=None, usage=CompletionUsage(completion_tokens=0, prompt_tokens=0, total_tokens=0))

curl

Pour envoyer une requête curl à l'API REST afin de générer du texte à partir d'une requête textuelle, procédez comme suit :

  1. Enregistrez votre requête API dans un fichier JSON nommé request.json. Le fichier doit ressembler à l'exemple suivant :

    {
        "messages": [
          {
            "role": "system",
            "content": "You are a helpful assistant."
          },
          {
            "role": "user",
            "content": "How tall is the Empire State Building?"
          }
        ]
    }
    

    Pour en savoir plus sur le corps de la requête, consultez Mettre en forme vos requêtes d'API.

    Vous pouvez tester les paramètres de votre requête. Pour en savoir plus, consultez Fonctionnalités.

  2. Authentifiez votre requête API.

  3. Envoyez la demande :

    curl  \
      -H "Authorization: Bearer TOKEN"  \
      -H "Content-Type: application/json; charset=utf-8"  \
      -X POST  https://ENDPOINT:443/v1/projects/PROJECT_ID/locations/PROJECT_ID/chat/completions  -d @./request.json
    

    Remplacez les éléments suivants :

Vous devez obtenir une réponse semblable à celle-ci :

ChatCompletion(id='', choices=[Choice(finish_reason='', index=0, logprobs=0, message=ChatCompletionMessage(content='The Empire State Building is **1,454 feet** (443 meters) tall.\n', refusal=None, role='assistant', function_call=None, tool_calls=None))], created=0, model='', object='', service_tier=None, system_fingerprint=None, usage=CompletionUsage(completion_tokens=0, prompt_tokens=0, total_tokens=0))

Étapes suivantes