#![doc = include_str!("../README.md")]
#![forbid(unsafe_code)]
#![warn(missing_docs)]
#![allow(clippy::missing_const_for_fn)]
#![allow(clippy::use_self)]
#![allow(clippy::io_other_error)]
#![allow(async_fn_in_trait)]
pub use bon;
pub mod azure_middleware;
pub mod builders;
pub mod client;
pub mod config;
pub mod errors;
pub mod interceptor;
pub mod langfuse_interceptor;
pub mod responses;
pub mod semantic_conventions;
pub mod streaming;
pub use client::Client;
pub use config::{Config, ConfigBuilder};
pub use errors::{Error, Result};
pub use interceptor::{
AfterResponseContext, BeforeRequestContext, ErrorContext, Interceptor, StreamChunkContext,
StreamEndContext,
};
pub use langfuse_interceptor::{LangfuseConfig, LangfuseInterceptor, LangfuseState};
pub use builders::audio::{
SpeechBuilder, TimestampGranularity, TranscriptionBuilder, TranscriptionRequest,
TranslationBuilder, TranslationRequest,
};
pub use builders::chat::{
image_base64_part, image_base64_part_with_detail, image_url_part, image_url_part_with_detail,
system_user, text_part, user_message,
};
pub use builders::embeddings::{EmbeddingInput, EmbeddingsBuilder};
pub use builders::images::{
Background, ImageEditBuilder, ImageEditRequest, ImageGenerationBuilder, ImageInputFidelity,
ImageVariationBuilder, ImageVariationRequest, Moderation, OutputFormat, Quality,
ResponseFormat, Size, Style,
};
pub use builders::threads::{
AttachmentTool, MessageAttachment, ThreadMessageBuilder, ThreadRequestBuilder,
};
pub use builders::uploads::UploadBuilder;
pub use builders::responses::{responses_simple, responses_system_user, ResponsesBuilder};
pub use builders::{Builder, ChatCompletionBuilder, Sendable};
pub use openai_client_base::models::chat_completion_request_message_content_part_image_image_url::Detail;
pub use openai_client_base::models::create_upload_request::Purpose as UploadPurpose;
pub use responses::chat::{
ChatChoice, ChatCompletionResponse, ChatCompletionResponseExt,
ChatMessage as ResponseChatMessage, FunctionCall, ToolCall, ToolCallExt,
};
pub use responses::{tool_function, tool_web_search, ChatCompletionResponseWrapper};
pub use responses::{Response, Tool, ToolChoice, Usage};
pub use streaming::{ChatCompletionChunk, ChatCompletionStream, InterceptedStream};
#[cfg(feature = "test-utils")]
pub mod test_utils;
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_config_creation() {
let config = Config::builder().api_key("test-key").build();
assert_eq!(config.api_key(), "test-key");
}
#[test]
fn test_client_creation_with_config() {
let config = Config::builder().api_key("test-key").build();
let result = Client::builder(config);
assert!(result.is_ok());
}
}