テキスト プロンプトを送信する

このガイドでは、API を使用して Gemini にテキスト プロンプトを送信し、モデルのレスポンスを表示します。

このガイドは、ローカル環境で Python 用クライアント ライブラリを使用するか、REST API にコマンドライン リクエストを送信することで完了できます。

Gemini でサポートされている言語でプロンプトを送信できます。

始める前に

Gemini にテキスト プロンプトを送信してテキストを生成するには、Gemini API が有効になっているプロジェクトと、適切なロールと認証情報が必要です。gdcloud CLI を使用してインストール、初期化、認証を行い、Python 用のクライアント ライブラリをインストールする必要があります。

詳細については、スタートガイドをご覧ください。

Gemini API にプロンプトを送信する

次のコードを使用して、テキスト プロンプトを Gemini API に送信します。このサンプルは、エンパイア ステート ビルの高さを返します。

コードは、コマンドラインから、IDE を使用して、またはアプリケーションにコードを組み込んで実行できます。

Python

次の手順に沿って、テキスト プロンプトを送信し、Python スクリプトからテキストを生成します。

  1. API リクエストを request.json という名前の JSON ファイルに保存します。ファイルは次の例のようになっている必要があります。

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

    リクエスト本文の詳細については、API リクエストの形式を設定するをご覧ください。

    リクエストでパラメータを試すことができます。詳しくは、ケーパビリティをご覧ください。

  2. 必要な Python ライブラリをインストールします。

    pip install openai
    pip install absl-py
    pip install typing
    pip install protobuf
    
  3. Python スクリプトに必要な環境変数を設定します

  4. API リクエストを認証します

  5. 作成した Python スクリプトに次のコードを追加します。

    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)
    

    次のように置き換えます。

  6. Python スクリプトを保存します。

  7. Chat Completions インターフェースを使用して Gemini にリクエストを送信します。

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

    次のように置き換えます。

次のようなレスポンスを取得する必要があります。

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

次の手順に沿って、テキスト プロンプトを送信し、REST API への curl リクエストを通じてテキストを生成します。

  1. API リクエストを request.json という名前の JSON ファイルに保存します。ファイルは次の例のようになっている必要があります。

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

    リクエスト本文の詳細については、API リクエストの形式を設定するをご覧ください。

    リクエストでパラメータを試すことができます。詳しくは、ケーパビリティをご覧ください。

  2. API リクエストを認証します

  3. 次のリクエストを行います。

    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
    

    次のように置き換えます。

次のようなレスポンスを取得する必要があります。

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

次のステップ