Merge pull request #986 from hchen2020/master

Change to modelType when getting realtime model.
This commit is contained in:
Haiping 2025-04-02 12:03:03 -05:00 committed by GitHub
commit 7dab9c8b22
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
6 changed files with 17 additions and 19 deletions

View file

@ -6,7 +6,7 @@ public interface ILlmProviderService
{
LlmModelSetting GetSetting(string provider, string model);
List<string> GetProviders();
LlmModelSetting GetProviderModel(string provider, string id, bool? multiModal = null, bool realTime = false, bool imageGenerate = false);
LlmModelSetting GetProviderModel(string provider, string id, bool? multiModal = null, LlmModelType? modelType = null, bool imageGenerate = false);
List<LlmModelSetting> GetProviderModels(string provider);
List<LlmProviderSetting> GetLlmConfigs(LlmConfigOptions? options = null);
}

View file

@ -4,6 +4,5 @@ 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

@ -37,11 +37,6 @@ public class LlmModelSetting
/// </summary>
public bool MultiModal { get; set; }
/// <summary>
/// If true, allow real-time interaction
/// </summary>
public bool RealTime { get; set; }
/// <summary>
/// If true, allow generating images
/// </summary>
@ -84,5 +79,6 @@ public enum LlmModelType
Chat = 2,
Image = 3,
Embedding = 4,
Audio = 5
Audio = 5,
Realtime = 6,
}

View file

@ -1,3 +1,4 @@
using BotSharp.Abstraction.MLTasks.Settings;
using BotSharp.Core.Infrastructures;
namespace BotSharp.Core.Realtime.Services;
@ -76,7 +77,7 @@ public class RealtimeHub : IRealtimeHub
if (agent.Profiles.Contains("realtime"))
{
var llmProviderService = _services.GetRequiredService<ILlmProviderService>();
model = llmProviderService.GetProviderModel("openai", "gpt-4o", realTime: true).Name;
model = llmProviderService.GetProviderModel("openai", "gpt-4o", modelType: LlmModelType.Realtime).Name;
}
_completer.SetModelName(model);

View file

@ -32,6 +32,10 @@ public class CompletionProvider
{
return GetAudioTranscriber(services, provider: provider, model: model);
}
else if (settings.Type == LlmModelType.Realtime)
{
return GetRealTimeCompletion(services, provider: provider, model: model);
}
else
{
return GetChatCompletion(services, provider: provider, model: model, agentConfig: agentConfig);
@ -172,7 +176,7 @@ public class CompletionProvider
var completions = services.GetServices<IRealTimeCompletion>();
(provider, model) = GetProviderAndModel(services, provider: provider, model: model, modelId: modelId,
multiModal: multiModal,
realTime: true,
modelType: LlmModelType.Realtime,
agentConfig: agentConfig);
var completer = completions.FirstOrDefault(x => x.Provider == provider);
@ -191,7 +195,7 @@ public class CompletionProvider
string? model = null,
string? modelId = null,
bool? multiModal = null,
bool realTime = false,
LlmModelType? modelType = null,
bool imageGenerate = false,
AgentLlmConfig? agentConfig = null)
{
@ -217,7 +221,7 @@ public class CompletionProvider
var llmProviderService = services.GetRequiredService<ILlmProviderService>();
model = llmProviderService.GetProviderModel(provider, modelIdentity,
multiModal: multiModal,
realTime: realTime,
modelType: modelType,
imageGenerate: imageGenerate)?.Name;
}
}

View file

@ -44,7 +44,7 @@ public class LlmProviderService : ILlmProviderService
?.Models ?? new List<LlmModelSetting>();
}
public LlmModelSetting GetProviderModel(string provider, string id, bool? multiModal = null, bool realTime = false, bool imageGenerate = false)
public LlmModelSetting GetProviderModel(string provider, string id, bool? multiModal = null, LlmModelType? modelType = null, bool imageGenerate = false)
{
var models = GetProviderModels(provider)
.Where(x => x.Id == id);
@ -54,7 +54,10 @@ public class LlmProviderService : ILlmProviderService
models = models.Where(x => x.MultiModal == multiModal);
}
models = models.Where(x => x.RealTime == realTime);
if (modelType.HasValue)
{
models = models.Where(x => x.Type == modelType.Value);
}
models = models.Where(x => x.ImageGeneration == imageGenerate);
@ -130,11 +133,6 @@ public class LlmProviderService : ILlmProviderService
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;