项目介绍:async-openai
async-openai 是一个用于 OpenAI 的非官方 Rust 异步库。这个库基于 OpenAI 的 OpenAPI 规范,为开发者在 Rust 环境中提供了一套丰富的功能接口。
功能概述
async-openai 能够为用户提供多种功能组件,包括:
- 助手(版本2)
- 音频处理
- 批量操作
- 聊天功能
- 补全(遗留版本)
- 嵌入功能
- 文件管理
- 精调(Fine-Tuning)
- 图像处理
- 模型操作
- 内容审核(Moderations)
- 组织与管理
- 实时API类型(Beta版)
- 上传功能
此外,该库支持在可用的 API 上进行 SSE 流式传输,并在请求因速率限制而失败时使用指数退避机制重试请求(除了 SSE 流式传输之外的所有请求,包括表单提交)。
使用方法
async-openai 从环境变量 OPENAI_API_KEY
中读取 API 密钥。用户可以通过在终端中设置该环境变量来进行配置:
在 macOS/Linux 上使用:
export OPENAI_API_KEY='sk-...'
在 Windows PowerShell 上使用:
$Env:OPENAI_API_KEY='sk-...'
更多使用实例可以参考项目的示例目录,具体的文档则可在 docs.rs/async-openai 获取。
实时API
目前,该库仅实现了实时 API 的类型,用户可以通过启用特性标志 realtime
来使用这些类型。请注意,这些类型可能会在 OpenAI 发布其正式规范时进行更改。
图像生成示例
以下代码展示了如何使用 async-openai 进行简单的图像生成:
use async_openai::{
types::{CreateImageRequestArgs, ImageSize, ImageResponseFormat},
Client,
};
use std::error::Error;
#[tokio::main]
async fn main() -> Result<(), Box<dyn Error>> {
let client = Client::new();
let request = CreateImageRequestArgs::default()
.prompt("cats on sofa and carpet in living room")
.n(2)
.response_format(ImageResponseFormat::Url)
.size(ImageSize::S256x256)
.user("async-openai")
.build()?;
let response = client.images().create(request).await?;
let paths = response.save("./data").await?;
paths
.iter()
.for_each(|path| println!("Image file path: {}", path.display()));
Ok(())
}
贡献指南
欢迎社区贡献代码以帮助改进该项目。用户可以通过新增功能请求、修复错误、改进文档和测试等形式来参与。贡献者请遵守 Rust 的 行为准则,并保持代码质量与一致性。
附加工具与支持
- openai-func-enums:提供了过程宏,简化了与 OpenAI API 的工具调用功能的集成。
- async-openai-wasm:为项目提供了 WASM 支持。
授权许可
该项目采用 MIT 许可证 进行授权。