88API88API
使用指南AI 應用API 文件幫助支援
聊天(Chat)

Google Gemini 對話格式(Generate Content)

📝 簡介

Google Gemini API 支援使用圖片、音訊、程式碼、工具等生成內容。給定輸入 GenerateContentRequest 生成模型響應。支援文字生成、視覺理解、音訊處理、長上下文、程式碼執行、JSON 模式、函式呼叫等多種功能。

💡 請求示例

基礎文字對話 ✅

curl "https://88api.ai/v1beta/models/gemini-2.0-flash:generateContent?key=$API_KEY" \
    -H 'Content-Type: application/json' \
    -X POST \
    -d '{
      "contents": [{
        "parts":[{"text": "Write a story about a magic backpack."}]
        }]
       }' 2> /dev/null

影象分析對話 ✅

# 使用臨時檔案儲存base64編碼的圖片資料
TEMP_B64=$(mktemp)
trap 'rm -f "$TEMP_B64"' EXIT
base64 $B64FLAGS $IMG_PATH > "$TEMP_B64"

# 使用臨時檔案儲存JSON載荷
TEMP_JSON=$(mktemp)
trap 'rm -f "$TEMP_JSON"' EXIT

cat > "$TEMP_JSON" `<< EOF
{
  "contents": [{
    "parts":[
      {"text": "Tell me about this instrument"},
      {
        "inline_data": {
          "mime_type":"image/jpeg",
          "data": "$(cat "$TEMP_B64")"
        }
      }
    ]
  }]
}
EOF

curl "https://88api.ai/v1beta/models/gemini-2.0-flash:generateContent?key=$API_KEY" \
    -H 'Content-Type: application/json' \
    -X POST \
    -d "@$TEMP_JSON" 2>` /dev/null

函式呼叫 ✅

cat > tools.json `<< EOF
{
  "function_declarations": [
    {
      "name": "enable_lights",
      "description": "Turn on the lighting system."
    },
    {
      "name": "set_light_color",
      "description": "Set the light color. Lights must be enabled for this to work.",
      "parameters": {
        "type": "object",
        "properties": {
          "rgb_hex": {
            "type": "string",
            "description": "The light color as a 6-digit hex string, e.g. ff0000 for red."
          }
        },
        "required": [
          "rgb_hex"
        ]
      }
    },
    {
      "name": "stop_lights",
      "description": "Turn off the lighting system."
    }
  ]
}
EOF

curl "https://88api.ai/v1beta/models/gemini-2.0-flash:generateContent?key=$API_KEY" \
  -H 'Content-Type: application/json' \
  -d @<(echo '
  {
    "system_instruction": {
      "parts": {
        "text": "You are a helpful lighting system bot. You can turn lights on and off, and you can set the color. Do not perform any other tasks."
      }
    },
    "tools": ['$(cat tools.json)'],

    "tool_config": {
      "function_calling_config": {"mode": "auto"}
    },

    "contents": {
      "role": "user",
      "parts": {
        "text": "Turn on the lights please."
      }
    }
  }
') 2>`/dev/null |sed -n '/"content"/,/"finishReason"/p'

JSON 模式響應 ✅

curl "https://88api.ai/v1beta/models/gemini-2.0-flash:generateContent?key=$API_KEY" \
-H 'Content-Type: application/json' \
-d '{
    "contents": [{
      "parts":[
        {"text": "List 5 popular cookie recipes"}
        ]
    }],
    "generationConfig": {
        "response_mime_type": "application/json",
        "response_schema": {
          "type": "ARRAY",
          "items": {
            "type": "OBJECT",
            "properties": {
              "recipe_name": {"type":"STRING"},
            }
          }
        }
    }
}' 2> /dev/null | head

音訊處理 🟡

檔案上傳限制

僅支援透過 inline_data 以 base64 方式上傳音訊,不支援 file_data.file_uri 或 File API。

# 使用File API上傳音訊資料到API請求
# 使用 base64 inline_data 上傳音訊資料到 API 請求
if [[ "$(base64 --version 2>&1)" = *"FreeBSD"* ]]; then
  B64FLAGS="--input"
else
  B64FLAGS="-w0"
fi
AUDIO_B64=$(base64 $B64FLAGS "$AUDIO_PATH")

curl "https://88api.ai/v1beta/models/gemini-2.0-flash:generateContent?key=$API_KEY" \
  -H 'Content-Type: application/json' \
  -X POST \
  -d '{
    "contents": [{
      "parts": [
        {"text": "Please describe this audio file."},
        {"inline_data": {"mime_type": "audio/mpeg", "data": "'$AUDIO_B64'"}}
      ]
    }]
  }' 2> /dev/null | jq ".candidates[].content.parts[].text"

