pub struct BaseAgent<T: AgentDeriveT + AgentExecutor + AgentHooks + Send + Sync, A: AgentType> {
pub id: ActorID,
/* private fields */
}Expand description
Base agent type that wraps an AgentDeriveT implementation with additional runtime components
Fields§
§id: ActorIDAgent ID
Implementations§
Source§impl<T: AgentDeriveT + AgentExecutor + AgentHooks, A: AgentType> BaseAgent<T, A>
impl<T: AgentDeriveT + AgentExecutor + AgentHooks, A: AgentType> BaseAgent<T, A>
Sourcepub async fn new(
inner: T,
llm: Arc<dyn LLMProvider>,
memory: Option<Box<dyn MemoryProvider>>,
tx: Sender<Event>,
stream: bool,
) -> Result<Self, RunnableAgentError>
pub async fn new( inner: T, llm: Arc<dyn LLMProvider>, memory: Option<Box<dyn MemoryProvider>>, tx: Sender<Event>, stream: bool, ) -> Result<Self, RunnableAgentError>
Create a new BaseAgent wrapping an AgentDeriveT implementation
pub fn inner(&self) -> Arc<T> ⓘ
Sourcepub fn description(&self) -> &str
pub fn description(&self) -> &str
Get the agent’s description
pub fn serialized_tools(&self) -> Option<Arc<Vec<Tool>>>
pub fn stream(&self) -> bool
pub fn agent_config(&self) -> AgentConfig
Sourcepub fn llm(&self) -> Arc<dyn LLMProvider> ⓘ
pub fn llm(&self) -> Arc<dyn LLMProvider> ⓘ
Get the LLM provider
Source§impl<T: AgentDeriveT + AgentExecutor + AgentHooks> BaseAgent<T, ActorAgent>
impl<T: AgentDeriveT + AgentExecutor + AgentHooks> BaseAgent<T, ActorAgent>
pub fn tx(&self) -> Result<Sender<Event>, RunnableAgentError>
pub async fn run(
self: Arc<Self>,
task: Task,
) -> Result<<T as AgentDeriveT>::Output, RunnableAgentError>where
Value: From<<T as AgentExecutor>::Output>,
<T as AgentDeriveT>::Output: From<<T as AgentExecutor>::Output>,
<T as AgentExecutor>::Error: Into<RunnableAgentError>,
Sourcepub async fn run_stream(
self: Arc<Self>,
task: Task,
) -> Result<BoxRuntimeStream<Result<<T as AgentDeriveT>::Output, RunnableAgentError>>, RunnableAgentError>where
<T as AgentDeriveT>::Output: From<<T as AgentExecutor>::Output>,
<T as AgentExecutor>::Error: Into<RunnableAgentError>,
pub async fn run_stream(
self: Arc<Self>,
task: Task,
) -> Result<BoxRuntimeStream<Result<<T as AgentDeriveT>::Output, RunnableAgentError>>, RunnableAgentError>where
<T as AgentDeriveT>::Output: From<<T as AgentExecutor>::Output>,
<T as AgentExecutor>::Error: Into<RunnableAgentError>,
Return a live executor output stream without the full task lifecycle.
Event channel: Does not emit terminal protocol events (TaskComplete,
TaskError) on the agent event channel. In-stream failures appear only as Err
items on the returned stream. Lifecycle hooks (on_run_start, on_run_complete) are
also skipped.
Use Self::run_stream_to_completion when dispatching through a runtime, waiting on
TaskComplete / TaskError, or matching the pub/sub actor path (which calls
run_stream_to_completion internally).
Mid-run events (StreamChunk, tool-call events, etc.) may still be emitted by the
executor while the returned stream is polled.
Sourcepub async fn run_stream_to_completion(
self: Arc<Self>,
task: Task,
) -> Result<<T as AgentDeriveT>::Output, RunnableAgentError>where
Value: From<<T as AgentExecutor>::Output>,
<T as AgentDeriveT>::Output: From<<T as AgentExecutor>::Output>,
<T as AgentExecutor>::Error: Into<RunnableAgentError>,
pub async fn run_stream_to_completion(
self: Arc<Self>,
task: Task,
) -> Result<<T as AgentDeriveT>::Output, RunnableAgentError>where
Value: From<<T as AgentExecutor>::Output>,
<T as AgentDeriveT>::Output: From<<T as AgentExecutor>::Output>,
<T as AgentExecutor>::Error: Into<RunnableAgentError>,
Execute a streaming task to completion inside the actor, draining the stream and running lifecycle hooks before returning.
This is the event-aware streaming entry point: emits TaskError on hook abort,
stream setup failure, in-stream item errors, and empty streams; emits TaskComplete
on success. Pub/sub AgentActor dispatch uses this method when
stream() is enabled.
When the executor stream yields multiple successful outputs, only the
last item is used for TaskComplete and the returned agent output.
Intermediate items are not emitted as terminal events.
For incremental output without terminal events, see Self::run_stream.
Source§impl<T: AgentDeriveT + AgentExecutor + AgentHooks> BaseAgent<T, DirectAgent>
impl<T: AgentDeriveT + AgentExecutor + AgentHooks> BaseAgent<T, DirectAgent>
Sourcepub async fn run(
&self,
task: Task,
) -> Result<<T as AgentDeriveT>::Output, RunnableAgentError>where
Value: From<<T as AgentExecutor>::Output>,
<T as AgentDeriveT>::Output: From<<T as AgentExecutor>::Output>,
<T as AgentExecutor>::Output: Clone,
<T as AgentExecutor>::Error: Into<RunnableAgentError>,
pub async fn run(
&self,
task: Task,
) -> Result<<T as AgentDeriveT>::Output, RunnableAgentError>where
Value: From<<T as AgentExecutor>::Output>,
<T as AgentDeriveT>::Output: From<<T as AgentExecutor>::Output>,
<T as AgentExecutor>::Output: Clone,
<T as AgentExecutor>::Error: Into<RunnableAgentError>,
Execute the agent for a single task and return the final agent output.
Sourcepub async fn run_stream(
&self,
task: Task,
) -> Result<BoxRuntimeStream<Result<<T as AgentDeriveT>::Output, Error>>, RunnableAgentError>where
Value: From<<T as AgentExecutor>::Output>,
<T as AgentDeriveT>::Output: From<<T as AgentExecutor>::Output>,
<T as AgentExecutor>::Output: Clone,
<T as AgentExecutor>::Error: Into<RunnableAgentError>,
pub async fn run_stream(
&self,
task: Task,
) -> Result<BoxRuntimeStream<Result<<T as AgentDeriveT>::Output, Error>>, RunnableAgentError>where
Value: From<<T as AgentExecutor>::Output>,
<T as AgentDeriveT>::Output: From<<T as AgentExecutor>::Output>,
<T as AgentExecutor>::Output: Clone,
<T as AgentExecutor>::Error: Into<RunnableAgentError>,
Execute the agent with streaming enabled and receive a stream of
partial outputs which culminate in a final chunk with done=true.
Trait Implementations§
Source§impl<T: Clone + AgentDeriveT + AgentExecutor + AgentHooks + Send + Sync, A: Clone + AgentType> Clone for BaseAgent<T, A>
impl<T: Clone + AgentDeriveT + AgentExecutor + AgentHooks + Send + Sync, A: Clone + AgentType> Clone for BaseAgent<T, A>
Source§impl<T: AgentDeriveT + AgentExecutor + AgentHooks, A: AgentType> Debug for BaseAgent<T, A>
impl<T: AgentDeriveT + AgentExecutor + AgentHooks, A: AgentType> Debug for BaseAgent<T, A>
Auto Trait Implementations§
impl<T, A> !RefUnwindSafe for BaseAgent<T, A>
impl<T, A> !UnwindSafe for BaseAgent<T, A>
impl<T, A> Freeze for BaseAgent<T, A>
impl<T, A> Send for BaseAgent<T, A>
impl<T, A> Sync for BaseAgent<T, A>
impl<T, A> Unpin for BaseAgent<T, A>where
A: Unpin,
impl<T, A> UnsafeUnpin for BaseAgent<T, A>
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§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