Crate llm_kit_openai_compatible

Crate llm_kit_openai_compatible 

Source
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

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.