From 8cbd3a8277b392497d019f5d01bb5c9431212b8e Mon Sep 17 00:00:00 2001 From: Matt Low Date: Wed, 25 Jun 2025 07:08:19 +0000 Subject: [PATCH] Add Temperature to Model struct --- pkg/lmcli/config.go | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/pkg/lmcli/config.go b/pkg/lmcli/config.go index 0208a8d..ac3512d 100644 --- a/pkg/lmcli/config.go +++ b/pkg/lmcli/config.go @@ -9,9 +9,10 @@ import ( ) type Model struct { - Name string - Reasoning bool - MaxTokens int + Name string + Reasoning bool + MaxTokens *int + Temperature *float32 } type Provider struct { @@ -89,11 +90,21 @@ func parseModels(rawModels []any) ([]Model, error) { if maxTokensVal, ok := rawModel["maxTokens"]; ok { // YAML numbers often unmarshal as int, sometimes float64. Handle int primarily. if maxTokensInt, ok := maxTokensVal.(int); ok { - parsedModel.MaxTokens = maxTokensInt + parsedModel.MaxTokens = &maxTokensInt } else { return nil, fmt.Errorf("Invalid 'maxTokens' type (%T) for model '%s'", maxTokensVal, parsedModel.Name) } - } // else: default is 0 + } // else: default is nil + + if temperatureVal, ok := rawModel["temperature"]; ok { + // YAML numbers often unmarshal as int, sometimes float64. Handle int primarily. + if temperatureFloat, ok := temperatureVal.(float64); ok { + asFloat32 := float32(temperatureFloat) + parsedModel.Temperature = &asFloat32 + } else { + return nil, fmt.Errorf("Invalid 'temperature' type (%T) for model '%s'", temperatureVal, parsedModel.Name) + } + } // else: default is nil default: return nil, fmt.Errorf("Invalid model definition type (%T) at index %d in provider '%s'", modelInterface, i)