影片處理 🟡

檔案上傳限制

僅支援透過 inline_data 以 base64 方式上傳影片,不支援 file_data.file_uri 或 File API。

# 使用File API上傳影片資料到API請求
# 使用 base64 inline_data 上傳影片資料到 API 請求
if [[ "$(base64 --version 2>&1)" = *"FreeBSD"* ]]; then
  B64FLAGS="--input"
else
  B64FLAGS="-w0"
fi
VIDEO_B64=$(base64 $B64FLAGS "$VIDEO_PATH")

curl "https://88api.ai/v1beta/models/gemini-2.0-flash:generateContent?key=$API_KEY" \
  -H 'Content-Type: application/json' \
  -X POST \
  -d '{
    "contents": [{
      "parts": [
        {"text": "Transcribe the audio from this video and provide visual descriptions."},
        {"inline_data": {"mime_type": "video/mp4", "data": "'$VIDEO_B64'"}}
      ]
    }]
  }' 2> /dev/null | jq ".candidates[].content.parts[].text"

PDF處理 🟡

檔案上傳限制

僅支援透過 inline_data 以 base64 方式上傳 PDF,不支援 file_data.file_uri 或 File API。

MIME_TYPE=$(file -b --mime-type "${PDF_PATH}")
# 使用 base64 inline_data 上傳 PDF 檔案到 API 請求
if [[ "$(base64 --version 2>&1)" = *"FreeBSD"* ]]; then
  B64FLAGS="--input"
else
  B64FLAGS="-w0"
fi
PDF_B64=$(base64 $B64FLAGS "$PDF_PATH")

echo $MIME_TYPE

curl "https://88api.ai/v1beta/models/gemini-2.0-flash:generateContent?key=$API_KEY" \
  -H 'Content-Type: application/json' \
  -X POST \
  -d '{
    "contents": [{
      "parts": [
        {"text": "Can you add a few more lines to this poem?"},
        {"inline_data": {"mime_type": "application/pdf", "data": "'$PDF_B64'"}}
      ]
    }]
  }' 2> /dev/null | jq ".candidates[].content.parts[].text"

聊天對話 ✅

curl https://88api.ai/v1beta/models/gemini-2.0-flash:generateContent?key=$API_KEY \
    -H 'Content-Type: application/json' \
    -X POST \
    -d '{
      "contents": [
        {"role":"user",
         "parts":[{
           "text": "Hello"}]},
        {"role": "model",
         "parts":[{
           "text": "Great to meet you. What would you like to know?"}]},
        {"role":"user",
         "parts":[{
           "text": "I have two dogs in my house. How many paws are in my house?"}]},
      ]
    }' 2> /dev/null | grep "text"

流式響應 ✅

curl "https://88api.ai/v1beta/models/gemini-2.0-flash:streamGenerateContent?alt=sse&key=$API_KEY" \
    -H 'Content-Type: application/json' \
    --no-buffer \
    -d '{
      "contents": [{
        "parts": [{"text": "寫一個關於魔法揹包的故事"}]
      }]
    }'

程式碼執行 ✅

curl "https://88api.ai/v1beta/models/gemini-2.0-flash:generateContent?key=$API_KEY" \
    -H 'Content-Type: application/json' \
    -X POST \
    -d '{
      "contents": [{
        "parts": [{"text": "計算斐波那契數列的第10項"}]
      }],
      "tools": [{
        "codeExecution": {}
      }]
    }'

生成配置 ✅

curl https://88api.ai/v1beta/models/gemini-2.0-flash:generateContent?key=$API_KEY \
    -H 'Content-Type: application/json' \
    -X POST \
    -d '{
        "contents": [{
            "parts":[
                {"text": "Explain how AI works"}
            ]
        }],
        "generationConfig": {
            "stopSequences": [
                "Title"
            ],
            "temperature": 1.0,
            "maxOutputTokens": 800,
            "topP": 0.8,
            "topK": 10
        }
    }'  2> /dev/null | grep "text"

安全設定 ✅

echo '{
    "safetySettings": [
        {"category": "HARM_CATEGORY_HARASSMENT", "threshold": "BLOCK_ONLY_HIGH"},
        {"category": "HARM_CATEGORY_HATE_SPEECH", "threshold": "BLOCK_MEDIUM_AND_ABOVE"}
    ],
    "contents": [{
        "parts":[{
            "text": "'I support Martians Soccer Club and I think Jupiterians Football Club sucks! Write a ironic phrase about them.'"}]}]}' > request.json

