Gemini API 支持单独上传媒体文件,与提示输入分开,从而允许您在多个请求和多个提示中重复使用媒体。如需了解详情,请参阅使用媒体内容生成提示指南。
方法:media.upload
将数据上传到 ragStore,在存储到 RagStore 文档之前进行预处理和分块。
端点
- 上传 URI,用于媒体上传请求:
https: / /generativelanguage.googleapis.com /upload /v1beta /{ragStoreName=ragStores /*}:uploadToRagStore
- 元数据 URI,用于仅涉及元数据的请求:
https: / /generativelanguage.googleapis.com /v1beta /{ragStoreName=ragStores /*}:uploadToRagStore
路径参数
ragStoreName
string
必需。不可变。要将文件上传到的 RagStore
的名称。示例:ragStores/my-rag-store-123
格式为 ragStores/{ragstore}
。
请求正文
请求正文中包含结构如下的数据:
displayName
string
可选。所创建文档的显示名称。
customMetadata[]
object (CustomMetadata
)
要与数据相关联的自定义元数据。
chunkingConfig
object (ChunkingConfig
)
可选。用于告知服务如何对数据进行分块的配置。如果未提供,服务将使用默认参数。
mimeType
string
可选。数据的 MIME 类型。如果未提供,系统会根据上传的内容进行推断。
响应正文
这是 google.longrunning.Operation 的副本。我们需要复制它,因为为了与 scotty 互动,我们需要添加一个无法在顶级 Operation proto 中添加的 scotty 特定字段。
如果成功,响应正文将包含结构如下的数据:
name
string
由服务器分配的名称,该名称仅在最初返回它的那项服务中是唯一的。如果您使用默认 HTTP 映射,则 name
应是以 operations/{unique_id}
结尾的资源名称。
metadata
object
与操作关联的服务专属元数据。它通常包含进度信息和常见元数据(如创建时间)。一些服务可能不会提供此类元数据。任何返回长时间运行操作的方法都应记录元数据类型(如果有的话)。
此对象可以包含任意类型的字段。附加字段 "@type"
包含用于标示相应类型的 URI。示例:{ "id": 1234, "@type": "types.example.com/standard/id" }
。
done
boolean
如果值为 false
,则表示操作仍在进行中。如果为 true
,则表示操作已完成,其结果不是 error
就是 response
。
result
Union type
error
,也可以是有效的 response
。如果 done
== false
,则既不会设置 error
,也不会设置 response
。如果 done
== true
,则只能设置 error
或 response
中的一项。部分服务可能不会提供结果。result
只能是下列其中一项:error
object (Status
)
操作失败或被取消时表示有错误发生的结果。
response
object
操作的常规成功响应。如果原始方法在成功时不返回任何数据(如 Delete
),则响应为 google.protobuf.Empty
。如果原始方法为标准 Get
/Create
/Update
方法,则响应应该为资源。对于其他方法,响应类型应为 XxxResponse
,其中 Xxx
是原始方法的名称。例如,如果原始方法名称为 TakeSnapshot()
,则推断的响应类型为 TakeSnapshotResponse
。
此对象可以包含任意类型的字段。附加字段 "@type"
包含用于标示相应类型的 URI。示例:{ "id": 1234, "@type": "types.example.com/standard/id" }
。
JSON 表示法 |
---|
{
"name": string,
"metadata": {
"@type": string,
field1: ...,
...
},
"done": boolean,
// result
"error": {
object ( |
ChunkingConfig
用于告知服务如何对文件进行分块的参数。灵感来自 google3/cloud/ai/platform/extension/lib/retrieval/config/chunker_config.proto
JSON 表示法 |
---|
{
// config
"whiteSpaceConfig": {
object ( |
WhiteSpaceConfig
空白分隔分块算法的配置 [以空格分隔]。
maxTokensPerChunk
integer
每个块的令牌数量上限。对于此分块算法,词法单元定义为字词。注意:我们将词元定义为由空格分隔的字词,而不是分词器的输出。截至 2025 年 4 月 17 日,最新 Gemini 嵌入模型的上下文窗口目前为 8,192 个词元。我们假设平均每个字词包含 5 个字符。因此,我们将上限设置为 2**9,即 512 个字或 2560 个 token(假设最坏情况下每个 token 包含一个字符)。这是一个保守的估计值,旨在防止上下文窗口溢出。
maxOverlapTokens
integer
两个相邻分块之间的重叠词元数量上限。
JSON 表示法 |
---|
{ "maxTokensPerChunk": integer, "maxOverlapTokens": integer } |
方法:files.get
获取指定 File
的元数据。
端点
gethttps: / /generativelanguage.googleapis.com /v1beta /{name=files /*}
路径参数
name
string
必需。要获取的 File
的名称。示例:files/abc-123
格式为 files/{file}
。
请求正文
请求正文必须为空。
示例请求
Python
Node.js
Go
Shell
响应正文
如果成功,则响应正文包含一个 File
实例。
方法:files.list
列出请求项目拥有的 File
的元数据。
端点
gethttps: / /generativelanguage.googleapis.com /v1beta /files
查询参数
pageSize
integer
可选。每页返回的 File
数上限。如果未指定,则默认为 10。最大值 pageSize
为 100。
pageToken
string
可选。来自之前 files.list
调用的页面令牌。
请求正文
请求正文必须为空。
示例请求
Python
Node.js
Go
Shell
方法:files.delete
删除 File
。
端点
deletehttps: / /generativelanguage.googleapis.com /v1beta /{name=files /*}
路径参数
name
string
必需。要删除的 File
的名称。示例:files/abc-123
格式为 files/{file}
。
请求正文
请求正文必须为空。
示例请求
Python
Node.js
Go
Shell
响应正文
如果成功,则响应正文为空的 JSON 对象。
REST 资源:文件
资源:File
上传到 API 的文件。下一个 ID:15
name
string
不可变。标识符。File
资源名称。ID(不含“files/”前缀的名称)最多可包含 40 个字符,这些字符可以是小写字母数字字符或短划线 (-)。ID 不能以短划线开头或结尾。如果创建时名称为空,系统会生成一个唯一名称。示例:files/123-456
displayName
string
可选。File
的人类可读显示名称。显示名称的长度不得超过 512 个字符(包括空格)。示例:“欢迎图片”
mimeType
string
仅限输出。文件的 MIME 类型。
sizeBytes
string (int64 format)
仅限输出。文件的大小(以字节为单位)。
createTime
string (Timestamp
format)
仅限输出。File
的创建时间戳。
采用 RFC 3339 标准,生成的输出将始终进行 Z 规范化(即转换为 UTC 零时区格式并在末尾附加 Z),并使用 0、3、6 或 9 个小数位。不带“Z”的偏差时间也是可以接受的。示例:"2014-10-02T15:01:23Z"
、"2014-10-02T15:01:23.045123456Z"
或 "2014-10-02T15:01:23+05:30"
。
updateTime
string (Timestamp
format)
仅限输出。File
上次更新的时间戳。
采用 RFC 3339 标准,生成的输出将始终进行 Z 规范化(即转换为 UTC 零时区格式并在末尾附加 Z),并使用 0、3、6 或 9 个小数位。不带“Z”的偏差时间也是可以接受的。示例:"2014-10-02T15:01:23Z"
、"2014-10-02T15:01:23.045123456Z"
或 "2014-10-02T15:01:23+05:30"
。
expirationTime
string (Timestamp
format)
仅限输出。File
将被删除的时间戳。仅当 File
计划过期时设置。
采用 RFC 3339 标准,生成的输出将始终进行 Z 规范化(即转换为 UTC 零时区格式并在末尾附加 Z),并使用 0、3、6 或 9 个小数位。不带“Z”的偏差时间也是可以接受的。示例:"2014-10-02T15:01:23Z"
、"2014-10-02T15:01:23.045123456Z"
或 "2014-10-02T15:01:23+05:30"
。
sha256Hash
string (bytes format)
仅限输出。上传字节的 SHA-256 哈希值。
使用 base64 编码的字符串。
uri
string
仅限输出。File
的 URI。
downloadUri
string
仅限输出。File
的下载 URI。
state
enum (State
)
仅限输出。文件的处理状态。
source
enum (Source
)
文件的来源。
error
object (Status
)
仅限输出。文件处理失败时的错误状态。
metadata
Union type
metadata
只能是下列其中一项:videoMetadata
object (VideoFileMetadata
)
仅限输出。视频的元数据。
JSON 表示法 |
---|
{ "name": string, "displayName": string, "mimeType": string, "sizeBytes": string, "createTime": string, "updateTime": string, "expirationTime": string, "sha256Hash": string, "uri": string, "downloadUri": string, "state": enum ( |
VideoFileMetadata
视频 File
的元数据。
videoDuration
string (Duration
format)
视频时长。
该时长以秒为单位,最多包含九个小数位,以“s
”结尾。示例:"3.5s"
。
JSON 表示法 |
---|
{ "videoDuration": string } |
州
文件生命周期的状态。
枚举 | |
---|---|
STATE_UNSPECIFIED |
默认值。如果省略状态,则使用此值。 |
PROCESSING |
文件正在处理中,尚无法用于推理。 |
ACTIVE |
文件已处理完毕,可用于推理。 |
FAILED |
文件处理失败。 |
来源
枚举 | |
---|---|
SOURCE_UNSPECIFIED |
如果未指定来源,则使用此值。 |
UPLOADED |
表示文件由用户上传。 |
GENERATED |
表示相应文件由 Google 生成。 |
REGISTERED |
表示相应文件是已注册的文件,即 Google Cloud Storage 文件。 |
状态
Status
类型定义了适用于不同编程环境(包括 REST API 和 RPC API)的逻辑错误模型。此类型供 gRPC 使用。每条 Status
消息包含三部分数据:错误代码、错误消息和错误详细信息。
如需详细了解该错误模型及其使用方法,请参阅 API 设计指南。
code
integer
状态代码,应为 google.rpc.Code
的枚举值。
message
string
面向开发者的错误消息(应采用英语)。任何向用户显示的错误消息都应进行本地化并通过 google.rpc.Status.details
字段发送,或者由客户端进行本地化。
details[]
object
包含错误详细信息的消息列表。有一组通用的消息类型可供 API 使用。
可以包含任意类型字段的对象。附加字段 "@type"
包含用于标示相应类型的 URI。示例:{ "id": 1234, "@type": "types.example.com/standard/id" }
。
JSON 表示法 |
---|
{ "code": integer, "message": string, "details": [ { "@type": string, field1: ..., ... } ] } |