pub trait Runnable<I, O>: Send + Sync{
// Required method
fn invoke<'life0, 'life1, 'async_trait>(
&'life0 self,
input: I,
config: &'life1 RunnableConfig,
) -> Pin<Box<dyn Future<Output = Result<O, SynapseError>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait;
// Provided methods
fn batch<'life0, 'life1, 'async_trait>(
&'life0 self,
inputs: Vec<I>,
config: &'life1 RunnableConfig,
) -> Pin<Box<dyn Future<Output = Vec<Result<O, SynapseError>>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait { ... }
fn stream<'a>(
&'a self,
input: I,
config: &'a RunnableConfig,
) -> RunnableOutputStream<'a, O>
where I: 'a { ... }
fn boxed(self) -> BoxRunnable<I, O>
where Self: Sized + 'static { ... }
}Expand description
The core composition trait. All LCEL components implement this.
Implementors only need to provide invoke. Default implementations
are provided for batch (sequential), stream (wraps invoke), and
boxed (type-erased wrapper).
Required Methods§
Sourcefn invoke<'life0, 'life1, 'async_trait>(
&'life0 self,
input: I,
config: &'life1 RunnableConfig,
) -> Pin<Box<dyn Future<Output = Result<O, SynapseError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn invoke<'life0, 'life1, 'async_trait>(
&'life0 self,
input: I,
config: &'life1 RunnableConfig,
) -> Pin<Box<dyn Future<Output = Result<O, SynapseError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Execute this runnable on a single input.
Provided Methods§
Sourcefn batch<'life0, 'life1, 'async_trait>(
&'life0 self,
inputs: Vec<I>,
config: &'life1 RunnableConfig,
) -> Pin<Box<dyn Future<Output = Vec<Result<O, SynapseError>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn batch<'life0, 'life1, 'async_trait>(
&'life0 self,
inputs: Vec<I>,
config: &'life1 RunnableConfig,
) -> Pin<Box<dyn Future<Output = Vec<Result<O, SynapseError>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Execute this runnable on multiple inputs sequentially.
Sourcefn stream<'a>(
&'a self,
input: I,
config: &'a RunnableConfig,
) -> RunnableOutputStream<'a, O>where
I: 'a,
fn stream<'a>(
&'a self,
input: I,
config: &'a RunnableConfig,
) -> RunnableOutputStream<'a, O>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).
Sourcefn 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 |.