Skip to content

nimgent/providers/google_transport

This page is generated from the module’s exported API and ## documentation comments.

Native Gemini generateContent transport, including provider-executed tools.

This is the Gemini API as served by Google AI Studio: an API key in x-goog-api-key, /v1beta/models/<id>:generateContent. Vertex AI is a different service - OAuth service accounts, a project and location in the path - and needs its own provider.

Default Google Generative Language endpoint.

defaultGoogleEndpoint = "https://generativelanguage.googleapis.com/v1beta"

View source

Google Gemini provider configuration.

GoogleProvider = ref object of Provider
endpoint*: string
userAgent*: string

View source

Optional settings for Google embedding requests.

GoogleOptions = object
taskType*: Option[string]

View source

Serialize Google-specific request options.

proc toProviderJson(value: GoogleOptions): JsonNode {.raises: [], tags: [],
forbids: [].}

Returns: JsonNode.

Name Type Default
value GoogleOptions

View source

Create a Google Gemini provider.

proc google(apiKey: string; endpoint = defaultGoogleEndpoint;
timeoutSeconds = 300; userAgent = ""): GoogleProvider {.raises: [],
tags: [], forbids: [].}

Returns: GoogleProvider.

Name Type Default
apiKey string
endpoint inferred defaultGoogleEndpoint
timeoutSeconds inferred 300
userAgent inferred ""

View source

Build a Google Gemini generateContent request body.

proc buildGoogleBody(request: ProviderRequest): JsonNode {.
raises: [ProviderError, KeyError], tags: [], forbids: [].}

Returns: JsonNode.

Name Type Default
request ProviderRequest

View source

Parse a Google Gemini response.

proc parseGoogleOutput(data: JsonNode): ProviderResponse {.
raises: [ProviderError, KeyError], tags: [ReadIOEffect, WriteIOEffect],
forbids: [].}

Returns: ProviderResponse.

Name Type Default
data JsonNode

View source

Consume one Google Gemini streaming event.

proc handleGoogleEvent(response: var ProviderResponse; data: JsonNode;
onEvent: StreamCallback): SseAction {.
raises: [ProviderError, KeyError, Exception],
tags: [ReadIOEffect, WriteIOEffect, RootEffect], forbids: [].}

Returns: SseAction.

Name Type Default
response var ProviderResponse
data JsonNode
onEvent StreamCallback

View source

Return Google native structured-output options.

method nativeObjectOptions(p: GoogleProvider; model, name, description: string;
schema: JsonNode): JsonNode {.raises: [], tags: [],
forbids: [].}

Returns: JsonNode.

Name Type Default
p GoogleProvider
model string
name string
description string
schema JsonNode

View source

Send a request through the Google Gemini API.

method generateAsync(p: GoogleProvider; request: ProviderRequest): Future[
ProviderResponse] {.raises: [Exception, ValueError, ProviderError, KeyError,
LibraryError, SslError, IOError], tags: [
RootEffect, ReadDirEffect, ReadEnvEffect, TimeEffect, ReadIOEffect,
WriteIOEffect], forbids: [].}

Returns: Future[ProviderResponse].

Name Type Default
p GoogleProvider
request ProviderRequest

View source

Stream a request through the Google Gemini API.

method generateStreamAsync(p: GoogleProvider; request: ProviderRequest;
onEvent: StreamCallback): Future[ProviderResponse] {.raises: [
Exception, ValueError, ProviderError, KeyError, LibraryError, SslError,
IOError], tags: [RootEffect, ReadDirEffect, ReadEnvEffect, TimeEffect,
ReadIOEffect, WriteIOEffect], forbids: [].}

Returns: Future[ProviderResponse].

Name Type Default
p GoogleProvider
request ProviderRequest
onEvent StreamCallback

View source

Send an embedding request through the Google Gemini API.

method embedAsync(p: GoogleProvider; request: EmbeddingRequest): Future[
EmbeddingResponse] {.stackTrace: false, raises: [Exception, ValueError,
ProviderError, LibraryError, SslError, IOError, KeyError], tags: [
RootEffect, ReadDirEffect, ReadEnvEffect, TimeEffect, ReadIOEffect,
WriteIOEffect], forbids: [].}

Returns: Future[EmbeddingResponse].

Name Type Default
p GoogleProvider
request EmbeddingRequest

View source