SimLLM

Struct SimLLM 

Source
pub struct SimLLM { /* private fields */ }
Expand description

Simulated LLM for deterministic testing.

TigerStyle:

  • Deterministic responses via seeded RNG
  • Prompt routing to domain-specific generators
  • Fault injection integration
  • Thread-safe via Mutex for use in async contexts

§Example

use umi_memory::dst::{SimLLM, SimClock, DeterministicRng, FaultInjector};
use std::sync::Arc;

let clock = SimClock::new();
let rng = DeterministicRng::new(42);
let faults = Arc::new(FaultInjector::new(DeterministicRng::new(42)));
let llm = SimLLM::new(clock, rng, faults);

// Same seed = same response

Implementations§

Source§

impl SimLLM

Source

pub fn new( clock: SimClock, rng: DeterministicRng, fault_injector: Arc<FaultInjector>, ) -> Self

Create a new SimLLM.

§Arguments
  • clock: Simulated clock for latency
  • rng: Deterministic RNG for response generation
  • fault_injector: Shared fault injector
Source

pub fn without_latency(self) -> Self

Disable latency simulation (useful for tests without time advancement).

By default, SimLLM simulates latency using the clock. This blocks if the clock isn’t being advanced. Use this method to disable latency for simple tests.

Source

pub fn with_latency(self, latency_ms: u64) -> Self

Set base latency for simulated responses.

§Panics

Panics if latency is outside valid range.

Source

pub async fn complete(&self, prompt: &str) -> Result<String, LLMError>

Complete a prompt with a deterministic response.

§Errors

Returns LLMError on fault injection or validation failure.

§Panics

Debug panics on precondition/postcondition violations.

Source

pub async fn complete_json<T: DeserializeOwned>( &self, prompt: &str, ) -> Result<T, LLMError>

Complete a prompt expecting a JSON response.

§Errors

Returns LLMError on fault injection, validation, or JSON parse failure.

Source

pub fn seed(&self) -> u64

Get the current seed (for debugging).

Trait Implementations§

Source§

impl Clone for SimLLM

Source§

fn clone(&self) -> SimLLM

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for SimLLM

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl Freeze for SimLLM

§

impl RefUnwindSafe for SimLLM

§

impl Send for SimLLM

§

impl Sync for SimLLM

§

impl Unpin for SimLLM

§

impl UnwindSafe for SimLLM

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more