Crate ai_lib

Crate ai_lib 

Source
Expand description

AI-lib 是一个统一的 Rust AI SDK,提供单一接口访问多个 AI 模型提供商

AI-lib: A Unified AI SDK for Rust

This library provides a single, consistent interface for interacting with multiple AI model providers.

§Quick Start

use ai_lib::{AiClient, Provider, ChatCompletionRequest, Message, Role, Content};
// Or in applications, prefer the minimal prelude:
// use ai_lib::prelude::*;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    // Switch provider by changing Provider:: value
    let client = AiClient::new(Provider::Groq)?;

    let request = ChatCompletionRequest::new(
        "llama3-8b-8192".to_string(),
        vec![Message {
            role: Role::User,
            content: Content::Text("Hello, how are you?".to_string()),
            function_call: None,
        }],
    );

    println!("Client created successfully with provider: {}", client.provider_name());
    println!("Request prepared for model: {}", request.model);

    Ok(())
}

§Import guidance

  • For application code, prefer use ai_lib::prelude::*; to get the minimal common set.
  • Library authors can import explicitly from domain modules for fine-grained control.

See the module tree and import patterns guide for details: docs/MODULE_TREE_AND_IMPORTS.md

§Proxy Support

AI-lib supports proxy configuration via environment variables:

# Set proxy server
export AI_PROXY_URL=http://proxy.example.com:8080

# Proxy with authentication
export AI_PROXY_URL=http://username:password@proxy.example.com:8080

# HTTPS proxy
export AI_PROXY_URL=https://proxy.example.com:8080

All AI provider requests will automatically use the specified proxy server.

Optional environment variables for feature-gated capabilities:

  • cost_metrics feature:
    • COST_INPUT_PER_1K: USD per 1000 input tokens
    • COST_OUTPUT_PER_1K: USD per 1000 output tokens

These cost metrics are read from environment variables for simplicity.

Note: In ai-lib-pro, these can be centrally configured and hot-reloaded via external configuration providers for enterprise deployments.

Re-exports§

pub use api::ChatApi;
pub use api::ChatProvider;
pub use client::AiClient;
pub use client::AiClientBuilder;
pub use client::ModelOptions;
pub use client::Provider;
pub use provider::chat_provider::AdapterProvider;
pub use types::AiLibError;
pub use types::ChatCompletionRequest;
pub use types::ChatCompletionResponse;
pub use types::Choice;
pub use types::FunctionCall;
pub use types::FunctionCallPolicy;
pub use types::Message;
pub use types::Role;
pub use types::Tool;
pub use api::ChatCompletionChunk;
pub use client::CancelHandle;
pub use metrics::Metrics;
pub use metrics::MetricsExt;
pub use metrics::NoopMetrics;
pub use metrics::NoopTimer;
pub use metrics::Timer;
pub use transport::DynHttpTransport;
pub use transport::DynHttpTransportRef;
pub use transport::HttpClient;
pub use transport::HttpTransport;
pub use transport::TransportError;
pub use config::ConnectionOptions;
pub use types::common::Content;
pub use types::response::Usage;
pub use types::response::UsageStatus;
pub use provider::config::FieldMapping;
pub use provider::config::ProviderConfig;
pub use provider::configs::ProviderConfigs;
pub use api::chat::batch_utils;
pub use api::chat::BatchResult;
pub use utils::file::create_temp_dir;
pub use utils::file::get_file_extension;
pub use utils::file::get_file_size;
pub use utils::file::guess_mime_from_path;
pub use utils::file::is_audio_file;
pub use utils::file::is_file_size_acceptable;
pub use utils::file::is_image_file;
pub use utils::file::is_text_file;
pub use utils::file::is_video_file;
pub use utils::file::read_file;
pub use utils::file::remove_file;
pub use utils::file::save_temp_file;
pub use utils::file::validate_file;

Modules§

api
API定义模块,包含核心接口和数据结构
circuit_breaker
熔断器模块,提供AI API调用的弹性保护机制
client
客户端模块入口点,提供统一的AI客户端接口和构建器
config
配置管理模块,提供连接和运行时配置选项
error_handling
增强的错误处理和恢复机制模块
metrics
指标收集模块,提供可插拔的性能监控和统计功能
model
模型管理模块,提供模型选择和解析功能
prelude
Prelude with the minimal commonly used items for applications.
provider
提供商适配器模块,实现对不同AI厂商API的统一适配
rate_limiter
速率限制和背压控制模块,防止AI API调用过载
transport
传输层模块,提供统一的HTTP客户端和网络通信功能
types
类型定义模块,包含AI库的核心数据结构和类型
utils
工具函数模块,提供ai-lib的辅助功能