pub struct LlmTextAgent { /* private fields */ }Expand description
Core text agent — calls BaseLlm::generate(), dispatches tools, loops
until the model produces a final text response.
Middleware hooks fire at each lifecycle point:
before_model/after_model— wraps eachBaseLlm::generate()call;before_modelmay return a cached response to skip the LLM entirely.before_tool/after_tool/on_tool_error— wraps each tool dispatch.on_error— called whenrun()is about to return an error.
Note: before_agent/after_agent are Live-session hooks that require an
InvocationContext (a Live WebSocket concept) and are therefore not invoked
by LlmTextAgent. Use before_model or wrap in a custom TextAgent if you
need entry/exit hooks for the text path.
Implementations§
Source§impl LlmTextAgent
impl LlmTextAgent
Sourcepub fn new(name: impl Into<String>, llm: Arc<dyn BaseLlm>) -> LlmTextAgent
pub fn new(name: impl Into<String>, llm: Arc<dyn BaseLlm>) -> LlmTextAgent
Create a new LLM text agent.
Sourcepub fn instruction(self, inst: impl Into<String>) -> LlmTextAgent
pub fn instruction(self, inst: impl Into<String>) -> LlmTextAgent
Set the system instruction.
Sourcepub fn instruction_provider(
self,
provider: impl InstructionProvider + 'static,
) -> LlmTextAgent
pub fn instruction_provider( self, provider: impl InstructionProvider + 'static, ) -> LlmTextAgent
Set a dynamic instruction source — an
InstructionProvider
(any Fn(&State) -> String closure, or a TemplateInstruction
under the templates feature) resolved against session state at
the start of every run. Wins over instruction.
Sourcepub fn llm_provider<F>(self, provider: F) -> LlmTextAgent
pub fn llm_provider<F>(self, provider: F) -> LlmTextAgent
Set a dynamic model source, resolved against session state at the start of every run — risk-based escalation to a stronger model, cost routing to a cheaper one, per-tenant model selection — without rebuilding the agent. Wins over the constructor’s model when set.
Sourcepub fn tools(self, dispatcher: Arc<ToolDispatcher>) -> LlmTextAgent
pub fn tools(self, dispatcher: Arc<ToolDispatcher>) -> LlmTextAgent
Set the tool dispatcher.
Sourcepub fn temperature(self, t: f32) -> LlmTextAgent
pub fn temperature(self, t: f32) -> LlmTextAgent
Set temperature.
Sourcepub fn max_output_tokens(self, n: u32) -> LlmTextAgent
pub fn max_output_tokens(self, n: u32) -> LlmTextAgent
Set max output tokens.
Sourcepub fn add_middleware(self, mw: Arc<dyn Middleware>) -> LlmTextAgent
pub fn add_middleware(self, mw: Arc<dyn Middleware>) -> LlmTextAgent
Append a middleware layer to the chain.
Layers are run in insertion order for before_* / on_error hooks
and in reverse insertion order for after_* hooks (outermost last).
Sourcepub fn with_middleware_chain(self, chain: MiddlewareChain) -> LlmTextAgent
pub fn with_middleware_chain(self, chain: MiddlewareChain) -> LlmTextAgent
Replace the entire middleware chain (advanced — prefer add_middleware).
Trait Implementations§
Source§impl TextAgent for LlmTextAgent
impl TextAgent for LlmTextAgent
Source§fn run<'life0, 'life1, 'async_trait>(
&'life0 self,
state: &'life1 State,
) -> Pin<Box<dyn Future<Output = Result<String, AgentError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
LlmTextAgent: 'async_trait,
fn run<'life0, 'life1, 'async_trait>(
&'life0 self,
state: &'life1 State,
) -> Pin<Box<dyn Future<Output = Result<String, AgentError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
LlmTextAgent: 'async_trait,
state. Returns the final text output.Auto Trait Implementations§
impl Freeze for LlmTextAgent
impl !RefUnwindSafe for LlmTextAgent
impl Send for LlmTextAgent
impl Sync for LlmTextAgent
impl Unpin for LlmTextAgent
impl !UnwindSafe for LlmTextAgent
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
§impl<S> FromSample<S> for S
impl<S> FromSample<S> for S
fn from_sample_(s: S) -> S
§impl<T> FutureExt for T
impl<T> FutureExt for T
§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
§impl<T> FutureExt for T
impl<T> FutureExt for T
§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§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>
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>
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§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::Request§impl<L> LayerExt<L> for L
impl<L> LayerExt<L> for L
§fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
Layered].