@@ -19,6 +19,8 @@ pub struct GenerateContentRequest {
1919 pub system_instruction : Option < Content > ,
2020 pub contents : Vec < Content > ,
2121 pub tools : Option < Vec < ToolConfig > > ,
22+ #[ serde( rename = "generationConfig" ) ]
23+ pub generation_config : Option < GenerationConfig > ,
2224}
2325
2426#[ derive( Debug , Serialize , Deserialize ) ]
@@ -50,6 +52,49 @@ pub struct Content {
5052 pub role : Role ,
5153}
5254
55+ #[ derive( Debug , Serialize , Deserialize ) ]
56+ pub struct GenerationConfig {
57+ #[ serde( rename = "stopSequences" , skip_serializing_if = "Option::is_none" ) ]
58+ pub stop_sequences : Option < Vec < String > > ,
59+ #[ serde( rename = "responseMimeType" , skip_serializing_if = "Option::is_none" ) ]
60+ pub response_mime_type : Option < String > ,
61+ #[ serde( rename = "responseSchema" , skip_serializing_if = "Option::is_none" ) ]
62+ pub response_schema : Option < serde_json:: Value > ,
63+ #[ serde( rename = "responseModalities" , skip_serializing_if = "Option::is_none" ) ]
64+ pub response_modalities : Option < Vec < String > > ,
65+ #[ serde( rename = "candidateCount" , skip_serializing_if = "Option::is_none" ) ]
66+ pub candidate_count : Option < i32 > ,
67+ #[ serde( rename = "maxOutputTokens" , skip_serializing_if = "Option::is_none" ) ]
68+ pub max_output_tokens : Option < i32 > ,
69+ #[ serde( rename = "temperature" , skip_serializing_if = "Option::is_none" ) ]
70+ pub temperature : Option < f64 > ,
71+ #[ serde( rename = "topP" , skip_serializing_if = "Option::is_none" ) ]
72+ pub top_p : Option < f64 > ,
73+ #[ serde( rename = "topK" , skip_serializing_if = "Option::is_none" ) ]
74+ pub top_k : Option < i32 > ,
75+ #[ serde( rename = "seed" , skip_serializing_if = "Option::is_none" ) ]
76+ pub seed : Option < i64 > ,
77+ #[ serde( rename = "presencePenalty" , skip_serializing_if = "Option::is_none" ) ]
78+ pub presence_penalty : Option < f64 > ,
79+ #[ serde( rename = "frequencyPenalty" , skip_serializing_if = "Option::is_none" ) ]
80+ pub frequency_penalty : Option < f64 > ,
81+ #[ serde( rename = "responseLogprobs" , skip_serializing_if = "Option::is_none" ) ]
82+ pub response_logprobs : Option < bool > ,
83+ #[ serde( rename = "logprobs" , skip_serializing_if = "Option::is_none" ) ]
84+ pub logprobs : Option < i32 > ,
85+ #[ serde(
86+ rename = "enableEnhancedCivicAnswers" ,
87+ skip_serializing_if = "Option::is_none"
88+ ) ]
89+ pub enable_enhanced_civic_answers : Option < bool > ,
90+ #[ serde( rename = "speechConfig" , skip_serializing_if = "Option::is_none" ) ]
91+ pub speech_config : Option < serde_json:: Value > ,
92+ #[ serde( rename = "thinkingConfig" , skip_serializing_if = "Option::is_none" ) ]
93+ pub thinking_config : Option < serde_json:: Value > ,
94+ #[ serde( rename = "mediaResolution" , skip_serializing_if = "Option::is_none" ) ]
95+ pub media_resolution : Option < String > ,
96+ }
97+
5398#[ derive( Debug , Serialize , Deserialize ) ]
5499pub enum ContentPart {
55100 #[ serde( rename = "text" ) ]
@@ -68,9 +113,6 @@ pub enum ContentPart {
68113 CodeExecutionResult ( Value ) ,
69114}
70115
71-
72-
73-
74116#[ derive( Debug , Serialize , Deserialize ) ]
75117pub struct ToolConfigFunctionDeclaration {
76118 pub function_declarations : Vec < FunctionDeclaration > ,
@@ -169,7 +211,7 @@ pub struct ExecutableCode {
169211pub struct InlineData {
170212 #[ serde( rename = "mimeType" ) ]
171213 mime_type : String ,
172- data : String
214+ data : String ,
173215}
174216
175217#[ derive( Debug , Serialize , Deserialize ) ]
0 commit comments