5 个版本
0.16.4 | 2023 年 11 月 23 日 |
---|---|
0.16.3 | 2023 年 11 月 16 日 |
0.16.2 | 2023 年 11 月 15 日 |
0.0.2 | 2023 年 11 月 13 日 |
0.0.1 | 2023 年 11 月 13 日 |
#1448 in 异步
每月下载 50 次
200KB
3.5K SLoC
async-openai
OpenAI 的异步 Rust 库
由本项目自身创建的徽标 repo
概述
async-openai
是一个非官方的 OpenAI Rust 库。
- 它基于 OpenAI OpenAPI 规范
- 当前功能
- 助手(Beta)
- 音频(Whisper/TTS)
- 聊天
- 完成(旧版)
- 编辑(已弃用)
- 嵌入
- 文件
- 微调
- 微调(已弃用)
- 图像
- 微软 Azure OpenAI 服务
- 模型
- 审查
- 支持在可用的 API 上使用 SSE 流式传输
- 所有请求(包括表单提交,除 SSE 流式传输外)在 API 服务器限制速率时都会使用指数退避重试。
- 为所有请求对象提供符合人体工程学的构建器模式。
关于 Azure OpenAI 服务(AOS)的说明:async-openai
主要实现 OpenAI 规范,并不试图与 AOS 规范保持一致性。
使用方法
库从环境变量 OPENAI_API_KEY
中读取 API 密钥。
# On macOS/Linux
export OPENAI_API_KEY='sk-...'
# On Windows Powershell
$Env:OPENAI_API_KEY='sk-...'
- 有关如何使用
async-openai
的示例,请访问 examples 目录。 - 有关文档,请访问 docs.rs/async-openai。
图像生成示例
use async_openai::{
types::{CreateImageRequestArgs, ImageSize, ResponseFormat},
Client,
};
use std::error::Error;
#[tokio::main]
async fn main() -> Result<(), Box<dyn Error>> {
// create client, reads OPENAI_API_KEY environment variable for API key.
let client = Client::new();
let request = CreateImageRequestArgs::default()
.prompt("cats on sofa and carpet in living room")
.n(2)
.response_format(ResponseFormat::Url)
.size(ImageSize::S256x256)
.user("async-openai")
.build()?;
let response = client.images().create(request).await?;
// Download and save images to ./data directory.
// Each url is downloaded and saved in dedicated Tokio task.
// Directory is created if it doesn't exist.
let paths = response.save("./data").await?;
paths
.iter()
.for_each(|path| println!("Image file path: {}", path.display()));
Ok(())
}
放大用于 README,实际大小 256x256
贡献
感谢您抽出时间来贡献和改进项目,我很乐意有您的参与!
一个好的起点是现有的 open issues。
许可证
本项目遵循 MIT 许可证。
依赖项
~11-27MB
~380K SLoC