/** * LLM Provider Types * * Defines the interface that all LLM providers must implement. * This ensures consistent behavior across different LLM implementations. */ import type { EmbedParams, EmbedResponse, LLMResponse, LLMStreamResponse, TextTextParams, ImageTextParams, TextImageParams, ImageImageParams, DocumentTextParams, Logger } from '../llm_api/types.js'; /** * Provider name constants for type-safe LLM provider selection * Use these constants instead of string literals for autocomplete and type safety * * @example * ```typescript * import { LLM_PROVIDERS } from 'hazo_llm_api/server'; * * const response = await hazo_llm_text_text(params, LLM_PROVIDERS.GEMINI); * ``` */ export declare const LLM_PROVIDERS: { readonly GEMINI: "gemini"; readonly QWEN: "qwen"; }; /** * Type for provider name - union of all valid provider names * Accepts both constants and string literals for backward compatibility * * @example * ```typescript * // Using constant (recommended) * const provider: ProviderName = LLM_PROVIDERS.GEMINI; * * // Using string literal (still works) * const provider: ProviderName = 'gemini'; * * // Custom provider (also valid) * const provider: ProviderName = 'my-custom-provider'; * ``` */ export type ProviderName = typeof LLM_PROVIDERS[keyof typeof LLM_PROVIDERS] | (string & {}); /** * Service type identifiers for LLM capabilities */ export declare const SERVICE_TYPES: { readonly TEXT_TEXT: "text_text"; readonly IMAGE_TEXT: "image_text"; readonly TEXT_IMAGE: "text_image"; readonly IMAGE_IMAGE: "image_image"; readonly DOCUMENT_TEXT: "document_text"; readonly EMBED: "embed"; }; /** * Service type string literal union */ export type ServiceType = typeof SERVICE_TYPES[keyof typeof SERVICE_TYPES]; /** * Set of capabilities that a provider supports */ export type LLMCapabilities = Set; /** * Interface that all LLM providers must implement * Providers handle the specific API calls and transformations for their LLM service */ export interface LLMProvider { /** * Get the name/identifier of this provider (e.g., "gemini", "openai") */ get_name(): string; /** * Get the capabilities this provider supports * @returns Set of supported service types */ get_capabilities(): LLMCapabilities; /** * Get the model name configured for a specific service type * @param service_type - The service type to get the model for * @returns Model name/identifier or undefined if not configured for this service */ get_model_for_service(service_type: ServiceType): string | undefined; /** * Text input → Text output * Generate text from a text prompt * * @param params - Text input parameters * @param logger - Logger instance * @returns LLM response with generated text */ text_text?(params: TextTextParams, logger: Logger): Promise; /** * Image input → Text output * Analyze an image and generate text description * * @param params - Image input parameters * @param logger - Logger instance * @returns LLM response with generated text */ image_text?(params: ImageTextParams, logger: Logger): Promise; /** * Text input → Image output * Generate an image from a text prompt * * @param params - Text input parameters for image generation * @param logger - Logger instance * @returns LLM response with generated image */ text_image?(params: TextImageParams, logger: Logger): Promise; /** * Image input → Image output * Transform/edit an image based on instructions * * @param params - Image input parameters with transformation instructions * @param logger - Logger instance * @returns LLM response with transformed image */ image_image?(params: ImageImageParams, logger: Logger): Promise; /** * Document input → Text output * Analyze a document (PDF) and generate text description * * @param params - Document input parameters * @param logger - Logger instance * @returns LLM response with generated text */ document_text?(params: DocumentTextParams, logger: Logger): Promise; /** * Text input → Text output (streaming) * Generate text from a text prompt with streaming response * * @param params - Text input parameters * @param logger - Logger instance * @returns Async generator yielding text chunks */ text_text_stream?(params: TextTextParams, logger: Logger): Promise; /** * Image input → Text output (streaming) * Analyze an image and generate text description with streaming response * * @param params - Image input parameters * @param logger - Logger instance * @returns Async generator yielding text chunks */ image_text_stream?(params: ImageTextParams, logger: Logger): Promise; /** * Embeddings — added in 1.3.0. * Generate vector embeddings for one or more text inputs. * * @param params - Text string or array of strings to embed, and optional model override * @param logger - Logger instance * @returns Result containing vectors, dimensions, model used, and optional usage info */ embed?(params: EmbedParams, logger: Logger): Promise; } /** * Base configuration for initializing an LLM provider */ export interface LLMProviderConfig { /** Provider name/identifier (e.g., "gemini", "openai") */ name: string; /** API key - should be read from .env.local (e.g., GEMINI_API_KEY) */ api_key?: string; /** Logger instance */ logger: Logger; /** Additional provider-specific configuration */ [key: string]: unknown; } //# sourceMappingURL=types.d.ts.map