curl "https://88api.ai/v1beta/models/gemini-2.0-flash:generateContent?key=$API_KEY" \
    -H 'Content-Type: application/json' \
    -X POST \
    -d @request.json 2> /dev/null

系統指令 ✅

curl "https://88api.ai/v1beta/models/gemini-2.0-flash:generateContent?key=$API_KEY" \
-H 'Content-Type: application/json' \
-d '{ "system_instruction": {
    "parts":
      { "text": "You are a cat. Your name is Neko."}},
    "contents": {
      "parts": {
        "text": "Hello there"}}}'

📮 請求

端點

生成內容

POST https://88api.ai/v1beta/{model=models/*}:generateContent

流式生成內容

POST https://88api.ai/v1beta/{model=models/*}:streamGenerateContent

鑑權方法

在請求URL引數中包含API金鑰:

?key=$API_KEY

其中 $API_KEY 是您的 Google AI API 金鑰。

路徑引數

model

  • 型別:字串
  • 必需:是

用於生成補全項的模型名稱。

格式:models/{model},例如 models/gemini-2.0-flash

請求體引數

contents

  • 型別:陣列
  • 必需:是

與模型當前對話的內容。對於單輪查詢,這是單個例項。對於聊天等多輪查詢,這是包含對話歷史記錄和最新請求的重複欄位。

Content 物件屬性:

屬性型別必需描述
parts陣列有序的內容部分,構成單個訊息
role字串對話中內容的生產者。usermodelfunctiontool

Part 物件屬性:

屬性型別必需描述
text字串純文字內容
inlineData物件內聯媒體位元組資料
fileData物件上傳檔案的URI引用
functionCall物件函式呼叫請求
functionResponse物件函式呼叫響應
executableCode物件可執行程式碼
codeExecutionResult物件程式碼執行結果

InlineData 物件屬性:

屬性型別必需描述
mimeType字串媒體的MIME型別
data字串base64編碼的媒體資料

FileData 物件屬性:

屬性型別必需描述
mimeType字串檔案的MIME型別
fileUri字串檔案的URI

tools

  • 型別:陣列
  • 必需:否

模型可能用於生成下一個響應的工具列表。支援的工具包括函式和程式碼執行。

Tool 物件屬性:

屬性型別必需描述
functionDeclarations陣列可選的函式宣告列表
codeExecution物件啟用模型執行程式碼

FunctionDeclaration 物件屬性:

屬性型別必需描述
name字串函式名稱
description字串函式功能描述
parameters物件函式引數,JSON Schema格式

FunctionCall 物件屬性:

屬性型別必需描述
name字串要呼叫的函式名稱
args物件函式引數的鍵值對

FunctionResponse 物件屬性:

屬性型別必需描述
name字串呼叫的函式名稱
response物件函式呼叫的響應資料

ExecutableCode 物件屬性:

屬性型別必需描述
language列舉程式碼的程式語言
code字串要執行的程式碼

CodeExecutionResult 物件屬性:

屬性型別必需描述
outcome列舉程式碼執行的結果狀態
output字串程式碼執行的輸出內容

CodeExecution 物件屬性:

屬性型別必需描述
空物件-啟用程式碼執行功能的空配置物件

toolConfig

  • 型別:物件
  • 必需:否

請求中指定的任何工具的工具配置。

ToolConfig 物件屬性:

屬性型別必需描述
functionCallingConfig物件函式呼叫配置

FunctionCallingConfig 物件屬性:

屬性型別必需描述
mode列舉指定函式呼叫的模式
allowedFunctionNames陣列允許呼叫的函式名列表

FunctionCallingMode 列舉值:

  • MODE_UNSPECIFIED: 預設模式,模型決定是否呼叫函式
  • AUTO: 模型自動決定何時呼叫函式
  • ANY: 模型必須呼叫函式
  • NONE: 模型不能呼叫函式

safetySettings

  • 型別:陣列
  • 必需:否

用於遮蔽不安全內容的 SafetySetting 例項列表。

SafetySetting 物件屬性:

屬性型別必需描述
category列舉安全類別
threshold列舉遮蔽閾值

