Nous.Messages.Gemini (nous v0.15.5)
View SourceGemini format message conversion.
Handles conversion between internal Message structs and Google Gemini API format.
Summary
Functions
Convert Gemini format messages to internal Message structs.
Parse Gemini response into a Message.
Parse a Gemini-format usageMetadata map into a %Nous.Usage{} struct.
Convert messages to Gemini format.
Functions
@spec from_messages([map()]) :: [Nous.Message.t()]
Convert Gemini format messages to internal Message structs.
@spec from_response(map()) :: Nous.Message.t()
Parse Gemini response into a Message.
Examples
iex> response = %{"candidates" => [%{"content" => %{"parts" => [%{"text" => "Hello"}]}}]}
iex> Messages.Gemini.from_response(response)
%Message{role: :assistant, content: "Hello"}
@spec parse_usage(map() | nil) :: Nous.Usage.t()
Parse a Gemini-format usageMetadata map into a %Nous.Usage{} struct.
Used by both the non-streaming response parser and the streaming normalizer.
@spec to_format([Nous.Message.t()]) :: {String.t() | nil, [map()]}
Convert messages to Gemini format.
Returns {system_prompt, contents} where system prompt is extracted
and messages are converted to Gemini contents format.
Examples
iex> messages = [Message.system("Be helpful"), Message.user("Hello")]
iex> Messages.Gemini.to_format(messages)
{"Be helpful", [%{"role" => "user", "parts" => [%{"text" => "Hello"}]}]}