#openai #openai-api #async #openapi #ai #api-key

async-openai-wasi

基于 OpenAPI 规范的 OpenAI REST API 的异步绑定

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

MIT 许可证

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-...'

图像生成示例

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