async_dashscope/operation/
common.rs

1use derive_builder::Builder;
2use serde::{Deserialize, Serialize};
3
4#[derive(Debug, Clone, Builder, Serialize, Deserialize, PartialEq)]
5pub struct Parameters {
6    #[builder(setter(into, strip_option))]
7    #[builder(default=None)]
8    pub result_format: Option<String>,
9    #[builder(setter(strip_option))]
10    #[builder(default=None)]
11    pub translation_options: Option<TranslationOptions>,
12    //增量式流式输出
13    #[builder(setter(into, strip_option))]
14    #[builder(default=None)]
15    pub incremental_output: Option<bool>,
16}
17
18#[derive(Debug, Clone, Builder, Serialize, Deserialize, PartialEq)]
19pub struct StreamOptions {
20    pub include_usage: bool,
21}
22
23#[derive(Debug, Clone, Builder, Serialize, Deserialize, PartialEq)]
24pub struct TranslationOptions {
25    #[builder(setter(into))]
26    pub source_lang: String,
27    #[builder(setter(into))]
28    pub target_lang: String,
29    #[builder(setter(into, strip_option))]
30    #[builder(default=None)]
31    pub terms: Option<Vec<Term>>,
32}
33
34#[derive(Debug, Clone, Builder, Serialize, Deserialize, PartialEq)]
35pub struct Term {
36    pub source: String,
37    pub target: String,
38}
39
40#[derive(Serialize, Deserialize, Debug, Clone)]
41pub struct Usage {
42    /// 用户输入内容转换成token后的长度。
43    #[serde(skip_serializing_if = "Option::is_none")]
44    pub input_tokens: Option<i32>,
45
46    /// chat请求返回内容转换成token后的长度。
47    #[serde(skip_serializing_if = "Option::is_none")]
48    pub output_tokens: Option<i32>,
49
50    /// 当输入为纯文本时返回该字段,为input_tokens与output_tokens之和。
51    #[serde(skip_serializing_if = "Option::is_none")]
52    pub total_tokens: Option<i32>,
53
54    /// 输入内容包含image时返回该字段。为用户输入图片内容转换成token后的长度。
55    #[serde(skip_serializing_if = "Option::is_none")]
56    pub image_tokens: Option<i32>,
57
58    /// 输入内容包含video时返回该字段。为用户输入视频内容转换成token后的长度。
59    #[serde(skip_serializing_if = "Option::is_none")]
60    pub video_tokens: Option<i32>,
61
62    /// 输入内容包含audio时返回该字段。为用户输入音频内容转换成token后的长度。
63    #[serde(skip_serializing_if = "Option::is_none")]
64    pub audio_tokens: Option<i32>,
65
66    /// 输入 Token 的细粒度分类。
67    #[serde(skip_serializing_if = "Option::is_none")]
68    pub prompt_tokens_details: Option<PromptTokensDetails>,
69}
70
71#[derive(Serialize, Deserialize, Debug, Clone)]
72pub struct PromptTokensDetails {
73    /// 命中 Cache 的 Token 数。Context Cache 详情请参见上下文缓存[(Context Cache)](https://help.aliyun.com/zh/model-studio/user-guide/context-cache?spm=a2c4g.11186623.0.0.37a0453aeh9s1L)。
74    pub prompt_tokens: Option<i32>,
75}