MistralClient.API.FIM (mistralex_ai v0.1.0)
View SourceFIM (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
@spec complete( MistralClient.Client.t(), MistralClient.Models.FIMCompletionRequest.t() ) :: {:ok, MistralClient.Models.FIMCompletionResponse.t()} | {:error, term()}
Perform FIM completion using structured request.
Parameters
client
- The MistralClient.Client instancerequest
- 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
@spec complete(MistralClient.Client.t(), String.t(), String.t(), keyword()) :: {:ok, MistralClient.Models.FIMCompletionResponse.t()} | {:error, term()}
Perform FIM (Fill-in-the-Middle) completion.
Parameters
client
- The MistralClient.Client instancemodel
- Model ID (only codestral models supported)prompt
- The text/code prefix to completeopts
- 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
@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 instancemodel
- Model ID (only codestral models supported)prompt
- The text/code prefix to completeopts
- 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
@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 instancerequest
- FIMCompletionRequest structcallback
- 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