add llm configs

This commit is contained in:
Jicheng Lu 2025-02-21 11:37:36 -06:00
parent 76b52af3b9
commit ed8b3aa717
5 changed files with 65 additions and 4 deletions

View file

@ -8,4 +8,5 @@ public interface ILlmProviderService
List<string> GetProviders();
LlmModelSetting GetProviderModel(string provider, string id, bool? multiModal = null, bool? realTime = false, bool imageGenerate = false);
List<LlmModelSetting> GetProviderModels(string provider);
List<LlmProviderSetting> GetLlmConfigs(LlmConfigOptions? options = null);
}

View file

@ -0,0 +1,9 @@
namespace BotSharp.Abstraction.MLTasks.Settings;
public class LlmConfigOptions
{
public LlmModelType? Type { get; set; }
public bool? MultiModal { get; set; }
public bool? RealTime { get; set; }
public bool? ImageGeneration { get; set; }
}

View file

@ -2,11 +2,9 @@ namespace BotSharp.Abstraction.MLTasks.Settings;
public class LlmProviderSetting
{
public string Provider { get; set; }
= "azure-openai";
public string Provider { get; set; } = "azure-openai";
public List<LlmModelSetting> Models { get; set; }
= new List<LlmModelSetting>();
public List<LlmModelSetting> Models { get; set; } = [];
public override string ToString()
{

View file

@ -103,4 +103,50 @@ public class LlmProviderService : ILlmProviderService
return modelSetting;
}
public List<LlmProviderSetting> GetLlmConfigs(LlmConfigOptions? options = null)
{
var settingService = _services.GetRequiredService<ISettingService>();
var providers = settingService.Bind<List<LlmProviderSetting>>($"LlmProviders");
var configs = new List<LlmProviderSetting>();
if (providers.IsNullOrEmpty()) return configs;
if (options == null) return providers ?? [];
foreach (var provider in providers)
{
var models = provider.Models ?? [];
if (options.Type.HasValue)
{
models = models.Where(x => x.Type == options.Type.Value).ToList();
}
if (options.MultiModal.HasValue)
{
models = models.Where(x => x.MultiModal == options.MultiModal.Value).ToList();
}
if (options.ImageGeneration.HasValue)
{
models = models.Where(x => x.ImageGeneration == options.ImageGeneration.Value).ToList();
}
if (options.RealTime.HasValue)
{
models = models.Where(x => x.RealTime == options.RealTime.Value).ToList();
}
if (models.IsNullOrEmpty())
{
continue;
}
provider.Models = models;
configs.Add(provider);
}
return configs;
}
}

View file

@ -27,4 +27,11 @@ public class LlmProviderController : ControllerBase
var list = _llmProvider.GetProviderModels(provider);
return list.Where(x => x.Type == LlmModelType.Chat);
}
[HttpGet("/llm-configs")]
public List<LlmProviderSetting> GetLlmConfigs([FromQuery] LlmConfigOptions options)
{
var configs = _llmProvider.GetLlmConfigs(options);
return configs;
}
}