Skip to main content

ProgressiveTransformer

Struct ProgressiveTransformer 

Source
pub struct ProgressiveTransformer { /* private fields */ }
Expand description

A two-phase output transformer that returns an LLM-generated summary first, with the full output cached and available on demand via the __get_full_output virtual tool.

§Workflow

  1. Output arrives from a tool call.
  2. If output.len() <= max_summary_length → returned unchanged (no LLM call).
  3. If larger → LLM is called to summarize → summary returned + note appended.
  4. Full output cached internally keyed by tool_name.
  5. Agent can call __get_full_outputFullOutputRetriever serves it.

§Example

use traitclaw_core::transformers::ProgressiveTransformer;
use std::sync::Arc;

// let transformer = ProgressiveTransformer::new(provider.clone(), 500)
//     .with_summary_prompt("Give a one-sentence summary: {output}");

Implementations§

Source§

impl ProgressiveTransformer

Source

pub fn new(provider: Arc<dyn Provider>, max_summary_length: usize) -> Self

Create a new progressive transformer.

  • provider: LLM used to generate summaries.
  • max_summary_length: Outputs shorter than this are passed through unchanged.
Source

pub fn with_summary_prompt(self, prompt: impl Into<String>) -> Self

Override the summarization prompt template.

Use {output} as the placeholder for the tool output.

Source

pub fn retriever_tool(&self) -> FullOutputRetriever

Build a FullOutputRetriever that reads from this transformer’s cache.

Register this tool with the agent so the LLM can call __get_full_output.

Trait Implementations§

Source§

impl OutputTransformer for ProgressiveTransformer

Source§

fn transform<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, output: String, tool_name: &'life1 str, _state: &'life2 AgentState, ) -> Pin<Box<dyn Future<Output = String> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait,

Transform tool output, optionally using context about which tool produced it and the current agent state. Read more
Source§

fn estimate_output_tokens(&self, output: &str) -> usize

Estimate token count for a given output string. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more