pub struct ChatWithMemory { /* private fields */ }
Expand description
Adds transparent long-term memory to any ChatProvider
.
Implementations§
Source§impl ChatWithMemory
impl ChatWithMemory
Sourcepub fn new(
provider: Arc<dyn LLMProvider>,
memory: Arc<RwLock<Box<dyn MemoryProvider>>>,
role: Option<String>,
role_triggers: Vec<(String, MessageCondition)>,
max_cycles: Option<u32>,
) -> Self
pub fn new( provider: Arc<dyn LLMProvider>, memory: Arc<RwLock<Box<dyn MemoryProvider>>>, role: Option<String>, role_triggers: Vec<(String, MessageCondition)>, max_cycles: Option<u32>, ) -> Self
Build a new wrapper.
provider
– Underlying LLM backendmemory
– Conversation memory storerole
– Optional agent rolerole_triggers
– Reactive rules
Sourcepub fn inner(&self) -> &dyn LLMProvider
pub fn inner(&self) -> &dyn LLMProvider
Access the wrapped provider.
Sourcepub async fn memory_contents(&self) -> Vec<ChatMessage>
pub async fn memory_contents(&self) -> Vec<ChatMessage>
Dump the full memory (debugging).
Trait Implementations§
Source§impl ChatProvider for ChatWithMemory
impl ChatProvider for ChatWithMemory
Source§fn chat_with_tools<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
messages: &'life1 [ChatMessage],
tools: Option<&'life2 [Tool]>,
) -> Pin<Box<dyn Future<Output = Result<Box<dyn ChatResponse>, LLMError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn chat_with_tools<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
messages: &'life1 [ChatMessage],
tools: Option<&'life2 [Tool]>,
) -> Pin<Box<dyn Future<Output = Result<Box<dyn ChatResponse>, LLMError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Sends a chat request to the provider with a sequence of messages and tools. Read more
Source§fn memory_contents<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Option<Vec<ChatMessage>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn memory_contents<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Option<Vec<ChatMessage>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Get current memory contents if provider supports memory
Source§fn chat<'life0, 'life1, 'async_trait>(
&'life0 self,
messages: &'life1 [ChatMessage],
) -> Pin<Box<dyn Future<Output = Result<Box<dyn ChatResponse>, LLMError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn chat<'life0, 'life1, 'async_trait>(
&'life0 self,
messages: &'life1 [ChatMessage],
) -> Pin<Box<dyn Future<Output = Result<Box<dyn ChatResponse>, LLMError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Sends a chat request to the provider with a sequence of messages. Read more
Source§fn chat_with_web_search<'life0, 'async_trait>(
&'life0 self,
_input: String,
) -> Pin<Box<dyn Future<Output = Result<Box<dyn ChatResponse>, LLMError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn chat_with_web_search<'life0, 'async_trait>(
&'life0 self,
_input: String,
) -> Pin<Box<dyn Future<Output = Result<Box<dyn ChatResponse>, LLMError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Sends a chat with web search request to the provider Read more
Source§fn chat_stream<'life0, 'life1, 'async_trait>(
&'life0 self,
_messages: &'life1 [ChatMessage],
) -> Pin<Box<dyn Future<Output = Result<Pin<Box<dyn Stream<Item = Result<String, LLMError>> + Send>>, LLMError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn chat_stream<'life0, 'life1, 'async_trait>(
&'life0 self,
_messages: &'life1 [ChatMessage],
) -> Pin<Box<dyn Future<Output = Result<Pin<Box<dyn Stream<Item = Result<String, LLMError>> + Send>>, LLMError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Sends a streaming chat request to the provider with a sequence of messages. Read more
Source§fn chat_stream_struct<'life0, 'life1, 'async_trait>(
&'life0 self,
_messages: &'life1 [ChatMessage],
) -> Pin<Box<dyn Future<Output = Result<Pin<Box<dyn Stream<Item = Result<StreamResponse, LLMError>> + Send>>, LLMError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn chat_stream_struct<'life0, 'life1, 'async_trait>(
&'life0 self,
_messages: &'life1 [ChatMessage],
) -> Pin<Box<dyn Future<Output = Result<Pin<Box<dyn Stream<Item = Result<StreamResponse, LLMError>> + Send>>, LLMError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Sends a streaming chat request that returns structured response chunks. Read more
Source§fn summarize_history<'life0, 'life1, 'async_trait>(
&'life0 self,
msgs: &'life1 [ChatMessage],
) -> Pin<Box<dyn Future<Output = Result<String, LLMError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn summarize_history<'life0, 'life1, 'async_trait>(
&'life0 self,
msgs: &'life1 [ChatMessage],
) -> Pin<Box<dyn Future<Output = Result<String, LLMError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Summarizes a conversation history into a concise 2-3 sentence summary Read more
Source§impl CompletionProvider for ChatWithMemory
impl CompletionProvider for ChatWithMemory
Source§fn complete<'life0, 'life1, 'async_trait>(
&'life0 self,
req: &'life1 CompletionRequest,
) -> Pin<Box<dyn Future<Output = Result<CompletionResponse, LLMError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn complete<'life0, 'life1, 'async_trait>(
&'life0 self,
req: &'life1 CompletionRequest,
) -> Pin<Box<dyn Future<Output = Result<CompletionResponse, LLMError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Sends a completion request to generate text. Read more
Source§impl EmbeddingProvider for ChatWithMemory
impl EmbeddingProvider for ChatWithMemory
Source§impl LLMProvider for ChatWithMemory
impl LLMProvider for ChatWithMemory
Source§impl ModelsProvider for ChatWithMemory
impl ModelsProvider for ChatWithMemory
Source§fn list_models<'life0, 'life1, 'async_trait>(
&'life0 self,
_request: Option<&'life1 ModelListRequest>,
) -> Pin<Box<dyn Future<Output = Result<Box<dyn ModelListResponse>, LLMError>> + Send + 'async_trait>>where
Self: Sync + 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn list_models<'life0, 'life1, 'async_trait>(
&'life0 self,
_request: Option<&'life1 ModelListRequest>,
) -> Pin<Box<dyn Future<Output = Result<Box<dyn ModelListResponse>, LLMError>> + Send + 'async_trait>>where
Self: Sync + 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Asynchronously retrieves the list of available models ID’s from the provider. Read more
Source§impl SpeechToTextProvider for ChatWithMemory
impl SpeechToTextProvider for ChatWithMemory
Source§fn transcribe<'life0, 'async_trait>(
&'life0 self,
audio: Vec<u8>,
) -> Pin<Box<dyn Future<Output = Result<String, LLMError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn transcribe<'life0, 'async_trait>(
&'life0 self,
audio: Vec<u8>,
) -> Pin<Box<dyn Future<Output = Result<String, LLMError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Transcribe the given audio bytes into text Read more
fn transcribe_file<'life0, 'life1, 'async_trait>(
&'life0 self,
file_path: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<String, LLMError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Auto Trait Implementations§
impl Freeze for ChatWithMemory
impl !RefUnwindSafe for ChatWithMemory
impl Send for ChatWithMemory
impl Sync for ChatWithMemory
impl Unpin for ChatWithMemory
impl !UnwindSafe for ChatWithMemory
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
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 more