Current section
Files
Jump to
Current section
Files
src/glean@models@gemini.erl
-module(glean@models@gemini).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/glean/models/gemini.gleam").
-export([max_output_tokens/2, temperature/2, top_p/2, top_k/2, seed/2, stop_sequences/2, build/1, pro_3_1/1, flash_3/1, flash_lite_3_1/1, pro_2_5/1, flash_2_5/1, flash_lite_2_5/1, flash_image_3_1/1, pro_image_3/1, pro_3/1, flash_2/1, flash_lite_2/1]).
-export_type([gemini/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(
" Google Gemini chat models.\n"
"\n"
" Covers Gemini Pro, Flash, and Flash Lite families.\n"
" Supported parameters: max_output_tokens, temperature, top_p, top_k,\n"
" seed, stop_sequences.\n"
"\n"
" No penalty parameters are available.\n"
).
-opaque gemini() :: {gemini,
binary(),
binary(),
gleam@option:option(integer()),
gleam@option:option(float()),
gleam@option:option(float()),
gleam@option:option(integer()),
gleam@option:option(integer()),
gleam@option:option(list(binary())),
gleam@option:option({binary(), binary()})}.
-file("src/glean/models/gemini.gleam", 117).
?DOC(" Set the maximum number of output tokens.\n").
-spec max_output_tokens(gemini(), integer()) -> gemini().
max_output_tokens(M, N) ->
{gemini,
erlang:element(2, M),
erlang:element(3, M),
{some, N},
erlang:element(5, M),
erlang:element(6, M),
erlang:element(7, M),
erlang:element(8, M),
erlang:element(9, M),
erlang:element(10, M)}.
-file("src/glean/models/gemini.gleam", 122).
?DOC(" Set the sampling temperature (0-2).\n").
-spec temperature(gemini(), float()) -> gemini().
temperature(M, T) ->
{gemini,
erlang:element(2, M),
erlang:element(3, M),
erlang:element(4, M),
{some, T},
erlang:element(6, M),
erlang:element(7, M),
erlang:element(8, M),
erlang:element(9, M),
erlang:element(10, M)}.
-file("src/glean/models/gemini.gleam", 127).
?DOC(" Set the top-p (nucleus sampling) value.\n").
-spec top_p(gemini(), float()) -> gemini().
top_p(M, P) ->
{gemini,
erlang:element(2, M),
erlang:element(3, M),
erlang:element(4, M),
erlang:element(5, M),
{some, P},
erlang:element(7, M),
erlang:element(8, M),
erlang:element(9, M),
erlang:element(10, M)}.
-file("src/glean/models/gemini.gleam", 132).
?DOC(" Set the top-k sampling value.\n").
-spec top_k(gemini(), integer()) -> gemini().
top_k(M, K) ->
{gemini,
erlang:element(2, M),
erlang:element(3, M),
erlang:element(4, M),
erlang:element(5, M),
erlang:element(6, M),
{some, K},
erlang:element(8, M),
erlang:element(9, M),
erlang:element(10, M)}.
-file("src/glean/models/gemini.gleam", 137).
?DOC(" Set the random seed for deterministic generation.\n").
-spec seed(gemini(), integer()) -> gemini().
seed(M, S) ->
{gemini,
erlang:element(2, M),
erlang:element(3, M),
erlang:element(4, M),
erlang:element(5, M),
erlang:element(6, M),
erlang:element(7, M),
{some, S},
erlang:element(9, M),
erlang:element(10, M)}.
-file("src/glean/models/gemini.gleam", 143).
?DOC(
" Set stop sequences — the model will stop generating when it encounters\n"
" any of these strings.\n"
).
-spec stop_sequences(gemini(), list(binary())) -> gemini().
stop_sequences(M, Stops) ->
{gemini,
erlang:element(2, M),
erlang:element(3, M),
erlang:element(4, M),
erlang:element(5, M),
erlang:element(6, M),
erlang:element(7, M),
erlang:element(8, M),
{some, Stops},
erlang:element(10, M)}.
-file("src/glean/models/gemini.gleam", 155).
?DOC(
" Build a `Model` from this Gemini configuration.\n"
"\n"
" If the model is deprecated, a warning is printed and the replacement\n"
" model ID is used instead.\n"
).
-spec build(gemini()) -> glean@model:model().
build(M) ->
Actual_model_id = case erlang:element(10, 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@gemini:new(erlang:element(2, M), Actual_model_id),
Settings = {model_settings,
erlang:element(4, M),
erlang:element(5, M),
erlang:element(6, M),
erlang:element(7, M),
erlang:element(9, M),
erlang:element(8, M),
none,
none},
{model, Provider, Settings}.
-file("src/glean/models/gemini.gleam", 186).
-spec new_gemini(binary(), binary()) -> gemini().
new_gemini(Api_key, Model_id) ->
{gemini, Api_key, Model_id, none, none, none, none, none, none, none}.
-file("src/glean/models/gemini.gleam", 36).
?DOC(" Gemini 3.1 Pro — latest flagship model.\n").
-spec pro_3_1(binary()) -> gemini().
pro_3_1(Key) ->
new_gemini(Key, <<"gemini-3.1-pro-preview"/utf8>>).
-file("src/glean/models/gemini.gleam", 41).
?DOC(" Gemini 3 Flash — fast next-gen model.\n").
-spec flash_3(binary()) -> gemini().
flash_3(Key) ->
new_gemini(Key, <<"gemini-3-flash-preview"/utf8>>).
-file("src/glean/models/gemini.gleam", 46).
?DOC(" Gemini 3.1 Flash Lite — lightweight next-gen model.\n").
-spec flash_lite_3_1(binary()) -> gemini().
flash_lite_3_1(Key) ->
new_gemini(Key, <<"gemini-3.1-flash-lite-preview"/utf8>>).
-file("src/glean/models/gemini.gleam", 51).
?DOC(" Gemini 2.5 Pro — high-capability model.\n").
-spec pro_2_5(binary()) -> gemini().
pro_2_5(Key) ->
new_gemini(Key, <<"gemini-2.5-pro"/utf8>>).
-file("src/glean/models/gemini.gleam", 56).
?DOC(" Gemini 2.5 Flash — balanced performance and speed.\n").
-spec flash_2_5(binary()) -> gemini().
flash_2_5(Key) ->
new_gemini(Key, <<"gemini-2.5-flash"/utf8>>).
-file("src/glean/models/gemini.gleam", 61).
?DOC(" Gemini 2.5 Flash Lite — cost-effective model.\n").
-spec flash_lite_2_5(binary()) -> gemini().
flash_lite_2_5(Key) ->
new_gemini(Key, <<"gemini-2.5-flash-lite"/utf8>>).
-file("src/glean/models/gemini.gleam", 66).
?DOC(" Gemini 3.1 Flash Image — image generation model.\n").
-spec flash_image_3_1(binary()) -> gemini().
flash_image_3_1(Key) ->
new_gemini(Key, <<"gemini-3.1-flash-image-preview"/utf8>>).
-file("src/glean/models/gemini.gleam", 71).
?DOC(" Gemini 3 Pro Image — pro image generation model.\n").
-spec pro_image_3(binary()) -> gemini().
pro_image_3(Key) ->
new_gemini(Key, <<"gemini-3-pro-image-preview"/utf8>>).
-file("src/glean/models/gemini.gleam", 200).
-spec new_deprecated_gemini(binary(), binary(), binary(), binary()) -> gemini().
new_deprecated_gemini(Api_key, Model_id, Replacement, Shutdown) ->
{gemini,
Api_key,
Model_id,
none,
none,
none,
none,
none,
none,
{some, {Replacement, Shutdown}}}.
-file("src/glean/models/gemini.gleam", 81).
?DOC(" Gemini 3 Pro — deprecated, will be replaced by gemini-3.1-pro-preview.\n").
-spec pro_3(binary()) -> gemini().
pro_3(Key) ->
new_deprecated_gemini(
Key,
<<"gemini-3-pro-preview"/utf8>>,
<<"gemini-3.1-pro-preview"/utf8>>,
<<"Mar 9, 2026"/utf8>>
).
-file("src/glean/models/gemini.gleam", 92).
?DOC(" Gemini 2.0 Flash — deprecated, will be replaced by gemini-2.5-flash.\n").
-spec flash_2(binary()) -> gemini().
flash_2(Key) ->
new_deprecated_gemini(
Key,
<<"gemini-2.0-flash"/utf8>>,
<<"gemini-2.5-flash"/utf8>>,
<<"Jun 1, 2026"/utf8>>
).
-file("src/glean/models/gemini.gleam", 103).
?DOC(" Gemini 2.0 Flash Lite — deprecated, will be replaced by gemini-2.5-flash-lite.\n").
-spec flash_lite_2(binary()) -> gemini().
flash_lite_2(Key) ->
new_deprecated_gemini(
Key,
<<"gemini-2.0-flash-lite"/utf8>>,
<<"gemini-2.5-flash-lite"/utf8>>,
<<"Jun 1, 2026"/utf8>>
).