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
TypeScript
/**
* 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;
}