Skip to main content

PromptRequest

Struct PromptRequest 

Source
pub struct PromptRequest<S, M>
where S: PromptType, M: CompletionModel,
{ /* private fields */ }
Expand description

A builder for creating prompt requests with customizable options. Uses generics to track which options have been set during the build process.

When the agent has no configured default_max_turns, the implicit budget is one model call. Use .max_turns() to override the agent’s configured or implicit budget; a tool call followed by a model-authored final answer generally requires at least two model calls.

Implementations§

Source§

impl<M> PromptRequest<Standard, M>
where M: CompletionModel,

Source

pub fn from_agent(agent: &Agent<M>, prompt: impl Into<Message>) -> Self

Create a new PromptRequest from an agent, cloning the agent’s data and default hook stack.

Source§

impl<S, M> PromptRequest<S, M>
where S: PromptType, M: CompletionModel,

Source

pub fn extended_details(self) -> PromptRequest<Extended, M>

Enable returning extended details for responses (includes aggregated token usage and the full message history accumulated during the agent loop).

Note: This changes the type of the response from .send to return a PromptResponse struct instead of a simple String. This is useful for tracking token usage across multiple turns of conversation and inspecting the full message exchange.

Source

pub fn max_turns(self, max_turns: usize) -> Self

Set the total model-call budget, including the initial call and every retry or continuation. Zero emits no model calls; one permits only the initial call. Exceeding the budget returns crate::completion::request::PromptError::MaxTurnsError.

Source

pub fn add_hook<H>(self, hook: H) -> Self
where H: AgentHook<M> + 'static,

Append a hook for this request (on top of any the agent already carries). Hooks run in registration order; how their results compose is event-dependent (CompletionCall request patches accumulate and merge, ToolCall/ToolResult rewrites chain, and only observe-only/recovery events use first-non-Continue-wins). See the hook module docs.

Source

pub fn tool_extensions(self, extensions: ToolCallExtensions) -> Self

Attach a per-call ToolCallExtensions for this request.

Every tool the agent executes during this request can read the caller-provided values (auth tokens, session IDs, conversation state, …) via Tool::call_with_extensions, without the model ever seeing them.

Source

pub fn history<H, Item>(self, history: H) -> Self
where H: IntoIterator<Item = Item>, Item: Into<Message>,

Add chat history to the prompt request.

Source

pub fn conversation(self, id: impl Into<String>) -> Self

Set the conversation id used to load and persist memory for this request.

Overrides any default conversation id set on the agent. If memory is not configured on the agent, this has no effect.

Source

pub fn without_memory(self) -> Self

Disable conversation memory for this request.

History will neither be loaded from nor saved to the agent’s memory backend.

Source

pub fn max_invalid_tool_call_retries(self, retries: usize) -> Self

Set the retry budget for invalid tool-call recovery.

Invalid tool-call retries also consume the total model-call budget.

Source

pub fn tool_concurrency(self, concurrency: usize) -> Self

Execute up to concurrency of a turn’s tool calls at once.

See AgentRunner::tool_concurrency for ordering guarantees: the tool batch commits and surfaces atomically, so persisted history and streamed tool results are both in tool-call order (results are surfaced only after the whole batch settles successfully).

Trait Implementations§

Source§

impl<M> IntoFuture for PromptRequest<Standard, M>
where M: CompletionModel + 'static,

Due to: RFC 2515, we have to use a BoxFuture for the IntoFuture implementation. In the future, we should be able to use impl Future<...> directly via the associated type.

Source§

type Output = Result<String, PromptError>

The output that the future will produce on completion.
Source§

type IntoFuture = Pin<Box<dyn Future<Output = <PromptRequest<Standard, M> as IntoFuture>::Output> + Send>>

Which kind of future are we turning this into?
Source§

fn into_future(self) -> Self::IntoFuture

Creates a future from a value. Read more
Source§

impl<M> IntoFuture for PromptRequest<Extended, M>
where M: CompletionModel + 'static,

Source§

type Output = Result<PromptResponse, PromptError>

The output that the future will produce on completion.
Source§

type IntoFuture = Pin<Box<dyn Future<Output = <PromptRequest<Extended, M> as IntoFuture>::Output> + Send>>

Which kind of future are we turning this into?
Source§

fn into_future(self) -> Self::IntoFuture

Creates a future from a value. Read more

Auto Trait Implementations§

§

impl<S, M> !RefUnwindSafe for PromptRequest<S, M>

§

impl<S, M> !UnwindSafe for PromptRequest<S, M>

§

impl<S, M> Freeze for PromptRequest<S, M>

§

impl<S, M> Send for PromptRequest<S, M>
where S: Send,

§

impl<S, M> Sync for PromptRequest<S, M>
where S: Sync,

§

impl<S, M> Unpin for PromptRequest<S, M>
where S: Unpin,

§

impl<S, M> UnsafeUnpin for PromptRequest<S, M>

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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

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> 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> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
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> WasmCompatSend for T
where T: Send,

Source§

impl<T> WasmCompatSync for T
where T: Sync,

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