HarmCategory 列舉值:

  • HARM_CATEGORY_HARASSMENT: 騷擾內容
  • HARM_CATEGORY_HATE_SPEECH: 仇恨言論和內容
  • HARM_CATEGORY_SEXUALLY_EXPLICIT: 露骨色情內容
  • HARM_CATEGORY_DANGEROUS_CONTENT: 危險內容
  • HARM_CATEGORY_CIVIC_INTEGRITY: 可能用於破壞公民誠信的內容

HarmBlockThreshold 列舉值:

  • BLOCK_LOW_AND_ABOVE: 允許釋出評分為 NEGLIGIBLE 的內容
  • BLOCK_MEDIUM_AND_ABOVE: 允許釋出評分為 NEGLIGIBLE 和 LOW 的內容
  • BLOCK_ONLY_HIGH: 允許釋出風險等級為 NEGLIGIBLE、LOW 和 MEDIUM 的內容
  • BLOCK_NONE: 允許所有內容
  • OFF: 關閉安全過濾器

HarmBlockThreshold 完整列舉值:

  • HARM_BLOCK_THRESHOLD_UNSPECIFIED: 未指定閾值
  • BLOCK_LOW_AND_ABOVE: 遮蔽低機率及以上的有害內容,只允許 NEGLIGIBLE 級別的內容
  • BLOCK_MEDIUM_AND_ABOVE: 遮蔽中等機率及以上的有害內容,允許 NEGLIGIBLE 和 LOW 級別的內容
  • BLOCK_ONLY_HIGH: 只遮蔽高機率的有害內容,允許 NEGLIGIBLE、LOW 和 MEDIUM 級別的內容
  • BLOCK_NONE: 不遮蔽任何內容,允許所有級別的內容
  • OFF: 完全關閉安全過濾器

systemInstruction

  • 型別:物件(Content)
  • 必需:否

開發者設定的系統指令。目前僅支援文字。

generationConfig

  • 型別:物件
  • 必需:否

模型生成和輸出的配置選項。

GenerationConfig 物件屬性:

屬性型別必需描述
stopSequences陣列用於停止生成輸出的字元序列集(最多5個)
responseMimeType字串生成的候選文字的MIME型別
responseSchema物件生成的候選文字的輸出架構
responseModalities陣列請求的響應模式
candidateCount整數要返回的生成的回答數量
maxOutputTokens整數候選回答中包含的令牌數量上限
temperature數字控制輸出的隨機性,範圍[0.0, 2.0]
topP數字在抽樣時要考慮的令牌的累計機率上限
topK整數抽樣時要考慮的令牌數量上限
seed整數解碼中使用的種子
presencePenalty數字存在性懲罰
frequencyPenalty數字頻率懲罰
responseLogprobs布林值是否在響應中匯出logprobs結果
logprobs整數返回的頂部logprob的數量
enableEnhancedCivicAnswers布林值啟用增強型城市服務回答
speechConfig物件語音生成配置
thinkingConfig物件思考功能的配置
mediaResolution列舉指定的媒體解析度

支援的 MIME 型別:

  • text/plain: (預設)文字輸出
  • application/json: JSON響應
  • text/x.enum: ENUM作為字串響應

Modality 列舉值:

  • TEXT: 指示模型應返回文字
  • IMAGE: 表示模型應返回圖片
  • AUDIO: 指示模型應返回音訊

Schema 物件屬性:

屬性型別必需描述
type列舉資料型別
description字串欄位描述
enum陣列列舉值列表(當type為string時)
example任意型別示例值
nullable布林值是否可為null
format字串字串格式(如date、date-time等)
items物件陣列項的Schema(當type為array時)
properties物件物件屬性的Schema對映(當type為object時)
required陣列必需屬性的名稱列表
minimum數字數字的最小值
maximum數字數字的最大值
minItems整數陣列的最小長度
maxItems整數陣列的最大長度
minLength整數字串的最小長度
maxLength整數字串的最大長度

Type 列舉值:

  • TYPE_UNSPECIFIED: 未指定型別
  • STRING: 字串型別
  • NUMBER: 數字型別
  • INTEGER: 整數型別
  • BOOLEAN: 布林型別
  • ARRAY: 陣列型別
  • OBJECT: 物件型別

支援的程式語言(ExecutableCode):

  • LANGUAGE_UNSPECIFIED: 未指定語言
  • PYTHON: Python程式語言

程式碼執行結果列舉(Outcome):

  • OUTCOME_UNSPECIFIED: 未指定結果
  • OUTCOME_OK: 程式碼執行成功
  • OUTCOME_FAILED: 程式碼執行失敗
  • OUTCOME_DEADLINE_EXCEEDED: 程式碼執行超時

cachedContent

  • 型別:字串
  • 必需:否

