summaryrefslogtreecommitdiff
path: root/src/Agent.App/Configuration/OllamaSettingsFactory.cs
diff options
context:
space:
mode:
Diffstat (limited to 'src/Agent.App/Configuration/OllamaSettingsFactory.cs')
-rw-r--r--src/Agent.App/Configuration/OllamaSettingsFactory.cs39
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);
+ }
+}