Providers

Gemini Provider

Public exports from @anvia/gemini.

Import from @anvia/gemini.

GeminiClient

type GeminiClientOptions =
  | { apiKey?: string; vertexai?: false; client?: GoogleGenAI }
  | { vertexai: true; project?: string; location?: string; client?: GoogleGenAI };

class GeminiClient {
  readonly client: GoogleGenAI;
  constructor(options?: GeminiClientOptions);
  listModels(): Promise<ModelList>;
  completionModel(model?: string): GeminiCompletionModel;
  embeddingModel(model?: string, options?: GeminiEmbeddingModelOptions): GeminiEmbeddingModel;
  imageGenerationModel(model?: string): GeminiImageGenerationModel;
  imagenGenerationModel(model?: string): GeminiImagenGenerationModel;
  transcriptionModel(model?: string): GeminiTranscriptionModel;
}

Purpose: factory for Gemini API or Vertex AI-backed completion, embedding, image generation, transcription, and model listing.

Return behavior: creates or uses a GoogleGenAI client, then returns Gemini completion and embedding models. listModels() fetches the Gemini model list and returns a normalized ModelList.

Notable errors: underlying SDK calls can fail for missing credentials, invalid project/location, or API errors; listModels() rejects with ModelListingError when the provider request fails.

Multimodal Models

class GeminiImageGenerationModel implements ImageGenerationModel {}
class GeminiImagenGenerationModel implements ImageGenerationModel {}
class GeminiTranscriptionModel implements TranscriptionModel {}

Purpose: Gemini adapters for @anvia/core image generation and transcription.

Return behavior: imageGenerationModel() uses Gemini native image generation through generateContent and maps inline image parts to Uint8Array. imagenGenerationModel() uses Imagen through generateImages and maps generatedImages[].image.imageBytes to Uint8Array. Transcription sends inline audio through generateContent and returns normalized text.

Notable errors: rejects on Gemini SDK errors or when image/transcription responses do not contain expected content.

Model constants: GEMINI_2_5_FLASH_IMAGE, GEMINI_3_PRO_IMAGE_PREVIEW, and IMAGEN_4_GENERATE.

Gemini audio generation is not implemented in v1.

GeminiCompletionModel

class GeminiCompletionModel implements StreamingCompletionModel {
  constructor(client: GoogleGenAI, defaultModel?: string);
  completion(request: CompletionRequest): Promise<CompletionResponse>;
  streamCompletion(request: CompletionRequest): AsyncIterable<CompletionStreamEvent>;
}

Purpose: adapter for Gemini content generation.

Return behavior: returns normalized completion responses and stream events.

Notable errors: rejects or yields SDK/provider errors.

GeminiEmbeddingModel

type GeminiEmbeddingTaskType =
  | "TASK_TYPE_UNSPECIFIED"
  | "RETRIEVAL_QUERY"
  | "RETRIEVAL_DOCUMENT"
  | "SEMANTIC_SIMILARITY"
  | "CLASSIFICATION"
  | "CLUSTERING"
  | "QUESTION_ANSWERING"
  | "FACT_VERIFICATION"
  | "CODE_RETRIEVAL_QUERY";

type GeminiEmbeddingModelOptions = {
  dimensions?: number;
  maxBatchSize?: number;
  taskType?: GeminiEmbeddingTaskType;
  title?: string;
};

class GeminiEmbeddingModel implements EmbeddingModel {
  readonly dimensions?: number;
  readonly maxBatchSize: number;
  constructor(client: GoogleGenAI, model: string, options?: GeminiEmbeddingModelOptions);
  embedTexts(texts: string[]): Promise<Embedding[]>;
}

Purpose: Gemini embedding adapter.

Return behavior: returns one Embedding per input text.

Notable errors: rejects on SDK errors or mismatched embedding counts.

gemini Namespace

namespace gemini {
  GeminiClient;
  GeminiCompletionModel;
  GeminiEmbeddingModel;
  GeminiImageGenerationModel;
  GeminiImagenGenerationModel;
  GeminiTranscriptionModel;
}

Purpose: namespaced access to the same public Gemini exports.

Return behavior: export namespace only.

Notable errors: none directly.