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
Shell
Kotlin
Swift
Dart
Java
Image
Python
Node.js
Go
Shell
Kotlin
Swift
Dart
Java
音频
Python
Node.js
Shell
视频
Python
Node.js
Go
Shell
Python
Shell
聊天
Python
Node.js
Go
Shell
Kotlin
Swift
Dart
Java
缓存
Python
Node.js
经调优的模型
Python
JSON 模式
Python
Node.js
Go
Shell
Kotlin
Swift
Dart
Java
代码执行
Python
Kotlin
Java
函数调用
Python
Node.js
Shell
Kotlin
Swift
Dart
Java
生成配置
Python
Node.js
Go
Shell
Kotlin
Swift
Dart
Java
安全设置
Python
Node.js
Go
Shell
Kotlin
Swift
Dart
Java
系统指令
Python
Node.js
Go
Shell
Kotlin
Swift
Dart
Java
响应正文
如果成功,则响应正文包含一个 GenerateContentResponse
实例。
方法:models.streamGenerateContent
端点
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
Shell
Kotlin
Swift
Dart
Java
Image
Python
Node.js
Go
Shell
Kotlin
Swift
Dart
Java
音频
Python
Shell
视频
Python
Node.js
Go
Shell
Python
Shell
聊天
Python
Node.js
Go
Shell
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
)
仅限输出。对此归因做出贡献的来源的标识符。
content
object (Content
)
构成此归因的来源内容。
JSON 表示法 |
---|
{ "sourceId": { object ( |
AttributionSourceId
对此归因做出贡献的来源的标识符。
联合字段 source
。
source
只能是下列其中一项:
groundingPassage
object (GroundingPassageId
)
内嵌段落的标识符。
semanticRetrieverChunk
object (SemanticRetrieverChunk
)
通过 Semantic Retriever 提取的 Chunk
的标识符。
JSON 表示法 |
---|
{ // Union field |
GroundingPassageId
GroundingPassage
中部分的标识符。
passageId
string
仅限输出。与 GenerateAnswerRequest
的 GroundingPassage.id
匹配的段落的 ID。
partIndex
integer
仅限输出。GenerateAnswerRequest
的 GroundingPassage.content
中的部分的索引。
JSON 表示法 |
---|
{ "passageId": string, "partIndex": integer } |
SemanticRetrieverChunk
使用 SemanticRetrieverConfig
在 GenerateAnswerRequest
中指定的通过语义检索器检索的 Chunk
的标识符。
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 中的 Web 内容摘要。
sdkBlob
string (bytes format)
可选。表示 <search term, search url> 元组数组的 base64 编码 JSON。
使用 base64 编码的字符串。
JSON 表示法 |
---|
{ "renderedContent": string, "sdkBlob": string } |
GroundingChunk
接地块。
chunk_type
。分块类型。chunk_type
只能是下列其中一项:
web
object (Web
)
来自网络的“Grounding chunk”。
JSON 表示法 |
---|
{ // Union field |
Web
来自网络的文件块。
uri
string
分块的 URI 引用。
title
string
数据块的标题。
JSON 表示法 |
---|
{ "uri": string, "title": string } |
GroundingSupport
依据支持。
groundingChunkIndices[]
integer
一系列索引(属于“grounding_块”),用于指定与声明相关联的引用。例如,[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 ( |
Segment
内容的片段。
partIndex
integer
仅限输出。Part 对象在其父级 Content 对象中的索引。
startIndex
integer
仅限输出。给定部分的起始索引(以字节为单位)。相对于部分起始位置的偏移量(含边界值),从零开始。
endIndex
integer
仅限输出。给定分块中的结束索引,以字节为单位。到部分起始位置的偏移量(不含),从零开始。
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 采样会直接限制要考虑的 token 数量上限,而 Nucleus 采样会根据累积概率限制 token 数量。
注意:默认值因 Model
而异,由 getModel
函数返回的 Model.top_p
属性指定。空的 topK
属性表示模型不会应用前 k 个样本抽样,也不允许对请求设置 topK
。
topK
integer
可选。抽样时要考虑的令牌数量上限。
Gemini 模型使用 Top-p(核)采样或 Top-k 和核采样的组合。Top-k 采样会考虑概率最高的 topK
个词元。使用核采样运行的模型不允许设置 topK。
注意:默认值因 Model
而异,由 getModel
函数返回的 Model.top_p
属性指定。空的 topK
属性表示模型不会应用前 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
中每个解码步骤要返回的顶部 logprob 的数量。
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 |
系统将允许显示值为“NEGIBLE”的内容。 |
BLOCK_MEDIUM_AND_ABOVE |
我们会允许发布评分为 NEGLIGIBLE 和 LOW 的内容。 |
BLOCK_ONLY_HIGH |
我们允许发布“NEGLIGIBLE”“LOW”和“MEDIUM”级别的内容。 |
BLOCK_NONE |
允许所有内容。 |
OFF |
关闭安全过滤器。 |