Expand description
Comprehensive, idiomatic Rust SDK for the OpenAI API.
§Quick start
use open_ai_rust::{ChatMessage, Client, OpenAiModel, PayLoadBuilder};
let client = Client::from_env()?; // reads OPENAI_API_KEY
let payload = PayLoadBuilder::new(OpenAiModel::GPT4oMini)
.messages(vec![
ChatMessage::system("You are helpful."),
ChatMessage::user("Say hi."),
])
.temperature(0.2)
.build();
let resp = client.chat().create(payload).await?;
println!("{}", resp.get_last_msg_text().unwrap_or_default());§Resources
The Client type exposes every OpenAI endpoint via short accessors:
Client::chat— Chat Completions (sync + streaming)Client::responses— Responses API (sync + streaming, with tool dispatch)Client::embeddings—text-embedding-3-{small,large}+ legacy ada-002Client::audio—transcriptions,translations,speech(whisper / gpt-4o-tts)Client::images—generations,edits,variations(dall-e + gpt-image-1)Client::moderations— text + image moderationClient::files— multipart upload + retrieve/deleteClient::models— list/retrieve/deleteClient::batches— async batch APIClient::vector_stores— vector store + nested filesClient::fine_tuning— fine-tuning jobs + events + checkpointsClient::uploads— resumable uploads for files > 512 MB
§Features
rustls-tls(default) — TLS via rustlsnative-tls— TLS via system OpenSSLstream(default) — streaming helperstool_registry—linkme-backed dispatch slice for the#[tool]macrotracing—debug!/warn!on every HTTP request + retry, spans on each callutoipa— deriveToSchemaon enums
Azure is supported without any feature flag — use Client::azure.
§Migration
See MIGRATION.md for
0.2 → 1.0 codemods.
Re-exports§
pub use client::ApiKind;pub use client::Client;pub use client::ClientBuilder;pub use client::DEFAULT_BASE_URL;pub use error::OpenAiError;pub use error::Result;pub use request_options::RequestOptions;pub use logoi::input::payload::builder::PayLoadBuilder;pub use logoi::input::payload::templates::PayLoadTemplates;pub use logoi::input::payload::templates::QuickChatTemplate;pub use logoi::input::payload::templates::QuickFunctionCallTemplate;pub use logoi::input::payload::ChatPayLoad;pub use logoi::input::payload::ChatToolChoice;pub use logoi::input::payload::ChatToolChoiceFunction;pub use logoi::input::payload::ChatToolChoiceType;pub use logoi::input::payload::JsonSchemaSpec;pub use logoi::input::payload::ReasoningEffort;pub use logoi::input::payload::ResponseFormat;pub use logoi::input::payload::StreamOptions;pub use logoi::input::tool::raw_macro::fn_macro::FunctionCallRaw;pub use logoi::input::tool::raw_macro::fn_macro::FunctionParamRaw;pub use logoi::input::tool::raw_macro::FunctionCallable;pub use logoi::input::tool::EnumValues;pub use logoi::input::tool::FunctionCall;pub use logoi::input::tool::FunctionParameter;pub use logoi::input::tool::FunctionType;pub use logoi::input::tool::FunctionVariant;pub use logoi::input::tool::ToolChoice;pub use logoi::input::tool::ToolType;pub use logoi::message::ChatContent;pub use logoi::message::ChatMessage;pub use logoi::message::ChatMessageRole;pub use logoi::message::ContentPart;pub use logoi::message::FileRefSpec;pub use logoi::message::ImageUrlSpec;pub use logoi::message::InputAudioSpec;pub use logoi::message::ToolCall;pub use logoi::message::ToolCallFunction;pub use logoi::message::ToolCallType as MessageToolCallType;pub use logoi::models::OpenAiModel;pub use logoi::output::AiMsgResponse;pub use logoi::output::AiResponseMessage;pub use logoi::output::AssistantDelta;pub use logoi::output::ChatCompletionChunk;pub use logoi::output::Choice;pub use logoi::output::ChunkChoice;pub use logoi::output::CompletionTokensDetails;pub use logoi::output::FunctionCallRes;pub use logoi::output::FunctionDelta;pub use logoi::output::PromptTokensDetails;pub use logoi::output::ToolCallDelta;pub use logoi::output::ToolCallRes;pub use logoi::output::Usage;pub use resources::chat_stream_ext::collect_chat_stream;pub use resources::chat_stream_ext::CollectedChatStream;pub use resources::chat_stream_ext::CollectedToolCall;