Gemini API 支援使用圖片、音訊、程式碼、工具等技術生成內容。如需各項功能的詳細資訊,請繼續閱讀並查看以任務為主的程式碼範例,或是閱讀完整指南。
方法:model.generateContent
根據輸入 GenerateContentRequest
產生模型回應。如需詳細的使用資訊,請參閱文字產生指南。不同模型的輸入功能不同,包括經過調整的模型。詳情請參閱模型指南和調整指南。
端點
則貼文
https://generativelanguage.googleapis.com/v1beta/{model=models/*}:generateContent
路徑參數
model
string
必要欄位。用於產生完成項目的 Model
名稱。
格式:name=models/{model}
。格式為 models/{model}
。
要求主體
要求主體的資料會採用以下結構:
tools[]
object (Tool
)
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
的執行例項。
方法:model.streamGenerateContent
根據輸入的 GenerateContentRequest
從模型產生串流回應。
端點
則貼文
https://generativelanguage.googleapis.com/v1beta/{model=models/*}:streamGenerateContent
路徑參數
model
string
必要欄位。用於產生完成項目的 Model
名稱。
格式:name=models/{model}
。格式為 models/{model}
。
要求主體
要求主體的資料會採用以下結構:
tools[]
object (Tool
)
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
模型產生的回應候選項目。
content
object (Content
)
僅供輸出。模型傳回的內容。
finishReason
enum (FinishReason
)
選用設定。僅供輸出。模型停止產生權杖的原因。
如果留空,模型就不會停止產生權杖。
safetyRatings[]
object (SafetyRating
)
回覆候選者安全性的評分清單。
每個類別最多有一個評分。
citationMetadata
object (CitationMetadata
)
僅供輸出。模型產生的候選項目引用資訊。
這個欄位可能會填入 content
中任何文字的引用資訊。這些是「被引用」的段落擷取及儲存大量著作權內容
tokenCount
integer
僅供輸出。這個候選項目的符記數量。
groundingAttributions[]
object (GroundingAttribution
)
僅供輸出。產生基準答案的來源適用的作者資訊。
系統會為 GenerateAnswer
呼叫填入這個欄位。
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 } |
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 回應。如需所有支援文字 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」(nucleus) 的綜合取樣。
系統會依據指派的機率排序權杖,只考慮最有可能的符記。「Top-K」取樣會直接限制要考慮的符記數量上限,Nucleus 取樣功能則會根據累積機率限制分詞數量。
注意:預設值會因 Model
而異,而是由 getModel
函式傳回的 Model.top_p
屬性指定。空白的 topK
屬性表示模型不會套用「Top-K」取樣,且不允許在要求中設定 topK
。
topK
integer
選用設定。取樣時可指定的符記數量上限。
Gemini 模型採用 Top-p (nucleus) 取樣,或結合「Top-k」和「nucleus」的取樣。「Top-K」取樣會考量一組可能性最高的符記組合 (共 topK
個)。以 nucleus 取樣運作的模型不允許使用 TopK 設定。
注意:預設值會因 Model
而異,而是由 getModel
函式傳回的 Model.top_p
屬性指定。空白的 topK
屬性表示模型不會套用「Top-K」取樣,且不允許在要求中設定 topK
。
JSON 表示法 |
---|
{
"stopSequences": [
string
],
"responseMimeType": string,
"responseSchema": {
object ( |
HarmCategory
評分的類別。
這些類別涵蓋開發人員可能需調整的各類危害。
列舉 | |
---|---|
HARM_CATEGORY_UNSPECIFIED |
未指定類別。 |
HARM_CATEGORY_DEROGATORY |
針對特定身分和/或受保護屬性發表負面或有害言論。 |
HARM_CATEGORY_TOXICITY |
粗魯無禮、不尊重或不雅的內容。 |
HARM_CATEGORY_VIOLENCE |
描述對個人或群體施暴的情境,或描述血腥的血腥描述。 |
HARM_CATEGORY_SEXUAL |
提及性行為或其他猥褻情事的內容。 |
HARM_CATEGORY_MEDICAL |
宣傳未經證實的醫療建議。 |
HARM_CATEGORY_DANGEROUS |
宣傳、鼓吹或助長有害舉動的「危險內容」。 |
HARM_CATEGORY_HARASSMENT |
騷擾內容。 |
HARM_CATEGORY_HATE_SPEECH |
仇恨言論和內容。 |
HARM_CATEGORY_SEXUALLY_EXPLICIT |
情色露骨內容。 |
HARM_CATEGORY_DANGEROUS_CONTENT |
危險內容。 |
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 |
允許所有內容。 |