Gemini.Types.Live.ServerMessage (GeminiEx v0.11.0)

Copy Markdown View Source

Server message wrapper for Live API responses.

Response message for the BidiGenerateContent call. Contains exactly one message type field plus optional usage metadata.

Message Types

  • setup_complete - Session setup confirmation
  • server_content - Content generated by the model
  • tool_call - Request to execute function calls
  • tool_call_cancellation - Notification to cancel tool calls
  • go_away - Notice that server will disconnect soon
  • session_resumption_update - Session resumption state update
  • voice_activity - Voice activity detection signal

Example

# Server content message
%ServerMessage{
  server_content: %ServerContent{
    model_turn: %{role: "model", parts: [%{text: "Hello!"}]},
    turn_complete: true
  },
  usage_metadata: %UsageMetadata{total_token_count: 100}
}

Summary

Functions

Extracts text from server content if present.

Parses from API response.

Checks if this is an interrupted message.

Returns the message type as an atom.

Creates a new ServerMessage.

Checks if this is a setup complete message.

Converts to API format (camelCase).

Checks if this is a turn complete message.

Types

t()

@type t() :: %Gemini.Types.Live.ServerMessage{
  go_away: Gemini.Types.Live.GoAway.t() | nil,
  server_content: Gemini.Types.Live.ServerContent.t() | nil,
  session_resumption_update:
    Gemini.Types.Live.SessionResumptionUpdate.t() | nil,
  setup_complete: Gemini.Types.Live.SetupComplete.t() | nil,
  tool_call: Gemini.Types.Live.ToolCall.t() | nil,
  tool_call_cancellation: Gemini.Types.Live.ToolCallCancellation.t() | nil,
  usage_metadata: Gemini.Types.Live.UsageMetadata.t() | nil,
  voice_activity: Gemini.Types.Live.VoiceActivity.t() | nil
}

Functions

extract_text(arg1)

@spec extract_text(t()) :: String.t() | nil

Extracts text from server content if present.

from_api(data)

@spec from_api(map() | nil) :: t() | nil

Parses from API response.

interrupted?(arg1)

@spec interrupted?(t()) :: boolean()

Checks if this is an interrupted message.

message_type(arg1)

@spec message_type(t()) :: atom() | nil

Returns the message type as an atom.

new(opts \\ [])

@spec new(keyword()) :: t()

Creates a new ServerMessage.

setup_complete?(arg1)

@spec setup_complete?(t()) :: boolean()

Checks if this is a setup complete message.

to_api(value)

@spec to_api(t() | nil) :: map() | nil

Converts to API format (camelCase).

turn_complete?(arg1)

@spec turn_complete?(t()) :: boolean()

Checks if this is a turn complete message.