Struct LlmTextAgent
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§
§impl LlmTextAgent
impl LlmTextAgent
pub 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.
pub fn instruction(self, inst: impl Into<String>) -> LlmTextAgent
pub fn instruction(self, inst: impl Into<String>) -> LlmTextAgent
Set the system instruction.
pub fn tools(self, dispatcher: Arc<ToolDispatcher>) -> LlmTextAgent
pub fn tools(self, dispatcher: Arc<ToolDispatcher>) -> LlmTextAgent
Set the tool dispatcher.
pub fn temperature(self, t: f32) -> LlmTextAgent
pub fn temperature(self, t: f32) -> LlmTextAgent
Set temperature.
pub fn max_output_tokens(self, n: u32) -> LlmTextAgent
pub fn max_output_tokens(self, n: u32) -> LlmTextAgent
Set max output tokens.
pub 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).
pub 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§
§impl TextAgent for LlmTextAgent
impl TextAgent for LlmTextAgent
§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.