async_dashscope/operation/
common.rs1use std::collections::HashMap;
2
3use derive_builder::Builder;
4use serde::{Deserialize, Serialize};
5use serde_json::Value;
6
7#[derive(Debug, Clone, Builder, Serialize, Deserialize, PartialEq)]
8pub struct Parameters {
9 #[builder(setter(into, strip_option))]
11 #[builder(default=None)]
12 pub result_format: Option<String>,
13
14 #[builder(setter(strip_option))]
16 #[builder(default=None)]
17 pub translation_options: Option<TranslationOptions>,
18 #[deprecated(
20 since = "0.5.0",
21 note = "Stream control is now unified under the top-level `stream` parameter in request objects. This parameter will be ignored."
22 )]
23 #[builder(setter(into, strip_option))]
24 #[builder(default=None)]
25 pub incremental_output: Option<bool>,
26
27 #[builder(setter(into, strip_option))]
28 #[builder(default=None)]
29 pub tools: Option<Vec<FunctionCall>>,
31
32 #[builder(setter(into, strip_option))]
34 #[builder(default=None)]
35 pub parallel_tool_calls: Option<bool>,
36
37 #[builder(setter(into, strip_option))]
40 #[builder(default=None)]
41 pub thinking_budget: Option<usize>,
42
43 #[builder(setter(into, strip_option))]
46 #[builder(default=None)]
47 pub enable_search: Option<bool>,
48
49 #[builder(setter(into, strip_option))]
51 #[builder(default=None)]
52 pub search_options: Option<SearchOptions>,
53
54 #[builder(setter(into, strip_option))]
56 #[builder(default=None)]
57 pub enable_thinking: Option<bool>,
58
59 #[builder(setter(into, strip_option))]
60 #[builder(default=None)]
61 pub response_format: Option<ResponseFormat>,
62
63 #[builder(setter(into, strip_option))]
65 #[builder(default=None)]
66 repetition_penalty: Option<f64>,
67
68 #[builder(setter(into, strip_option))]
76 #[builder(default=None)]
77 presence_penalty: Option<f64>,
78
79 #[builder(setter(into, strip_option))]
81 #[builder(default=None)]
82 vl_high_resolution_images: Option<bool>,
83
84 #[builder(setter(into, strip_option))]
86 #[builder(default=None)]
87 vl_enable_image_hw_output: Option<bool>,
88
89 #[builder(setter(into, strip_option))]
91 #[builder(default=None)]
92 watermark:Option<bool>,
93
94 #[builder(setter(into, strip_option))]
99 #[builder(default=None)]
100 negative_prompt: Option<String>,
101
102 #[builder(setter(into, strip_option))]
107 #[builder(default=None)]
108 seed: Option<i32>,
109}
110
111#[derive(Debug, Clone, Builder, Serialize, Deserialize, PartialEq)]
112pub struct ResponseFormat {
113 #[builder(setter(into, strip_option))]
114 #[serde(rename = "type")]
115 pub type_: String,
116}
117
118impl ParametersBuilder {
119 pub fn functions<V>(&mut self, value: V) -> &mut Self
120 where
121 V: Into<Vec<FunctionCall>>,
122 {
123 self.tools(value)
124 }
125}
126
127#[derive(Debug, Clone, Builder, Serialize, Deserialize, PartialEq)]
128pub struct FunctionCall {
129 #[builder(setter(into, strip_option))]
130 #[serde(rename = "type")]
131 pub typ: Option<String>,
132
133 #[builder(setter(into, strip_option))]
134 #[serde(rename = "function")]
135 pub function: Option<Function>,
136}
137
138#[derive(Debug, Clone, Builder, Serialize, Deserialize, PartialEq)]
139#[builder(setter(into, strip_option))]
140pub struct Function {
141 name: String,
142 #[builder(setter(into, strip_option))]
143 #[builder(default=None)]
144 description: Option<String>,
145 #[builder(setter(into, strip_option))]
146 #[builder(default=None)]
147 parameters: Option<FunctionParameters>,
148}
149
150#[derive(Debug, Clone, Builder, Serialize, Deserialize, PartialEq)]
151pub struct FunctionParameters {
152 #[serde(rename = "type")]
153 pub typ: String,
154 properties: HashMap<String, Value>,
155 required: Option<Vec<String>>,
156}
157
158#[derive(Debug, Clone, Builder, Serialize, Deserialize, PartialEq)]
159#[builder(setter(into, strip_option))]
160pub struct SearchOptions {
161 #[builder(default=None)]
162 pub forced_search: Option<bool>,
163 #[builder(default=None)]
164 pub enable_source: Option<bool>,
165 #[builder(default=None)]
166 pub enable_citation: Option<bool>,
167 #[builder(default=None)]
168 pub citation_format: Option<String>,
169 #[builder(default=None)]
170 pub search_strategy: Option<String>,
171}
172
173#[derive(Debug, Clone, Builder, Serialize, Deserialize, PartialEq)]
174pub struct StreamOptions {
175 pub include_usage: bool,
176}
177
178#[derive(Debug, Clone, Builder, Serialize, Deserialize, PartialEq)]
179pub struct TranslationOptions {
180 #[builder(setter(into))]
181 pub source_lang: String,
182 #[builder(setter(into))]
183 pub target_lang: String,
184 #[builder(setter(into, strip_option))]
185 #[builder(default=None)]
186 pub terms: Option<Vec<Term>>,
187}
188
189#[derive(Debug, Clone, Builder, Serialize, Deserialize, PartialEq)]
190pub struct Term {
191 pub source: String,
192 pub target: String,
193}
194
195#[derive(Serialize, Deserialize, Debug, Clone)]
196pub struct Usage {
197 #[serde(skip_serializing_if = "Option::is_none")]
199 pub input_tokens: Option<i32>,
200
201 #[serde(skip_serializing_if = "Option::is_none")]
203 pub output_tokens: Option<i32>,
204
205 #[serde(skip_serializing_if = "Option::is_none")]
207 pub total_tokens: Option<i32>,
208
209 #[serde(skip_serializing_if = "Option::is_none")]
211 pub image_tokens: Option<i32>,
212
213 #[serde(skip_serializing_if = "Option::is_none")]
215 pub video_tokens: Option<i32>,
216
217 #[serde(skip_serializing_if = "Option::is_none")]
219 pub audio_tokens: Option<i32>,
220
221 #[serde(skip_serializing_if = "Option::is_none")]
223 pub prompt_tokens_details: Option<PromptTokensDetails>,
224
225 #[serde(skip_serializing_if = "Option::is_none")]
227 pub input_tokens_details: Option<InputTokensDetails>,
228 #[serde(skip_serializing_if = "Option::is_none")]
230 pub output_tokens_details: Option<OutputTokensDetails>,
231}
232
233#[derive(Serialize, Deserialize, Debug, Clone)]
234pub struct InputTokensDetails {
235 text_tokens: Option<i32>,
236}
237#[derive(Serialize, Deserialize, Debug, Clone)]
238pub struct OutputTokensDetails {
239 audio_tokens: Option<i32>,
240 text_tokens: Option<i32>,
241}
242#[derive(Serialize, Deserialize, Debug, Clone)]
243pub struct PromptTokensDetails {
244 pub prompt_tokens: Option<i32>,
246}