Skip to main content

Prompt

Struct Prompt 

Source
#[non_exhaustive]
pub struct Prompt { pub tier: ModelTier, pub system: Option<String>, pub messages: Vec<Turn>, pub json_schema: Option<Value>, pub max_tokens: u32, pub tools: Vec<ToolSpec>, pub tool_choice: Option<ToolChoice>, }
Expand description

One completion request: the tier asked for, the conversation so far, and what the caller will accept back.

#[non_exhaustive]: build one with Prompt::new and the builder methods rather than a struct literal. What a v2 port has to carry — tools, temperature, a stop sequence — should not be a breaking change for every caller, the same way Message is built.

Fields (Non-exhaustive)§

This struct is marked as non-exhaustive
Non-exhaustive structs could have additional fields added in future. Therefore, non-exhaustive structs cannot be constructed in external crates using the traditional Struct { .. } syntax; cannot be matched against without a wildcard ..; and struct update syntax will not work.
§tier: ModelTier§system: Option<String>§messages: Vec<Turn>§json_schema: Option<Value>

A JSON Schema (draft 2020-12) the answer should conform to. When set, the adapter asks its provider for structured output; a provider that honours it fills Completion::json, and one that cannot leaves the raw answer in Completion::text with json None, rather than failing the call.

§max_tokens: u32§tools: Vec<ToolSpec>

The tools the model may call. Empty by default: a prompt that sends no tools behaves exactly as it did before tools existed, and an adapter is never asked to carry tools it was not given.

§tool_choice: Option<ToolChoice>

How the model should choose among Prompt::tools. None leaves the choice to the provider’s own default; the builder sets it.

Implementations§

Source§

impl Prompt

Source

pub fn new(tier: ModelTier) -> Self

An empty prompt for tier: no system prompt, no messages, no schema, no tools, and DEFAULT_MAX_TOKENS as the ceiling. Everything else is a builder method.

Source

pub fn tool(self, tool: ToolSpec) -> Self

Offers the model one more tool it may call.

Source

pub fn tools(self, tools: impl IntoIterator<Item = ToolSpec>) -> Self

Offers the model every tool in tools.

Source

pub fn tool_choice(self, tool_choice: ToolChoice) -> Self

Steers how the model chooses among the offered tools.

Source

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

The standing instruction the model answers under.

Source

pub fn user(self, content: impl Into<String>) -> Self

Appends a Turn::user — the common case, a one-message prompt.

Source

pub fn user_parts(self, parts: impl IntoIterator<Item = Part>) -> Self

Appends a Turn::user_parts — a user message carrying text and images in order (issue #628).

Source

pub fn assistant(self, content: impl Into<String>) -> Self

Appends a Turn::assistant.

Source

pub fn turn(self, turn: Turn) -> Self

Appends a whole turn, for a conversation built elsewhere.

Source

pub fn json_schema(self, schema: Value) -> Self

Asks for structured output conforming to schema; a successful completion then carries the parsed value in Completion::json.

Source

pub fn max_tokens(self, max_tokens: u32) -> Self

The token ceiling for the answer.

Source

pub fn has_images(&self) -> bool

Whether any turn carries an image Part (issue #628). The router and the tool loop gate Capability::Images on this, exactly as they gate Capability::Tools on Prompt::tools.

Source

pub fn check_images(&self) -> Result<(), TextModelError>

Refuses a prompt whose images exceed a bound (issue #628), without encoding anything: the count against MAX_PROMPT_IMAGES, each image’s encoded_image_len against MAX_IMAGE_ENCODED_BYTES, and their sum against MAX_PROMPT_IMAGE_ENCODED_BYTES.

§Errors

TextModelError::ImageLimit, naming which bound was crossed: ImageLimit::TooMany, ImageLimit::ImageTooLarge (with the 0-based index among the prompt’s images) or ImageLimit::TotalTooLarge.

Trait Implementations§

Source§

impl Clone for Prompt

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Debug for Prompt

Source§

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

Formats the value using the given formatter. Read more
Source§

impl PartialEq for Prompt

Source§

fn eq(&self, other: &Self) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl StructuralPartialEq for Prompt

Auto Trait Implementations§

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

Source§

fn from_ref(input: &T) -> T

Converts to this type from a reference to the input type.
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> 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 = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

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