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 #[builder(setter(into, strip_option))]
17 #[builder(default=None)]
18 pub incremental_output: Option<bool>,
19
20 #[builder(setter(into, strip_option))]
21 #[builder(default=None)]
22 pub tools: Option<Vec<FunctionCall>>,
24
25 #[builder(setter(into, strip_option))]
26 #[builder(default=None)]
27 pub parallel_tool_calls:Option<bool>,
28
29 #[builder(setter(into, strip_option))]
32 #[builder(default=None)]
33 pub thinking_budget: Option<usize>,
34
35 #[builder(setter(into, strip_option))]
38 #[builder(default=None)]
39 pub enable_search: Option<bool>,
40
41 #[builder(setter(into, strip_option))]
42 #[builder(default=None)]
43 pub search_options: Option<SearchOptions>,
44
45 #[builder(setter(into, strip_option))]
47 #[builder(default=None)]
48 pub enable_thinking: Option<bool>,
49
50 #[builder(setter(into, strip_option))]
51 #[builder(default=None)]
52 pub response_format: Option<ResponseFormat>
53}
54
55#[derive(Debug, Clone, Builder, Serialize, Deserialize, PartialEq)]
56pub struct ResponseFormat{
57 #[builder(setter(into, strip_option))]
58 #[serde(rename = "type")]
59 pub type_: String,
60}
61
62impl ParametersBuilder {
63 pub fn functions<V>(&mut self, value: V) -> &mut Self
64 where
65 V: Into<Vec<FunctionCall>>,
66 {
67 self.tools(value)
68 }
69}
70
71#[derive(Debug, Clone, Builder, Serialize, Deserialize, PartialEq)]
72pub struct FunctionCall {
73 #[builder(setter(into, strip_option))]
74 #[serde(rename = "type")]
75 pub typ: Option<String>,
76
77 #[builder(setter(into, strip_option))]
78 #[serde(rename = "function")]
79 pub function: Option<Function>,
80}
81
82#[derive(Debug, Clone, Builder, Serialize, Deserialize, PartialEq)]
83#[builder(setter(into, strip_option))]
84pub struct Function {
85 name: String,
86 #[builder(setter(into, strip_option))]
87 #[builder(default=None)]
88 description: Option<String>,
89 #[builder(setter(into, strip_option))]
90 #[builder(default=None)]
91 parameters: Option<FunctionParameters>,
92}
93
94#[derive(Debug, Clone, Builder, Serialize, Deserialize, PartialEq)]
95pub struct FunctionParameters {
96 #[serde(rename = "type")]
97 pub typ: String,
98 properties: HashMap<String, Value>,
99 required: Option<Vec<String>>,
100}
101
102#[derive(Debug, Clone, Builder, Serialize, Deserialize, PartialEq)]
103#[builder(setter(into, strip_option))]
104pub struct SearchOptions {
105 #[builder(default=None)]
106 pub forced_search: Option<bool>,
107 #[builder(default=None)]
108 pub enable_source: Option<bool>,
109 #[builder(default=None)]
110 pub enable_citation: Option<bool>,
111 #[builder(default=None)]
112 pub citation_format: Option<String>,
113 #[builder(default=None)]
114 pub search_strategy: Option<String>,
115}
116
117#[derive(Debug, Clone, Builder, Serialize, Deserialize, PartialEq)]
118pub struct StreamOptions {
119 pub include_usage: bool,
120}
121
122#[derive(Debug, Clone, Builder, Serialize, Deserialize, PartialEq)]
123pub struct TranslationOptions {
124 #[builder(setter(into))]
125 pub source_lang: String,
126 #[builder(setter(into))]
127 pub target_lang: String,
128 #[builder(setter(into, strip_option))]
129 #[builder(default=None)]
130 pub terms: Option<Vec<Term>>,
131}
132
133#[derive(Debug, Clone, Builder, Serialize, Deserialize, PartialEq)]
134pub struct Term {
135 pub source: String,
136 pub target: String,
137}
138
139#[derive(Serialize, Deserialize, Debug, Clone)]
140pub struct Usage {
141 #[serde(skip_serializing_if = "Option::is_none")]
143 pub input_tokens: Option<i32>,
144
145 #[serde(skip_serializing_if = "Option::is_none")]
147 pub output_tokens: Option<i32>,
148
149 #[serde(skip_serializing_if = "Option::is_none")]
151 pub total_tokens: Option<i32>,
152
153 #[serde(skip_serializing_if = "Option::is_none")]
155 pub image_tokens: Option<i32>,
156
157 #[serde(skip_serializing_if = "Option::is_none")]
159 pub video_tokens: Option<i32>,
160
161 #[serde(skip_serializing_if = "Option::is_none")]
163 pub audio_tokens: Option<i32>,
164
165 #[serde(skip_serializing_if = "Option::is_none")]
167 pub prompt_tokens_details: Option<PromptTokensDetails>,
168}
169
170#[derive(Serialize, Deserialize, Debug, Clone)]
171pub struct PromptTokensDetails {
172 pub prompt_tokens: Option<i32>,
174}