UNPKG

simple-ai-provider

Version:

A simple and extensible AI provider package for easy integration of multiple AI services

72 lines (71 loc) 2.81 kB
/** * Google Gemini Provider Implementation * * Integrates with Google's Gemini models through the official @google/genai SDK * (the successor to the deprecated @google/generative-ai package). * * Key Features: * - Support for Gemini 1.5 / 2.0 / 2.5 model families * - Streaming responses with real-time chunk delivery * - Multimodal capabilities and configurable safety filtering * - System instruction handling separate from conversation flow * * @author Jan-Marlon Leibl * @see https://ai.google.dev/docs */ import type { SafetySetting } from '@google/genai'; import type { AIProviderConfig, CompletionParams, CompletionResponse, CompletionChunk, ProviderInfo } from '../types/index.js'; import { BaseAIProvider } from './base.js'; import { AIProviderError } from '../types/index.js'; /** * Configuration interface for Gemini provider with Google-specific options. */ export interface GeminiConfig extends AIProviderConfig { /** * Default Gemini model to use for requests. * * Recommended models: * - 'gemini-2.5-flash': Latest fast model, great default * - 'gemini-2.5-pro': Flagship reasoning model * - 'gemini-2.0-flash': Previous generation fast model * - 'gemini-1.5-pro': Long-context flagship from the 1.5 generation * * @default 'gemini-2.5-flash' */ defaultModel?: string; /** Safety settings for content filtering and harm prevention. */ safetySettings?: SafetySetting[]; /** Default generation configuration applied to every request. */ generationConfig?: { temperature?: number; topP?: number; topK?: number; maxOutputTokens?: number; stopSequences?: string[]; }; } /** * Google Gemini provider implementation backed by @google/genai. * * The new SDK is stateless w.r.t. model selection — each `generateContent` call * specifies the model directly, so this class only holds a single client. */ export declare class GeminiProvider extends BaseAIProvider { private client; private readonly defaultModel; private readonly safetySettings?; private readonly defaultGenerationConfig?; constructor(config: GeminiConfig); protected doInitialize(): Promise<void>; protected doComplete(params: CompletionParams): Promise<CompletionResponse<string>>; protected doStream<T = any>(params: CompletionParams<T>): AsyncIterable<CompletionChunk>; getInfo(): ProviderInfo; protected getModelNamePatterns(): RegExp[]; protected sendValidationProbe(): Promise<void>; protected providerErrorMessages(): Partial<Record<number, string>>; protected mapProviderError(error: any): AIProviderError | null; private convertMessages; private buildConfig; private processStreamChunks; private formatCompletionResponse; }