Gemini API 支援使用圖片、音訊、程式碼、工具等產生內容。如要進一步瞭解這些功能,請繼續閱讀並查看以工作為重點的範例程式碼,或參閱完整指南。
方法:models.generateContent
根據輸入的 GenerateContentRequest
產生模型回應。如需詳細使用資訊,請參閱文字產生指南。輸入功能會因模型而異,包括經過調整的模型。詳情請參閱模型指南和調整指南。
端點
posthttps: / /generativelanguage.googleapis.com /v1beta /{model=models /*}:generateContent
這個網址使用 gRPC 轉碼語法。
路徑參數
model
string
必要欄位。用於產生完成作業的 Model
名稱。
格式:models/{model}
。其格式為 models/{model}
。
要求主體
要求主體的資料會採用以下結構:
toolConfig
object (ToolConfig
)
選用設定。工具設定 (適用於要求中指定的任何 Tool
)。如需使用範例,請參閱函式呼叫指南。
safetySettings[]
object (SafetySetting
)
選用設定。用來封鎖不安全內容的 SafetySetting
唯一例項清單。
這項規定將適用於 GenerateContentRequest.contents
和 GenerateContentResponse.candidates
。每個 SafetyCategory
類型應只設定一個設定。API 會封鎖任何不符合這些設定所設門檻的內容和回應。這份清單會覆寫 safetySettings 中指定的每個 SafetyCategory
的預設設定。如果清單中提供的特定 SafetyCategory
沒有 SafetySetting
,API 就會使用該類別的預設安全設定。系統支援的危害類別包括 HARM_CATEGORY_HATE_SPEECH、HARM_CATEGORY_SEXUALLY_EXPLICIT、HARM_CATEGORY_DANGEROUS_CONTENT 和 HARM_CATEGORY_HARASSMENT。如要進一步瞭解可用的安全設定,請參閱指南。您也可以參閱安全性指南,瞭解如何在 AI 應用程式中納入安全性考量。
generationConfig
object (GenerationConfig
)
選用設定。模型產生和輸出的設定選項。
cachedContent
string
選用設定。快取的內容名稱,用於做為預測的上下文。格式:cachedContents/{cachedContent}
要求範例
文字
Python
Node.js
Go
貝殼
Kotlin
Swift
Dart
Java
圖片
Python
Node.js
Go
貝殼
Kotlin
Swift
Dart
Java
音訊
Python
Node.js
貝殼
影片
Python
Node.js
Go
貝殼
Python
貝殼
即時通訊
Python
Node.js
Go
貝殼
Kotlin
Swift
Dart
Java
快取
Python
Node.js
調整過的模型
Python
JSON 模式
Python
Node.js
Go
貝殼
Kotlin
Swift
Dart
Java
程式碼執行
Python
Kotlin
Java
函式呼叫
Python
Node.js
貝殼
Kotlin
Swift
Dart
Java
產生設定
Python
Node.js
Go
貝殼
Kotlin
Swift
Dart
Java
安全性設定
Python
Node.js
Go
貝殼
Kotlin
Swift
Dart
Java
系統操作說明
Python
Node.js
Go
貝殼
Kotlin
Swift
Dart
Java
回應主體
如果成功,回應主體會包含 GenerateContentResponse
的執行例項。
方法:models.streamGenerateContent
在輸入 GenerateContentRequest
的情況下,從模型產生串流回應。
端點
posthttps: / /generativelanguage.googleapis.com /v1beta /{model=models /*}:streamGenerateContent
這個網址使用 gRPC 轉碼語法。
路徑參數
model
string
必要欄位。用於產生完成作業的 Model
名稱。
格式:models/{model}
。其格式為 models/{model}
。
要求主體
要求主體的資料會採用以下結構:
toolConfig
object (ToolConfig
)
選用設定。工具設定 (適用於要求中指定的任何 Tool
)。如需使用範例,請參閱函式呼叫指南。
safetySettings[]
object (SafetySetting
)
選用設定。用來封鎖不安全內容的 SafetySetting
唯一例項清單。
這項規定將適用於 GenerateContentRequest.contents
和 GenerateContentResponse.candidates
。每個 SafetyCategory
類型應只設定一個設定。API 會封鎖任何不符合這些設定所設門檻的內容和回應。這份清單會覆寫 safetySettings 中指定的每個 SafetyCategory
的預設設定。如果清單中提供的特定 SafetyCategory
沒有 SafetySetting
,API 就會使用該類別的預設安全設定。系統支援的危害類別包括 HARM_CATEGORY_HATE_SPEECH、HARM_CATEGORY_SEXUALLY_EXPLICIT、HARM_CATEGORY_DANGEROUS_CONTENT 和 HARM_CATEGORY_HARASSMENT。如要進一步瞭解可用的安全設定,請參閱指南。您也可以參閱安全性指南,瞭解如何在 AI 應用程式中納入安全性考量。
generationConfig
object (GenerationConfig
)
選用設定。模型產生和輸出的設定選項。
cachedContent
string
選用設定。快取的內容名稱,用於做為預測的上下文。格式:cachedContents/{cachedContent}
要求範例
文字
Python
Node.js
Go
貝殼
Kotlin
Swift
Dart
Java
圖片
Python
Node.js
Go
貝殼
Kotlin
Swift
Dart
Java
音訊
Python
貝殼
影片
Python
Node.js
Go
貝殼
Python
貝殼
即時通訊
Python
Node.js
Go
貝殼
Kotlin
Swift
Dart
Java
回應主體
如果成功,回應主體會包含 GenerateContentResponse
例項的串流。
GenerateContentResponse
模型回應,支援多個候選回覆。
系統會針對 GenerateContentResponse.prompt_feedback
中的提示,以及 finishReason
和 safetyRatings
中的每個候選項,回報安全性分級和內容篩選結果。API:- 傳回所有要求的候選項目,或不傳回任何候選項目 - 只有在提示有誤 (請檢查 promptFeedback
) 時才傳回任何候選項目 - 在 finishReason
和 safetyRatings
中回報每個候選項目的意見回饋。
candidates[]
object (Candidate
)
模型的候選回覆。
promptFeedback
object (PromptFeedback
)
傳回提示與內容篩選器相關的意見回饋。
usageMetadata
object (UsageMetadata
)
僅供輸出。產生要求的權杖用量中繼資料。
modelVersion
string
僅供輸出。用於產生回覆的模型版本。
JSON 表示法 |
---|
{ "candidates": [ { object ( |
PromptFeedback
GenerateContentRequest.content
中指定提示的一組意見回饋中繼資料。
blockReason
enum (BlockReason
)
選用設定。如果已設定,則系統會封鎖提示,且不會傳回候選項。改寫提示。
safetyRatings[]
object (SafetyRating
)
提示安全性的評分。每個類別最多只能有一個評分。
JSON 表示法 |
---|
{ "blockReason": enum ( |
BlockReason
指定提示遭封鎖的原因。
列舉 | |
---|---|
BLOCK_REASON_UNSPECIFIED |
預設值。此值未使用。 |
SAFETY |
提示因安全性考量而遭到封鎖。檢查 safetyRatings ,瞭解哪個安全類別封鎖了該內容。 |
OTHER |
提示因不明原因遭到封鎖。 |
BLOCKLIST |
提示含有封鎖字詞清單中的字詞,因此遭到封鎖。 |
PROHIBITED_CONTENT |
提示因含有禁止出現的內容而遭到封鎖。 |
UsageMetadata
產生要求的權杖用量中繼資料。
promptTokenCount
integer
提示中的符記數量。設定 cachedContent
時,這仍是有效提示的總大小,也就是包含快取內容中的符記數量。
cachedContentTokenCount
integer
提示快取內容中的符記數量
candidatesTokenCount
integer
所有產生的回覆候選項中,符號的總數。
totalTokenCount
integer
產生要求 (提示 + 候選回覆) 的權杖總數。
JSON 表示法 |
---|
{ "promptTokenCount": integer, "cachedContentTokenCount": integer, "candidatesTokenCount": integer, "totalTokenCount": integer } |
候選人
- JSON 表示法
- FinishReason
- GroundingAttribution
- AttributionSourceId
- GroundingPassageId
- SemanticRetrieverChunk
- GroundingMetadata
- SearchEntryPoint
- GroundingChunk
- 網頁
- GroundingSupport
- 區隔
- RetrievalMetadata
- LogprobsResult
- TopCandidates
- 候選人
模型產生的候選回覆。
content
object (Content
)
僅供輸出。模型傳回的生成內容。
finishReason
enum (FinishReason
)
選用設定。僅供輸出。模型停止產生權杖的原因。
如果為空白,表示模型尚未停止產生符記。
safetyRatings[]
object (SafetyRating
)
回覆候選項的安全性評分清單。
每個類別最多只能有一個評分。
citationMetadata
object (CitationMetadata
)
僅供輸出。模型產生的候選詞彙的引文資訊。
這個欄位可能會填入 content
中任何文字的朗讀資訊。這些段落是從基礎 LLM 訓練資料中的受版權保護內容「朗誦」而來。
tokenCount
integer
僅供輸出。這個候選項目的符記數量。
groundingAttributions[]
object (GroundingAttribution
)
僅供輸出。提供依據答案的來源資訊。
這個欄位會為 GenerateAnswer
呼叫填入資料。
groundingMetadata
object (GroundingMetadata
)
僅供輸出。候選人的基礎中繼資料。
這個欄位會為 GenerateContent
呼叫填入資料。
avgLogprobs
number
僅供輸出。候選人的平均對數機率分數。
logprobsResult
object (LogprobsResult
)
僅供輸出。回應符記和頂級符記的對數似然分數
index
integer
僅供輸出。回應候選清單中的候選項目索引。
JSON 表示法 |
---|
{ "content": { object ( |
FinishReason
定義模型停止產生符記的原因。
列舉 | |
---|---|
FINISH_REASON_UNSPECIFIED |
預設值。此值未使用。 |
STOP |
模型的自然停靠點或提供的停靠序列。 |
MAX_TOKENS |
已達要求中指定的符記數量上限。 |
SAFETY |
回覆候選內容因安全考量而遭標記。 |
RECITATION |
回覆候選內容因背誦而遭標記。 |
LANGUAGE |
回覆候選內容使用了不支援的語言,因此遭到標記。 |
OTHER |
原因不明。 |
BLOCKLIST |
由於內容含有禁止使用的字詞,因此停止產生符記。 |
PROHIBITED_CONTENT |
代碼產生作業已停止,因為代碼可能含有禁止內容。 |
SPII |
內容可能含有具敏感性的個人識別資訊 (SPII),因此停止產生符記。 |
MALFORMED_FUNCTION_CALL |
模型產生的函式呼叫無效。 |
GroundingAttribution
提供答案的來源資訊。
sourceId
object (AttributionSourceId
)
僅供輸出。為此歸因提供資料的來源 ID。
content
object (Content
)
構成這項歸屬的基礎來源內容。
JSON 表示法 |
---|
{ "sourceId": { object ( |
AttributionSourceId
為此歸因提供資料的來源 ID。
source
Union type
source
只能是下列其中一項:groundingPassage
object (GroundingPassageId
)
內嵌段落的 ID。
semanticRetrieverChunk
object (SemanticRetrieverChunk
)
透過語意擷取器擷取的 Chunk
的 ID。
JSON 表示法 |
---|
{ // source "groundingPassage": { object ( |
GroundingPassageId
GroundingPassage
中部分的 ID。
passageId
string
僅供輸出。與 GenerateAnswerRequest
的 GroundingPassage.id
相符的段落 ID。
partIndex
integer
僅供輸出。GenerateAnswerRequest
GroundingPassage.content
中部分的索引。
JSON 表示法 |
---|
{ "passageId": string, "partIndex": integer } |
SemanticRetrieverChunk
使用 SemanticRetrieverConfig
在 GenerateAnswerRequest
中指定的語意擷取工具所擷取 Chunk
的 ID。
source
string
僅供輸出。與要求的 SemanticRetrieverConfig.source
相符的來源名稱。例如:corpora/123
或 corpora/123/documents/abc
chunk
string
僅供輸出。包含屬性文字的 Chunk
名稱。範例:corpora/123/documents/abc/chunks/xyz
JSON 表示法 |
---|
{ "source": string, "chunk": string } |
GroundingMetadata
啟用接地功能時傳回給用戶端的中繼資料。
groundingChunks[]
object (GroundingChunk
)
從指定的接地來源擷取的佐證參考資料清單。
groundingSupports[]
object (GroundingSupport
)
列出接地支援。
webSearchQueries[]
string
用於後續網頁搜尋的網頁搜尋查詢。
searchEntryPoint
object (SearchEntryPoint
)
選用設定。用於後續網頁搜尋的 Google 搜尋項目。
retrievalMetadata
object (RetrievalMetadata
)
與基礎流程中擷取作業相關的中繼資料。
JSON 表示法 |
---|
{ "groundingChunks": [ { object ( |
SearchEntryPoint
Google 搜尋進入點。
renderedContent
string
選用設定。可嵌入網頁或應用程式 WebView 的網頁內容片段。
sdkBlob
string (bytes format)
選用設定。以 Base64 編碼的 JSON 表示 <search term, search url> 元組陣列。
Base64 編碼字串。
JSON 表示法 |
---|
{ "renderedContent": string, "sdkBlob": string } |
GroundingChunk
連結片段。
JSON 表示法 |
---|
{
// chunk_type
"web": {
object ( |
網頁
從網路擷取的片段。
uri
string
區塊的 URI 參照。
title
string
單元標題。
JSON 表示法 |
---|
{ "uri": string, "title": string } |
GroundingSupport
建立基準支援。
groundingChunkIndices[]
integer
索引清單 (放入「grounding_chunk」),指定與聲明相關的引文。舉例來說,[1,3,4] 表示 grounding_chunk[1]、grounding_chunk[3] 和 grounding_chunk[4] 是與版權聲明相關的擷取內容。
confidenceScores[]
number
支援參考資料的可信度分數。範圍從 0 到 1。1 代表最有信心。這個清單的大小必須與 groundingChunkIndices 相同。
segment
object (Segment
)
這個支援內容所屬的內容片段。
JSON 表示法 |
---|
{
"groundingChunkIndices": [
integer
],
"confidenceScores": [
number
],
"segment": {
object ( |
區隔
內容片段。
partIndex
integer
僅供輸出。Part 物件在其父項 Content 物件中的索引。
startIndex
integer
僅供輸出。指定 Part 中的起始索引,以位元組為單位。從 Part 開頭 (包含在內) 開始的偏移量,起始值為零。
endIndex
integer
僅供輸出。指定 Part 的結束索引,以位元組為單位。從 Part 開頭處的偏移量 (不含),從零開始計算。
text
string
僅供輸出。回應中對應至該片段的文字。
JSON 表示法 |
---|
{ "partIndex": integer, "startIndex": integer, "endIndex": integer, "text": string } |
RetrievalMetadata
與基礎流程中的擷取作業相關的中繼資料。
googleSearchDynamicRetrievalScore
number
選用設定。分數表示 Google 搜尋結果是否可能有助於回答提示。分數範圍為 [0, 1],其中 0 代表最不可能,1 代表最可能。只有在啟用 Google 搜尋依據和動態擷取功能時,系統才會填入這項分數。系統會將這項值與閾值進行比較,決定是否觸發 Google 搜尋。
JSON 表示法 |
---|
{ "googleSearchDynamicRetrievalScore": number } |
LogprobsResult
Logprobs 結果
topCandidates[]
object (TopCandidates
)
長度 = 解碼步驟總數。
chosenCandidates[]
object (Candidate
)
長度 = 解碼步驟總數。所選候選項目可能會或不會出現在 topCandidates 中。
JSON 表示法 |
---|
{ "topCandidates": [ { object ( |
TopCandidates
在每個解碼步驟中,具有最高記錄機率的候選項目。
candidates[]
object (Candidate
)
依對數機率遞減排序。
JSON 表示法 |
---|
{
"candidates": [
{
object ( |
候選人
候選 logprobs 符記和分數。
token
string
候選項目的符記字串值。
tokenId
integer
候選項目的符記 ID 值。
logProbability
number
候選值的對數機率。
JSON 表示法 |
---|
{ "token": string, "tokenId": integer, "logProbability": number } |
CitationMetadata
內容來源歸屬資訊集合。
citationSources[]
object (CitationSource
)
特定回覆的來源引用。
JSON 表示法 |
---|
{
"citationSources": [
{
object ( |
CitationSource
特定回應內容的來源出處。
startIndex
integer
選用設定。回應的起始片段,可歸因於這個來源。
索引表示片段的起始位置,以位元組為單位。
endIndex
integer
選用設定。歸因區段的結束時間 (不包含在內)。
uri
string
選用設定。歸因於文字部分來源的 URI。
license
string
選用設定。用於歸因於此區段來源的 GitHub 專案授權。
您必須提供授權資訊,才能引用程式碼。
JSON 表示法 |
---|
{ "startIndex": integer, "endIndex": integer, "uri": string, "license": string } |
GenerationConfig
模型產生和輸出的設定選項。並非所有參數都適用於所有模型。
stopSequences[]
string
選用設定。停止產生輸出的字元序列集合 (最多 5 個)。如果指定,API 會在 stop_sequence
首次出現時停止。這個停止序列不會包含在回應中。
responseMimeType
string
選用設定。產生的候選文字 MIME 類型。支援的 MIME 類型如下:text/plain
:(預設) 文字輸出。application/json
:回應候選項目中的 JSON 回應。text/x.enum
:在回應候選項目中,將 ENUM 做為字串回應。如要查看所有支援的文字 MIME 類型清單,請參閱說明文件。
responseSchema
object (Schema
)
選用設定。產生候選文字的輸出結構定義。結構定義必須是 OpenAPI 結構定義的子集,且可以是物件、原始類型或陣列。
如果已設定,則必須一併設定相容的 responseMimeType
。相容的 MIME 類型:application/json
:JSON 回應的結構定義。詳情請參閱 JSON 文字產生指南。
candidateCount
integer
選用設定。要傳回的產生回應數量。
目前,這個值只能設為 1。如果未設定,則預設值為 1。
maxOutputTokens
integer
選用設定。回應候選項中可納入的符記數量上限。
注意:預設值會因型號而異,請參閱從 getModel
函式傳回的 Model
的 Model.output_token_limit
屬性。
temperature
number
選用設定。控制輸出內容的隨機性。
注意:預設值會因型號而異,請參閱從 getModel
函式傳回的 Model
的 Model.temperature
屬性。
值的範圍為 [0.0, 2.0]。
topP
number
選用設定。取樣時要考慮的符記累計可能性上限。
模型會使用結合的 Top-k 和 Top-p (核) 取樣。
系統會根據符記的指定機率進行排序,只考慮機率最高的符記。Top-k 取樣會直接限制要考量的符記數量上限,而 Nucleus 取樣會根據累積機率限制符記數量。
注意:預設值會因 Model
而異,並由 getModel
函式傳回的 Model.top_p
屬性指定。空白的 topK
屬性表示模型不會套用前 k 名取樣,也不允許在要求中設定 topK
。
topK
integer
選用設定。取樣時要考慮的符記數量上限。
Gemini 模型會使用 Top-p (核) 取樣,或 Top-k 與核取樣的組合。前 K 大取樣會考量機率最高的 topK
符記組合。使用核取樣執行的模型不允許設定 topK。
注意:預設值會因 Model
而異,並由 getModel
函式傳回的 Model.top_p
屬性指定。空白的 topK
屬性表示模型不會套用前 k 名取樣,也不允許在要求中設定 topK
。
presencePenalty
number
選用設定。如果符記已出現在回應中,則會對下一個符記的 logprobs 套用存在懲罰。
這項處罰是二元開關,不會視代碼使用次數 (第一次後) 而定。使用 frequencyPenalty
時,每次使用都會增加懲處。
正向懲罰會避免使用在回應中已使用的符記,進而增加字彙。
負面懲罰會鼓勵使用在回覆中已使用的符記,減少詞彙。
frequencyPenalty
number
選用設定。對下一個符記的 logprobs 套用的展示頻率懲罰,乘以每個符記在回應中目前出現的次數。
正向懲罰會根據符號使用次數,減少使用已使用過的符號:符號使用次數越多,模型就越難再次使用該符號,進而增加回應的詞彙。
注意:負懲罰會鼓勵模型依權杖使用次數重複使用權杖。負值越小,回應的詞彙就會越少。負值越大,模型就會重複使用常見的符記,直到達到 maxOutputTokens
限制為止。
responseLogprobs
boolean
選用設定。如果為 true,則會在回應中匯出 logprobs 結果。
logprobs
integer
選用設定。只有在 responseLogprobs=True
時才有效。這會設定 Candidate.logprobs_result
中每個解碼步驟要傳回的最高 logprob 數量。
enableEnhancedCivicAnswers
boolean
選用設定。啟用強化版公民服務答案。部分型號可能不支援這項功能。
JSON 表示法 |
---|
{
"stopSequences": [
string
],
"responseMimeType": string,
"responseSchema": {
object ( |
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:可能用於損害公民誠信的內容。 |
SafetyRating
內容的安全評分。
安全評分包含危害類別,以及內容屬於該類別的危害機率等級。系統會根據多個危害類別對內容進行安全分類,並列出危害分類的機率。
category
enum (HarmCategory
)
必要欄位。此評分的類別。
probability
enum (HarmProbability
)
必要欄位。這項內容的危害機率。
blocked
boolean
這項內容是否因分級而遭到封鎖?
JSON 表示法 |
---|
{ "category": enum ( |
HarmProbability
內容有害的機率。
分類系統會顯示內容不安全的機率。這並非表示該內容的危害程度。
列舉 | |
---|---|
HARM_PROBABILITY_UNSPECIFIED |
未指定機率。 |
NEGLIGIBLE |
內容不太可能有危險性。 |
LOW |
內容不太可能不安全。 |
MEDIUM |
內容有不安全的可能性。 |
HIGH |
內容很有可能屬於不安全類別。 |
SafetySetting
安全性設定,影響安全性封鎖行為。
為某個類別傳遞安全性設定,可變更內容遭封鎖的允許機率。
category
enum (HarmCategory
)
必要欄位。這項設定的類別。
threshold
enum (HarmBlockThreshold
)
必要欄位。控制封鎖內容的危害機率門檻。
JSON 表示法 |
---|
{ "category": enum ( |
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 |
關閉安全篩選器。 |