llm-sdk-rs 0.3.0

A Rust library that enables the development of applications that can interact with different language models through a unified interface.
Documentation
use crate::{
    boxed_stream::BoxedStream, LanguageModelCapabilities, LanguageModelInput, LanguageModelPricing,
    LanguageModelResult, ModelResponse, PartialModelResponse,
};
use futures::future::BoxFuture;
use serde::{Deserialize, Serialize};

#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct LanguageModelMetadata {
    pub pricing: Option<LanguageModelPricing>,
    pub capabilities: Option<LanguageModelCapabilities>,
}

pub trait LanguageModel: Send + Sync {
    fn provider(&self) -> &'static str;
    fn model_id(&self) -> String;
    fn metadata(&self) -> Option<&LanguageModelMetadata>;
    fn generate(
        &self,
        input: LanguageModelInput,
    ) -> BoxFuture<'_, LanguageModelResult<ModelResponse>>;
    fn stream(
        &self,
        input: LanguageModelInput,
    ) -> BoxFuture<'_, LanguageModelResult<LanguageModelStream>>;
}

pub type LanguageModelStream = BoxedStream<'static, LanguageModelResult<PartialModelResponse>>;