Model

Struct Model 

Source
pub struct Model { /* private fields */ }
Expand description

The object used to interact with the model. This can be used with many varietes of models,
and as such may be created with one of:

Implementations§

Source§

impl Model

Source

pub fn new(runner: Arc<MistralRs>) -> Self

Source

pub async fn stream_chat_request<R: RequestLike>( &self, request: R, ) -> Result<Stream<'_>>

Generate with the model (streaming).

Source

pub async fn stream_chat_request_with_model<R: RequestLike>( &self, request: R, model_id: Option<&str>, ) -> Result<Stream<'_>>

Generate with a specific model (streaming). If model_id is None, the request is sent to the default model.

Source

pub async fn send_chat_request<R: RequestLike>( &self, request: R, ) -> Result<ChatCompletionResponse>

Generate with the model (non-streaming).

Source

pub async fn send_chat_request_with_model<R: RequestLike>( &self, request: R, model_id: Option<&str>, ) -> Result<ChatCompletionResponse>

Send a chat request to a specific model. If model_id is None, the request is sent to the default model.

Source

pub async fn send_raw_chat_request<R: RequestLike>( &self, request: R, ) -> Result<(Vec<Tensor>, Vec<u32>)>

Generate with the model, returning raw logits of the first token generated.

Returns the chunks of the logits (1 or more, determined by prompt batchsize) and the tokens.

Source

pub async fn send_raw_chat_request_with_model<R: RequestLike>( &self, request: R, model_id: Option<&str>, ) -> Result<(Vec<Tensor>, Vec<u32>)>

Generate with a specific model, returning raw logits of the first token generated. If model_id is None, the request is sent to the default model.

Source

pub async fn generate_image( &self, prompt: impl ToString, response_format: ImageGenerationResponseFormat, generation_params: DiffusionGenerationParams, ) -> Result<ImageGenerationResponse>

Generate an image using the default model.

Source

pub async fn generate_image_with_model( &self, prompt: impl ToString, response_format: ImageGenerationResponseFormat, generation_params: DiffusionGenerationParams, model_id: Option<&str>, ) -> Result<ImageGenerationResponse>

Generate an image using a specific model. If model_id is None, the request is sent to the default model.

Source

pub async fn generate_speech( &self, prompt: impl ToString, ) -> Result<(Arc<Vec<f32>>, usize, usize)>

Generate audio given a (model specific) prompt.

This returns: (pcm, sampling rate, channels)

Source

pub async fn generate_speech_with_model( &self, prompt: impl ToString, model_id: Option<&str>, ) -> Result<(Arc<Vec<f32>>, usize, usize)>

Generate audio given a (model specific) prompt using a specific model. If model_id is None, the request is sent to the default model.

This returns: (pcm, sampling rate, channels)

Source

pub async fn generate_embeddings( &self, request: EmbeddingRequestBuilder, ) -> Result<Vec<Vec<f32>>>

Generate embeddings for one or more inputs configured via an EmbeddingRequestBuilder.

Returns one embedding vector per input in the same order they were added.

Source

pub async fn generate_embeddings_with_model( &self, request: EmbeddingRequestBuilder, model_id: Option<&str>, ) -> Result<Vec<Vec<f32>>>

Generate embeddings for one or more inputs using a specific model. If model_id is None, the request is sent to the default model.

Returns one embedding vector per input in the same order they were added.

Source

pub async fn generate_embedding( &self, prompt: impl ToString, ) -> Result<Vec<f32>>

Convenience wrapper for generating a single embedding.

Source

pub async fn generate_embedding_with_model( &self, prompt: impl ToString, model_id: Option<&str>, ) -> Result<Vec<f32>>

Convenience wrapper for generating a single embedding using a specific model. If model_id is None, the request is sent to the default model.

Source

pub async fn re_isq_model(&self, isq_type: IsqType) -> Result<()>

Reapply ISQ to the model. This will be done on whatever device the model is already on.

Source

pub async fn re_isq_model_with_model( &self, isq_type: IsqType, model_id: Option<&str>, ) -> Result<()>

Reapply ISQ to a specific model. If model_id is None, the request is sent to the default model.

Source

pub async fn tokenize( &self, text: Either<TextMessages, String>, tools: Option<Vec<Tool>>, add_special_tokens: bool, add_generation_prompt: bool, enable_thinking: Option<bool>, ) -> Result<Vec<u32>>

Tokenize some text or messages.

  • tools is only used if messages are provided.
Source

