pub struct RunnableWithMessageHistory { /* private fields */ }Expand description
Wraps a Runnable<Vec<Message>, String> with automatic message history
load/save from a MemoryStore.
On each invocation:
- Extracts
session_idfromconfig.metadata["session_id"](defaults to"default") - Loads conversation history from memory
- Appends
Message::human(input)to the history - Calls the inner runnable with the full message list
- Appends
Message::ai(output)to memory - Returns the output string
Implementations§
Source§impl RunnableWithMessageHistory
impl RunnableWithMessageHistory
Sourcepub fn new(
inner: BoxRunnable<Vec<Message>, String>,
memory: Arc<dyn MemoryStore>,
) -> Self
pub fn new( inner: BoxRunnable<Vec<Message>, String>, memory: Arc<dyn MemoryStore>, ) -> Self
Create a new history-aware runnable wrapper.
Trait Implementations§
Source§impl Runnable<String, String> for RunnableWithMessageHistory
impl Runnable<String, String> for RunnableWithMessageHistory
Source§fn invoke<'life0, 'life1, 'async_trait>(
&'life0 self,
input: String,
config: &'life1 RunnableConfig,
) -> Pin<Box<dyn Future<Output = Result<String, SynapticError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn invoke<'life0, 'life1, 'async_trait>(
&'life0 self,
input: String,
config: &'life1 RunnableConfig,
) -> Pin<Box<dyn Future<Output = Result<String, SynapticError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Execute this runnable on a single input.
Source§fn batch<'life0, 'life1, 'async_trait>(
&'life0 self,
inputs: Vec<I>,
config: &'life1 RunnableConfig,
) -> Pin<Box<dyn Future<Output = Vec<Result<O, SynapticError>>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
Self: 'async_trait,
fn batch<'life0, 'life1, 'async_trait>(
&'life0 self,
inputs: Vec<I>,
config: &'life1 RunnableConfig,
) -> Pin<Box<dyn Future<Output = Vec<Result<O, SynapticError>>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
Self: 'async_trait,
Execute this runnable on multiple inputs sequentially.
Source§fn stream<'a>(
&'a self,
input: I,
config: &'a RunnableConfig,
) -> Pin<Box<dyn Stream<Item = Result<O, SynapticError>> + Send + 'a>>where
I: 'a,
fn stream<'a>(
&'a self,
input: I,
config: &'a RunnableConfig,
) -> Pin<Box<dyn Stream<Item = Result<O, SynapticError>> + Send + 'a>>where
I: 'a,
Stream the output. Default wraps
invoke as a single-item stream.
Override for true streaming (e.g., token-by-token from an LLM).Source§fn boxed(self) -> BoxRunnable<I, O>where
Self: Sized + 'static,
fn boxed(self) -> BoxRunnable<I, O>where
Self: Sized + 'static,
Wrap this runnable into a type-erased
BoxRunnable for composition via |.Auto Trait Implementations§
impl Freeze for RunnableWithMessageHistory
impl !RefUnwindSafe for RunnableWithMessageHistory
impl Send for RunnableWithMessageHistory
impl Sync for RunnableWithMessageHistory
impl Unpin for RunnableWithMessageHistory
impl UnsafeUnpin for RunnableWithMessageHistory
impl !UnwindSafe for RunnableWithMessageHistory
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