68 releases (stable)
new 5.2.2 | Nov 19, 2024 |
---|---|
5.0.13 | Oct 15, 2024 |
5.0.4 | Jul 25, 2024 |
4.1.1 | Jun 25, 2024 |
0.1.1 | Dec 12, 2022 |
#41 in Web programming
11,718 downloads per month
Used in 17 crates
(15 directly)
140KB
3K
SLoC
OpenAI API client library for Rust (unofficial)
The OpenAI API client Rust library provides convenient access to the OpenAI API from Rust applications.
Check out the docs.rs.
Installation:
Cargo.toml
[dependencies]
openai-api-rs = "5.2.2"
Usage
The library needs to be configured with your account's secret key, which is available on the website. We recommend setting it as an environment variable. Here's an example of initializing the library with the API key loaded from an environment variable and creating a completion:
Set OPENAI_API_KEY to environment variable
$ export OPENAI_API_KEY=sk-xxxxxxx
Create client
let api_key = env::var("OPENAI_API_KEY").unwrap().to_string();
let client = OpenAIClient::builder().with_api_key(api_key).build()?;
Create request
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,
}],
);
Send request
let result = client.chat_completion(req)?;
println!("Content: {:?}", result.choices[0].message.content);
Set OPENAI_API_BASE to environment variable (optional)
$ export OPENAI_API_BASE=https://api.openai.com/v1
Example of chat completion
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 api_key = env::var("OPENAI_API_KEY").unwrap().to_string();
let client = OpenAIClient::builder().with_api_key(api_key).build()?;
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(())
}
More Examples: examples
Check out the full API documentation for examples of all the available functions.
Supported APIs
- Completions
- Chat
- Edits
- Images
- Embeddings
- Audio
- Files
- Fine-tuning
- Moderations
- Function calling
- Assistants
- Batch
- Realtime
License
This project is licensed under MIT license.
Dependencies
~7–23MB
~361K SLoC