快取的內容的名稱,用於用作提供預測的上下文。格式:cachedContents/{cachedContent}

📥 響應

GenerateContentResponse

支援多個候選回答的模型的回答。系統會針對提示以及每個候選項報告安全分級和內容過濾。

candidates

  • 型別:陣列
  • 說明:模型的候選回答列表

Candidate 物件屬性:

屬性型別描述
content物件模型返回的生成內容
finishReason列舉模型停止生成詞元的原因
safetyRatings陣列候選回答安全性的評分列表
citationMetadata物件模型生成的候選項的引用資訊
tokenCount整數此候選項的令牌數
groundingAttributions陣列為生成有依據的回答所參考的來源提供方資訊
groundingMetadata物件候選物件的參考後設資料
avgLogprobs數字候選項的平均對數機率得分
logprobsResult物件回答令牌和前置令牌的對數似然度得分
urlRetrievalMetadata物件與網址情境檢索工具相關的後設資料
urlContextMetadata物件與網址情境檢索工具相關的後設資料
index整數響應候選列表中候選項的索引

FinishReason 列舉值:

  • STOP: 模型的自然停止點或提供的停止序列
  • MAX_TOKENS: 已達到請求中指定的詞元數量上限
  • SAFETY: 出於安全考慮,系統已標記回答候選內容
  • RECITATION: 由於背誦原因,回答候選內容被標記
  • LANGUAGE: 回答候選內容因使用不受支援的語言而被標記
  • OTHER: 原因未知
  • BLOCKLIST: 由於內容包含禁止使用的字詞,因此token生成操作已停止
  • PROHIBITED_CONTENT: 由於可能包含禁止的內容,因此token生成操作已停止
  • SPII: 由於內容可能包含敏感的個人身份資訊,因此token生成操作已停止
  • MALFORMED_FUNCTION_CALL: 模型生成的函式呼叫無效
  • IMAGE_SAFETY: 由於生成的圖片違反了安全規定,因此詞元生成已停止

promptFeedback

  • 型別:物件
  • 說明:與內容過濾器相關的提示反饋

PromptFeedback 物件屬性:

屬性型別描述
blockReason列舉遮蔽該提示的原因
safetyRatings陣列問題安全性的評分

BlockReason 列舉值:

  • BLOCK_REASON_UNSPECIFIED: 預設值,此值未使用
  • SAFETY: 出於安全原因,系統遮蔽了提示
  • OTHER: 提示因未知原因被遮蔽了
  • BLOCKLIST: 系統遮蔽了此提示,因為其中包含術語遮蔽名單中包含的術語
  • PROHIBITED_CONTENT: 系統遮蔽了此提示,因為其中包含禁止的內容
  • IMAGE_SAFETY: 候選圖片因生成不安全的內容而被遮蔽

usageMetadata

  • 型別:物件
  • 說明:有關生成請求令牌用量的後設資料

UsageMetadata 物件屬性:

屬性型別描述
promptTokenCount整數提示中的詞元數
cachedContentTokenCount整數提示的快取部分中的詞元數
candidatesTokenCount整數所有生成的候選回答中的詞元總數
totalTokenCount整數生成請求的總令牌數
toolUsePromptTokenCount整數工具使用提示中的詞元數量
thoughtsTokenCount整數思考模型的想法token數
promptTokensDetails陣列在請求輸入中處理的模態列表
candidatesTokensDetails陣列響應中返回的模態列表
cacheTokensDetails陣列請求輸入中快取內容的模態列表
toolUsePromptTokensDetails陣列為工具使用請求輸入處理的模態列表

modelVersion

  • 型別:字串
  • 說明:用於生成回答的模型版本

responseId

  • 型別:字串
  • 說明:用於標識每個響應的ID

完整響應示例

