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))]
10 #[builder(default=None)]
11 pub result_format: Option<String>,
12 #[builder(setter(strip_option))]
13 #[builder(default=None)]
14 pub translation_options: Option<TranslationOptions>,
15 #[deprecated(
17 since = "0.5.0",
18 note = "Stream control is now unified under the top-level `stream` parameter in request objects. This parameter will be ignored."
19 )]
20 #[builder(setter(into, strip_option))]
21 #[builder(default=None)]
22 pub incremental_output: Option<bool>,
23
24 #[builder(setter(into, strip_option))]
25 #[builder(default=None)]
26 pub tools: Option<Vec<FunctionCall>>,
28
29 #[builder(setter(into, strip_option))]
30 #[builder(default=None)]
31 pub parallel_tool_calls: Option<bool>,
32
33 #[builder(setter(into, strip_option))]
36 #[builder(default=None)]
37 pub thinking_budget: Option<usize>,
38
39 #[builder(setter(into, strip_option))]
42 #[builder(default=None)]
43 pub enable_search: Option<bool>,
44
45 #[builder(setter(into, strip_option))]
46 #[builder(default=None)]
47 pub search_options: Option<SearchOptions>,
48
49 #[builder(setter(into, strip_option))]
51 #[builder(default=None)]
52 pub enable_thinking: Option<bool>,
53
54 #[builder(setter(into, strip_option))]
55 #[builder(default=None)]
56 pub response_format: Option<ResponseFormat>,
57}
58
59#[derive(Debug, Clone, Builder, Serialize, Deserialize, PartialEq)]
60pub struct ResponseFormat {
61 #[builder(setter(into, strip_option))]
62 #[serde(rename = "type")]
63 pub type_: String,
64}
65
66impl ParametersBuilder {
67 pub fn functions<V>(&mut self, value: V) -> &mut Self
68 where
69 V: Into<Vec<FunctionCall>>,
70 {
71 self.tools(value)
72 }
73}
74
75#[derive(Debug, Clone, Builder, Serialize, Deserialize, PartialEq)]
76pub struct FunctionCall {
77 #[builder(setter(into, strip_option))]
78 #[serde(rename = "type")]
79 pub typ: Option<String>,
80
81 #[builder(setter(into, strip_option))]
82 #[serde(rename = "function")]
83 pub function: Option<Function>,
84}
85
86#[derive(Debug, Clone, Builder, Serialize, Deserialize, PartialEq)]
87#[builder(setter(into, strip_option))]
88pub struct Function {
89 name: String,
90 #[builder(setter(into, strip_option))]
91 #[builder(default=None)]
92 description: Option<String>,
93 #[builder(setter(into, strip_option))]
94 #[builder(default=None)]
95 parameters: Option<FunctionParameters>,
96}
97
98#[derive(Debug, Clone, Builder, Serialize, Deserialize, PartialEq)]
99pub struct FunctionParameters {
100 #[serde(rename = "type")]
101 pub typ: String,
102 properties: HashMap<String, Value>,
103 required: Option<Vec<String>>,
104}
105
106#[derive(Debug, Clone, Builder, Serialize, Deserialize, PartialEq)]
107#[builder(setter(into, strip_option))]
108pub struct SearchOptions {
109 #[builder(default=None)]
110 pub forced_search: Option<bool>,
111 #[builder(default=None)]
112 pub enable_source: Option<bool>,
113 #[builder(default=None)]
114 pub enable_citation: Option<bool>,
115 #[builder(default=None)]
116 pub citation_format: Option<String>,
117 #[builder(default=None)]
118 pub search_strategy: Option<String>,
119}
120
121#[derive(Debug, Clone, Builder, Serialize, Deserialize, PartialEq)]
122pub struct StreamOptions {
123 pub include_usage: bool,
124}
125
126#[derive(Debug, Clone, Builder, Serialize, Deserialize, PartialEq)]
127pub struct TranslationOptions {
128 #[builder(setter(into))]
129 pub source_lang: String,
130 #[builder(setter(into))]
131 pub target_lang: String,
132 #[builder(setter(into, strip_option))]
133 #[builder(default=None)]
134 pub terms: Option<Vec<Term>>,
135}
136
137#[derive(Debug, Clone, Builder, Serialize, Deserialize, PartialEq)]
138pub struct Term {
139 pub source: String,
140 pub target: String,
141}
142
143#[derive(Serialize, Deserialize, Debug, Clone)]
144pub struct Usage {
145 #[serde(skip_serializing_if = "Option::is_none")]
147 pub input_tokens: Option<i32>,
148
149 #[serde(skip_serializing_if = "Option::is_none")]
151 pub output_tokens: Option<i32>,
152
153 #[serde(skip_serializing_if = "Option::is_none")]
155 pub total_tokens: Option<i32>,
156
157 #[serde(skip_serializing_if = "Option::is_none")]
159 pub image_tokens: Option<i32>,
160
161 #[serde(skip_serializing_if = "Option::is_none")]
163 pub video_tokens: Option<i32>,
164
165 #[serde(skip_serializing_if = "Option::is_none")]
167 pub audio_tokens: Option<i32>,
168
169 #[serde(skip_serializing_if = "Option::is_none")]
171 pub prompt_tokens_details: Option<PromptTokensDetails>,
172
173 #[serde(skip_serializing_if = "Option::is_none")]
175 pub input_tokens_details: Option<InputTokensDetails>,
176 #[serde(skip_serializing_if = "Option::is_none")]
178 pub output_tokens_details: Option<OutputTokensDetails>,
179}
180
181#[derive(Serialize, Deserialize, Debug, Clone)]
182pub struct InputTokensDetails {
183 text_tokens: Option<i32>,
184}
185#[derive(Serialize, Deserialize, Debug, Clone)]
186pub struct OutputTokensDetails {
187 audio_tokens: Option<i32>,
188 text_tokens: Option<i32>,
189}
190#[derive(Serialize, Deserialize, Debug, Clone)]
191pub struct PromptTokensDetails {
192 pub prompt_tokens: Option<i32>,
194}