MistralClient.API.Models (mistralex_ai v0.1.0)

View Source

Models API for the Mistral AI client.

This module provides functions for managing and retrieving information about available models, including listing models, retrieving model details, and managing fine-tuned models.

Features

  • List available models
  • Retrieve model details
  • Delete fine-tuned models
  • Update model metadata
  • Archive and unarchive models
  • Model permission management

Usage

# List all available models
{:ok, models} = MistralClient.API.Models.list()

# Get details for a specific model
{:ok, model} = MistralClient.API.Models.retrieve("mistral-large-latest")

# Delete a fine-tuned model
{:ok, _} = MistralClient.API.Models.delete("ft:mistral-small:my-org:custom-suffix")

Summary

Functions

Delete a fine-tuned model.

Check if a model exists and is available.

Filter models by type.

List all available models.

Retrieve details for a specific model.

Update metadata for a fine-tuned model.

Types

model_id()

@type model_id() :: String.t()

update_options()

@type update_options() :: %{
  name: String.t() | nil,
  description: String.t() | nil,
  metadata: map() | nil
}

Functions

archive(model_id, client \\ nil)

@spec archive(model_id(), MistralClient.Client.t() | nil) ::
  {:ok, MistralClient.Models.ArchiveFTModelOut.t()} | {:error, Exception.t()}

Archive a model.

Archived models are not available for inference but are still accessible for management operations.

Parameters

  • model_id - The ID of the model to archive
  • client - HTTP client (optional, uses default if not provided)

Examples

{:ok, model} = MistralClient.API.Models.archive("ft:mistral-small:my-org:custom-suffix")

delete(model_id, client \\ nil)

@spec delete(model_id(), MistralClient.Client.t() | nil) ::
  {:ok, MistralClient.Models.DeleteModelOut.t()} | {:error, Exception.t()}

Delete a fine-tuned model.

You can only delete fine-tuned models that you own. Base models cannot be deleted.

Parameters

  • model_id - The ID of the fine-tuned model to delete
  • client - HTTP client (optional, uses default if not provided)

Examples

{:ok, result} = MistralClient.API.Models.delete("ft:mistral-small:my-org:custom-suffix")

exists?(model_id, client \\ nil)

@spec exists?(model_id(), MistralClient.Client.t() | nil) :: boolean()

Check if a model exists and is available.

Parameters

  • model_id - The ID of the model to check
  • client - HTTP client (optional, uses default if not provided)

Examples

true = MistralClient.API.Models.exists?("mistral-large-latest")
false = MistralClient.API.Models.exists?("non-existent-model")

filter_models(models, arg2)

Filter models by type.

Parameters

  • models - List of models to filter
  • filter_type - Type of filter to apply

Filter Types

  • :base - Base models owned by Mistral AI
  • :fine_tuned - Fine-tuned models
  • :owned - Models owned by the current user/organization

Examples

{:ok, all_models} = MistralClient.API.Models.list()
base_models = MistralClient.API.Models.filter_models(all_models, :base)
fine_tuned = MistralClient.API.Models.filter_models(all_models, :fine_tuned)

list(client \\ nil)

@spec list(MistralClient.Client.t() | nil) ::
  {:ok, MistralClient.Models.ModelList.t()} | {:error, Exception.t()}

List all available models.

Returns a list of models that are available for use, including both base models and fine-tuned models.

Parameters

  • client - HTTP client (optional, uses default if not provided)

Examples

{:ok, models} = MistralClient.API.Models.list()

# Filter for specific model types
{:ok, models} = MistralClient.API.Models.list()
base_models = Enum.filter(models, &(&1.owned_by == "mistralai"))

retrieve(model_id, client \\ nil)

Retrieve details for a specific model.

Parameters

  • model_id - The ID of the model to retrieve
  • client - HTTP client (optional, uses default if not provided)

Examples

{:ok, model} = MistralClient.API.Models.retrieve("mistral-large-latest")
{:ok, model} = MistralClient.API.Models.retrieve("ft:mistral-small:my-org:custom-suffix")

unarchive(model_id, client \\ nil)

@spec unarchive(model_id(), MistralClient.Client.t() | nil) ::
  {:ok, MistralClient.Models.UnarchiveFTModelOut.t()} | {:error, Exception.t()}

Unarchive a model.

Makes an archived model available for inference again.

Parameters

  • model_id - The ID of the model to unarchive
  • client - HTTP client (optional, uses default if not provided)

Examples

{:ok, model} = MistralClient.API.Models.unarchive("ft:mistral-small:my-org:custom-suffix")

update(model_id, updates, client \\ nil)

Update metadata for a fine-tuned model.

Parameters

  • model_id - The ID of the model to update
  • updates - Map of fields to update
  • client - HTTP client (optional, uses default if not provided)

Update Options

  • :name - New name for the model
  • :description - New description for the model
  • :metadata - Additional metadata

Examples

{:ok, model} = MistralClient.API.Models.update("ft:mistral-small:my-org:custom-suffix", %{
  name: "My Custom Model",
  description: "A model fine-tuned for my specific use case"
})