2 unstable releases
new 0.2.0 | Jan 17, 2025 |
---|---|
0.1.0 | Jan 16, 2025 |
#1386 in Web programming
54 downloads per month
36KB
675 lines
async-dashscope
项目简介
async-dashscope
是为通义千问百炼平台实现的(非官方)异步 SDK,支持文本生成、多模态生成以及 embedding 功能。通过该 SDK,开发者可以方便地调用通义千问百炼平台提供的各种 API,进行高效的异步操作。
主要功能
- 文本生成:支持多种文本生成任务,如文本补全、对话生成等。
- 多模态生成:支持图像、音频等多种模态的数据生成任务。
- Embedding:提供文本 embedding 功能,用于将文本转换为向量表示,便于后续的语义分析和相似度计算。
安装
可以通过 Cargo 来安装 async-dashscope
:
cargo add async-dashscope
或者在 Cargo.toml
文件中添加依赖:
[dependencies]
async-dashscope = "0.1.0"
使用示例
文本生成示例
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"}),
json!({"text": "这是什么?"})
]
).build()?
]).build()?
)
.build()?;
let client = Client::new();
let response = client.multi_modal_conversation().call(request).await?;
dbg!(response);
Ok(())
}
Embedding 示例
#[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 文件。
Dependencies
~9–21MB
~286K SLoC