Skip to main content

LanguageModelRequest

Struct LanguageModelRequest 

Source
pub struct LanguageModelRequest<M>
where M: LanguageModel,
{ pub model: M, pub prompt: Option<String>, /* private fields */ }
Expand description

Options for text generation requests such as generate_text and stream_text.

Fields§

§model: M

The language model to use for text generation.

§prompt: Option<String>

An optional simple text prompt for the request.

This should not be set if messages are provided in the options.

Implementations§

Source§

impl<M> LanguageModelRequest<M>
where M: LanguageModel,

Source

pub async fn generate_text(&mut self) -> Result<GenerateTextResponse, Error>

Generates text and executes tools using the language model.

This method performs non-streaming text generation, potentially involving multiple steps of tool calling and execution until the conversation reaches a natural stopping point. The model may call tools based on the configured options, and responses are processed iteratively until completion.

For streaming responses, use stream_text instead.

§Returns

A GenerateTextResponse containing the final conversation state and generated content.

§Errors

Returns an Error if the underlying language model fails to generate a response or if tool execution encounters an error.

§Examples
   use aisdk::{
       core::{LanguageModelRequest},
       providers::OpenAI,
   };

   async fn main() -> Result<(), Box<dyn std::error::Error>> {

       let openai = OpenAI::gpt_5();

       let result = LanguageModelRequest::builder()
           .model(openai)
           .prompt("What is the meaning of life?")
           .build()
           .generate_text()
           .await?;

       println!("{}", result.text().unwrap());
       Ok(())
   }
Source§

impl<M> LanguageModelRequest<M>
where M: LanguageModel,

Source

pub fn builder() -> LanguageModelRequestBuilder<M>

Creates a new builder for constructing a LanguageModelRequest.

This method initiates the type-state builder pattern, starting with the ModelStage where you must specify the language model.

Source§

impl<M> LanguageModelRequest<M>
where M: LanguageModel,

Source

pub async fn stream_text(&mut self) -> Result<StreamTextResponse, Error>

Streams text generation and tool execution using the language model.

This method performs streaming text generation, providing real-time access to response chunks as they are produced. It supports tool calling and execution in multiple steps, streaming intermediate results and handling tool interactions dynamically.

For non-streaming responses, use generate_text instead.

§Returns

A StreamTextResponse containing the stream of chunks and final conversation state.

§Errors

Returns an Error if the underlying language model fails to generate a response or if tool execution encounters an error.

§Examples
   use aisdk::{
       core::{LanguageModelRequest, LanguageModelStreamChunkType},
       providers::OpenAI,
   };
   use futures::StreamExt;

   async fn main() -> Result<(), Box<dyn std::error::Error>> {

       let openai = OpenAI::gpt_5();

       let mut stream = LanguageModelRequest::builder()
           .model(openai)
           .prompt("What is the meaning of life?")
           .build()
           .stream_text()
           .await?
           .stream;

        while let Some(chunk) = stream.next().await {
            if let LanguageModelStreamChunkType::Text(text) = chunk {
                println!("{}", text);
            }
        }
       
       Ok(())
   }

Methods from Deref<Target = LanguageModelOptions>§

Source

pub fn messages(&self) -> Vec<Message>

Returns a vector of all messages in the conversation.

Source

pub fn step(&self, index: usize) -> Option<Step>

Returns the step with the given index, if it exists.

Source

pub fn last_step(&self) -> Option<Step>

Returns the most recent step, if any.

Source

pub fn steps(&self) -> Vec<Step>

Returns all steps in chronological order.

Source

pub fn usage(&self) -> Usage

Calculates the total token usage across all steps.

Source

pub fn content(&self) -> Option<&LanguageModelResponseContentType>

Returns the content of the last assistant message, excluding reasoning.

Source

pub fn text(&self) -> Option<String>

Returns the text content of the last assistant message.

Source

pub fn tool_results(&self) -> Option<Vec<ToolResultInfo>>

Extracts all tool results from the conversation.

Source

pub fn tool_calls(&self) -> Option<Vec<ToolCallInfo>>

Extracts all tool calls from the conversation.

Source

pub fn stop_reason(&self) -> Option<StopReason>

Returns the reason why generation stopped.

Trait Implementations§

Source§

impl<M> Debug for LanguageModelRequest<M>
where M: Debug + LanguageModel,

Source§

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

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

impl<M> Deref for LanguageModelRequest<M>
where M: LanguageModel,

Source§

type Target = LanguageModelOptions

The resulting type after dereferencing.
Source§

fn deref(&self) -> &<LanguageModelRequest<M> as Deref>::Target

Dereferences the value.
Source§

impl<M> DerefMut for LanguageModelRequest<M>
where M: LanguageModel,

Source§

fn deref_mut(&mut self) -> &mut <LanguageModelRequest<M> as Deref>::Target

Mutably dereferences the value.

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, 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: Sized + 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: Sized + 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<P, T> Receiver for P
where P: Deref<Target = T> + ?Sized, T: ?Sized,

Source§

type Target = T

🔬This is a nightly-only experimental API. (arbitrary_self_types)
The target type on which the method may be called.
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<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