8个版本
0.23.4 | 2024年7月24日 |
---|---|
0.23.1 | 2024年6月11日 |
0.21.0 | 2024年5月8日 |
0.20.0 | 2024年4月16日 |
#532 in 网页编程
每月158次下载
用于 transprompt
310KB
5.5K SLoC
async-openai-wasm
基于WASM的异步Rust库
概述
async-openai-wasm
是 async-openai
的一个分支,通过针对 wasm32-unknown-unknown
来支持WASM目标。这意味着 >99% 的代码库应归功于原始项目。当 async-openai
发布新版本时,将与原始项目进行手动同步。版本保持与 async-openai
发布同步,这意味着当 async-openai
发布 x.y.z
时,async-openai-wasm
也会发布一个 x.y.z
版本。
async-openai-wasm
是 OpenAI 的非官方 Rust 库。
- 它基于 OpenAI OpenAPI 规范
- 当前功能
- 助手(v2)
- 音频
- 批量处理
- 聊天
- 完成(旧版)
- 嵌入
- 文件
- 微调
- 图像
- 模型
- 审查
- WASM支持
- 所有可用API上的SSE流
- 在 速率限制 时,请求(除SSE流外)包括表单提交会使用指数退避重试。
- 所有请求对象的直观构建器模式。
- Microsoft Azure OpenAI 服务(仅限符合 OpenAI 规范的API)
关于Azure OpenAI服务(AOS)的说明: async-openai-wasm
主要实现 OpenAI 规范,并不试图与 AOS 规范保持一致。就像 async-openai
一样。
与 async-openai
的区别
++ WASM支持
++ WASM示例
-- Tokio
-- 非Wasm示例:请参考原始项目 async-openai。
-- 回退重试:由于 这个问题。 急需帮助
-- 文件保存:在浏览器上 wasm32-unknown-unknown
没有访问文件系统的权限。
使用方法
该库从环境变量 OPENAI_API_KEY
读取 API密钥。
# On macOS/Linux
export OPENAI_API_KEY='sk-...'
# On Windows Powershell
$Env:OPENAI_API_KEY='sk-...'
- 访问 示例 目录了解如何使用
async-openai
,以及async-openai-wasm
中的 WASM示例。 - 访问 docs.rs/async-openai 获取文档。
图像生成示例
use async_openai_wasm::{
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-wasm")
.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
贡献
此存储库只接受与WASM支持相关的bug报告和PR。对于其他问题和PR,请访问原始项目 async-openai。
本项目遵守 Rust行为准则。
配套Crates
- openai-func-enums 提供了过程宏,使得使用此库与OpenAI API的工具调用功能更简单。它还提供了可以添加到现有 clap 应用程序子命令的 derive 宏,以实现自然语言的使用。它还支持 openai 的 并行工具调用,并允许您选择同时运行多个工具调用或在各自的 OS 线程中运行。
为什么有 async-openai-wasm
因为我想要开发和发布一个依赖于 async-openai 的 experiments
分支中的 wasm 功能的 crate,但稳定 wasm 功能的步伐与我预期的不同。
许可证
依赖关系
~6–21MB
~342K SLoC