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