{
  "candidates": [
    {
      "content": {
        "parts": [
          {
            "text": "你好!我是 Gemini,一個由 Google 開發的人工智慧助手。我可以幫助您解答問題、提供資訊、協助寫作、程式碼程式設計等多種任務。請告訴我有什麼可以為您效勞的!"
          }
        ],
        "role": "model"
      },
      "finishReason": "STOP",
      "index": 0,
      "safetyRatings": [
        {
          "category": "HARM_CATEGORY_SEXUALLY_EXPLICIT",
          "probability": "NEGLIGIBLE",
          "blocked": false
        },
        {
          "category": "HARM_CATEGORY_HATE_SPEECH",
          "probability": "NEGLIGIBLE",
          "blocked": false
        },
        {
          "category": "HARM_CATEGORY_HARASSMENT",
          "probability": "NEGLIGIBLE",
          "blocked": false
        },
        {
          "category": "HARM_CATEGORY_DANGEROUS_CONTENT",
          "probability": "NEGLIGIBLE",
          "blocked": false
        }
      ],
      "tokenCount": 47
    }
  ],
  "promptFeedback": {
    "safetyRatings": [
      {
        "category": "HARM_CATEGORY_SEXUALLY_EXPLICIT",
        "probability": "NEGLIGIBLE"
      },
      {
        "category": "HARM_CATEGORY_HATE_SPEECH",
        "probability": "NEGLIGIBLE"
      }
    ]
  },
  "usageMetadata": {
    "promptTokenCount": 4,
    "candidatesTokenCount": 47,
    "totalTokenCount": 51,
    "promptTokensDetails": [
      {
        "modality": "TEXT",
        "tokenCount": 4
      }
    ],
    "candidatesTokensDetails": [
      {
        "modality": "TEXT",
        "tokenCount": 47
      }
    ]
  },
  "modelVersion": "gemini-2.0-flash",
  "responseId": "response-12345"
}

🔧 高階功能

安全評級

SafetyRating 物件屬性:

屬性型別描述
category列舉此評分的類別
probability列舉此內容的有害機率
blocked布林值此內容是否因此分級而被遮蔽

HarmProbability 列舉值:

  • NEGLIGIBLE: 內容不安全的機率可忽略不計
  • LOW: 內容不安全的機率較低
  • MEDIUM: 內容不安全的機率為中等
  • HIGH: 內容不安全的機率較高

引用後設資料

CitationMetadata 物件屬性:

屬性型別描述
citationSources陣列特定回覆的來源引用

CitationSource 物件屬性:

屬性型別描述
startIndex整數歸因於此來源的響應片段的開始索引
endIndex整數歸因細分的結束索引(不含)
uri字串被歸因為文字部分來源的URI
license字串被歸因為片段來源的GitHub專案的許可

程式碼執行

當啟用程式碼執行工具時,模型可以生成和執行程式碼來解決問題。

程式碼執行示例響應:

{
  "candidates": [
    {
      "content": {
        "parts": [
          {
            "text": "我來計算斐波那契數列的第10項:"
          },
          {
            "executableCode": {
              "language": "PYTHON",
              "code": "def fibonacci(n):\n    if n <= 1:\n        return n\n    else:\n        return fibonacci(n-1) + fibonacci(n-2)\n\nresult = fibonacci(10)\nprint(f'第10項斐波那契數是: {result}')"
            }
          },
          {
            "codeExecutionResult": {
              "outcome": "OK",
              "output": "第10項斐波那契數是: 55"
            }
          },
          {
            "text": "所以斐波那契數列的第10項是55。"
          }
        ],
        "role": "model"
      },
      "finishReason": "STOP"
    }
  ]
}

接地功能 (Grounding)

GroundingMetadata 物件屬性:

屬性型別描述
groundingChunks陣列從指定的接地源檢索到的支援參考文獻列表
groundingSupports陣列接地支援列表
webSearchQueries陣列用於後續網頁搜尋的網頁搜尋查詢
searchEntryPoint物件後續網頁搜尋的Google搜尋條目
retrievalMetadata物件與基準流程中檢索相關的後設資料

GroundingAttribution 物件屬性:

屬性型別描述
sourceId物件對此歸因做出貢獻的來源的識別符號
content物件構成此歸因的來源內容

AttributionSourceId 物件屬性:

屬性型別描述
groundingPassage物件內嵌段落的識別符號
semanticRetrieverChunk物件透過Semantic Retriever提取的Chunk的識別符號

GroundingPassageId 物件屬性:

屬性型別描述
passageId字串與GenerateAnswerRequest的GroundingPassage.id匹配的段落的ID
partIndex整數GenerateAnswerRequest的GroundingPassage.content中的部分的索引

SemanticRetrieverChunk 物件屬性:

屬性型別描述
source字串與請求的SemanticRetrieverConfig.source匹配的來源名稱
chunk字串包含歸因文字的Chunk的名稱

SearchEntryPoint 物件屬性:

屬性型別描述
renderedContent字串可嵌入網頁或應用WebView中的Web內容程式碼段
sdkBlob字串使用base64編碼的JSON,表示搜尋詞和搜尋URL元組的陣列

Segment 物件屬性:

