Crates.io | async-dashscope |
lib.rs | async-dashscope |
version | 0.7.0 |
created_at | 2025-01-16 06:53:31.960266+00 |
updated_at | 2025-07-09 07:46:13.654623+00 |
description | A Rust client for DashScope API |
homepage | https://github.com/kingzcheung/async-dashscope |
repository | https://github.com/kingzcheung/async-dashscope |
max_upload_size | |
id | 1518980 |
size | 647,718 |
async-dashscope
是为通义千问百炼平台实现的(非官方)异步 SDK,支持文本生成、多模态生成以及 embedding 功能。通过该 SDK,开发者可以方便地调用通义千问百炼平台提供的各种 API,进行高效的异步操作。
可以通过 Cargo 来安装 async-dashscope
:
cargo add async-dashscope
或者在 Cargo.toml
文件中添加依赖:
[dependencies]
async-dashscope = "*"
更多的示例请看 examples
api_key 通过环境变量传入:
export DASHSCOPE_API_KEY=xxxxxxxxxxxxxxxxxxxxxxxx
或者
let client = Client::new().with_api_key(std::env::var("DASHSCOPE_API_KEY").unwrap());
use async_dashscope::{
operation::{common::{ParametersBuilder, TranslationOptionsBuilder}, generation::{ GenerationParamBuilder, InputBuilder, MessageBuilder}}, Client
};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let request = GenerationParamBuilder::default()
.model("qwen-mt-turbo".to_string())
.input(
InputBuilder::default()
.messages(vec![MessageBuilder::default()
.role("user")
.content("我看到这个视频后没有笑")
.build()
.unwrap()])
.build()?,
)
.parameters(
ParametersBuilder::default()
.translation_options(
TranslationOptionsBuilder::default()
.source_lang("Chinese")
.target_lang("English")
.build()?,
)
.build()?,
)
.build()?;
let client = Client::new();
let response = client.generation().call(request).await?;
dbg!(response);
Ok(())
}
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let request = MultiModalConversationParamBuilder::default()
.model("qwen-vl-max")
.input(InputBuilder::default().messages(vec![
MessageBuilder::default()
.role("user")
.contents(
vec![
json!({"image": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241022/emyrja/dog_and_girl.jpeg"}).try_into()?,
json!({"text": "这是什么?"}).try_into()?
]
).build()?
]).build()?
)
.build()?;
let client = Client::new();
let response = client.multi_modal_conversation().call(request).await?;
dbg!(response);
Ok(())
}
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let client = Client::new();
let input = EmbeddingsParamBuilder::default()
.model("text-embedding-v3")
.input(
EmbeddingsInputBuilder::default()
.texts(vec![
"风急天高猿啸哀".into(),
"渚清沙白鸟飞回".into(),
"无边落木萧萧下".into(),
"不尽长江滚滚来".into()
])
.build()?,
)
.parameters(
EmbeddingsParametersBuilder::default()
.dimension(1024)
.build()?,
)
.build()?;
let output = client.text_embeddings().call(input).await?;
dbg!(output);
Ok(())
}
欢迎贡献代码!如果你有任何改进建议或发现 bug,请提交 issue 或 pull request。我们非常感谢你的帮助!
本项目采用 MIT 许可证,详情请参见 LICENSE 文件。