pub struct StreamingPromptRequest<M, P>where
M: CompletionModel,
P: PromptHook<M> + 'static,{ /* 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.
If you expect to continuously call tools, you will want to ensure you use the .multi_turn()
argument to add more turns as by default, it is 0 (meaning only 1 tool round-trip). Otherwise,
attempting to await (which will send the prompt request) can potentially return
crate::completion::request::PromptError::MaxDepthError
if the agent decides to call tools
back to back.
Implementations§
Source§impl<M, P> StreamingPromptRequest<M, P>where
M: CompletionModel + 'static,
<M as CompletionModel>::StreamingResponse: Send + GetTokenUsage,
P: PromptHook<M>,
impl<M, P> StreamingPromptRequest<M, P>where
M: CompletionModel + 'static,
<M as CompletionModel>::StreamingResponse: Send + GetTokenUsage,
P: PromptHook<M>,
Sourcepub fn new(agent: Arc<Agent<M>>, prompt: impl Into<Message>) -> Self
pub fn new(agent: Arc<Agent<M>>, prompt: impl Into<Message>) -> Self
Create a new PromptRequest with the given prompt and model
Sourcepub fn multi_turn(self, depth: usize) -> Self
pub fn multi_turn(self, depth: usize) -> Self
Set the maximum depth for multi-turn conversations (ie, the maximum number of turns an LLM can have calling tools before writing a text response).
If the maximum turn number is exceeded, it will return a crate::completion::request::PromptError::MaxDepthError
.
Sourcepub fn with_history(self, history: Vec<Message>) -> Self
pub fn with_history(self, history: Vec<Message>) -> Self
Add chat history to the prompt request
Sourcepub fn with_hook<P2>(self, hook: P2) -> StreamingPromptRequest<M, P2>where
P2: PromptHook<M>,
pub fn with_hook<P2>(self, hook: P2) -> StreamingPromptRequest<M, P2>where
P2: PromptHook<M>,
Attach a per-request hook for tool call events
Trait Implementations§
Source§impl<M, P> IntoFuture for StreamingPromptRequest<M, P>where
M: CompletionModel + 'static,
<M as CompletionModel>::StreamingResponse: Send,
P: PromptHook<M> + 'static,
impl<M, P> IntoFuture for StreamingPromptRequest<M, P>where
M: CompletionModel + 'static,
<M as CompletionModel>::StreamingResponse: Send,
P: PromptHook<M> + 'static,
Source§type Output = Pin<Box<dyn Stream<Item = Result<MultiTurnStreamItem, StreamingError>> + Send>>
type Output = Pin<Box<dyn Stream<Item = Result<MultiTurnStreamItem, StreamingError>> + Send>>
Source§type IntoFuture = Pin<Box<dyn Future<Output = <StreamingPromptRequest<M, P> as IntoFuture>::Output> + Send>>
type IntoFuture = Pin<Box<dyn Future<Output = <StreamingPromptRequest<M, P> as IntoFuture>::Output> + Send>>
Source§fn into_future(self) -> Self::IntoFuture
fn into_future(self) -> Self::IntoFuture
Auto Trait Implementations§
impl<M, P> Freeze for StreamingPromptRequest<M, P>where
P: Freeze,
impl<M, P> !RefUnwindSafe for StreamingPromptRequest<M, P>
impl<M, P> Send for StreamingPromptRequest<M, P>
impl<M, P> Sync for StreamingPromptRequest<M, P>
impl<M, P> Unpin for StreamingPromptRequest<M, P>where
P: Unpin,
impl<M, P> !UnwindSafe for StreamingPromptRequest<M, P>
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> 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