Skip to main content

rust_genai_types/
batches.rs

1use std::collections::HashMap;
2
3use serde::{Deserialize, Serialize};
4
5use crate::content::Content;
6use crate::enums::JobState;
7use crate::http::{HttpOptions, HttpResponse};
8use crate::models::{EmbedContentConfig, GenerateContentConfig};
9use crate::response::GenerateContentResponse;
10
11/// 内联请求。
12#[derive(Debug, Clone, Serialize, Deserialize, Default)]
13#[serde(rename_all = "camelCase")]
14pub struct InlinedRequest {
15    #[serde(skip_serializing_if = "Option::is_none")]
16    pub model: Option<String>,
17    #[serde(skip_serializing_if = "Option::is_none")]
18    pub contents: Option<Vec<Content>>,
19    #[serde(skip_serializing_if = "Option::is_none")]
20    pub metadata: Option<HashMap<String, String>>,
21    #[serde(skip_serializing_if = "Option::is_none")]
22    pub config: Option<GenerateContentConfig>,
23}
24
25/// 批处理输入源。
26#[derive(Debug, Clone, Serialize, Deserialize, Default)]
27#[serde(rename_all = "camelCase")]
28pub struct BatchJobSource {
29    #[serde(skip_serializing_if = "Option::is_none")]
30    pub format: Option<String>,
31    #[serde(skip_serializing_if = "Option::is_none")]
32    pub gcs_uri: Option<Vec<String>>,
33    #[serde(skip_serializing_if = "Option::is_none")]
34    pub bigquery_uri: Option<String>,
35    #[serde(skip_serializing_if = "Option::is_none")]
36    pub file_name: Option<String>,
37    #[serde(skip_serializing_if = "Option::is_none")]
38    pub inlined_requests: Option<Vec<InlinedRequest>>,
39}
40
41/// 批处理错误信息。
42#[derive(Debug, Clone, Serialize, Deserialize, Default)]
43#[serde(rename_all = "camelCase")]
44pub struct JobError {
45    #[serde(skip_serializing_if = "Option::is_none")]
46    pub details: Option<Vec<String>>,
47    #[serde(skip_serializing_if = "Option::is_none")]
48    pub code: Option<i32>,
49    #[serde(skip_serializing_if = "Option::is_none")]
50    pub message: Option<String>,
51}
52
53/// 内联响应(生成内容)。
54#[derive(Debug, Clone, Serialize, Deserialize, Default)]
55#[serde(rename_all = "camelCase")]
56pub struct InlinedResponse {
57    #[serde(skip_serializing_if = "Option::is_none")]
58    pub response: Option<GenerateContentResponse>,
59    /// Optional. The metadata to be associated with the request.
60    #[serde(skip_serializing_if = "Option::is_none")]
61    pub metadata: Option<HashMap<String, String>>,
62    #[serde(skip_serializing_if = "Option::is_none")]
63    pub error: Option<JobError>,
64}
65
66/// 单条嵌入响应。
67#[derive(Debug, Clone, Serialize, Deserialize, Default)]
68#[serde(rename_all = "camelCase")]
69pub struct SingleEmbedContentResponse {
70    #[serde(skip_serializing_if = "Option::is_none")]
71    pub embedding: Option<crate::models::ContentEmbedding>,
72    #[serde(skip_serializing_if = "Option::is_none")]
73    pub token_count: Option<String>,
74}
75
76/// 内联嵌入响应。
77#[derive(Debug, Clone, Serialize, Deserialize, Default)]
78#[serde(rename_all = "camelCase")]
79pub struct InlinedEmbedContentResponse {
80    #[serde(skip_serializing_if = "Option::is_none")]
81    pub response: Option<SingleEmbedContentResponse>,
82    #[serde(skip_serializing_if = "Option::is_none")]
83    pub error: Option<JobError>,
84}
85
86/// 批处理输出目标。
87#[derive(Debug, Clone, Serialize, Deserialize, Default)]
88#[serde(rename_all = "camelCase")]
89pub struct BatchJobDestination {
90    #[serde(skip_serializing_if = "Option::is_none")]
91    pub format: Option<String>,
92    #[serde(skip_serializing_if = "Option::is_none")]
93    pub gcs_uri: Option<String>,
94    #[serde(skip_serializing_if = "Option::is_none")]
95    pub bigquery_uri: Option<String>,
96    #[serde(skip_serializing_if = "Option::is_none")]
97    pub file_name: Option<String>,
98    #[serde(skip_serializing_if = "Option::is_none")]
99    pub inlined_responses: Option<Vec<InlinedResponse>>,
100    #[serde(skip_serializing_if = "Option::is_none")]
101    pub inlined_embed_content_responses: Option<Vec<InlinedEmbedContentResponse>>,
102}
103
104/// 任务完成统计(Vertex)。
105#[derive(Debug, Clone, Serialize, Deserialize, Default)]
106#[serde(rename_all = "camelCase")]
107pub struct CompletionStats {
108    #[serde(skip_serializing_if = "Option::is_none")]
109    pub failed_count: Option<String>,
110    #[serde(skip_serializing_if = "Option::is_none")]
111    pub incomplete_count: Option<String>,
112    #[serde(skip_serializing_if = "Option::is_none")]
113    pub successful_count: Option<String>,
114    #[serde(skip_serializing_if = "Option::is_none")]
115    pub successful_forecast_point_count: Option<String>,
116}
117
118/// 批处理任务。
119#[derive(Debug, Clone, Serialize, Deserialize, Default)]
120#[serde(rename_all = "camelCase")]
121pub struct BatchJob {
122    #[serde(skip_serializing_if = "Option::is_none")]
123    pub name: Option<String>,
124    #[serde(skip_serializing_if = "Option::is_none")]
125    pub display_name: Option<String>,
126    #[serde(skip_serializing_if = "Option::is_none")]
127    pub state: Option<JobState>,
128    #[serde(skip_serializing_if = "Option::is_none")]
129    pub error: Option<JobError>,
130    #[serde(skip_serializing_if = "Option::is_none")]
131    pub create_time: Option<String>,
132    #[serde(skip_serializing_if = "Option::is_none")]
133    pub start_time: Option<String>,
134    #[serde(skip_serializing_if = "Option::is_none")]
135    pub end_time: Option<String>,
136    #[serde(skip_serializing_if = "Option::is_none")]
137    pub update_time: Option<String>,
138    #[serde(skip_serializing_if = "Option::is_none")]
139    pub model: Option<String>,
140    #[serde(skip_serializing_if = "Option::is_none")]
141    pub src: Option<BatchJobSource>,
142    #[serde(skip_serializing_if = "Option::is_none")]
143    pub dest: Option<BatchJobDestination>,
144    #[serde(skip_serializing_if = "Option::is_none")]
145    pub completion_stats: Option<CompletionStats>,
146}
147
148/// 创建批处理任务配置。
149#[derive(Debug, Clone, Serialize, Deserialize, Default)]
150#[serde(rename_all = "camelCase")]
151pub struct CreateBatchJobConfig {
152    #[serde(skip_serializing, skip_deserializing)]
153    pub http_options: Option<HttpOptions>,
154    #[serde(skip_serializing_if = "Option::is_none")]
155    pub display_name: Option<String>,
156    #[serde(skip_serializing_if = "Option::is_none")]
157    pub dest: Option<BatchJobDestination>,
158}
159
160/// Embeddings batch 请求体(仅用于内联)。
161#[derive(Debug, Clone, Serialize, Deserialize, Default)]
162#[serde(rename_all = "camelCase")]
163pub struct EmbedContentBatch {
164    #[serde(skip_serializing_if = "Option::is_none")]
165    pub contents: Option<Vec<Content>>,
166    #[serde(skip_serializing_if = "Option::is_none")]
167    pub config: Option<EmbedContentConfig>,
168}
169
170/// Embeddings batch 输入源(Gemini inline)。
171#[derive(Debug, Clone, Serialize, Deserialize, Default)]
172#[serde(rename_all = "camelCase")]
173pub struct EmbeddingsBatchJobSource {
174    #[serde(skip_serializing_if = "Option::is_none")]
175    pub file_name: Option<String>,
176    #[serde(skip_serializing_if = "Option::is_none")]
177    pub inlined_requests: Option<EmbedContentBatch>,
178}
179
180/// 获取批处理任务配置。
181#[derive(Debug, Clone, Serialize, Deserialize, Default)]
182#[serde(rename_all = "camelCase")]
183pub struct GetBatchJobConfig {
184    #[serde(skip_serializing, skip_deserializing)]
185    pub http_options: Option<HttpOptions>,
186}
187
188/// 取消批处理任务配置。
189#[derive(Debug, Clone, Serialize, Deserialize, Default)]
190#[serde(rename_all = "camelCase")]
191pub struct CancelBatchJobConfig {
192    #[serde(skip_serializing, skip_deserializing)]
193    pub http_options: Option<HttpOptions>,
194}
195
196/// 删除批处理任务配置。
197#[derive(Debug, Clone, Serialize, Deserialize, Default)]
198#[serde(rename_all = "camelCase")]
199pub struct DeleteBatchJobConfig {
200    #[serde(skip_serializing, skip_deserializing)]
201    pub http_options: Option<HttpOptions>,
202}
203
204/// The return value of delete operation.
205#[derive(Debug, Clone, Serialize, Deserialize, Default)]
206#[serde(rename_all = "camelCase")]
207pub struct DeleteResourceJob {
208    /// Optional. Used to retain the full HTTP response.
209    #[serde(skip_serializing_if = "Option::is_none")]
210    pub sdk_http_response: Option<HttpResponse>,
211    #[serde(skip_serializing_if = "Option::is_none")]
212    pub name: Option<String>,
213    #[serde(skip_serializing_if = "Option::is_none")]
214    pub done: Option<bool>,
215    #[serde(skip_serializing_if = "Option::is_none")]
216    pub error: Option<JobError>,
217}
218
219/// 列出批处理任务配置。
220#[derive(Debug, Clone, Serialize, Deserialize, Default)]
221#[serde(rename_all = "camelCase")]
222pub struct ListBatchJobsConfig {
223    #[serde(skip_serializing, skip_deserializing)]
224    pub http_options: Option<HttpOptions>,
225    #[serde(skip_serializing_if = "Option::is_none")]
226    pub page_size: Option<i32>,
227    #[serde(skip_serializing_if = "Option::is_none")]
228    pub page_token: Option<String>,
229    #[serde(skip_serializing_if = "Option::is_none")]
230    pub filter: Option<String>,
231}
232
233/// 批处理列表响应。
234#[derive(Debug, Clone, Serialize, Deserialize, Default)]
235#[serde(rename_all = "camelCase")]
236pub struct ListBatchJobsResponse {
237    /// Optional. Used to retain the full HTTP response.
238    #[serde(skip_serializing_if = "Option::is_none")]
239    pub sdk_http_response: Option<HttpResponse>,
240    #[serde(skip_serializing_if = "Option::is_none")]
241    pub batch_jobs: Option<Vec<BatchJob>>,
242    #[serde(skip_serializing_if = "Option::is_none")]
243    pub next_page_token: Option<String>,
244}