Gemini API 支持使用图片、音频、代码、工具等生成内容。如需详细了解每个功能,请继续阅读并查看以任务为中心的示例代码,或阅读综合指南。
方法:models.generateContent
给定输入 GenerateContentRequest
生成模型回答。如需了解详细用法信息,请参阅文本生成指南。输入功能因模型而异,包括经过调优的模型。如需了解详情,请参阅模型指南和调参指南。
端点
博文 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
在给定输入 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
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
- JSON 表示法
- PromptFeedbackPromptFeedback
- BlockReason
- UsageMetadata
支持多个候选回答的模型的回答。
系统会针对 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_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 ( |
Segment
内容的片段。
partIndex
integer
仅限输出。Part 对象的父 Content 对象中的索引。
startIndex
integer
仅限输出。给定 part 中的起始索引,以字节为单位。相对于部分起始位置的偏移量(含边界值),从零开始。
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 采样直接限制可考虑的词元数量上限,而 Nucleus 采样则根据累积概率限制词元数量。
注意:默认值因 Model
而异,由 getModel
函数返回的 Model.top_p
属性指定。topK
属性为空表示模型不会应用 Top-k 采样,且不允许对请求设置 topK
。
topK
integer
可选。采样时要考虑的词元数量上限。
Gemini 模型使用 Top-p(核)采样或 Top-k 与核采样的组合。Top-k 采样会考虑概率最高的 topK
个词元。通过 Nucleus 采样运行的模型不支持 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 |
系统将允许显示值为“NEGIBLE”和“LOW”的内容。 |
BLOCK_ONLY_HIGH |
允许使用“NEGIBLE”、“LOW”和“MEDIUM”这三种类型的内容。 |
BLOCK_NONE |
允许所有内容。 |
OFF |
关闭安全过滤器。 |