pub async fn tokenize_with_model( &self, text: Either<TextMessages, String>, tools: Option<Vec<Tool>>, add_special_tokens: bool, add_generation_prompt: bool, enable_thinking: Option<bool>, model_id: Option<&str>, ) -> Result<Vec<u32>>

Tokenize some text or messages using a specific model. If model_id is None, the request is sent to the default model.

  • tools is only used if messages are provided.
Source

pub async fn detokenize( &self, tokens: Vec<u32>, skip_special_tokens: bool, ) -> Result<String>

Detokenize some tokens.

Source

pub async fn detokenize_with_model( &self, tokens: Vec<u32>, skip_special_tokens: bool, model_id: Option<&str>, ) -> Result<String>

Detokenize some tokens using a specific model. If model_id is None, the request is sent to the default model.

Source

pub fn config(&self) -> Result<MistralRsConfig, String>

Retrieve some information about this model.

Source

pub fn config_with_model( &self, model_id: Option<&str>, ) -> Result<MistralRsConfig, String>

Retrieve some information about a specific model. If model_id is None, returns config for the default model.

Source

pub fn max_sequence_length(&self) -> Result<Option<usize>, MistralRsError>

Returns the maximum supported sequence length for this model, if applicable.

Source

pub fn max_sequence_length_with_model( &self, model_id: Option<&str>, ) -> Result<Option<usize>, MistralRsError>

Returns the maximum supported sequence length for a specific model, if applicable. If model_id is None, returns for the default model.

Source

pub fn list_models(&self) -> Result<Vec<String>, String>

List all available model IDs.

Source

pub fn get_default_model_id(&self) -> Result<Option<String>, String>

Get the current default model ID.

Source

pub fn set_default_model_id(&self, model_id: &str) -> Result<(), String>

Set the default model ID.

Source

pub async fn add_model( &self, model_id: String, pipeline: Arc<Mutex<dyn Pipeline>>, method: SchedulerConfig, config: AddModelConfig, ) -> Result<(), String>

Add a new model dynamically.

Source

pub fn remove_model(&self, model_id: &str) -> Result<(), String>

Remove a model by ID.

Source

pub fn unload_model(&self, model_id: &str) -> Result<(), MistralRsError>

Unload a model from memory (can be reloaded later).

Source

pub async fn reload_model(&self, model_id: &str) -> Result<(), MistralRsError>

Reload a previously unloaded model.

Source

pub fn is_model_loaded(&self, model_id: &str) -> Result<bool, MistralRsError>

Check if a model is currently loaded.

Source

pub fn list_models_with_status( &self, ) -> Result<Vec<(String, ModelStatus)>, MistralRsError>

List all models with their status (Loaded, Unloaded, Reloading).

Source

pub fn inner(&self) -> &MistralRs

Get the underlying MistralRs instance.

Auto Trait Implementations§

§

impl Freeze for Model

§

impl RefUnwindSafe for Model

§

impl Send for Model

§

impl Sync for Model

§

impl Unpin for Model

§

impl UnwindSafe for Model

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
§

impl<T> AsAny for T
where T: Any,

§

fn as_any(&self) -> &(dyn Any + 'static)

§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

§

fn type_name(&self) -> &'static str

Gets the type name of self
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
§

impl<T> Downcast for T
where T: AsAny + ?Sized,

§

fn is<T>(&self) -> bool
where T: AsAny,

Returns true if the boxed type is the same as T. Read more
§

fn downcast_ref<T>(&self) -> Option<&T>
where T: AsAny,

Forward to the method defined on the type Any.
§

fn downcast_mut<T>(&mut self) -> Option<&mut T>
where T: AsAny,

Forward to the method defined on the type Any.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

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
§

impl<F, T> IntoSample<T> for F
where T: FromSample<F>,

§

fn into_sample(self) -> T

§

impl<T> Pointable for T

§

const ALIGN: usize

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
§

impl<T> PolicyExt for T
where T: ?Sized,

§

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
§

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
§

impl<SS, SP> SupersetOf<SS> for SP
where SS: SubsetOf<SP>,

§

fn to_subset(&self) -> Option<SS>

The inverse inclusion map: attempts to construct self from the equivalent element of its superset. Read more
§

fn is_in_subset(&self) -> bool

Checks if self is actually part of its subset T (and can be converted to it).
§

fn to_subset_unchecked(&self) -> SS

Use with care! Same as self.to_subset but without any property checks. Always succeeds.
§

fn from_subset(element: &SS) -> SP

The inclusion map: converts self to the equivalent element of its superset.
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.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

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
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

impl<T> ErasedDestructor for T
where T: 'static,

§

impl<T> Ungil for T
where T: Send,