Expand description
OpenAI-compatible provider implementation for the LLM Kit.
This crate provides a provider implementation for OpenAI-compatible APIs, including OpenAI, Azure OpenAI, and other compatible services.
§Examples
§Basic Usage with Client Builder (Recommended)
use llm_kit_openai_compatible::OpenAICompatibleClient;
// Create a provider using the client builder
let provider = OpenAICompatibleClient::new()
.base_url("https://api.openai.com/v1")
.api_key("your-api-key")
.build();
let model = provider.chat_model("gpt-4");§Alternative: Using Settings Directly
use llm_kit_openai_compatible::{OpenAICompatibleProvider, OpenAICompatibleProviderSettings};
// Create a provider using settings
let provider = OpenAICompatibleProvider::new(
OpenAICompatibleProviderSettings::new(
"https://api.openai.com/v1",
"openai"
)
.with_api_key("your-api-key")
);
let model = provider.chat_model("gpt-4");§Chained Usage
use llm_kit_openai_compatible::OpenAICompatibleClient;
let model = OpenAICompatibleClient::new()
.base_url("https://api.example.com/v1")
.name("example")
.api_key("your-api-key")
.build()
.chat_model("meta-llama/Llama-3-70b-chat-hf");§Custom Headers and Query Parameters
use llm_kit_openai_compatible::OpenAICompatibleClient;
let provider = OpenAICompatibleClient::new()
.base_url("https://api.example.com/v1")
.name("custom")
.api_key("your-api-key")
.header("X-Custom-Header", "value")
.query_param("version", "2024-01")
.build();
let model = provider.chat_model("gpt-4");§Azure OpenAI Example
use llm_kit_openai_compatible::OpenAICompatibleClient;
let provider = OpenAICompatibleClient::new()
.base_url("https://my-resource.openai.azure.com/openai")
.name("azure-openai")
.api_key("your-api-key")
.query_param("api-version", "2024-02-15-preview")
.build();
let model = provider.chat_model("gpt-4");§Text Embeddings
use llm_kit_openai_compatible::OpenAICompatibleClient;
use llm_kit_provider::EmbeddingModel;
use llm_kit_provider::embedding_model::call_options::EmbeddingModelCallOptions;
let provider = OpenAICompatibleClient::new()
.base_url("https://api.openai.com/v1")
.api_key("your-api-key")
.build();
let model = provider.text_embedding_model("text-embedding-3-small");
let options = EmbeddingModelCallOptions {
values: vec!["The capital of France is Paris.".to_string()],
headers: None,
provider_options: None,
abort_signal: None,
};
let result = model.do_embed(options).await?;
println!("Embeddings: {:?}", result.embeddings);§Image Generation
use llm_kit_openai_compatible::OpenAICompatibleClient;
use llm_kit_provider::ImageModel;
use llm_kit_provider::image_model::call_options::ImageModelCallOptions;
let provider = OpenAICompatibleClient::new()
.base_url("https://api.openai.com/v1")
.api_key("your-api-key")
.build();
let model = provider.image_model("dall-e-3");
let options = ImageModelCallOptions {
prompt: "A beautiful sunset over the ocean".to_string(),
n: 1,
size: None,
aspect_ratio: None,
seed: None,
headers: None,
provider_options: None,
abort_signal: None,
};
let result = model.do_generate(options).await?;
println!("Generated {} image(s)", result.images.len());Re-exports§
pub use chat::MetadataExtractor;pub use chat::OpenAICompatibleChatConfig;pub use chat::OpenAICompatibleChatLanguageModel;pub use chat::OpenAICompatibleChatModelId;pub use chat::OpenAICompatibleProviderOptions as ChatProviderOptions;pub use chat::convert_to_openai_compatible_chat_messages;pub use chat::prepare_tools;pub use chat::prepare_tools;pub use completion::OpenAICompatibleCompletionConfig;pub use completion::OpenAICompatibleCompletionLanguageModel;pub use completion::OpenAICompatibleCompletionModelId;pub use completion::OpenAICompatibleCompletionPrompt;pub use completion::OpenAICompatibleCompletionProviderOptions as CompletionProviderOptions;pub use completion::convert_to_openai_compatible_completion_prompt;pub use embedding::OpenAICompatibleEmbeddingConfig;pub use embedding::OpenAICompatibleEmbeddingModel;pub use embedding::OpenAICompatibleEmbeddingModelId;pub use embedding::OpenAICompatibleEmbeddingProviderOptions as EmbeddingProviderOptions;pub use image::OpenAICompatibleImageModel;pub use image::OpenAICompatibleImageModelConfig;pub use image::OpenAICompatibleImageModelId;pub use client::OpenAICompatibleClient;pub use provider::OpenAICompatibleProvider;pub use settings::OpenAICompatibleProviderSettings;pub use error::*;
Modules§
- chat
- Chat completion implementation for OpenAI-compatible APIs.
- client
- Client builder for creating OpenAI-compatible providers.
- completion
- Text completion implementation for OpenAI-compatible APIs.
- embedding
- Embedding model implementation for OpenAI-compatible APIs.
- error
- Error types for OpenAI-compatible provider operations.
- image
- Image generation implementation for OpenAI-compatible APIs.
- provider
- Provider implementation and creation functions.
- settings
- Settings and configuration for OpenAI-compatible providers.