// // GenerationParams.swift // Zyquo Local // // Author: Simon-Pierre Boucher // Mail: contact@spboucher.ai // import Foundation import MLXLMCommon /// App-level, persistable generation parameters. Mapped to MLX /// `GenerateParameters` at the engine boundary — inference behavior never /// leaks out of the Engine layer. struct GenerationParams: Codable, Hashable, Sendable { var temperature: Float var topP: Float var repetitionPenalty: Float? /// nil = no cap (bounded by the context window). var maxTokens: Int? /// nil = fresh entropy per generation. var seed: UInt64? init( temperature: Float = 0.7, topP: Float = 0.95, repetitionPenalty: Float? = nil, maxTokens: Int? = nil, seed: UInt64? = nil ) { self.temperature = temperature self.topP = topP self.repetitionPenalty = repetitionPenalty self.maxTokens = maxTokens self.seed = seed } } extension GenerationParams { /// Engine-internal mapping to MLX parameters. func toMLX() -> GenerateParameters { var p = GenerateParameters() p.temperature = temperature p.topP = topP p.repetitionPenalty = repetitionPenalty p.maxTokens = maxTokens p.seed = seed return p } }