傳送文字提示

在本指南中,您會使用 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)
    

    更改下列內容:

    • PROJECT_ID:您的專案 ID。
    • MODEL_ID:要產生回應的模型端點 ID
  6. 儲存 Python 指令碼。

  7. 透過 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 要求生成文字:

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

後續步驟