pub struct LlmSimDriver { /* private fields */ }Expand description
LLM Simulator Driver for testing
This driver generates simulated responses based on configuration. It’s intended for unit and integration tests where you need deterministic or configurable LLM behavior.
§Example
ⓘ
use everruns_core::llmsim_driver::{LlmSimDriver, LlmSimConfig};
// Simple fixed response
let driver = LlmSimDriver::new(LlmSimConfig::fixed("Hello!"));
// With tool calls
let driver = LlmSimDriver::new(
LlmSimConfig::fixed("Let me check that for you.")
.with_tool_calls(vec![ToolCall { ... }])
);
// Sequence of responses for multi-turn tests
let driver = LlmSimDriver::new(
LlmSimConfig::sequence(vec![
"First response".to_string(),
"Second response".to_string(),
])
);Implementations§
Source§impl LlmSimDriver
impl LlmSimDriver
Sourcepub fn new(config: LlmSimConfig) -> Self
pub fn new(config: LlmSimConfig) -> Self
Create a new driver with the given configuration
Sourcepub fn default_driver() -> Self
pub fn default_driver() -> Self
Create a driver with default configuration (fixed response)
Trait Implementations§
Source§impl ChatDriver for LlmSimDriver
impl ChatDriver for LlmSimDriver
Source§fn chat_completion_stream<'life0, 'life1, 'async_trait>(
&'life0 self,
messages: Vec<LlmMessage>,
config: &'life1 LlmCallConfig,
) -> Pin<Box<dyn Future<Output = Result<LlmResponseStream>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn chat_completion_stream<'life0, 'life1, 'async_trait>(
&'life0 self,
messages: Vec<LlmMessage>,
config: &'life1 LlmCallConfig,
) -> Pin<Box<dyn Future<Output = Result<LlmResponseStream>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Call the LLM with streaming response
Source§fn chat_completion<'life0, 'life1, 'async_trait>(
&'life0 self,
messages: Vec<LlmMessage>,
config: &'life1 LlmCallConfig,
) -> Pin<Box<dyn Future<Output = Result<LlmResponse, AgentLoopError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
Self: 'async_trait,
fn chat_completion<'life0, 'life1, 'async_trait>(
&'life0 self,
messages: Vec<LlmMessage>,
config: &'life1 LlmCallConfig,
) -> Pin<Box<dyn Future<Output = Result<LlmResponse, AgentLoopError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
Self: 'async_trait,
Call the LLM without streaming (convenience method)
Source§fn list_models<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<Option<Vec<DiscoveredModel>>, AgentLoopError>> + Send + 'async_trait>>where
'life0: 'async_trait,
Self: 'async_trait,
fn list_models<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<Option<Vec<DiscoveredModel>>, AgentLoopError>> + Send + 'async_trait>>where
'life0: 'async_trait,
Self: 'async_trait,
List available models from the provider Read more
Source§fn supports_compact(&self) -> bool
fn supports_compact(&self) -> bool
Check if this driver supports the compact endpoint Read more
Source§fn supports_stateful_responses(&self) -> bool
fn supports_stateful_responses(&self) -> bool
Whether this driver persists Responses API state and can resolve tool
calls that are reachable only through
previous_response_id. Read moreSource§fn effective_context_window(&self, _model: &str) -> Option<usize>
fn effective_context_window(&self, _model: &str) -> Option<usize>
Effective context window for
model, when the driver has authoritative
model metadata that is not represented by Everruns’ built-in profiles. Read moreSource§fn supports_parallel_tool_calls(&self, _model: &str) -> bool
fn supports_parallel_tool_calls(&self, _model: &str) -> bool
Whether this driver can express the request-level
parallel_tool_calls
preference on the wire for model. Read moreSource§fn compact<'life0, 'async_trait>(
&'life0 self,
_request: CompactRequest,
) -> Pin<Box<dyn Future<Output = Result<Option<CompactResponse>, AgentLoopError>> + Send + 'async_trait>>where
'life0: 'async_trait,
Self: 'async_trait,
fn compact<'life0, 'async_trait>(
&'life0 self,
_request: CompactRequest,
) -> Pin<Box<dyn Future<Output = Result<Option<CompactResponse>, AgentLoopError>> + Send + 'async_trait>>where
'life0: 'async_trait,
Self: 'async_trait,
Compact a conversation to reduce context size Read more
Source§impl Clone for LlmSimDriver
impl Clone for LlmSimDriver
Source§fn clone(&self) -> LlmSimDriver
fn clone(&self) -> LlmSimDriver
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreAuto Trait Implementations§
impl Freeze for LlmSimDriver
impl RefUnwindSafe for LlmSimDriver
impl Send for LlmSimDriver
impl Sync for LlmSimDriver
impl Unpin for LlmSimDriver
impl UnsafeUnpin for LlmSimDriver
impl UnwindSafe for LlmSimDriver
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> FutureExt for T
impl<T> FutureExt for T
Source§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
Source§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
Wrap the input message
T in a tonic::Request