55 个版本 (稳定)

5.0.5 2024 年 8 月 15 日
5.0.4 2024 年 7 月 25 日
4.1.1 2024 年 6 月 25 日
4.0.8 2024 年 3 月 17 日
0.1.1 2022 年 12 月 12 日

41 in 网页编程

Download history 600/week @ 2024-04-28 1389/week @ 2024-05-05 1055/week @ 2024-05-12 6458/week @ 2024-05-19 5004/week @ 2024-05-26 4085/week @ 2024-06-02 2786/week @ 2024-06-09 2753/week @ 2024-06-16 2551/week @ 2024-06-23 1691/week @ 2024-06-30 2023/week @ 2024-07-07 2390/week @ 2024-07-14 2154/week @ 2024-07-21 1930/week @ 2024-07-28 2345/week @ 2024-08-04 1608/week @ 2024-08-11

8,144 每月下载量
12 个 crates (11 直接)中使用

MIT 许可证

130KB
2.5K SLoC

OpenAI API 客户端库 for Rust (非官方)

OpenAI API 客户端 Rust 库为 Rust 应用程序提供了对 OpenAI API 的便捷访问。

查看 docs.rs

安装

Cargo.toml

[dependencies]
openai-api-rs = "5.0.5"

使用方法

该库需要配置您的账户密钥,该密钥可在 网站 上找到。我们建议将其设置为环境变量。以下是一个使用从环境变量加载的 API 密钥初始化库并创建完成的示例

设置 OPENAI_API_KEY 为环境变量

$ export OPENAI_API_KEY=sk-xxxxxxx

创建客户端

let client = OpenAIClient::new(env::var("OPENAI_API_KEY").unwrap().to_string());

创建请求

let req = ChatCompletionRequest::new(
    GPT4_O.to_string(),
    vec![chat_completion::ChatCompletionMessage {
        role: chat_completion::MessageRole::user,
        content: chat_completion::Content::Text(String::from("What is bitcoin?")),
        name: None,
        tool_calls: None,
        tool_call_id: None,
    }],
);

发送请求

let result = client.chat_completion(req)?;
println!("Content: {:?}", result.choices[0].message.content);

将 OPENAI_API_BASE 设置为环境变量(可选)

$ export OPENAI_API_BASE=https://api.openai.com/v1

聊天完成示例

use openai_api_rs::v1::api::OpenAIClient;
use openai_api_rs::v1::chat_completion::{self, ChatCompletionRequest};
use openai_api_rs::v1::common::GPT4_O;
use std::env;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let client = OpenAIClient::new(env::var("OPENAI_API_KEY").unwrap().to_string());

    let req = ChatCompletionRequest::new(
        GPT4_O.to_string(),
        vec![chat_completion::ChatCompletionMessage {
            role: chat_completion::MessageRole::user,
            content: chat_completion::Content::Text(String::from("What is bitcoin?")),
            name: None,
            tool_calls: None,
            tool_call_id: None,
        }],
    );

    let result = client.chat_completion(req).await?;
    println!("Content: {:?}", result.choices[0].message.content);
    println!("Response Headers: {:?}", result.headers);

    Ok(())
}

更多示例: 示例

查看 完整 API 文档 以获取所有可用函数的示例。

支持的 API

许可证

本项目受 MIT 许可证 许可。

依赖关系

~6–18MB
~256K SLoC