/** * Interface for model parameters used in AI requests. * All parameters are optional except temperature. */ export interface ModelParameters { /** * Controls randomness in generation (0.0 = deterministic, 2.0 = very random). * - 0.0-0.3: Factual, focused output * - 0.4-0.7: Balanced * - 0.8-1.2: Creative, varied * Range: 0.0-2.0, Default: 0.8 */ temperature: number; /** * Penalizes token repetition (higher = less repetition). * Range: 0.0-2.0, Default: 1.1 */ repeatPenalty?: number; /** * Nucleus sampling threshold - limits token selection to cumulative probability. * Range: 0.0-1.0, Default: 0.9 */ topP?: number; /** * Limits token selection to k most likely tokens. * Range: 1-100, Default: 40 */ topK?: number; /** * Penalizes tokens proportional to their frequency (reduces overused words). * Range: -2.0-2.0, Default: 0.0 */ frequencyPenalty?: number; /** * Penalizes all previously used tokens equally (encourages new concepts). * Range: -2.0-2.0, Default: 0.0 */ presencePenalty?: number; /** * Number of previous tokens to consider for repetition penalty. * Use -1 to consider entire context window (num_ctx). * Range: 0-2048 or -1, Default: 64 */ repeatLastN?: number; /** * Maximum number of tokens to generate in the response. * Controls output length. * Range: 1+, Default: 128 (model-specific) */ numPredict?: number; /** * Context window size in tokens. * Larger values allow model to reference more previous text. * Range: 128-4096+ (model-specific), Default: 2048 */ numCtx?: number; /** * Number of tokens to process in parallel during generation. * Higher values = faster but more memory usage. * Range: 1-512, Default: 512 (model-specific) */ numBatch?: number; } /** * Interface for parameter overrides that can be applied to default model parameters. * All parameters are optional - only specify what you want to override. */ export interface ModelParameterOverrides { /** Override the base temperature setting */ temperatureOverride?: number; /** Repeat penalty override */ repeatPenalty?: number; /** Nucleus sampling (top-p) override */ topP?: number; /** Top-k sampling override */ topK?: number; /** Frequency penalty override */ frequencyPenalty?: number; /** Presence penalty override */ presencePenalty?: number; /** Repeat last N tokens override */ repeatLastN?: number; /** Maximum tokens to generate (snake_case for Ollama API compatibility) */ num_predict?: number; /** Context window size (snake_case for Ollama API compatibility) */ num_ctx?: number; /** Batch size for parallel processing (snake_case for Ollama API compatibility) */ num_batch?: number; } /** * Interface for model configuration from models.config */ export interface ModelConfig { temperature?: number; maxTokens?: number; contextLength?: number; } /** * Service for managing and validating model parameters for AI requests * Handles parameter combination, validation, and conversion to API formats */ export declare class ModelParameterManagerService { private static readonly DEFAULT_TEMPERATURE; /** * Get the effective model parameters, combining config defaults and use case overrides * @param modelConfig The model configuration from models.config * @param overrides Optional overrides from the use case * @returns Final model parameters to use */ static getEffectiveParameters(modelConfig: ModelConfig, overrides?: ModelParameterOverrides): ModelParameters; /** * Validate parameter values are within acceptable ranges * @param parameters The parameters to validate * @returns Validated parameters with any out-of-range values corrected */ static validateParameters(parameters: ModelParameters): ModelParameters; /** * Create parameter subset for logging (only non-undefined values) * @param parameters The parameters to filter * @returns Object with only defined parameters */ static getDefinedParameters(parameters: ModelParameters): Record; /** * Create parameter object for Ollama API request * @param parameters The validated parameters * @returns Object suitable for the Ollama API options field */ static toOllamaOptions(parameters: ModelParameters): Record; /** * Create default parameters for a given model type or use case * * Available presets: * - 'creative' / 'creative_writing': Optimized for novels, stories, narrative fiction * - 'factual': Optimized for reports, documentation, journalism * - 'poetic': Optimized for poetry, lyrics, artistic expression * - 'dialogue': Optimized for character dialogue, conversational content * - 'technical': Optimized for code documentation, technical guides * - 'marketing': Optimized for advertisements, promotional content * - 'analytical': General analytical tasks (legacy) * - 'balanced': General balanced approach (default) * * @param modelType The type of model or use case * @returns Default parameters for the model type * * For detailed documentation about each preset, see docs/OLLAMA_PARAMETERS.md */ static getDefaultParametersForType(modelType: string): ModelParameters; /** * Compare two parameter sets and return the differences * @param params1 First parameter set * @param params2 Second parameter set * @returns Object showing differences */ static compareParameters(params1: ModelParameters, params2: ModelParameters): Record; /** * Generate a summary string of the parameters for logging * @param parameters The parameters to summarize * @returns Human-readable parameter summary */ static summarizeParameters(parameters: ModelParameters): string; } //# sourceMappingURL=model-parameter-manager.service.d.ts.map