using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using xCommons.Extensions; namespace xAiApi.Helpers { public class XOllamaHelper { /// /// Get Version ... /// /// public static async Task GetVersion() { // var cmd = "ollama"; var args = "--version"; var cmdResult = await XOsHelper.Execute(cmd, args); // var result = cmdResult.Error.IsNullOrEmpty() ? cmdResult.Result : cmdResult.Error; // result = result.Replace("\n", ""); // return result; } /// /// Get Exists Models ... /// /// public static async Task> GetModels() { // var cmd = "ollama"; var args = "list"; var cmdResult = await XOsHelper.Execute(cmd, args); // var cmdResultText = cmdResult.Error.IsNullOrEmpty() ? cmdResult.Result : cmdResult.Error; // var cmdResultList = cmdResultText .Split("\n") .ToList(); if (cmdResultList.Count > 0) { cmdResultList.RemoveAt(0); } // var result = new List(); if (cmdResultList.Count > 0) { // cmdResultList .ForEach(i => { // if (!i.IsNullOrEmpty()) { // var d = i.Split(" "); if (d.Length > 0) { result.Add(d[0]); } } }); } // return result; } /// /// Check Specified Model Exists ... /// /// /// public static async Task HasModel(string model) { // var result = !model.IsNullOrEmpty(); if (!result) { return result; } // var models = await GetModels(); result = models.HasChild(); if (!result) { return result; } // result = models .Any(n => n == model || n.ToNormalString().Contains(model.ToNormalString())); return result; } /// /// Search Available Models ... /// /// /// public static async Task> FindModel(string model) { // var result = new List(); // if (model.IsNullOrEmpty()) { return result; } // var models = await GetModels(); if (!models.HasChild()) { return result; } // result = models .Where(n => n == model || n.ToNormalString().Contains(model.ToNormalString())) .ToList(); // return result; } } }