rs-agent 1.0.4

Lattice AI Agent Framework for Rust - Build production AI agents with clean abstractions
Documentation
use async_trait::async_trait;

use crate::error::{AgentError, Result};
use crate::types::{File, GenerationChunk, GenerationResponse, Message};
use futures::stream::BoxStream;

/// LLM model interface
#[async_trait]
pub trait LLM: Send + Sync {
    /// Generates a response from the model
    async fn generate(
        &self,
        messages: Vec<Message>,
        files: Option<Vec<File>>,
    ) -> Result<GenerationResponse>;

    /// Generates a streaming response from the model
    async fn stream_generate(
        &self,
        _messages: Vec<Message>,
        _files: Option<Vec<File>>,
    ) -> Result<BoxStream<'static, Result<GenerationChunk>>> {
        Err(AgentError::ModelError("Streaming not implemented for this provider".into()))
    }

    /// Returns the model name
    fn model_name(&self) -> &str;
}

// LLM provider implementations
#[cfg(feature = "gemini")]
pub mod gemini;

#[cfg(feature = "ollama")]
pub mod ollama;

#[cfg(feature = "anthropic")]
pub mod anthropic;

#[cfg(feature = "openai")]
pub mod openai;

// Re-export providers
#[cfg(feature = "gemini")]
pub use gemini::GeminiLLM;

#[cfg(feature = "ollama")]
pub use ollama::OllamaLLM;

#[cfg(feature = "anthropic")]
pub use anthropic::AnthropicLLM;

#[cfg(feature = "openai")]
pub use openai::OpenAILLM;