diff options
Diffstat (limited to 'src/Agent.App/Configuration/OllamaSettingsFactory.cs')
| -rw-r--r-- | src/Agent.App/Configuration/OllamaSettingsFactory.cs | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/src/Agent.App/Configuration/OllamaSettingsFactory.cs b/src/Agent.App/Configuration/OllamaSettingsFactory.cs new file mode 100644 index 0000000..cd71139 --- /dev/null +++ b/src/Agent.App/Configuration/OllamaSettingsFactory.cs @@ -0,0 +1,39 @@ +using System.Text.Json; +using Agent.Core.Ollama; + +namespace Agent.App.Configuration; + +public static class OllamaSettingsFactory +{ + public static OllamaSettings Create(OllamaConfiguration configuration) + { + var options = configuration.ExtraOptions.ToDictionary( + static pair => pair.Key, + static pair => JsonSerializer.SerializeToElement(pair.Value, pair.Value?.GetType() ?? typeof(object)), + StringComparer.Ordinal); + Set(options, "num_ctx", configuration.Options.NumCtx); + Set(options, "num_keep", configuration.Options.NumKeep); + Set(options, "num_predict", configuration.Options.NumPredict); + Set(options, "temperature", configuration.Options.Temperature); + Set(options, "seed", configuration.Options.Seed); + Set(options, "top_k", configuration.Options.TopK); + Set(options, "top_p", configuration.Options.TopP); + Set(options, "min_p", configuration.Options.MinP); + Set(options, "typical_p", configuration.Options.TypicalP); + Set(options, "tfs_z", configuration.Options.TfsZ); + Set(options, "repeat_last_n", configuration.Options.RepeatLastN); + Set(options, "repeat_penalty", configuration.Options.RepeatPenalty); + Set(options, "presence_penalty", configuration.Options.PresencePenalty); + Set(options, "frequency_penalty", configuration.Options.FrequencyPenalty); + Set(options, "mirostat", configuration.Options.Mirostat); + Set(options, "mirostat_tau", configuration.Options.MirostatTau); + Set(options, "mirostat_eta", configuration.Options.MirostatEta); + if (configuration.Options.Stop.Count > 0) options["stop"] = JsonSerializer.SerializeToElement(configuration.Options.Stop); + return new OllamaSettings(new Uri(configuration.Endpoint, UriKind.Absolute), configuration.Model, configuration.Think, configuration.KeepAlive, options); + } + + private static void Set<T>(Dictionary<string, JsonElement> options, string key, T? value) where T : struct + { + if (value is not null) options[key] = JsonSerializer.SerializeToElement(value.Value); + } +} |