屬性型別描述
partIndex整數Part物件在其父級Content物件中的索引
startIndex整數給定part中的起始索引,以位元組為單位
endIndex整數給定分塊中的結束索引,以位元組為單位
text字串與響應中的片段對應的文字

RetrievalMetadata 物件屬性:

屬性型別描述
googleSearchDynamicRetrievalScore數字Google搜尋中的資訊有助於回答問題的機率得分,範圍[0,1]

GroundingChunk 物件屬性:

屬性型別描述
web物件來自網路的接地分塊

Web 物件屬性:

屬性型別描述
uri字串分塊的URI引用
title字串資料塊的標題

GroundingSupport 物件屬性:

屬性型別描述
groundingChunkIndices陣列索引列表,用於指定與版權主張相關的引文
confidenceScores陣列支援參考文件的置信度分數,範圍為0到1
segment物件此支援請求所屬的內容片段

多模態處理

Gemini API 支援處理多種模態的輸入和輸出:

支援的輸入模態:

  • TEXT: 純文字
  • IMAGE: 圖片(JPEG、PNG、WebP、HEIC、HEIF)
  • AUDIO: 音訊(WAV、MP3、AIFF、AAC、OGG、FLAC)
  • VIDEO: 影片(MP4、MPEG、MOV、AVI、FLV、MPG、WEBM、WMV、3GPP)
  • DOCUMENT: 文件(PDF)

ModalityTokenCount 物件屬性:

屬性型別描述
modality列舉與此令牌數關聯的模態
tokenCount整數令牌數量

MediaResolution 列舉值:

  • MEDIA_RESOLUTION_LOW: 低解析度(64個令牌)
  • MEDIA_RESOLUTION_MEDIUM: 中等解析度(256個令牌)
  • MEDIA_RESOLUTION_HIGH: 高解析度(256個令牌進行縮放重新取景)

思考功能

ThinkingConfig 物件屬性:

屬性型別描述
includeThoughts布林值是否要在回答中包含思考內容
thinkingBudget整數模型應生成的想法token的數量

語音生成

SpeechConfig 物件屬性:

屬性型別描述
voiceConfig物件單聲音輸出的配置
multiSpeakerVoiceConfig物件多音箱設定的配置
languageCode字串用於語音合成的語言程式碼

VoiceConfig 物件屬性:

屬性型別描述
prebuiltVoiceConfig物件要使用的預構建語音的配置

PrebuiltVoiceConfig 物件屬性:

屬性型別描述
voiceName字串要使用的預設語音的名稱

MultiSpeakerVoiceConfig 物件屬性:

屬性型別描述
speakerVoiceConfigs陣列所有已啟用的音箱語音

SpeakerVoiceConfig 物件屬性:

屬性型別描述
speaker字串要使用的音箱的名稱
voiceConfig物件要使用的語音的配置

支援的語言程式碼:

  • zh-CN: 中文(簡體)
  • en-US: 英語(美國)
  • ja-JP: 日語
  • ko-KR: 韓語
  • fr-FR: 法語
  • de-DE: 德語
  • es-ES: 西班牙語
  • pt-BR: 葡萄牙語(巴西)
  • hi-IN: 印地語
  • ar-XA: 阿拉伯語
  • it-IT: 義大利語
  • tr-TR: 土耳其語
  • vi-VN: 越南語
  • th-TH: 泰語
  • ru-RU: 俄語
  • pl-PL: 波蘭語
  • nl-NL: 荷蘭語

Logprobs 結果

LogprobsResult 物件屬性:

屬性型別描述
topCandidates陣列長度等於解碼步驟總數
chosenCandidates陣列長度等於解碼步驟總數,所選候選項不一定在topCandidates中

TopCandidates 物件屬性:

屬性型別描述
candidates陣列按對數機率降序排序的候選項

Candidate (Logprobs) 物件屬性:

屬性型別描述
token字串候選項的令牌字串值
tokenId整數候選項的令牌ID值
logProbability數字候選項的對數機率

URL檢索功能

UrlRetrievalMetadata 物件屬性:

屬性型別描述
urlRetrievalContexts陣列網址檢索情境列表

UrlRetrievalContext 物件屬性:

屬性型別描述
retrievedUrl字串工具檢索到的網址

UrlContextMetadata 物件屬性:

屬性型別描述
urlMetadata陣列網址上下文列表

UrlMetadata 物件屬性:

屬性型別描述
retrievedUrl字串工具檢索到的網址
urlRetrievalStatus列舉網址檢索的狀態

