Skip to main content

CompletionRequestBuilder

Struct CompletionRequestBuilder 

Source
pub struct CompletionRequestBuilder<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: CompletionModel> CompletionRequestBuilder<M>

Source

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

Source

pub fn preamble(self, preamble: String) -> Self

Sets the preamble for the completion request.

Source

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

Overrides the model used for this request.

Source

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

Overrides the model used for this request.

Source

pub fn without_preamble(self) -> Self

Source

pub fn message(self, message: Message) -> Self

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

Source

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

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

Source

pub fn document(self, document: Document) -> Self

Adds a document to the completion request.

Source

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

Adds a list of documents to the completion request.

Source

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

Adds a tool to the completion request.

Source

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

Adds a list of tools to the completion request.

Source

pub fn additional_params(self, additional_params: Value) -> Self

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

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

Sets the temperature for the completion request.

Source

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

Sets the temperature for the completion request.

Source

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

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

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

Source

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

Sets the thing.

Source

pub fn output_schema(self, schema: Schema) -> Self

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

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::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::StreamingResponse>, CompletionError>
where <M as CompletionModel>::StreamingResponse: 'a, Self: 'a,

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