Struct Agent

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

Agents are the main interface for building agentic systems.

Construct agents by calling the builder, setting an llm, configure hooks, tools and other customizations.

§Important defaults

  • The default context is the DefaultContext, executing tools locally with the LocalExecutor.
  • A default stop tool is provided for agents to explicitly stop if needed
  • The default SystemPrompt instructs the agent with chain of thought and some common safeguards, but is otherwise quite bare. In a lot of cases this can be sufficient.

Implementations§

Source§

impl Agent

Source

pub fn builder() -> AgentBuilder

Build a new agent

Source

pub fn default_tools() -> HashSet<Box<dyn Tool>>

Default tools for the agent that it always includes Right now this is the stop tool, which allows the agent to stop itself.

Source

pub async fn query( &mut self, query: impl Into<Prompt>, ) -> Result<(), AgentError>

Run the agent with a user message. The agent will loop completions, make tool calls, until no new messages are available.

§Errors

Errors if anything goes wrong, see AgentError for more details.

Source

pub async fn query_once( &mut self, query: impl Into<Prompt>, ) -> Result<(), AgentError>

Run the agent with a user message once.

§Errors

Errors if anything goes wrong, see AgentError for more details.

Source

pub async fn run(&mut self) -> Result<(), AgentError>

Run the agent with without user message. The agent will loop completions, make tool calls, until no new messages are available.

§Errors

Errors if anything goes wrong, see AgentError for more details.

Source

pub async fn run_once(&mut self) -> Result<(), AgentError>

Run the agent with without user message. The agent will loop completions, make tool calls, until

§Errors

Errors if anything goes wrong, see AgentError for more details.

Source

pub async fn history(&self) -> Result<Vec<ChatMessage>, AgentError>

Retrieve the message history of the agent

§Errors

Error if the message history cannot be retrieved, e.g. if the context is not set up or a connection fails

Source

pub async fn add_message(&self, message: ChatMessage) -> Result<(), AgentError>

Add a message to the agent’s context

This will trigger a OnNewMessage hook if its present.

If you want to add a message without triggering the hook, use the context directly.

§Errors

Errors if the message cannot be added to the context. With the default in memory context that is not supposed to happen.

Source

pub async fn stop(&mut self, reason: impl Into<StopReason>)

Tell the agent to stop. It will finish it’s current loop and then stop.

Source

pub async fn stop_with_error(&mut self, error: &AgentError)

Source

pub fn context(&self) -> &dyn AgentContext

Access the agent’s context

Source

pub fn is_running(&self) -> bool

The agent is still running

Source

pub fn is_stopped(&self) -> bool

The agent stopped

Source

pub fn is_pending(&self) -> bool

The agent has not (ever) started

Source

pub fn tools(&self) -> &HashSet<Box<dyn Tool>>

Get a list of tools available to the agent

Source

pub fn state(&self) -> &State

Source

pub fn stop_reason(&self) -> Option<&StopReason>

Trait Implementations§

Source§

impl Clone for Agent

Source§

fn clone(&self) -> Agent

Returns a duplicate of the value. Read more
1.0.0 · Source§

const fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Agent

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl Freeze for Agent

§

impl !RefUnwindSafe for Agent

§

impl Send for Agent

§

impl Sync for Agent

§

impl Unpin for Agent

§

impl !UnwindSafe for Agent

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> DynClone for T
where T: Clone,

Source§

fn __clone_box(&self, _: Private) -> *mut ()

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> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
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<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

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
Source§

impl<T> ErasedDestructor for T
where T: 'static,