pub struct SimLLMProvider { /* private fields */ }Expand description
Simulation LLM provider wrapping DST SimLLM.
TigerStyle: Primary implementation, always available.
This provider wraps the deterministic SimLLM from the DST module,
providing the same interface as production providers but with:
- Deterministic responses (same seed = same output)
- Fault injection support
- No external dependencies
§Example
use umi_memory::llm::{SimLLMProvider, CompletionRequest, LLMProvider};
#[tokio::main]
async fn main() {
// Create with explicit seed for reproducibility
let provider = SimLLMProvider::with_seed(42);
let request = CompletionRequest::new("Extract entities from: Alice works at Acme.");
let response = provider.complete(&request).await.unwrap();
// Same seed always produces same response
let provider2 = SimLLMProvider::with_seed(42);
let response2 = provider2.complete(&request).await.unwrap();
assert_eq!(response, response2);
}Implementations§
Source§impl SimLLMProvider
impl SimLLMProvider
Sourcepub fn from_sim_llm(sim_llm: SimLLM) -> Self
pub fn from_sim_llm(sim_llm: SimLLM) -> Self
Create a new SimLLMProvider from an existing SimLLM.
Use this when you already have a SimLLM from SimEnvironment.
§Example
use umi_memory::dst::{Simulation, SimConfig};
use umi_memory::llm::SimLLMProvider;
let sim = Simulation::new(SimConfig::with_seed(42));
let env = sim.build();
// Note: In practice, you'd typically use env.llm directly
// This is for cases where you need the LLMProvider traitSourcepub fn with_seed(seed: u64) -> Self
pub fn with_seed(seed: u64) -> Self
Create a new standalone SimLLMProvider with the given seed.
This is the most common way to create a SimLLMProvider for testing.
§Example
use umi_memory::llm::SimLLMProvider;
let provider = SimLLMProvider::with_seed(42);Sourcepub fn with_faults(seed: u64, faults: Arc<FaultInjector>) -> Self
pub fn with_faults(seed: u64, faults: Arc<FaultInjector>) -> Self
Create a new SimLLMProvider with fault injection.
§Example
use umi_memory::llm::SimLLMProvider;
use umi_memory::dst::{FaultConfig, FaultType, FaultInjector, DeterministicRng};
use std::sync::Arc;
let mut injector = FaultInjector::new(DeterministicRng::new(42));
injector.register(FaultConfig::new(FaultType::LlmTimeout, 0.5));
let provider = SimLLMProvider::with_faults(42, Arc::new(injector));Trait Implementations§
Source§impl Clone for SimLLMProvider
impl Clone for SimLLMProvider
Source§fn clone(&self) -> SimLLMProvider
fn clone(&self) -> SimLLMProvider
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for SimLLMProvider
impl Debug for SimLLMProvider
Source§impl LLMProvider for SimLLMProvider
impl LLMProvider for SimLLMProvider
Source§fn complete<'life0, 'life1, 'async_trait>(
&'life0 self,
request: &'life1 CompletionRequest,
) -> Pin<Box<dyn Future<Output = Result<String, ProviderError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn complete<'life0, 'life1, 'async_trait>(
&'life0 self,
request: &'life1 CompletionRequest,
) -> Pin<Box<dyn Future<Output = Result<String, ProviderError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Complete a prompt with a text response. Read more
Source§fn is_simulation(&self) -> bool
fn is_simulation(&self) -> bool
Check if this is a simulation provider. Read more
Source§fn complete_json<'life0, 'life1, 'async_trait, T>(
&'life0 self,
request: &'life1 CompletionRequest,
) -> Pin<Box<dyn Future<Output = Result<T, ProviderError>> + Send + 'async_trait>>where
T: 'async_trait + DeserializeOwned + Send,
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn complete_json<'life0, 'life1, 'async_trait, T>(
&'life0 self,
request: &'life1 CompletionRequest,
) -> Pin<Box<dyn Future<Output = Result<T, ProviderError>> + Send + 'async_trait>>where
T: 'async_trait + DeserializeOwned + Send,
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Complete a prompt expecting a JSON response. Read more
Auto Trait Implementations§
impl Freeze for SimLLMProvider
impl RefUnwindSafe for SimLLMProvider
impl Send for SimLLMProvider
impl Sync for SimLLMProvider
impl Unpin for SimLLMProvider
impl UnwindSafe for SimLLMProvider
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more