async_dashscope/operation/
embeddings.rs

1use crate::error::Result;
2use crate::{operation::validate::check_model_parameters, Client};
3pub use output::*;
4pub use param::*;
5
6mod output;
7mod param;
8
9const EMBEDDINGS_PATH: &str = "/services/embeddings/text-embedding/text-embedding";
10
11pub struct Embeddings<'a> {
12    client: &'a Client,
13}
14
15impl<'a> Embeddings<'a> {
16    pub fn new(client: &'a Client) -> Self {
17        Self { client }
18    }
19
20    /// 异步调用文本嵌入服务
21    ///
22    /// 该函数通过POST请求向指定的服务端点发送文本嵌入请求,并返回处理结果
23    /// 主要用途是将输入的文本数据转换为高维向量表示,以便于后续的自然语言处理任务使用
24    ///
25    /// # 参数
26    ///
27    /// * `request` - 包含文本嵌入请求所有必要信息的结构体,包括但不限于文本内容和嵌入模型的选择
28    ///
29    /// # 返回值
30    ///
31    /// 返回一个结果类型,包含文本嵌入操作的成功与否
32    /// 如果操作成功,返回一个包含嵌入向量和其他相关信息的结构体
33    /// 如果操作失败,返回一个错误类型,便于错误处理和调试
34    pub async fn call(&self, request: param::EmbeddingsParam) -> Result<output::EmbeddingsOutput> {
35        // Validate parameters before making the request.
36        let validator = check_model_parameters(&request.model);
37        validator.validate(&request)?;
38
39        // 发送POST请求到指定的服务端点,并传递请求参数
40        // 该行代码是异步执行的,允许在等待网络操作时继续执行其他任务,提高程序效率
41        self.client.post(EMBEDDINGS_PATH, request).await
42    }
43}