Current section
Files
Jump to
Current section
Files
src/glean@models@mistral.erl
-module(glean@models@mistral).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/glean/models/mistral.gleam").
-export([max_output_tokens/2, temperature/2, top_p/2, build/1, large_3/1, medium_3_1/1, small_3_2/1, magistral_medium/1, magistral_small/1, codestral/1, devstral_2/1, devstral_small/1, ministral_14b/1, ministral_8b/1, ministral_3b/1, nemo/1]).
-export_type([mistral/0]).
-if(?OTP_RELEASE >= 27).
-define(MODULEDOC(Str), -moduledoc(Str)).
-define(DOC(Str), -doc(Str)).
-else.
-define(MODULEDOC(Str), -compile([])).
-define(DOC(Str), -compile([])).
-endif.
?MODULEDOC(
" Mistral AI models.\n"
"\n"
" Covers Mistral Large, Medium, Small, Magistral, Codestral, Devstral,\n"
" and Ministral models.\n"
" Supported parameters: max_output_tokens, temperature (0–1.5), top_p.\n"
"\n"
" Uses `max_tokens` field name (not `max_completion_tokens`).\n"
).
-opaque mistral() :: {mistral,
binary(),
binary(),
gleam@option:option(integer()),
gleam@option:option(float()),
gleam@option:option(float()),
gleam@option:option({binary(), binary()})}.
-file("src/glean/models/mistral.gleam", 107).
?DOC(" Set the maximum number of output tokens.\n").
-spec max_output_tokens(mistral(), integer()) -> mistral().
max_output_tokens(M, N) ->
{mistral,
erlang:element(2, M),
erlang:element(3, M),
{some, N},
erlang:element(5, M),
erlang:element(6, M),
erlang:element(7, M)}.
-file("src/glean/models/mistral.gleam", 112).
?DOC(" Set the sampling temperature (0–1.5).\n").
-spec temperature(mistral(), float()) -> mistral().
temperature(M, T) ->
{mistral,
erlang:element(2, M),
erlang:element(3, M),
erlang:element(4, M),
{some, T},
erlang:element(6, M),
erlang:element(7, M)}.
-file("src/glean/models/mistral.gleam", 117).
?DOC(" Set the top-p (nucleus sampling) value.\n").
-spec top_p(mistral(), float()) -> mistral().
top_p(M, P) ->
{mistral,
erlang:element(2, M),
erlang:element(3, M),
erlang:element(4, M),
erlang:element(5, M),
{some, P},
erlang:element(7, M)}.
-file("src/glean/models/mistral.gleam", 129).
?DOC(
" Build a `Model` from this Mistral configuration.\n"
"\n"
" If the model is deprecated, a warning is printed and the replacement\n"
" model ID is used instead.\n"
).
-spec build(mistral()) -> glean@model:model().
build(M) ->
Actual_model_id = case erlang:element(7, M) of
none ->
erlang:element(3, M);
{some, {Replacement, Shutdown}} ->
glean@model:deprecation_warning(
erlang:element(3, M),
Replacement,
Shutdown
),
Replacement
end,
Provider = glean@providers@mistral:new(
erlang:element(2, M),
Actual_model_id
),
Settings = {model_settings,
erlang:element(4, M),
erlang:element(5, M),
erlang:element(6, M),
none,
none,
none,
none,
none},
{model, Provider, Settings}.
-file("src/glean/models/mistral.gleam", 160).
-spec new_mistral(binary(), binary()) -> mistral().
new_mistral(Api_key, Model_id) ->
{mistral, Api_key, Model_id, none, none, none, none}.
-file("src/glean/models/mistral.gleam", 33).
?DOC(" Mistral Large 3\n").
-spec large_3(binary()) -> mistral().
large_3(Key) ->
new_mistral(Key, <<"mistral-large-2512"/utf8>>).
-file("src/glean/models/mistral.gleam", 38).
?DOC(" Mistral Medium 3.1\n").
-spec medium_3_1(binary()) -> mistral().
medium_3_1(Key) ->
new_mistral(Key, <<"mistral-medium-3.1"/utf8>>).
-file("src/glean/models/mistral.gleam", 43).
?DOC(" Mistral Small 3.2 (24B instruct)\n").
-spec small_3_2(binary()) -> mistral().
small_3_2(Key) ->
new_mistral(Key, <<"mistral-small-latest"/utf8>>).
-file("src/glean/models/mistral.gleam", 48).
?DOC(" Magistral Medium\n").
-spec magistral_medium(binary()) -> mistral().
magistral_medium(Key) ->
new_mistral(Key, <<"magistral-medium-1-2-25-09"/utf8>>).
-file("src/glean/models/mistral.gleam", 53).
?DOC(" Magistral Small\n").
-spec magistral_small(binary()) -> mistral().
magistral_small(Key) ->
new_mistral(Key, <<"magistral-small-1-2-25-09"/utf8>>).
-file("src/glean/models/mistral.gleam", 58).
?DOC(" Codestral\n").
-spec codestral(binary()) -> mistral().
codestral(Key) ->
new_mistral(Key, <<"codestral-2508"/utf8>>).
-file("src/glean/models/mistral.gleam", 63).
?DOC(" Devstral 2\n").
-spec devstral_2(binary()) -> mistral().
devstral_2(Key) ->
new_mistral(Key, <<"devstral-2512"/utf8>>).
-file("src/glean/models/mistral.gleam", 68).
?DOC(" Devstral Small\n").
-spec devstral_small(binary()) -> mistral().
devstral_small(Key) ->
new_mistral(Key, <<"devstral-small"/utf8>>).
-file("src/glean/models/mistral.gleam", 73).
?DOC(" Ministral 14B\n").
-spec ministral_14b(binary()) -> mistral().
ministral_14b(Key) ->
new_mistral(Key, <<"ministral-14b-2512"/utf8>>).
-file("src/glean/models/mistral.gleam", 78).
?DOC(" Ministral 8B\n").
-spec ministral_8b(binary()) -> mistral().
ministral_8b(Key) ->
new_mistral(Key, <<"ministral-8b-2512"/utf8>>).
-file("src/glean/models/mistral.gleam", 83).
?DOC(" Ministral 3B\n").
-spec ministral_3b(binary()) -> mistral().
ministral_3b(Key) ->
new_mistral(Key, <<"ministral-3b-2512"/utf8>>).
-file("src/glean/models/mistral.gleam", 171).
-spec new_deprecated_mistral(binary(), binary(), binary(), binary()) -> mistral().
new_deprecated_mistral(Api_key, Model_id, Replacement, Shutdown) ->
{mistral,
Api_key,
Model_id,
none,
none,
none,
{some, {Replacement, Shutdown}}}.
-file("src/glean/models/mistral.gleam", 93).
?DOC(" Mistral Nemo — deprecated, will be replaced by mistral-small-3.2 at build time.\n").
-spec nemo(binary()) -> mistral().
nemo(Key) ->
new_deprecated_mistral(
Key,
<<"mistral-nemo"/utf8>>,
<<"mistral-small-latest"/utf8>>,
<<"deprecated"/utf8>>
).