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 | 字串 | 否 | 對話中內容的生產者。user、model、function 或 tool |
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 | 請求格式錯誤或引數無效 |
401 | API金鑰無效或缺失 |
403 | 許可權不足或配額限制 |
429 | 請求頻率過高 |
500 | 伺服器內部錯誤 |
詳細錯誤碼說明
| 錯誤碼 | 狀態 | 描述 | 解決方案 |
|---|---|---|---|
400 | INVALID_ARGUMENT | 請求引數無效或格式錯誤 | 檢查請求引數格式和必需欄位 |
400 | FAILED_PRECONDITION | 請求的前置條件不滿足 | 確保滿足API呼叫的前置條件 |
401 | UNAUTHENTICATED | API金鑰無效、缺失或已過期 | 檢查API金鑰的有效性和格式 |
403 | PERMISSION_DENIED | 許可權不足或配額已用完 | 檢查API金鑰許可權或升級配額 |
404 | NOT_FOUND | 指定的模型或資源不存在 | 驗證模型名稱和資源路徑 |
413 | PAYLOAD_TOO_LARGE | 請求體太大 | 減少輸入內容大小或分批處理 |
429 | RESOURCE_EXHAUSTED | 請求頻率超限或配額不足 | 降低請求頻率或等待配額重置 |
500 | INTERNAL | 伺服器內部錯誤 | 重試請求,如持續出現聯絡支援 |
503 | UNAVAILABLE | 服務暫時不可用 | 等待一段時間後重試 |
504 | DEADLINE_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"
}
]
}
]
}
}