using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using xCommons.Extensions;
using xCommons.Helpers;
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;
}
}
}