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
90#[derive(Debug, Clone, Builder, Serialize, Deserialize, PartialEq)]
91pub struct ResponseFormat {
92 #[builder(setter(into, strip_option))]
93 #[serde(rename = "type")]
94 pub type_: String,
95}
96
97impl ParametersBuilder {
98 pub fn functions<V>(&mut self, value: V) -> &mut Self
99 where
100 V: Into<Vec<FunctionCall>>,
101 {
102 self.tools(value)
103 }
104}
105
106#[derive(Debug, Clone, Builder, Serialize, Deserialize, PartialEq)]
107pub struct FunctionCall {
108 #[builder(setter(into, strip_option))]
109 #[serde(rename = "type")]
110 pub typ: Option<String>,
111
112 #[builder(setter(into, strip_option))]
113 #[serde(rename = "function")]
114 pub function: Option<Function>,
115}
116
117#[derive(Debug, Clone, Builder, Serialize, Deserialize, PartialEq)]
118#[builder(setter(into, strip_option))]
119pub struct Function {
120 name: String,
121 #[builder(setter(into, strip_option))]
122 #[builder(default=None)]
123 description: Option<String>,
124 #[builder(setter(into, strip_option))]
125 #[builder(default=None)]
126 parameters: Option<FunctionParameters>,
127}
128
129#[derive(Debug, Clone, Builder, Serialize, Deserialize, PartialEq)]
130pub struct FunctionParameters {
131 #[serde(rename = "type")]
132 pub typ: String,
133 properties: HashMap<String, Value>,
134 required: Option<Vec<String>>,
135}
136
137#[derive(Debug, Clone, Builder, Serialize, Deserialize, PartialEq)]
138#[builder(setter(into, strip_option))]
139pub struct SearchOptions {
140 #[builder(default=None)]
141 pub forced_search: Option<bool>,
142 #[builder(default=None)]
143 pub enable_source: Option<bool>,
144 #[builder(default=None)]
145 pub enable_citation: Option<bool>,
146 #[builder(default=None)]
147 pub citation_format: Option<String>,
148 #[builder(default=None)]
149 pub search_strategy: Option<String>,
150}
151
152#[derive(Debug, Clone, Builder, Serialize, Deserialize, PartialEq)]
153pub struct StreamOptions {
154 pub include_usage: bool,
155}
156
157#[derive(Debug, Clone, Builder, Serialize, Deserialize, PartialEq)]
158pub struct TranslationOptions {
159 #[builder(setter(into))]
160 pub source_lang: String,
161 #[builder(setter(into))]
162 pub target_lang: String,
163 #[builder(setter(into, strip_option))]
164 #[builder(default=None)]
165 pub terms: Option<Vec<Term>>,
166}
167
168#[derive(Debug, Clone, Builder, Serialize, Deserialize, PartialEq)]
169pub struct Term {
170 pub source: String,
171 pub target: String,
172}
173
174#[derive(Serialize, Deserialize, Debug, Clone)]
175pub struct Usage {
176 #[serde(skip_serializing_if = "Option::is_none")]
178 pub input_tokens: Option<i32>,
179
180 #[serde(skip_serializing_if = "Option::is_none")]
182 pub output_tokens: Option<i32>,
183
184 #[serde(skip_serializing_if = "Option::is_none")]
186 pub total_tokens: Option<i32>,
187
188 #[serde(skip_serializing_if = "Option::is_none")]
190 pub image_tokens: Option<i32>,
191
192 #[serde(skip_serializing_if = "Option::is_none")]
194 pub video_tokens: Option<i32>,
195
196 #[serde(skip_serializing_if = "Option::is_none")]
198 pub audio_tokens: Option<i32>,
199
200 #[serde(skip_serializing_if = "Option::is_none")]
202 pub prompt_tokens_details: Option<PromptTokensDetails>,
203
204 #[serde(skip_serializing_if = "Option::is_none")]
206 pub input_tokens_details: Option<InputTokensDetails>,
207 #[serde(skip_serializing_if = "Option::is_none")]
209 pub output_tokens_details: Option<OutputTokensDetails>,
210}
211
212#[derive(Serialize, Deserialize, Debug, Clone)]
213pub struct InputTokensDetails {
214 text_tokens: Option<i32>,
215}
216#[derive(Serialize, Deserialize, Debug, Clone)]
217pub struct OutputTokensDetails {
218 audio_tokens: Option<i32>,
219 text_tokens: Option<i32>,
220}
221#[derive(Serialize, Deserialize, Debug, Clone)]
222pub struct PromptTokensDetails {
223 pub prompt_tokens: Option<i32>,
225}