Current section
Files
Jump to
Current section
Files
src/gloq.erl
-module(gloq).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src\\gloq.gleam").
-export([default_groq_request/0, new_groq_request/0, with_key/2, with_user/2, with_context/2, with_model/2, with_system_prompt/2, with_messages/2, add_message/3, add_user_message/2, add_assistant_message/2, with_frequency_penalty/2, with_logprobs/2, with_max_tokens/2, with_n/2, with_parallel_tool_calls/2, with_presence_penalty/2, with_seed/2, with_stop/2, with_stream/2, with_temperature/2, with_top_p/2, with_response_format/2, build/1, list_models/1, view_models/1, get_model/2, send/1]).
-export_type([message/0, groq_request_builder/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.
-type message() :: {message, binary(), binary()}.
-type groq_request_builder() :: {groq_request_builder,
binary(),
binary(),
binary(),
binary(),
gleam@option:option(float()),
gleam@option:option(boolean()),
gleam@option:option(integer()),
gleam@option:option(integer()),
gleam@option:option(boolean()),
gleam@option:option(float()),
gleam@option:option(integer()),
gleam@option:option(binary()),
gleam@option:option(boolean()),
gleam@option:option(float()),
gleam@option:option(float()),
gleam@option:option(binary()),
list(message()),
gleam@option:option(binary())}.
-file("src\\gloq.gleam", 43).
?DOC(
" Creates a new `GroqRequestBuilder` with sensible defaults.\n"
" Default model: `llama-3.1-8b-instant`. Default user role: `\"user\"`.\n"
).
-spec default_groq_request() -> groq_request_builder().
default_groq_request() ->
{groq_request_builder,
<<""/utf8>>,
<<"user"/utf8>>,
<<""/utf8>>,
<<"llama-3.1-8b-instant"/utf8>>,
{some, +0.0},
none,
none,
{some, 1},
{some, true},
{some, +0.0},
none,
none,
{some, false},
{some, 1.0},
{some, 1.0},
none,
[],
none}.
-file("src\\gloq.gleam", 68).
?DOC(
" Creates a new `GroqRequestBuilder` with no preset values.\n"
" You must set `key`, `model`, `user`, and `context` (or `messages`) before calling `build/1`.\n"
).
-spec new_groq_request() -> groq_request_builder().
new_groq_request() ->
{groq_request_builder,
<<""/utf8>>,
<<""/utf8>>,
<<""/utf8>>,
<<""/utf8>>,
none,
none,
none,
none,
none,
none,
none,
none,
none,
none,
none,
none,
[],
none}.
-file("src\\gloq.gleam", 92).
?DOC(" Sets the GroqCloud API key.\n").
-spec with_key(groq_request_builder(), binary()) -> groq_request_builder().
with_key(Builder, Key) ->
{groq_request_builder,
Key,
erlang:element(3, Builder),
erlang:element(4, Builder),
erlang:element(5, Builder),
erlang:element(6, Builder),
erlang:element(7, Builder),
erlang:element(8, Builder),
erlang:element(9, Builder),
erlang:element(10, Builder),
erlang:element(11, Builder),
erlang:element(12, Builder),
erlang:element(13, Builder),
erlang:element(14, Builder),
erlang:element(15, Builder),
erlang:element(16, Builder),
erlang:element(17, Builder),
erlang:element(18, Builder),
erlang:element(19, Builder)}.
-file("src\\gloq.gleam", 98).
?DOC(
" Sets the user role label for the single-turn message (default: `\"user\"`).\n"
" For multi-turn conversations use `add_user_message/2` instead.\n"
).
-spec with_user(groq_request_builder(), binary()) -> groq_request_builder().
with_user(Builder, User) ->
{groq_request_builder,
erlang:element(2, Builder),
User,
erlang:element(4, Builder),
erlang:element(5, Builder),
erlang:element(6, Builder),
erlang:element(7, Builder),
erlang:element(8, Builder),
erlang:element(9, Builder),
erlang:element(10, Builder),
erlang:element(11, Builder),
erlang:element(12, Builder),
erlang:element(13, Builder),
erlang:element(14, Builder),
erlang:element(15, Builder),
erlang:element(16, Builder),
erlang:element(17, Builder),
erlang:element(18, Builder),
erlang:element(19, Builder)}.
-file("src\\gloq.gleam", 107).
?DOC(
" Sets the prompt text for a single-turn request.\n"
" For multi-turn conversations use `add_user_message/2` instead.\n"
).
-spec with_context(groq_request_builder(), binary()) -> groq_request_builder().
with_context(Builder, Context) ->
{groq_request_builder,
erlang:element(2, Builder),
erlang:element(3, Builder),
Context,
erlang:element(5, Builder),
erlang:element(6, Builder),
erlang:element(7, Builder),
erlang:element(8, Builder),
erlang:element(9, Builder),
erlang:element(10, Builder),
erlang:element(11, Builder),
erlang:element(12, Builder),
erlang:element(13, Builder),
erlang:element(14, Builder),
erlang:element(15, Builder),
erlang:element(16, Builder),
erlang:element(17, Builder),
erlang:element(18, Builder),
erlang:element(19, Builder)}.
-file("src\\gloq.gleam", 115).
?DOC(" Sets the model to use for inference. See `gloq/models` for available constants.\n").
-spec with_model(groq_request_builder(), binary()) -> groq_request_builder().
with_model(Builder, Model) ->
{groq_request_builder,
erlang:element(2, Builder),
erlang:element(3, Builder),
erlang:element(4, Builder),
Model,
erlang:element(6, Builder),
erlang:element(7, Builder),
erlang:element(8, Builder),
erlang:element(9, Builder),
erlang:element(10, Builder),
erlang:element(11, Builder),
erlang:element(12, Builder),
erlang:element(13, Builder),
erlang:element(14, Builder),
erlang:element(15, Builder),
erlang:element(16, Builder),
erlang:element(17, Builder),
erlang:element(18, Builder),
erlang:element(19, Builder)}.
-file("src\\gloq.gleam", 123).
?DOC(" Sets a system prompt that is prepended as the first message.\n").
-spec with_system_prompt(groq_request_builder(), binary()) -> groq_request_builder().
with_system_prompt(Builder, Prompt) ->
{groq_request_builder,
erlang:element(2, Builder),
erlang:element(3, Builder),
erlang:element(4, Builder),
erlang:element(5, Builder),
erlang:element(6, Builder),
erlang:element(7, Builder),
erlang:element(8, Builder),
erlang:element(9, Builder),
erlang:element(10, Builder),
erlang:element(11, Builder),
erlang:element(12, Builder),
erlang:element(13, Builder),
erlang:element(14, Builder),
erlang:element(15, Builder),
erlang:element(16, Builder),
{some, Prompt},
erlang:element(18, Builder),
erlang:element(19, Builder)}.
-file("src\\gloq.gleam", 132).
?DOC(
" Replaces the entire conversation message list.\n"
" When messages is non-empty, `with_user/2` and `with_context/2` are ignored.\n"
).
-spec with_messages(groq_request_builder(), list(message())) -> groq_request_builder().
with_messages(Builder, Messages) ->
{groq_request_builder,
erlang:element(2, Builder),
erlang:element(3, Builder),
erlang:element(4, Builder),
erlang:element(5, Builder),
erlang:element(6, Builder),
erlang:element(7, Builder),
erlang:element(8, Builder),
erlang:element(9, Builder),
erlang:element(10, Builder),
erlang:element(11, Builder),
erlang:element(12, Builder),
erlang:element(13, Builder),
erlang:element(14, Builder),
erlang:element(15, Builder),
erlang:element(16, Builder),
erlang:element(17, Builder),
Messages,
erlang:element(19, Builder)}.
-file("src\\gloq.gleam", 140).
?DOC(" Appends a message with the given role and content to the conversation.\n").
-spec add_message(groq_request_builder(), binary(), binary()) -> groq_request_builder().
add_message(Builder, Role, Content) ->
{groq_request_builder,
erlang:element(2, Builder),
erlang:element(3, Builder),
erlang:element(4, Builder),
erlang:element(5, Builder),
erlang:element(6, Builder),
erlang:element(7, Builder),
erlang:element(8, Builder),
erlang:element(9, Builder),
erlang:element(10, Builder),
erlang:element(11, Builder),
erlang:element(12, Builder),
erlang:element(13, Builder),
erlang:element(14, Builder),
erlang:element(15, Builder),
erlang:element(16, Builder),
erlang:element(17, Builder),
lists:append(erlang:element(18, Builder), [{message, Role, Content}]),
erlang:element(19, Builder)}.
-file("src\\gloq.gleam", 152).
?DOC(" Appends a user message to the conversation.\n").
-spec add_user_message(groq_request_builder(), binary()) -> groq_request_builder().
add_user_message(Builder, Content) ->
add_message(Builder, <<"user"/utf8>>, Content).
-file("src\\gloq.gleam", 160).
?DOC(" Appends an assistant message to the conversation (useful for continuing a thread).\n").
-spec add_assistant_message(groq_request_builder(), binary()) -> groq_request_builder().
add_assistant_message(Builder, Content) ->
add_message(Builder, <<"assistant"/utf8>>, Content).
-file("src\\gloq.gleam", 169).
?DOC(
" Number between -2.0 and 2.0. Positive values penalize new tokens based on\n"
" their existing frequency, decreasing the likelihood of repetition.\n"
).
-spec with_frequency_penalty(groq_request_builder(), float()) -> groq_request_builder().
with_frequency_penalty(Builder, Frequency_penalty) ->
{groq_request_builder,
erlang:element(2, Builder),
erlang:element(3, Builder),
erlang:element(4, Builder),
erlang:element(5, Builder),
{some, Frequency_penalty},
erlang:element(7, Builder),
erlang:element(8, Builder),
erlang:element(9, Builder),
erlang:element(10, Builder),
erlang:element(11, Builder),
erlang:element(12, Builder),
erlang:element(13, Builder),
erlang:element(14, Builder),
erlang:element(15, Builder),
erlang:element(16, Builder),
erlang:element(17, Builder),
erlang:element(18, Builder),
erlang:element(19, Builder)}.
-file("src\\gloq.gleam", 178).
?DOC(
" Whether to return log probabilities of the output tokens.\n"
" Not yet supported by all models.\n"
).
-spec with_logprobs(groq_request_builder(), boolean()) -> groq_request_builder().
with_logprobs(Builder, Logprobs) ->
{groq_request_builder,
erlang:element(2, Builder),
erlang:element(3, Builder),
erlang:element(4, Builder),
erlang:element(5, Builder),
erlang:element(6, Builder),
{some, Logprobs},
erlang:element(8, Builder),
erlang:element(9, Builder),
erlang:element(10, Builder),
erlang:element(11, Builder),
erlang:element(12, Builder),
erlang:element(13, Builder),
erlang:element(14, Builder),
erlang:element(15, Builder),
erlang:element(16, Builder),
erlang:element(17, Builder),
erlang:element(18, Builder),
erlang:element(19, Builder)}.
-file("src\\gloq.gleam", 186).
?DOC(" Maximum number of tokens to generate. When `None` the model default is used.\n").
-spec with_max_tokens(groq_request_builder(), integer()) -> groq_request_builder().
with_max_tokens(Builder, Max_tokens) ->
{groq_request_builder,
erlang:element(2, Builder),
erlang:element(3, Builder),
erlang:element(4, Builder),
erlang:element(5, Builder),
erlang:element(6, Builder),
erlang:element(7, Builder),
{some, Max_tokens},
erlang:element(9, Builder),
erlang:element(10, Builder),
erlang:element(11, Builder),
erlang:element(12, Builder),
erlang:element(13, Builder),
erlang:element(14, Builder),
erlang:element(15, Builder),
erlang:element(16, Builder),
erlang:element(17, Builder),
erlang:element(18, Builder),
erlang:element(19, Builder)}.
-file("src\\gloq.gleam", 194).
?DOC(" Number of completion choices to generate. Only `n = 1` is currently supported.\n").
-spec with_n(groq_request_builder(), integer()) -> groq_request_builder().
with_n(Builder, N) ->
{groq_request_builder,
erlang:element(2, Builder),
erlang:element(3, Builder),
erlang:element(4, Builder),
erlang:element(5, Builder),
erlang:element(6, Builder),
erlang:element(7, Builder),
erlang:element(8, Builder),
{some, N},
erlang:element(10, Builder),
erlang:element(11, Builder),
erlang:element(12, Builder),
erlang:element(13, Builder),
erlang:element(14, Builder),
erlang:element(15, Builder),
erlang:element(16, Builder),
erlang:element(17, Builder),
erlang:element(18, Builder),
erlang:element(19, Builder)}.
-file("src\\gloq.gleam", 199).
?DOC(" Whether to enable parallel function calling during tool use.\n").
-spec with_parallel_tool_calls(groq_request_builder(), boolean()) -> groq_request_builder().
with_parallel_tool_calls(Builder, Parallel_tool_calls) ->
{groq_request_builder,
erlang:element(2, Builder),
erlang:element(3, Builder),
erlang:element(4, Builder),
erlang:element(5, Builder),
erlang:element(6, Builder),
erlang:element(7, Builder),
erlang:element(8, Builder),
erlang:element(9, Builder),
{some, Parallel_tool_calls},
erlang:element(11, Builder),
erlang:element(12, Builder),
erlang:element(13, Builder),
erlang:element(14, Builder),
erlang:element(15, Builder),
erlang:element(16, Builder),
erlang:element(17, Builder),
erlang:element(18, Builder),
erlang:element(19, Builder)}.
-file("src\\gloq.gleam", 208).
?DOC(
" Number between -2.0 and 2.0. Positive values penalize tokens that have\n"
" already appeared, encouraging the model to discuss new topics.\n"
).
-spec with_presence_penalty(groq_request_builder(), float()) -> groq_request_builder().
with_presence_penalty(Builder, Presence_penalty) ->
{groq_request_builder,
erlang:element(2, Builder),
erlang:element(3, Builder),
erlang:element(4, Builder),
erlang:element(5, Builder),
erlang:element(6, Builder),
erlang:element(7, Builder),
erlang:element(8, Builder),
erlang:element(9, Builder),
erlang:element(10, Builder),
{some, Presence_penalty},
erlang:element(12, Builder),
erlang:element(13, Builder),
erlang:element(14, Builder),
erlang:element(15, Builder),
erlang:element(16, Builder),
erlang:element(17, Builder),
erlang:element(18, Builder),
erlang:element(19, Builder)}.
-file("src\\gloq.gleam", 217).
?DOC(
" Setting a seed makes the system attempt to sample deterministically so that\n"
" repeated requests with the same seed and parameters return the same result.\n"
).
-spec with_seed(groq_request_builder(), integer()) -> groq_request_builder().
with_seed(Builder, Seed) ->
{groq_request_builder,
erlang:element(2, Builder),
erlang:element(3, Builder),
erlang:element(4, Builder),
erlang:element(5, Builder),
erlang:element(6, Builder),
erlang:element(7, Builder),
erlang:element(8, Builder),
erlang:element(9, Builder),
erlang:element(10, Builder),
erlang:element(11, Builder),
{some, Seed},
erlang:element(13, Builder),
erlang:element(14, Builder),
erlang:element(15, Builder),
erlang:element(16, Builder),
erlang:element(17, Builder),
erlang:element(18, Builder),
erlang:element(19, Builder)}.
-file("src\\gloq.gleam", 223).
?DOC(
" Up to 4 sequences where the API stops generating tokens. The stop sequence\n"
" itself is not included in the output.\n"
).
-spec with_stop(groq_request_builder(), binary()) -> groq_request_builder().
with_stop(Builder, Stop) ->
{groq_request_builder,
erlang:element(2, Builder),
erlang:element(3, Builder),
erlang:element(4, Builder),
erlang:element(5, Builder),
erlang:element(6, Builder),
erlang:element(7, Builder),
erlang:element(8, Builder),
erlang:element(9, Builder),
erlang:element(10, Builder),
erlang:element(11, Builder),
erlang:element(12, Builder),
{some, Stop},
erlang:element(14, Builder),
erlang:element(15, Builder),
erlang:element(16, Builder),
erlang:element(17, Builder),
erlang:element(18, Builder),
erlang:element(19, Builder)}.
-file("src\\gloq.gleam", 231).
?DOC(" When `True`, partial message deltas are sent as server-sent events.\n").
-spec with_stream(groq_request_builder(), boolean()) -> groq_request_builder().
with_stream(Builder, Stream) ->
{groq_request_builder,
erlang:element(2, Builder),
erlang:element(3, Builder),
erlang:element(4, Builder),
erlang:element(5, Builder),
erlang:element(6, Builder),
erlang:element(7, Builder),
erlang:element(8, Builder),
erlang:element(9, Builder),
erlang:element(10, Builder),
erlang:element(11, Builder),
erlang:element(12, Builder),
erlang:element(13, Builder),
{some, Stream},
erlang:element(15, Builder),
erlang:element(16, Builder),
erlang:element(17, Builder),
erlang:element(18, Builder),
erlang:element(19, Builder)}.
-file("src\\gloq.gleam", 240).
?DOC(
" Sampling temperature between 0 and 2. Higher values increase randomness;\n"
" lower values increase focus. Do not use alongside `with_top_p/2`.\n"
).
-spec with_temperature(groq_request_builder(), float()) -> groq_request_builder().
with_temperature(Builder, Temperature) ->
{groq_request_builder,
erlang:element(2, Builder),
erlang:element(3, Builder),
erlang:element(4, Builder),
erlang:element(5, Builder),
erlang:element(6, Builder),
erlang:element(7, Builder),
erlang:element(8, Builder),
erlang:element(9, Builder),
erlang:element(10, Builder),
erlang:element(11, Builder),
erlang:element(12, Builder),
erlang:element(13, Builder),
erlang:element(14, Builder),
{some, Temperature},
erlang:element(16, Builder),
erlang:element(17, Builder),
erlang:element(18, Builder),
erlang:element(19, Builder)}.
-file("src\\gloq.gleam", 249).
?DOC(
" Nucleus sampling threshold. The model considers only the top tokens whose\n"
" cumulative probability exceeds this value. Do not use alongside `with_temperature/2`.\n"
).
-spec with_top_p(groq_request_builder(), float()) -> groq_request_builder().
with_top_p(Builder, Top_p) ->
{groq_request_builder,
erlang:element(2, Builder),
erlang:element(3, Builder),
erlang:element(4, Builder),
erlang:element(5, Builder),
erlang:element(6, Builder),
erlang:element(7, Builder),
erlang:element(8, Builder),
erlang:element(9, Builder),
erlang:element(10, Builder),
erlang:element(11, Builder),
erlang:element(12, Builder),
erlang:element(13, Builder),
erlang:element(14, Builder),
erlang:element(15, Builder),
{some, Top_p},
erlang:element(17, Builder),
erlang:element(18, Builder),
erlang:element(19, Builder)}.
-file("src\\gloq.gleam", 258).
?DOC(
" Request a structured response format. Pass `\"json_object\"` to get valid JSON.\n"
" When using this, instruct the model to produce JSON in your system prompt.\n"
).
-spec with_response_format(groq_request_builder(), binary()) -> groq_request_builder().
with_response_format(Builder, Format) ->
{groq_request_builder,
erlang:element(2, Builder),
erlang:element(3, Builder),
erlang:element(4, Builder),
erlang:element(5, Builder),
erlang:element(6, Builder),
erlang:element(7, Builder),
erlang:element(8, Builder),
erlang:element(9, Builder),
erlang:element(10, Builder),
erlang:element(11, Builder),
erlang:element(12, Builder),
erlang:element(13, Builder),
erlang:element(14, Builder),
erlang:element(15, Builder),
erlang:element(16, Builder),
erlang:element(17, Builder),
erlang:element(18, Builder),
{some, Format}}.
-file("src\\gloq.gleam", 265).
-spec optional_field(
binary(),
gleam@option:option(ETA),
fun((ETA) -> gleam@json:json())
) -> gleam@option:option({binary(), gleam@json:json()}).
optional_field(Key, Value, Encoder) ->
gleam@option:map(Value, fun(V) -> {Key, Encoder(V)} end).
-file("src\\gloq.gleam", 289).
?DOC(
" Builds the HTTP request ready to send with your chosen HTTP client.\n"
" Only optional fields that have been explicitly set are included in the body.\n"
"\n"
" Example:\n"
" ```gleam\n"
" import gleam/httpc\n"
" import gloq\n"
"\n"
" let req =\n"
" gloq.default_groq_request()\n"
" |> gloq.with_key(api_key)\n"
" |> gloq.with_context(\"Hello!\")\n"
" |> gloq.build()\n"
"\n"
" let response = httpc.send(req)\n"
" ```\n"
).
-spec build(groq_request_builder()) -> gleam@http@request:request(binary()).
build(Builder) ->
System_msgs = case erlang:element(17, Builder) of
none ->
[];
{some, Prompt} ->
[gleam@json:object(
[{<<"role"/utf8>>, gleam@json:string(<<"system"/utf8>>)},
{<<"content"/utf8>>, gleam@json:string(Prompt)}]
)]
end,
Conversation_msgs = case erlang:element(18, Builder) of
[] ->
[gleam@json:object(
[{<<"role"/utf8>>,
gleam@json:string(erlang:element(3, Builder))},
{<<"content"/utf8>>,
gleam@json:string(erlang:element(4, Builder))}]
)];
Msgs ->
gleam@list:map(
Msgs,
fun(M) ->
gleam@json:object(
[{<<"role"/utf8>>,
gleam@json:string(erlang:element(2, M))},
{<<"content"/utf8>>,
gleam@json:string(erlang:element(3, M))}]
)
end
)
end,
All_messages = lists:append(System_msgs, Conversation_msgs),
Optional_fields = begin
_pipe = [optional_field(
<<"frequency_penalty"/utf8>>,
erlang:element(6, Builder),
fun gleam@json:float/1
),
optional_field(
<<"logprobs"/utf8>>,
erlang:element(7, Builder),
fun gleam@json:bool/1
),
optional_field(
<<"max_tokens"/utf8>>,
erlang:element(8, Builder),
fun gleam@json:int/1
),
optional_field(
<<"n"/utf8>>,
erlang:element(9, Builder),
fun gleam@json:int/1
),
optional_field(
<<"parallel_tool_calls"/utf8>>,
erlang:element(10, Builder),
fun gleam@json:bool/1
),
optional_field(
<<"presence_penalty"/utf8>>,
erlang:element(11, Builder),
fun gleam@json:float/1
),
optional_field(
<<"seed"/utf8>>,
erlang:element(12, Builder),
fun gleam@json:int/1
),
optional_field(
<<"stop"/utf8>>,
erlang:element(13, Builder),
fun gleam@json:string/1
),
optional_field(
<<"stream"/utf8>>,
erlang:element(14, Builder),
fun gleam@json:bool/1
),
optional_field(
<<"temperature"/utf8>>,
erlang:element(15, Builder),
fun gleam@json:float/1
),
optional_field(
<<"top_p"/utf8>>,
erlang:element(16, Builder),
fun gleam@json:float/1
),
optional_field(
<<"response_format"/utf8>>,
erlang:element(19, Builder),
fun(Fmt) ->
gleam@json:object(
[{<<"type"/utf8>>, gleam@json:string(Fmt)}]
)
end
)],
gleam@list:filter_map(
_pipe,
fun(X) -> gleam@option:to_result(X, nil) end
)
end,
Required_fields = [{<<"messages"/utf8>>,
gleam@json:array(All_messages, fun(X@1) -> X@1 end)},
{<<"model"/utf8>>, gleam@json:string(erlang:element(5, Builder))}],
Body = gleam@json:object(lists:append(Required_fields, Optional_fields)),
_pipe@1 = gleam@http@request:new(),
_pipe@2 = gleam@http@request:set_method(_pipe@1, post),
_pipe@3 = gleam@http@request:set_host(_pipe@2, <<"api.groq.com"/utf8>>),
_pipe@4 = gleam@http@request:set_path(
_pipe@3,
<<"/openai/v1/chat/completions"/utf8>>
),
_pipe@5 = gleam@http@request:set_header(
_pipe@4,
<<"Authorization"/utf8>>,
<<"Bearer "/utf8, (erlang:element(2, Builder))/binary>>
),
_pipe@6 = gleam@http@request:set_header(
_pipe@5,
<<"Content-Type"/utf8>>,
<<"application/json"/utf8>>
),
gleam@http@request:set_body(_pipe@6, gleam@json:to_string(Body)).
-file("src\\gloq.gleam", 366).
?DOC(" Builds a GET request to list all models available on your GroqCloud account.\n").
-spec list_models(binary()) -> gleam@http@request:request(binary()).
list_models(Api_key) ->
_pipe = gleam@http@request:new(),
_pipe@1 = gleam@http@request:set_method(_pipe, get),
_pipe@2 = gleam@http@request:set_host(_pipe@1, <<"api.groq.com"/utf8>>),
_pipe@3 = gleam@http@request:set_path(_pipe@2, <<"/openai/v1/models"/utf8>>),
_pipe@4 = gleam@http@request:set_header(
_pipe@3,
<<"Authorization"/utf8>>,
<<"Bearer "/utf8, Api_key/binary>>
),
gleam@http@request:set_header(
_pipe@4,
<<"Content-Type"/utf8>>,
<<"application/json"/utf8>>
).
-file("src\\gloq.gleam", 361).
?DOC(
" Builds a request to list all available models.\n"
"\n"
" > Note: `view_models` is kept for backwards compatibility.\n"
" > New code should prefer `list_models/1`.\n"
).
-spec view_models(binary()) -> gleam@http@request:request(binary()).
view_models(Api_key) ->
list_models(Api_key).
-file("src\\gloq.gleam", 376).
?DOC(" Builds a GET request to retrieve details for a single model by ID.\n").
-spec get_model(binary(), binary()) -> gleam@http@request:request(binary()).
get_model(Api_key, Model_id) ->
_pipe = gleam@http@request:new(),
_pipe@1 = gleam@http@request:set_method(_pipe, get),
_pipe@2 = gleam@http@request:set_host(_pipe@1, <<"api.groq.com"/utf8>>),
_pipe@3 = gleam@http@request:set_path(
_pipe@2,
<<"/openai/v1/models/"/utf8, Model_id/binary>>
),
_pipe@4 = gleam@http@request:set_header(
_pipe@3,
<<"Authorization"/utf8>>,
<<"Bearer "/utf8, Api_key/binary>>
),
gleam@http@request:set_header(
_pipe@4,
<<"Content-Type"/utf8>>,
<<"application/json"/utf8>>
).
-file("src\\gloq.gleam", 391).
?DOC(
" Sends the request to the GroqCloud API using the hackney HTTP client and\n"
" returns the raw response body.\n"
"\n"
" > **Deprecated** — send logic is intentionally left to the consumer so you\n"
" > can use any HTTP client. Call `build/1` instead and send the request with\n"
" > `gleam_httpc`, `gleam_hackney`, or your preferred client.\n"
).
-spec send(groq_request_builder()) -> binary().
send(Builder) ->
Req = build(Builder),
case gleam@hackney:send(Req) of
{ok, R} ->
erlang:element(4, R);
{error, _} ->
<<"Error, Request Failed"/utf8>>
end.