7 releases (breaking)
0.7.0 | May 2, 2023 |
---|---|
0.6.0 | Jan 16, 2023 |
0.5.0 | Jan 13, 2023 |
0.4.0 | Jan 2, 2023 |
0.1.0 | Dec 27, 2022 |
#187 in #openai
38 downloads per month
Used in gpt_text
1MB
1.5K
SLoC
fieri
Overview
Unofficial Rust client for OpenAI.
fieri provides an asynchronous Rust interface for interaction with OpenAI, allowing you to easily use OpenAI's state-of-the-art machine learning models in your Rust projects.
Prerequisites
Before you can use the Rust Client for OpenAI, you'll need to sign up for an API key at the OpenAI Developer Portal. Once you've signed up, you'll be able to find your API key in the API Keys section of the developer portal.
Installation
Run cargo add fieri
in your terminal to add the latest version of the client.
Basic Usage
Generate text based on a prompt
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, ¶m).await?;
println!("Generated text: {:#?}", resp);
Ok(())
}
Generate and stream back text based on a prompt
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, ¶m).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(())
}
Generate an image based on a prompt and save it locally.
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, ¶m)
.await?
.save("/tmp/")
.await?;
Ok(())
}
By default, the api key and organization are implicitly loaded from environment variables OPENAI_API_KEY
& OPENAI_ORGANIZATION
. it's possible to configure/overwrite them per client. e.g: using for example:
use fieri::Client
let client = Client::new().api_key("<key>");
let client_with_org = Client::new().organization("<organization>");
More examples can be found in the docs.
Limitations
Note that the Rust Client for OpenAI is provided as-is, and is not officially supported by OpenAI. While we will do our best to keep the library up-to-date and bug-free, we cannot guarantee that it will always work as expected.
Additionally, the API has usage limits that may affect your ability to use the models. You can view your current usage and limits in the Usage section of your account.
License
fieri is provided under the MIT license. See LICENSE.
Dependencies
~8–20MB
~284K SLoC