MistralClient.API.FIM (mistralex_ai v0.1.0)

View Source

FIM (Fill-in-the-Middle) API for code completion.

This module provides functions for FIM completion using Mistral's Codestral models. FIM is specifically designed for code completion tasks where you have a prefix and optionally a suffix, and need the model to fill in the middle.

Supported Models

  • codestral-2405
  • codestral-latest

Examples

# Basic FIM completion
{:ok, completion} = MistralClient.API.FIM.complete(
  client,
  "codestral-2405",
  "def fibonacci(n):",
  suffix: "return result"
)

# Streaming FIM completion
{:ok, stream} = MistralClient.API.FIM.stream(
  client,
  "codestral-2405",
  "def fibonacci(n):",
  suffix: "return result",
  callback: fn chunk -> IO.puts(chunk.content) end
)

Summary

Functions

Perform FIM completion using structured request.

Perform FIM (Fill-in-the-Middle) completion.

Stream FIM completion with real-time results.

Stream FIM completion using structured request.

Functions

complete(client, request)

Perform FIM completion using structured request.

Parameters

  • client - The MistralClient.Client instance
  • request - FIMCompletionRequest struct

Examples

request = MistralClient.Models.FIMCompletionRequest.new(
  "codestral-2405",
  "def fibonacci(n):",
  suffix: "return result",
  max_tokens: 100
)

{:ok, completion} = MistralClient.API.FIM.complete(client, request)

Returns

  • {:ok, FIMCompletionResponse.t()} - On success
  • {:error, term()} - On failure

complete(client, model, prompt, opts \\ [])

Perform FIM (Fill-in-the-Middle) completion.

Parameters

  • client - The MistralClient.Client instance
  • model - Model ID (only codestral models supported)
  • prompt - The text/code prefix to complete
  • opts - Optional parameters

Options

  • :suffix - Optional text/code suffix for context
  • :temperature - Sampling temperature (0.0-0.7 recommended)
  • :top_p - Nucleus sampling parameter
  • :max_tokens - Maximum tokens to generate
  • :min_tokens - Minimum tokens to generate
  • :stop - Stop sequences (string or list of strings)
  • :random_seed - Seed for deterministic results

Examples

# Basic completion
{:ok, completion} = MistralClient.API.FIM.complete(
  client,
  "codestral-2405",
  "def fibonacci(n):"
)

# With suffix for better context
{:ok, completion} = MistralClient.API.FIM.complete(
  client,
  "codestral-2405",
  "def fibonacci(n):",
  suffix: "return result",
  max_tokens: 100,
  temperature: 0.2
)

Returns

  • {:ok, FIMCompletionResponse.t()} - On success
  • {:error, term()} - On failure

stream(client, model, prompt, opts \\ [])

@spec stream(MistralClient.Client.t(), String.t(), String.t(), keyword()) ::
  {:ok, list() | :done} | {:error, term()}

Stream FIM completion with real-time results.

Parameters

  • client - The MistralClient.Client instance
  • model - Model ID (only codestral models supported)
  • prompt - The text/code prefix to complete
  • opts - Optional parameters

Options

  • :suffix - Optional text/code suffix for context
  • :temperature - Sampling temperature (0.0-0.7 recommended)
  • :top_p - Nucleus sampling parameter
  • :max_tokens - Maximum tokens to generate
  • :min_tokens - Minimum tokens to generate
  • :stop - Stop sequences (string or list of strings)
  • :random_seed - Seed for deterministic results
  • :callback - Function to call with each chunk

Examples

# Stream with callback
{:ok, stream} = MistralClient.API.FIM.stream(
  client,
  "codestral-2405",
  "def fibonacci(n):",
  suffix: "return result",
  callback: fn chunk ->
    if chunk.content do
      IO.write(chunk.content)
    end
  end
)

# Collect all chunks
{:ok, chunks} = MistralClient.API.FIM.stream(
  client,
  "codestral-2405",
  "def fibonacci(n):"
)

Returns

  • {:ok, list()} - List of stream chunks when no callback provided
  • {:ok, :done} - When callback is provided and streaming completes
  • {:error, term()} - On failure

stream_request(client, request, callback \\ nil)

@spec stream_request(
  MistralClient.Client.t(),
  MistralClient.Models.FIMCompletionRequest.t(),
  function() | nil
) :: {:ok, list() | :done} | {:error, term()}

Stream FIM completion using structured request.

Parameters

  • client - The MistralClient.Client instance
  • request - FIMCompletionRequest struct
  • callback - Optional callback function for streaming

Examples

request = MistralClient.Models.FIMCompletionRequest.new(
  "codestral-2405",
  "def fibonacci(n):",
  suffix: "return result",
  stream: true
)

{:ok, chunks} = MistralClient.API.FIM.stream_request(client, request)

Returns

  • {:ok, list() | :done} - Stream result

  • {:error, term()} - On failure