Nous.Messages.Gemini (nous v0.15.7)

View Source

Gemini 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

from_messages(gemini_messages)

@spec from_messages([map()]) :: [Nous.Message.t()]

Convert Gemini format messages to internal Message structs.

from_response(response)

@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"}

parse_usage(usage_data)

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

to_format(messages)

@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"}]}]}