Crate openai_client
source ·Expand description
openai_client
provides configuration, models an a http client for working with
the API of OpenAi in Rust.
Cargo
[dependencies]
openai_client = "0.1.0"
Or via git:
[dependencies.redis_ts]
git = "https://github.com/tompro/openai_client.git"
Usage
use openai_client::*;
// Create client
let client = OpenAiClient::new(OpenAiConfig::new("<ACCESS_TOKEN>"));
// Create request
let request = EditRequestBuilder::default()
.model("text-davinci-edit-001")
.input("What day of the wek is it?")
.instruction("Fix the spelling mistakes")
.build()
.unwrap();
// Send request
let result = client.create_edit(request).await?;
Supported operations
To create a client you can either provide your own configuration with the access token required by OpenAi or use the default which will in turn use the default configuration. The default configuration expects the Api token environment variable OPENAI_API_KEY to be populated with your credentials.
All currently supported operations have a builder for the request payload, can be configured via a config struct and return either a struct with the expected success response or an error of type OpenAiError.
Client
// custom configuration
let client = OpenAiClient::new(OpenAiConfig::new("<ACCESS_TOKEN>"));
// default client access token from env
let client = OpenAiClient::default();
Models
List and describe the various models available in the API.
async fn run() -> openai_client::OpenAiResult<()> {
// fetch all models provided by OpenAi
let models = client.get_models().await?;
// fetch a specific model
let model: OpenAiModel = client.get_model("text-davinci-003").await?;
Edits
Given a prompt and an instruction, the model will return an edited version of the prompt.
async fn run() -> openai_client::OpenAiResult<()> {
let request = EditRequestBuilder::default()
.model("text-davinci-edit-001")
.input("What day of the wek is it?")
.instruction("Fix the spelling mistakes")
.build()
.unwrap();
let result: TextResult = client.create_edit(request).await?;
assert!(!result.choices.is_empty());
Completions
Given a prompt, the model will return one or more predicted completions, and can also return the probabilities of alternative tokens at each position.
async fn run() -> openai_client::OpenAiResult<()> {
let request = CompletionRequestBuilder::default()
.model("text-davinci-003")
.prompt("I am so tired I could")
.build()
.unwrap();
let result: TextResult = client.create_completion(request).await?;
assert!(!result.choices.is_empty());
Generate Image
Creates an image given a prompt.
async fn run() -> openai_client::OpenAiResult<()> {
let request = CreateImageRequestBuilder::default()
.prompt("A cute baby sea otter")
.size("1024x1024")
.n(2)
.build()
.unwrap();
let result: ImageResult = client.create_image(request).await?;
assert_eq!(!result.data.len(), 2);
Structs
CompletionRequest
.CreateImageRequest
.EditRequest
.