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 代表 <search term, search url> 元組陣列。
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 中的起始索引,以位元組為單位。從零件開始 (含) 開始的偏移值,從 0 開始。
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
)
長度 = 解碼步驟總數。所選候選項目可能會或不會出現在 topCandidates 中。
JSON 表示法 |
---|
{ "topCandidates": [ { object ( |
TopCandidates
在每個解碼步驟中,具有最高記錄機率的候選項目。
candidates[]
object (Candidate
)
以對數機率遞減順序排序。
JSON 表示法 |
---|
{
"candidates": [
{
object ( |
候選人
logObservs 權杖和分數的候選項目。
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 (核) 取樣,或 Top-k 與核取樣的組合。前 K 大取樣會考量機率最高的 topK
符記組合。以 nucleus 取樣運作的模型不允許使用 TopK 設定。
注意:預設值會因 Model
而異,而是由 getModel
函式傳回的 Model.top_p
屬性指定。空白的 topK
屬性表示模型不會套用 top-k 取樣,也不允許在要求中設定 topK
。
presencePenalty
number
選用設定。如果符號已出現在回應中,則會對下一個符號的 logprobs 套用存在性懲罰。
這項處罰是二元開關,不會取決於符記的使用次數 (第一次後)。使用 frequencyPenalty
時,每次使用都會增加懲處。
正向懲罰會避免使用在回應中已使用的符記,進而增加字彙。
負面懲罰會鼓勵使用在回覆中已使用的符記,減少詞彙。
frequencyPenalty
number
選用設定。對下一個符記的 logprobs 套用的展示頻率懲罰,乘以每個符記在回應中目前出現的次數。
正向懲罰會根據符號使用次數,減少使用已使用過的符號:符號使用次數越多,模型就越難再次使用該符號,進而增加回應的詞彙。
注意:負懲罰會鼓勵模型依權杖使用次數重複使用權杖。負值越小,回應的詞彙就會越少。負值越大,模型就會重複使用常見的符記,直到達到 maxOutputTokens
上限為止:「...the the the the the...」。
responseLogprobs
boolean
選用設定。如果為 true,則會在回應中匯出 logprobs 結果。
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 |
關閉安全篩選器。 |