このガイドでは、API を使用して Gemini にテキスト プロンプトを送信し、モデルのレスポンスを表示します。
このガイドは、ローカル環境で Python 用クライアント ライブラリを使用するか、REST API にコマンドライン リクエストを送信することで完了できます。
Gemini でサポートされている言語でプロンプトを送信できます。
始める前に
Gemini にテキスト プロンプトを送信してテキストを生成するには、Gemini API が有効になっているプロジェクトと、適切なロールと認証情報が必要です。gdcloud CLI を使用してインストール、初期化、認証を行い、Python 用のクライアント ライブラリをインストールする必要があります。
詳細については、スタートガイドをご覧ください。
Gemini API にプロンプトを送信する
次のコードを使用して、テキスト プロンプトを Gemini API に送信します。このサンプルは、エンパイア ステート ビルの高さを返します。
コードは、コマンドラインから、IDE を使用して、またはアプリケーションにコードを組み込んで実行できます。
Python
次の手順に沿って、テキスト プロンプトを送信し、Python スクリプトからテキストを生成します。
API リクエストを
request.jsonという名前の JSON ファイルに保存します。ファイルは次の例のようになっている必要があります。{ "messages": [ { "role": "system", "content": "You are a helpful assistant." }, { "role": "user", "content": "How tall is the Empire State Building?" } ] }リクエスト本文の詳細については、API リクエストの形式を設定するをご覧ください。
リクエストでパラメータを試すことができます。詳しくは、ケーパビリティをご覧ください。
必要な Python ライブラリをインストールします。
pip install openai pip install absl-py pip install typing pip install protobuf作成した 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)次のように置き換えます。
PROJECT_ID: プロジェクト ID。MODEL_ID: レスポンスを生成するモデル エンドポイント ID。
Python スクリプトを保存します。
Chat Completions インターフェースを使用して Gemini にリクエストを送信します。
python SCRIPT_NAME --input=request.json --host=ENDPOINT --token=TOKEN次のように置き換えます。
SCRIPT_NAME: Python スクリプトに付けた名前(client.pyなど)。ENDPOINT: 組織で使用する Gemini エンドポイント。詳細については、サービス ステータスとエンドポイントを表示するをご覧ください。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 リクエストを通じてテキストを生成します。
API リクエストを
request.jsonという名前の JSON ファイルに保存します。ファイルは次の例のようになっている必要があります。{ "messages": [ { "role": "system", "content": "You are a helpful assistant." }, { "role": "user", "content": "How tall is the Empire State Building?" } ] }リクエスト本文の詳細については、API リクエストの形式を設定するをご覧ください。
リクエストでパラメータを試すことができます。詳しくは、ケーパビリティをご覧ください。
次のリクエストを行います。
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次のように置き換えます。
TOKEN: 取得した認証トークン。ENDPOINT: 組織で使用する Gemini エンドポイント。詳細については、サービス ステータスとエンドポイントを表示するをご覧ください。PROJECT_ID: プロジェクト ID。MODEL_ID: レスポンスを生成するモデル エンドポイント ID。
次のようなレスポンスを取得する必要があります。
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))