UrlRetrievalStatus 列舉值:

  • URL_RETRIEVAL_STATUS_SUCCESS: 網址檢索成功
  • URL_RETRIEVAL_STATUS_ERROR: 由於出錯,網址檢索失敗

完整安全類別

HarmCategory 完整列舉值:

  • HARM_CATEGORY_UNSPECIFIED: 類別未指定
  • HARM_CATEGORY_DEROGATORY: PaLM - 針對身份和/或受保護屬性的負面或有害評論
  • HARM_CATEGORY_TOXICITY: PaLM - 粗魯、無禮或褻瀆性的內容
  • HARM_CATEGORY_VIOLENCE: PaLM - 描述描繪針對個人或團體的暴力行為的場景
  • HARM_CATEGORY_SEXUAL: PaLM - 包含對性行為或其他淫穢內容的引用
  • HARM_CATEGORY_MEDICAL: PaLM - 宣傳未經核實的醫療建議
  • HARM_CATEGORY_DANGEROUS: PaLM - 危險內容會宣揚、助長或鼓勵有害行為
  • HARM_CATEGORY_HARASSMENT: Gemini - 騷擾內容
  • HARM_CATEGORY_HATE_SPEECH: Gemini - 仇恨言論和內容
  • HARM_CATEGORY_SEXUALLY_EXPLICIT: Gemini - 露骨色情內容
  • HARM_CATEGORY_DANGEROUS_CONTENT: Gemini - 危險內容
  • HARM_CATEGORY_CIVIC_INTEGRITY: Gemini - 可能用於破壞公民誠信的內容

HarmProbability 完整列舉值:

  • HARM_PROBABILITY_UNSPECIFIED: 機率未指定
  • NEGLIGIBLE: 內容不安全的機率可忽略不計
  • LOW: 內容不安全的機率較低
  • MEDIUM: 內容不安全的機率為中等
  • HIGH: 內容不安全的機率較高

Modality 完整列舉值:

  • MODALITY_UNSPECIFIED: 未指定模態
  • TEXT: 純文字
  • IMAGE: 圖片
  • VIDEO: 影片
  • AUDIO: 音訊
  • DOCUMENT: 文件,例如PDF

MediaResolution 完整列舉值:

  • MEDIA_RESOLUTION_UNSPECIFIED: 未設定媒體解析度
  • MEDIA_RESOLUTION_LOW: 媒體解析度設為低(64個令牌)
  • MEDIA_RESOLUTION_MEDIUM: 媒體解析度設為中等(256個令牌)
  • MEDIA_RESOLUTION_HIGH: 媒體解析度設為高(使用256個令牌進行縮放重新取景)

UrlRetrievalStatus 完整列舉值:

  • URL_RETRIEVAL_STATUS_UNSPECIFIED: 預設值,此值未使用
  • URL_RETRIEVAL_STATUS_SUCCESS: 網址檢索成功
  • URL_RETRIEVAL_STATUS_ERROR: 由於出錯,網址檢索失敗

🔍 錯誤處理

常見錯誤碼

錯誤碼描述
400請求格式錯誤或引數無效
401API金鑰無效或缺失
403許可權不足或配額限制
429請求頻率過高
500伺服器內部錯誤

詳細錯誤碼說明

錯誤碼狀態描述解決方案
400INVALID_ARGUMENT請求引數無效或格式錯誤檢查請求引數格式和必需欄位
400FAILED_PRECONDITION請求的前置條件不滿足確保滿足API呼叫的前置條件
401UNAUTHENTICATEDAPI金鑰無效、缺失或已過期檢查API金鑰的有效性和格式
403PERMISSION_DENIED許可權不足或配額已用完檢查API金鑰許可權或升級配額
404NOT_FOUND指定的模型或資源不存在驗證模型名稱和資源路徑
413PAYLOAD_TOO_LARGE請求體太大減少輸入內容大小或分批處理
429RESOURCE_EXHAUSTED請求頻率超限或配額不足降低請求頻率或等待配額重置
500INTERNAL伺服器內部錯誤重試請求,如持續出現聯絡支援
503UNAVAILABLE服務暫時不可用等待一段時間後重試
504DEADLINE_EXCEEDED請求超時減少輸入大小或重試請求

錯誤響應示例

{
  "error": {
    "code": 400,
    "message": "Invalid argument: contents",
    "status": "INVALID_ARGUMENT",
    "details": [
      {
        "@type": "type.googleapis.com/google.rpc.BadRequest",
        "fieldViolations": [
          {
            "field": "contents",
            "description": "contents is required"
          }
        ]
      }
    ]
  }
}