async_dashscope/operation/embeddings/
param.rs

1use derive_builder::Builder;
2use serde::{Deserialize, Serialize};
3
4use crate::operation::common::Parameters;
5use crate::operation::request::RequestTrait;
6
7#[derive(Debug, Clone, Builder, Serialize, Deserialize, PartialEq)]
8pub struct EmbeddingsParam {
9    /// 调用模型名称,可以选择text-embedding-v1,text-embedding-v2或者text-embedding-v3
10    #[builder(setter(into))]
11    pub model: String,
12    pub input: EmbeddingsInput,
13
14    #[serde(skip_serializing_if = "Option::is_none")]
15    #[builder(setter(into, strip_option))]
16    #[builder(default=None)]
17    pub parameters: Option<EmbeddingsParameters>,
18
19    /// 文本转换为向量后可以应用于检索、聚类、分类等下游任务,
20    /// 对检索这类非对称任务为了达到更好的检索效果建议区分查询文本(query)和底库文本(document)类型,
21    ///  聚类、分类等对称任务可以不用特殊指定,采用系统默认值document即可。
22    #[serde(skip_serializing_if = "Option::is_none")]
23    #[builder(setter(into, strip_option))]
24    #[builder(default=None)]
25    pub text_type: Option<String>,
26}
27
28#[derive(Debug, Clone, Serialize, Builder, Deserialize, PartialEq)]
29pub struct EmbeddingsInput {
30    /// 文本列表
31    #[serde(skip_serializing_if = "Option::is_none")]
32    #[builder(setter(into, strip_option))]
33    #[builder(default=None)]
34    texts: Option<Vec<String>>,
35    /// 图片地址或者图片 base64
36    #[serde(skip_serializing_if = "Option::is_none")]
37    #[builder(setter(into, strip_option))]
38    #[builder(default=None)]
39    image: Option<String>,
40    /// 视频地址
41    #[serde(skip_serializing_if = "Option::is_none")]
42    #[builder(setter(into, strip_option))]
43    #[builder(default=None)]
44    video: Option<String>,
45}
46
47#[derive(Debug, Clone, Builder, Serialize, Deserialize, PartialEq)]
48
49pub struct EmbeddingsParameters {
50    /// 向量维度,可选值:768、1024、1536、2048
51    dimension: u16,
52}
53
54impl RequestTrait for EmbeddingsParam {
55    fn model(&self) -> &str {
56        &self.model
57    }
58
59    fn parameters(&self) -> Option<&Parameters> {
60        // EmbeddingsParam has its own `EmbeddingsParameters`, not the common `Parameters`.
61        None
62    }
63}