60个版本 (21个重大更改)

0.23.4 2024年7月9日
0.21.0 2024年5月7日
0.20.0 2024年3月31日
0.17.1 2023年11月26日
0.5.0 2022年12月30日

#25 in Web编程

Download history 6143/week @ 2024-04-29 6310/week @ 2024-05-06 7015/week @ 2024-05-13 7690/week @ 2024-05-20 7500/week @ 2024-05-27 8551/week @ 2024-06-03 7054/week @ 2024-06-10 7490/week @ 2024-06-17 6925/week @ 2024-06-24 6061/week @ 2024-07-01 6499/week @ 2024-07-08 6559/week @ 2024-07-15 7625/week @ 2024-07-22 6485/week @ 2024-07-29 8722/week @ 2024-08-05 9087/week @ 2024-08-12

32,494 每月下载量
96 个crates(79个直接) 中使用

MIT 许可证

305KB
5.5K SLoC

async-openai

OpenAI的异步Rust库

Logo由本项目创建 repo itself

概述

async-openai 是一个非官方的OpenAI Rust库。

  • 它基于 OpenAI OpenAPI规范
  • 当前功能
    • 助手(v2)
    • 音频
    • 批量
    • 聊天
    • 完成(旧版)
    • 嵌入
    • 文件
    • 微调
    • 图片
    • 模型
    • 审查
  • 所有可用API上的SSE流
  • 请求(除SSE流外)包括表单提交,在速率限制时使用指数退避重试。
  • 所有请求对象的可视化构建模式。
  • Microsoft Azure OpenAI服务(仅匹配OpenAI规范的API)

使用方法

该库从环境变量 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 是一个好的起点。

为了维护项目的质量,代码贡献必须满足以下最低要求

  • 名称与文档:所有结构体名称、字段名称和文档注释均来自 OpenAPI 规范。规范中未命名的嵌套对象留有适当命名的空间。
  • 测试:支持更改测试和/或示例的要求。如果适用,应确保现有示例、文档测试、单元测试和集成测试与更改一起工作。
  • 范围:将范围限制在官方文档中可用的 API,如 API 参考OpenAPI 规范。其他 LLM 或 AI 提供商提供的与 OpenAI 兼容的 API 可能并不总是完全一致。在这种情况下,OpenAI 规范优先。
  • 一致性:确保库公开的所有“API”的代码风格保持一致;这为开发者创造了一个极佳的体验。

本项目遵守 Rust 行为准则

配套 Crates

  • openai-func-enums 提供了过程宏,使使用此库与 OpenAI API 的工具调用功能更容易。它还提供了可以添加到现有 clap 应用程序子命令的 derive 宏,以实现命令行工具的自然语言使用。它还支持 openai 的 并行工具调用,并允许您选择同时运行多个工具调用或在各自的 OS 线程中运行。
  • async-openai-wasm 提供了 WASM 支持。

许可证

本项目受 MIT 许可证 授权。

依赖项

~8–23MB
~386K SLoC