pub struct PolicyMemory<M, P> { /* private fields */ }Expand description
Wrap a ConversationMemory backend with a MemoryPolicy, propagating
policy errors to the caller as MemoryError::Policy.
This is the hard-fail counterpart to
InMemoryConversationMemory::with_filter + IntoFilter::into_filter.
with_filter swallows policy errors and returns the unfiltered history;
PolicyMemory surfaces them so callers can decide how to react.
§Example
use rig_memory::{InMemoryConversationMemory, PolicyMemory, SlidingWindowMemory};
let memory = PolicyMemory::new(
InMemoryConversationMemory::new(),
SlidingWindowMemory::last_messages(20),
);Implementations§
Source§impl<M, P> PolicyMemory<M, P>
impl<M, P> PolicyMemory<M, P>
Sourcepub fn new(inner: M, policy: P) -> Self
pub fn new(inner: M, policy: P) -> Self
Wrap inner so every loaded history is run through policy.
Sourcepub fn into_inner(self) -> (M, P)
pub fn into_inner(self) -> (M, P)
Consume the wrapper and return the underlying backend and policy.
Trait Implementations§
Source§impl<M: Clone, P: Clone> Clone for PolicyMemory<M, P>
impl<M: Clone, P: Clone> Clone for PolicyMemory<M, P>
Source§fn clone(&self) -> PolicyMemory<M, P>
fn clone(&self) -> PolicyMemory<M, P>
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 moreSource§impl<M, P> ConversationMemory for PolicyMemory<M, P>where
M: ConversationMemory,
P: MemoryPolicy,
impl<M, P> ConversationMemory for PolicyMemory<M, P>where
M: ConversationMemory,
P: MemoryPolicy,
Source§fn load<'a>(
&'a self,
conversation_id: &'a str,
) -> WasmBoxedFuture<'a, Result<Vec<Message>, MemoryError>>
fn load<'a>( &'a self, conversation_id: &'a str, ) -> WasmBoxedFuture<'a, Result<Vec<Message>, MemoryError>>
Load the full conversation history for
conversation_id. Read moreSource§fn append<'a>(
&'a self,
conversation_id: &'a str,
messages: Vec<Message>,
) -> WasmBoxedFuture<'a, Result<(), MemoryError>>
fn append<'a>( &'a self, conversation_id: &'a str, messages: Vec<Message>, ) -> WasmBoxedFuture<'a, Result<(), MemoryError>>
Source§fn clear<'a>(
&'a self,
conversation_id: &'a str,
) -> WasmBoxedFuture<'a, Result<(), MemoryError>>
fn clear<'a>( &'a self, conversation_id: &'a str, ) -> WasmBoxedFuture<'a, Result<(), MemoryError>>
Remove all stored messages for
conversation_id.impl<M: Copy, P: Copy> Copy for PolicyMemory<M, P>
Auto Trait Implementations§
impl<M, P> Freeze for PolicyMemory<M, P>
impl<M, P> RefUnwindSafe for PolicyMemory<M, P>where
M: RefUnwindSafe,
P: RefUnwindSafe,
impl<M, P> Send for PolicyMemory<M, P>
impl<M, P> Sync for PolicyMemory<M, P>
impl<M, P> Unpin for PolicyMemory<M, P>
impl<M, P> UnsafeUnpin for PolicyMemory<M, P>where
M: UnsafeUnpin,
P: UnsafeUnpin,
impl<M, P> UnwindSafe for PolicyMemory<M, P>where
M: UnwindSafe,
P: UnwindSafe,
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