Skip to main content

CompletionRequestBuilder

Struct CompletionRequestBuilder 

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

Builder struct for constructing a completion request.

Example usage:

use rig::{
    providers::openai::{Client, self},
    completion::CompletionRequestBuilder,
};

let openai = Client::new("your-openai-api-key");
let model = openai.completion_model(openai::GPT_4O).build();

// Create the completion request and execute it separately
let request = CompletionRequestBuilder::new(model, "Who are you?".to_string())
    .preamble("You are Marvin from the Hitchhiker's Guide to the Galaxy.".to_string())
    .temperature(0.5)
    .build();

let response = model.completion(request)
    .await
    .expect("Failed to get completion response");

Alternatively, you can execute the completion request directly from the builder:

use rig::{
    providers::openai::{Client, self},
    completion::CompletionRequestBuilder,
};

let openai = Client::new("your-openai-api-key");
let model = openai.completion_model(openai::GPT_4O).build();

// Create the completion request and execute it directly
let response = CompletionRequestBuilder::new(model, "Who are you?".to_string())
    .preamble("You are Marvin from the Hitchhiker's Guide to the Galaxy.".to_string())
    .temperature(0.5)
    .send()
    .await
    .expect("Failed to get completion response");

Note: It is usually unnecessary to create a completion request builder directly. Instead, use the CompletionModel::completion_request method.

Implementations§

Source§

impl<M> CompletionRequestBuilder<M>
where M: CompletionModel,

Source

pub fn new(model: M, prompt: impl Into<Message>) -> CompletionRequestBuilder<M>

Source

pub fn preamble(self, preamble: String) -> CompletionRequestBuilder<M>

Sets the preamble for the completion request.

Source

pub fn model(self, model: impl Into<String>) -> CompletionRequestBuilder<M>

Overrides the model used for this request.

Source

pub fn model_opt(self, model: Option<String>) -> CompletionRequestBuilder<M>

Overrides the model used for this request.

Source

pub fn without_preamble(self) -> CompletionRequestBuilder<M>

Source

pub fn message(self, message: Message) -> CompletionRequestBuilder<M>

Adds a message to the chat history for the completion request.

Source

pub fn messages(self, messages: Vec<Message>) -> CompletionRequestBuilder<M>

Adds a list of messages to the chat history for the completion request.

Source

pub fn document(self, document: Document) -> CompletionRequestBuilder<M>

Adds a document to the completion request.

Source

pub fn documents(self, documents: Vec<Document>) -> CompletionRequestBuilder<M>

Adds a list of documents to the completion request.

Source

pub fn tool(self, tool: ToolDefinition) -> CompletionRequestBuilder<M>

Adds a tool to the completion request.

Source

pub fn tools(self, tools: Vec<ToolDefinition>) -> CompletionRequestBuilder<M>

Adds a list of tools to the completion request.

Source

pub fn additional_params( self, additional_params: Value, ) -> CompletionRequestBuilder<M>

Adds additional parameters to the completion request. This can be used to set additional provider-specific parameters. For example, Cohere’s completion models accept a connectors parameter that can be used to specify the data connectors used by Cohere when executing the completion (see examples/cohere_connectors.rs).

Source

pub fn additional_params_opt( self, additional_params: Option<Value>, ) -> CompletionRequestBuilder<M>

Sets the additional parameters for the completion request. This can be used to set additional provider-specific parameters. For example, Cohere’s completion models accept a connectors parameter that can be used to specify the data connectors used by Cohere when executing the completion (see examples/cohere_connectors.rs).

Source

pub fn temperature(self, temperature: f64) -> CompletionRequestBuilder<M>

Sets the temperature for the completion request.

Source

pub fn temperature_opt( self, temperature: Option<f64>, ) -> CompletionRequestBuilder<M>

Sets the temperature for the completion request.

Source

pub fn max_tokens(self, max_tokens: u64) -> CompletionRequestBuilder<M>

Sets the max tokens for the completion request. Note: This is required if using Anthropic

Source

pub fn max_tokens_opt( self, max_tokens: Option<u64>, ) -> CompletionRequestBuilder<M>

Sets the max tokens for the completion request. Note: This is required if using Anthropic

Source

pub fn tool_choice(self, tool_choice: ToolChoice) -> CompletionRequestBuilder<M>

Sets the thing.

Source

pub fn output_schema(self, schema: Schema) -> CompletionRequestBuilder<M>

Sets the output schema for structured output. When set, providers that support native structured outputs will constrain the model’s response to match this schema. NOTE: For direct type conversion, you may want to use Agent::prompt_typed() - using this method with Agent::prompt() will still output a String at the end, it’ll just be compatible with whatever type you want to use here. This method is primarily an escape hatch for agents being used as tools to still be able to leverage structured outputs.

Source

pub fn output_schema_opt( self, schema: Option<Schema>, ) -> CompletionRequestBuilder<M>

Sets the output schema for structured output from an optional value. NOTE: For direct type conversion, you may want to use Agent::prompt_typed() - using this method with Agent::prompt() will still output a String at the end, it’ll just be compatible with whatever type you want to use here. This method is primarily an escape hatch for agents being used as tools to still be able to leverage structured outputs.

Source

pub fn build(self) -> CompletionRequest

Builds the completion request.

Source

pub async fn send( self, ) -> Result<CompletionResponse<<M as CompletionModel>::Response>, CompletionError>

Sends the completion request to the completion model provider and returns the completion response.

Source

pub async fn stream<'a>( self, ) -> Result<StreamingCompletionResponse<<M as CompletionModel>::StreamingResponse>, CompletionError>

Stream the completion request

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

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: 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: 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, 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> 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> WasmCompatSend for T
where T: Send,

Source§

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