Current section
Files
Jump to
Current section
Files
src/glean@models@moonshot.erl
-module(glean@models@moonshot).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/glean/models/moonshot.gleam").
-export([max_output_tokens/2, temperature/2, top_p/2, build/1, kimi_k2_5/1, kimi_k2/1, kimi_k2_thinking/1, kimi_k2_0905/1, moonshot_v1_128k/1]).
-export_type([moonshot/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(
" Moonshot / Kimi models.\n"
"\n"
" Covers Kimi K2.5, K2, and legacy Moonshot V1.\n"
" Supported parameters: max_output_tokens, temperature, top_p.\n"
"\n"
" NO top_k, NO seed, NO penalty parameters.\n"
).
-opaque moonshot() :: {moonshot,
binary(),
binary(),
gleam@option:option(integer()),
gleam@option:option(float()),
gleam@option:option(float()),
gleam@option:option({binary(), binary()})}.
-file("src/glean/models/moonshot.gleam", 66).
?DOC(" Set the maximum number of output tokens.\n").
-spec max_output_tokens(moonshot(), integer()) -> moonshot().
max_output_tokens(M, N) ->
{moonshot,
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/moonshot.gleam", 71).
?DOC(" Set the sampling temperature (0–1).\n").
-spec temperature(moonshot(), float()) -> moonshot().
temperature(M, T) ->
{moonshot,
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/moonshot.gleam", 76).
?DOC(" Set the top-p (nucleus sampling) value.\n").
-spec top_p(moonshot(), float()) -> moonshot().
top_p(M, P) ->
{moonshot,
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/moonshot.gleam", 88).
?DOC(
" Build a `Model` from this Moonshot/Kimi configuration.\n"
"\n"
" If the model is deprecated, a warning is printed and the replacement\n"
" model ID is used instead.\n"
).
-spec build(moonshot()) -> 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@moonshot: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/moonshot.gleam", 119).
-spec new_moonshot(binary(), binary()) -> moonshot().
new_moonshot(Api_key, Model_id) ->
{moonshot, Api_key, Model_id, none, none, none, none}.
-file("src/glean/models/moonshot.gleam", 32).
?DOC(" Kimi K2.5\n").
-spec kimi_k2_5(binary()) -> moonshot().
kimi_k2_5(Key) ->
new_moonshot(Key, <<"kimi-k2.5"/utf8>>).
-file("src/glean/models/moonshot.gleam", 37).
?DOC(" Kimi K2\n").
-spec kimi_k2(binary()) -> moonshot().
kimi_k2(Key) ->
new_moonshot(Key, <<"kimi-k2"/utf8>>).
-file("src/glean/models/moonshot.gleam", 42).
?DOC(" Kimi K2 Thinking\n").
-spec kimi_k2_thinking(binary()) -> moonshot().
kimi_k2_thinking(Key) ->
new_moonshot(Key, <<"kimi-k2-thinking"/utf8>>).
-file("src/glean/models/moonshot.gleam", 47).
?DOC(" Kimi K2 0905\n").
-spec kimi_k2_0905(binary()) -> moonshot().
kimi_k2_0905(Key) ->
new_moonshot(Key, <<"kimi-k2-0905"/utf8>>).
-file("src/glean/models/moonshot.gleam", 130).
-spec new_deprecated_moonshot(binary(), binary(), binary(), binary()) -> moonshot().
new_deprecated_moonshot(Api_key, Model_id, Replacement, Shutdown) ->
{moonshot,
Api_key,
Model_id,
none,
none,
none,
{some, {Replacement, Shutdown}}}.
-file("src/glean/models/moonshot.gleam", 57).
?DOC(" Moonshot V1 128K — deprecated, will be replaced by kimi-k2.5 at build time.\n").
-spec moonshot_v1_128k(binary()) -> moonshot().
moonshot_v1_128k(Key) ->
new_deprecated_moonshot(
Key,
<<"moonshot-v1-128k"/utf8>>,
<<"kimi-k2.5"/utf8>>,
<<"deprecated"/utf8>>
).