Gemini API 支援使用圖片、音訊、程式碼、工具等技術生成內容。如需各項功能的詳細資訊,請繼續閱讀並查看以任務為主的程式碼範例,或是閱讀完整指南。
方法:models.generateContent
根據輸入 GenerateContentRequest
產生模型回應。如需詳細使用資訊,請參閱文字產生指南。輸入功能會因模型 (包括經過調整的模型) 而異。詳情請參閱模型指南和調整指南。
端點
post https://generativelanguage.googleapis.com/v1beta/{model=models/*}:generateContent路徑參數
model
string
必要欄位。用於產生完成項目的 Model
名稱。
格式:name=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
的情況下,從模型產生串流回應。
端點
post https://generativelanguage.googleapis.com/v1beta/{model=models/*}:streamGenerateContent路徑參數
model
string
必要欄位。用於產生完成項目的 Model
名稱。
格式:name=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
)
僅供輸出。產生要求的權杖用量中繼資料。
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
。
source
只能是下列其中一項:
groundingPassage
object (GroundingPassageId
)
內嵌段落的 ID。
semanticRetrieverChunk
object (SemanticRetrieverChunk
)
透過語意擷取器擷取的 Chunk
的 ID。
JSON 表示法 |
---|
{ // Union field |
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,代表 <搜尋字詞, 搜尋網址> 元組的陣列。
Base64 編碼字串。
JSON 表示法 |
---|
{ "renderedContent": string, "sdkBlob": string } |
GroundingChunk
連結片段。
chunk_type
。區塊類型。chunk_type
只能採用下列其中一種設定:web
object (Web
)
網路上的基礎區塊。
JSON 表示法 |
---|
{ // Union field |
網路
從網路擷取的片段。
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 開頭處的偏移量,不含開頭,從零開始。
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
)
長度 = 解碼步驟總數。獲選的候選人不一定名列最佳候選人。
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
屬性表示模型不會套用 top-k 取樣,也不允許在要求中設定 topK
。
topK
integer
選用設定。取樣時要考慮的符記數量上限。
Gemini 模型採用 Top-p (nucleus) 取樣,或結合「Top-k」和「nucleus」的取樣。「Top-K」取樣會考量一組可能性最高的符記組合 (共 topK
個)。使用核取樣執行的模型不允許設定 topK。
注意:預設值會因 Model
而異,而是由 getModel
函式傳回的 Model.top_p
屬性指定。空白的 topK
屬性表示模型不會套用「Top-K」取樣,且不允許在要求中設定 topK
。
presencePenalty
number
選用設定。如果符號已出現在回應中,則會對下一個符號的 logprobs 套用存在性懲罰。
這項處分屬於二進位/關閉,而非憑證使用次數 (在第一次後) 而定。使用 frequencyPenalty
時,每次使用都會增加懲處。
正向懲罰會避免使用在回應中已使用的符記,進而增加字彙。
負面懲罰會鼓勵使用在回覆中已使用的符記,減少詞彙。
frequencyPenalty
number
選用設定。套用至下一個符記的記錄檔探測器的頻率,乘以每個符記在資源庫中的出現次數。
不良的懲罰則不代表使用已使用的符記,與符記使用次數成正比。符記使用次數越多,模型再次使用該符記時就越難使用,進而增加回應的詞彙。
注意:負懲罰會鼓勵模型依權杖使用次數重複使用權杖。負值越小,回應的詞彙就會越少。負值越大,模型就會重複使用常見的符記,直到達到 maxOutputTokens
上限為止:「...the the the the the...」。
responseLogprobs
boolean
選用設定。如為 true,則匯出記錄探測結果做為回應。
logprobs
integer
選用設定。只有在 responseLogprobs=True
時才有效。這會設定 Candidate.logprobs_result
中每個解碼步驟要傳回的主要記錄探測次數。
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 |
關閉安全性篩選器。 |