7个版本 (破坏性更新)

0.7.0 2023年5月2日
0.6.0 2023年1月16日
0.5.0 2023年1月13日
0.4.0 2023年1月2日
0.1.0 2022年12月27日

#95 in #openai-api

每月38次下载
gpt_text中使用

MIT许可证

1MB
1.5K SLoC

fieri

概述

OpenAI的非官方Rust客户端。

fieri为与OpenAI交互提供了异步的Rust接口,允许您轻松地将OpenAI的最先进的机器学习模型用于您的Rust项目。

前提条件

在您可以使用OpenAI的Rust客户端之前,您需要在OpenAI开发者门户处注册API密钥。注册后,您可以在开发者门户的API密钥部分找到您的API密钥。

安装

在您的终端中运行 cargo add fieri 以添加客户端的最新版本。

基本用法

根据提示生成文本

use fieri::{
    completion::{create, CompletionParamBuilder},
    Client, Error,
};
use std::env;

#[tokio::main]
async fn main() -> Result<(), Error> {
    let client = Client::new();

    let param = CompletionParamBuilder::new("ada")
        .prompt("Generate a plot for an absurd interstellar parody.")
        .max_tokens(500)
        .temperature(0.9)
        .top_p(1.0)
        .frequency_penalty(0.0)
        .presence_penalty(0.0)
        .build()?;

    let resp = create(&client, &param).await?;
    println!("Generated text: {:#?}", resp);

    Ok(())
}

根据提示生成并流回文本

use fieri::{
    completion::{create_with_stream, Completion, CompletionParamBuilder},
    Client, Error,
};
use std::env;

#[tokio::main]
async fn main() -> Result<(), Error> {
    let client = Client::new();

    let param = CompletionParamBuilder::new("ada")
        .prompt("unnecessarily lo")
        .temperature(0.5)
        .build()?;

    let mut resp = create_with_stream(&client, &param).await?;

    while let Some(chunk) = resp.chunk().await? {
        if chunk.to_vec() == b"data: [DONE]\n\n" {
            break;
        }

        let v: Completion = serde_json::from_slice(&chunk[5..])?;
        v.choices.iter().for_each(|c| println!("{:?}", c.text));
    }

    Ok(())
}

根据提示生成图像并保存到本地。

use fieri::{
    image::{ImageSize, GenerateImageParamBuilder, generate},
    Client, Error,
};
use std::env;

#[tokio::main]
async fn main() -> Result<(), Error> {
    let client = Client::new();

    let param = GenerateImageParamBuilder::new("A bunch of cats dancing tango on top of the highest mountain on Mars.")
        .size(ImageSize::S1024x1024)
        .n(1)
        .build()?;

    generate(&client, &param)
        .await?
        .save("/tmp/")
        .await?;

    Ok(())
}

默认情况下,API密钥和组织从环境变量 OPENAI_API_KEY & OPENAI_ORGANIZATION 中隐式加载。 您可以按客户端配置/覆盖它们,例如:例如使用

use fieri::Client

let client = Client::new().api_key("<key>");
let client_with_org = Client::new().organization("<organization>");

更多示例可以在文档中找到。

局限性

注意,OpenAI的Rust客户端按原样提供,并且不受OpenAI的官方支持。虽然我们将尽力保持库的最新状态和错误免费,但我们不能保证它始终按预期工作。

此外,API有使用限制,可能会影响您使用模型的能力。您可以在您的使用部分查看您当前的使用情况和限制。

许可证

fieri根据MIT许可证提供。请参阅LICENSE

依赖项

~7–22MB
~309K SLoC