pub struct ChainedHook<A, B> { /* private fields */ }Expand description
Combine two PromptHooks into one. See module docs for combination
semantics.
When ChainedHook::observe_with sets a conversation ID, the chain
also emits synthetic tool.skipped / tool.terminated events for tool
calls whose combined action is Skip / Terminate. This closes the
tool.invoked / tool.completed correlation gap when chaining a
telemetry hook with a gating hook.
Implementations§
Source§impl<A, B> ChainedHook<A, B>
impl<A, B> ChainedHook<A, B>
Sourcepub fn new(a: A, b: B) -> Self
pub fn new(a: A, b: B) -> Self
Build a chained hook running a before b for every lifecycle event.
By default the chain emits no synthetic terminal events; use
ChainedHook::observe_with to opt in.
Sourcepub fn observe_with(self, conversation_id: impl Into<String>) -> Self
pub fn observe_with(self, conversation_id: impl Into<String>) -> Self
Opt in to synthetic tool.skipped / tool.terminated event emission
stamped with conversation_id. Use the same conversation ID configured
on the chain’s telemetry hook so pair-correlation by call_id works
end-to-end.
Trait Implementations§
Source§impl<A: Clone, B: Clone> Clone for ChainedHook<A, B>
impl<A: Clone, B: Clone> Clone for ChainedHook<A, B>
Source§fn clone(&self) -> ChainedHook<A, B>
fn clone(&self) -> ChainedHook<A, B>
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<A, B, M> PromptHook<M> for ChainedHook<A, B>
impl<A, B, M> PromptHook<M> for ChainedHook<A, B>
Source§async fn on_completion_call(
&self,
prompt: &Message,
history: &[Message],
) -> HookAction
async fn on_completion_call( &self, prompt: &Message, history: &[Message], ) -> HookAction
Called before the prompt is sent to the model
Source§async fn on_completion_response(
&self,
prompt: &Message,
response: &CompletionResponse<M::Response>,
) -> HookAction
async fn on_completion_response( &self, prompt: &Message, response: &CompletionResponse<M::Response>, ) -> HookAction
Called after the prompt is sent to the model and a response is received.
Source§async fn on_tool_call(
&self,
tool_name: &str,
tool_call_id: Option<String>,
internal_call_id: &str,
args: &str,
) -> ToolCallHookAction
async fn on_tool_call( &self, tool_name: &str, tool_call_id: Option<String>, internal_call_id: &str, args: &str, ) -> ToolCallHookAction
Called before a tool is invoked. Read more
Source§async fn on_tool_result(
&self,
tool_name: &str,
tool_call_id: Option<String>,
internal_call_id: &str,
args: &str,
result: &str,
) -> HookAction
async fn on_tool_result( &self, tool_name: &str, tool_call_id: Option<String>, internal_call_id: &str, args: &str, result: &str, ) -> HookAction
Called after a tool is invoked (and a result has been returned).
Source§fn on_text_delta(
&self,
_text_delta: &str,
_aggregated_text: &str,
) -> impl Future<Output = HookAction> + Send
fn on_text_delta( &self, _text_delta: &str, _aggregated_text: &str, ) -> impl Future<Output = HookAction> + Send
Called when receiving a text delta (streaming responses only)
Source§fn on_tool_call_delta(
&self,
_tool_call_id: &str,
_internal_call_id: &str,
_tool_name: Option<&str>,
_tool_call_delta: &str,
) -> impl Future<Output = HookAction> + Send
fn on_tool_call_delta( &self, _tool_call_id: &str, _internal_call_id: &str, _tool_name: Option<&str>, _tool_call_delta: &str, ) -> impl Future<Output = HookAction> + Send
Called when receiving a tool call delta (streaming_responses_only).
tool_name is Some on the first delta for a tool call, None on subsequent deltas.Source§fn on_stream_completion_response_finish(
&self,
_prompt: &Message,
_response: &<M as CompletionModel>::StreamingResponse,
) -> impl Future<Output = HookAction> + Send
fn on_stream_completion_response_finish( &self, _prompt: &Message, _response: &<M as CompletionModel>::StreamingResponse, ) -> impl Future<Output = HookAction> + Send
Called after the model provider has finished streaming a text response from their completion API to the client.
Auto Trait Implementations§
impl<A, B> Freeze for ChainedHook<A, B>
impl<A, B> RefUnwindSafe for ChainedHook<A, B>where
A: RefUnwindSafe,
B: RefUnwindSafe,
impl<A, B> Send for ChainedHook<A, B>
impl<A, B> Sync for ChainedHook<A, B>
impl<A, B> Unpin for ChainedHook<A, B>
impl<A, B> UnsafeUnpin for ChainedHook<A, B>where
A: UnsafeUnpin,
B: UnsafeUnpin,
impl<A, B> UnwindSafe for ChainedHook<A, B>where
A: UnwindSafe,
B: 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