-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>> ).