GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — GitHub - dongri/openai-api-rs: OpenAI API client library for Rust (unofficial)

BranchesTags
Open more actions menu

Latest commit

 

History

409 Commits
409 Commits

Folders and files

NameName
Last commit message
Last commit date
.github
.github
 
 
examples
examples
 
 
src
src
 
 
.gitignore
.gitignore
 
 
Cargo.toml
Cargo.toml
 
 
LICENSE
LICENSE
 
 
README.md
README.md
 
 

Repository files navigation

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 = "10.0.1"

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 or OPENROUTER_API_KEY to environment variable

$ export OPENAI_API_KEY=sk-xxxxxxx
or
$ export OPENROUTER_API_KEY=sk-xxxxxxx

Create OpenAI client

let api_key = env::var("OPENAI_API_KEY").unwrap().to_string();
let mut client = OpenAIClient::builder().with_api_key(api_key).build()?;

Create OpenRouter client

let api_key = env::var("OPENROUTER_API_KEY").unwrap().to_string();
let mut client = OpenAIClient::builder()
    .with_endpoint("https://openrouter.ai/api/v1")
    .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);

for (key, value) in client.headers.unwrap().iter() {
    println!("{}: {:?}", key, value);
}

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 mut 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);

    for (key, value) in client.headers.unwrap().iter() {
        println!("{}: {:?}", key, value);
    }

    Ok(())
}

Example for OpenRouter

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

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let api_key = env::var("OPENROUTER_API_KEY").unwrap().to_string();
    let mut client = OpenAIClient::builder()
        .with_endpoint("https://openrouter.ai/api/v1")
        .with_api_key(api_key)
        .build()?;

    let req = ChatCompletionRequest::new(
        GPT4_O_MINI.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);

    for (key, value) in client.headers.unwrap().iter() {
        println!("{}: {:?}", key, value);
    }

    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
  • Responses

License

This project is licensed under MIT license.

About

OpenAI API client library for Rust (unofficial)

docs.rs/openai-api-rs

Topics

apideepseekgpt-3-5-turbogpt-4gpt-4-5gpt-4ogpt-4o-minio1openaiopenrouterrealtimerust

Resources

Readme
MIT license
Activity

Stars

486 stars

Watchers

7 watching

Forks

93 forks
Report repository

Releases

Packages

Used by

Contributors

Languages

You are visitor 01402520 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.