pub struct PromptRequest<'a, S, M, P>where
S: PromptType,
M: CompletionModel,
P: PromptHook<M>,{ /* 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<'a, M> PromptRequest<'a, Standard, M, ()>where
M: CompletionModel,
impl<'a, M> PromptRequest<'a, Standard, M, ()>where
M: CompletionModel,
Source§impl<'a, S, M, P> PromptRequest<'a, S, M, P>where
S: PromptType,
M: CompletionModel,
P: PromptHook<M>,
impl<'a, S, M, P> PromptRequest<'a, S, M, P>where
S: PromptType,
M: CompletionModel,
P: PromptHook<M>,
Sourcepub fn extended_details(self) -> PromptRequest<'a, Extended, M, P>
pub fn extended_details(self) -> PromptRequest<'a, Extended, M, P>
Enable returning extended details for responses (includes aggregated token usage)
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.
Sourcepub fn multi_turn(self, depth: usize) -> PromptRequest<'a, S, M, P>
pub fn multi_turn(self, depth: usize) -> PromptRequest<'a, S, M, P>
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: &'a mut Vec<Message>,
) -> PromptRequest<'a, S, M, P>
pub fn with_history( self, history: &'a mut Vec<Message>, ) -> PromptRequest<'a, S, M, P>
Add chat history to the prompt request
Sourcepub fn with_hook<P2>(self, hook: P2) -> PromptRequest<'a, S, M, P2>where
P2: PromptHook<M>,
pub fn with_hook<P2>(self, hook: P2) -> PromptRequest<'a, S, M, P2>where
P2: PromptHook<M>,
Attach a per-request hook for tool call events
Trait Implementations§
Source§impl<'a, M, P> IntoFuture for PromptRequest<'a, Extended, M, P>where
M: CompletionModel,
P: PromptHook<M> + 'static,
impl<'a, M, P> IntoFuture for PromptRequest<'a, Extended, M, P>where
M: CompletionModel,
P: PromptHook<M> + 'static,
Source§type Output = Result<PromptResponse, PromptError>
type Output = Result<PromptResponse, PromptError>
Source§type IntoFuture = Pin<Box<dyn Future<Output = <PromptRequest<'a, Extended, M, P> as IntoFuture>::Output> + Send + 'a>>
type IntoFuture = Pin<Box<dyn Future<Output = <PromptRequest<'a, Extended, M, P> as IntoFuture>::Output> + Send + 'a>>
Source§fn into_future(self) -> Self::IntoFuture
fn into_future(self) -> Self::IntoFuture
Source§impl<'a, M, P> IntoFuture for PromptRequest<'a, Standard, M, P>where
M: CompletionModel,
P: PromptHook<M> + '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.
impl<'a, M, P> IntoFuture for PromptRequest<'a, Standard, M, P>where
M: CompletionModel,
P: PromptHook<M> + '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>
type Output = Result<String, PromptError>
Source§type IntoFuture = Pin<Box<dyn Future<Output = <PromptRequest<'a, Standard, M, P> as IntoFuture>::Output> + Send + 'a>>
type IntoFuture = Pin<Box<dyn Future<Output = <PromptRequest<'a, Standard, M, P> as IntoFuture>::Output> + Send + 'a>>
Source§fn into_future(self) -> Self::IntoFuture
fn into_future(self) -> Self::IntoFuture
Auto Trait Implementations§
impl<'a, S, M, P> Freeze for PromptRequest<'a, S, M, P>where
P: Freeze,
impl<'a, S, M, P> !RefUnwindSafe for PromptRequest<'a, S, M, P>
impl<'a, S, M, P> Send for PromptRequest<'a, S, M, P>where
S: Send,
impl<'a, S, M, P> Sync for PromptRequest<'a, S, M, P>where
S: Sync,
impl<'a, S, M, P> Unpin for PromptRequest<'a, S, M, P>
impl<'a, S, M, P> !UnwindSafe for PromptRequest<'a, S, 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