MistralClient.API.FineTuning (mistralex_ai v0.1.0)

View Source

Fine-tuning API for creating and managing fine-tuning jobs.

This module provides functions to:

  • Create fine-tuning jobs
  • List fine-tuning jobs with filtering
  • Get fine-tuning job details
  • Start, cancel fine-tuning jobs
  • Archive/unarchive fine-tuned models
  • Update fine-tuned models

Examples

# Create a fine-tuning job
config = MistralClient.Config.new(api_key: "your-api-key")

hyperparameters = %MistralClient.Models.CompletionTrainingParameters{
  learning_rate: 0.0001,
  training_steps: 1000
}

request = %MistralClient.Models.FineTuningJobRequest{
  model: "open-mistral-7b",
  hyperparameters: hyperparameters,
  training_files: [%MistralClient.Models.TrainingFile{file_id: "file-123"}]
}

{:ok, job} = MistralClient.API.FineTuning.create_job(config, request)

# List jobs with filtering
{:ok, jobs} = MistralClient.API.FineTuning.list_jobs(config, %{
  status: "RUNNING",
  model: "open-mistral-7b"
})

# Get job details
{:ok, job} = MistralClient.API.FineTuning.get_job(config, "job-123")

# Start a job
{:ok, job} = MistralClient.API.FineTuning.start_job(config, "job-123")

# Cancel a job
{:ok, job} = MistralClient.API.FineTuning.cancel_job(config, "job-123")

Summary

Functions

Archives a fine-tuned model.

Cancels a fine-tuning job.

Creates a new fine-tuning job.

Gets details of a specific fine-tuning job.

Lists fine-tuning jobs with optional filtering.

Starts a validated fine-tuning job.

Unarchives a fine-tuned model.

Updates a fine-tuned model.

Types

fine_tuneable_model_type()

@type fine_tuneable_model_type() :: :completion | :classifier

job_status()

@type job_status() ::
  :queued
  | :started
  | :validating
  | :validated
  | :running
  | :failed_validation
  | :failed
  | :success
  | :cancelled
  | :cancellation_requested

Functions

archive_model(config, model_id)

@spec archive_model(MistralClient.Config.t(), String.t()) ::
  {:ok, map()} | {:error, term()}

Archives a fine-tuned model.

Parameters

  • config - Client configuration
  • model_id - The ID of the model to archive

Examples

{:ok, model} = MistralClient.API.FineTuning.archive_model(config, "ft:open-mistral-7b:my-model:xxx")

cancel_job(config, job_id)

@spec cancel_job(MistralClient.Config.t(), String.t()) ::
  {:ok, MistralClient.Models.FineTuningJobResponse.t()} | {:error, term()}

Cancels a fine-tuning job.

Parameters

  • config - Client configuration
  • job_id - The ID of the job to cancel

Examples

{:ok, job} = MistralClient.API.FineTuning.cancel_job(config, "job-123")

create_job(config, request)

Creates a new fine-tuning job.

Parameters

  • config - Client configuration
  • request - Fine-tuning job request parameters

Request Parameters

  • model (required) - The name of the model to fine-tune
  • hyperparameters (required) - Training hyperparameters
  • training_files - List of training file IDs
  • validation_files - List of validation file IDs
  • suffix - String to add to fine-tuned model name
  • integrations - List of integrations (e.g., Weights & Biases)
  • auto_start - Whether to automatically start the job
  • invalid_sample_skip_percentage - Percentage of invalid samples to skip
  • job_type - Type of fine-tuning job
  • repositories - List of GitHub repositories
  • classifier_targets - Classifier targets (for classifier jobs)

Examples

hyperparameters = %CompletionTrainingParameters{
  learning_rate: 0.0001,
  training_steps: 1000,
  weight_decay: 0.01
}

request = %FineTuningJobRequest{
  model: "open-mistral-7b",
  hyperparameters: hyperparameters,
  training_files: [%TrainingFile{file_id: "file-123"}],
  suffix: "my-model"
}

{:ok, job} = MistralClient.API.FineTuning.create_job(config, request)

get_job(config, job_id)

Gets details of a specific fine-tuning job.

Parameters

  • config - Client configuration
  • job_id - The ID of the job to retrieve

Examples

{:ok, job} = MistralClient.API.FineTuning.get_job(config, "job-123")

list_jobs(config, options \\ %{})

@spec list_jobs(MistralClient.Config.t(), map()) ::
  {:ok, MistralClient.Models.FineTuningJobsResponse.t()} | {:error, term()}

Lists fine-tuning jobs with optional filtering.

Parameters

  • config - Client configuration
  • options - Filtering and pagination options

Options

  • page - Page number (default: 0)
  • page_size - Number of items per page (default: 100)
  • model - Filter by model name
  • created_after - Filter by creation date (DateTime)
  • created_before - Filter by creation date (DateTime)
  • created_by_me - Show only jobs created by the caller (default: false)
  • status - Filter by job status
  • wandb_project - Filter by Weights & Biases project
  • wandb_name - Filter by Weights & Biases run name
  • suffix - Filter by model suffix

Examples

# List all jobs
{:ok, jobs} = MistralClient.API.FineTuning.list_jobs(config)

# List running jobs for a specific model
{:ok, jobs} = MistralClient.API.FineTuning.list_jobs(config, %{
  status: :running,
  model: "open-mistral-7b",
  page_size: 50
})

start_job(config, job_id)

@spec start_job(MistralClient.Config.t(), String.t()) ::
  {:ok, MistralClient.Models.FineTuningJobResponse.t()} | {:error, term()}

Starts a validated fine-tuning job.

Parameters

  • config - Client configuration
  • job_id - The ID of the job to start

Examples

{:ok, job} = MistralClient.API.FineTuning.start_job(config, "job-123")

unarchive_model(config, model_id)

@spec unarchive_model(MistralClient.Config.t(), String.t()) ::
  {:ok, map()} | {:error, term()}

Unarchives a fine-tuned model.

Parameters

  • config - Client configuration
  • model_id - The ID of the model to unarchive

Examples

{:ok, model} = MistralClient.API.FineTuning.unarchive_model(config, "ft:open-mistral-7b:my-model:xxx")

update_model(config, model_id, updates)

@spec update_model(MistralClient.Config.t(), String.t(), map()) ::
  {:ok, map()} | {:error, term()}

Updates a fine-tuned model.

Parameters

  • config - Client configuration
  • model_id - The ID of the model to update
  • updates - Map of fields to update

Examples

{:ok, model} = MistralClient.API.FineTuning.update_model(config, "ft:open-mistral-7b:my-model:xxx", %{
  name: "Updated Model Name"
})