apply agent realtime config
This commit is contained in:
parent
dc2e3028ec
commit
28e3518e41
|
|
@ -1,3 +1,4 @@
|
|||
using BotSharp.Abstraction.Agents.Models;
|
||||
using BotSharp.Abstraction.Functions.Models;
|
||||
using BotSharp.Abstraction.Hooks;
|
||||
using BotSharp.Abstraction.Models;
|
||||
|
|
@ -10,7 +11,8 @@ namespace BotSharp.Core.Realtime.Services;
|
|||
public class RealtimeHub : IRealtimeHub
|
||||
{
|
||||
private readonly IServiceProvider _services;
|
||||
private readonly ILogger _logger;
|
||||
private readonly ILogger<RealtimeHub> _logger;
|
||||
private readonly RealtimeModelSettings _settings;
|
||||
|
||||
private RealtimeHubConnection _conn;
|
||||
public RealtimeHubConnection HubConn => _conn;
|
||||
|
|
@ -18,10 +20,14 @@ public class RealtimeHub : IRealtimeHub
|
|||
private IRealTimeCompletion _completer;
|
||||
public IRealTimeCompletion Completer => _completer;
|
||||
|
||||
public RealtimeHub(IServiceProvider services, ILogger<RealtimeHub> logger)
|
||||
public RealtimeHub(
|
||||
IServiceProvider services,
|
||||
ILogger<RealtimeHub> logger,
|
||||
RealtimeModelSettings settings)
|
||||
{
|
||||
_services = services;
|
||||
_logger = logger;
|
||||
_settings = settings;
|
||||
}
|
||||
|
||||
public async Task ConnectToModel(
|
||||
|
|
@ -43,10 +49,10 @@ public class RealtimeHub : IRealtimeHub
|
|||
routing.Context.SetDialogs(dialogs);
|
||||
routing.Context.SetMessageId(_conn.ConversationId, Guid.Empty.ToString());
|
||||
|
||||
var states = _services.GetRequiredService<IConversationStateService>();
|
||||
var settings = _services.GetRequiredService<RealtimeModelSettings>();
|
||||
var (provider, model) = GetLlmProviderModel(agent);
|
||||
|
||||
_completer = _services.GetServices<IRealTimeCompletion>().First(x => x.Provider == settings.Provider);
|
||||
_completer = _services.GetServices<IRealTimeCompletion>().First(x => x.Provider == provider);
|
||||
_completer.SetModelName(model);
|
||||
_completer.SetOptions(options);
|
||||
|
||||
await _completer.Connect(
|
||||
|
|
@ -156,7 +162,7 @@ public class RealtimeHub : IRealtimeHub
|
|||
},
|
||||
onInterruptionDetected: async () =>
|
||||
{
|
||||
if (settings.InterruptResponse)
|
||||
if (_settings.InterruptResponse)
|
||||
{
|
||||
// Reset states
|
||||
_conn.ResetResponseState();
|
||||
|
|
@ -179,4 +185,27 @@ public class RealtimeHub : IRealtimeHub
|
|||
|
||||
return _conn;
|
||||
}
|
||||
|
||||
private (string, string) GetLlmProviderModel(Agent agent)
|
||||
{
|
||||
var provider = agent?.LlmConfig?.Realtime?.Provider;
|
||||
var model = agent?.LlmConfig?.Realtime?.Model;
|
||||
|
||||
if (!string.IsNullOrEmpty(provider) && !string.IsNullOrEmpty(model))
|
||||
{
|
||||
return (provider, model);
|
||||
}
|
||||
|
||||
provider = _settings.Provider;
|
||||
model = _settings.Model;
|
||||
|
||||
if (!string.IsNullOrEmpty(provider) && !string.IsNullOrEmpty(model))
|
||||
{
|
||||
return (provider, model);
|
||||
}
|
||||
|
||||
provider = "openai";
|
||||
model = "gpt-realtime";
|
||||
return (provider, model);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -18,11 +18,13 @@ public class GoogleRealTimeProvider : IRealTimeCompletion
|
|||
private string _model = GoogleAIModels.Gemini2FlashLive001;
|
||||
|
||||
private readonly IServiceProvider _services;
|
||||
private readonly ILogger _logger;
|
||||
private readonly ILogger<GoogleRealTimeProvider> _logger;
|
||||
private readonly GoogleAiSettings _settings;
|
||||
|
||||
private List<string> renderedInstructions = [];
|
||||
|
||||
private LlmRealtimeSession _session;
|
||||
private readonly GoogleAiSettings _settings;
|
||||
private RealtimeOptions? _realtimeOptions;
|
||||
|
||||
private const string DEFAULT_MIME_TYPE = "audio/pcm;rate=16000";
|
||||
private readonly JsonSerializerOptions _jsonOptions = new()
|
||||
|
|
@ -50,12 +52,12 @@ public class GoogleRealTimeProvider : IRealTimeCompletion
|
|||
|
||||
public GoogleRealTimeProvider(
|
||||
IServiceProvider services,
|
||||
GoogleAiSettings settings,
|
||||
ILogger<GoogleRealTimeProvider> logger)
|
||||
ILogger<GoogleRealTimeProvider> logger,
|
||||
GoogleAiSettings settings)
|
||||
{
|
||||
_settings = settings;
|
||||
_services = services;
|
||||
_logger = logger;
|
||||
_settings = settings;
|
||||
}
|
||||
|
||||
public async Task Connect(
|
||||
|
|
@ -84,7 +86,7 @@ public class GoogleRealTimeProvider : IRealTimeCompletion
|
|||
var settingsService = _services.GetRequiredService<ILlmProviderService>();
|
||||
var realtimeModelSettings = _services.GetRequiredService<RealtimeModelSettings>();
|
||||
|
||||
_model = realtimeModelSettings.Model;
|
||||
_model ??= realtimeModelSettings.Model;
|
||||
var modelSettings = settingsService.GetSetting(Provider, _model);
|
||||
|
||||
Reset();
|
||||
|
|
@ -422,7 +424,7 @@ public class GoogleRealTimeProvider : IRealTimeCompletion
|
|||
|
||||
public void SetOptions(RealtimeOptions? options)
|
||||
{
|
||||
|
||||
_realtimeOptions = options;
|
||||
}
|
||||
|
||||
#region Private methods
|
||||
|
|
|
|||
|
|
@ -67,7 +67,7 @@ public class RealTimeCompletionProvider : IRealTimeCompletion
|
|||
var settingsService = _services.GetRequiredService<ILlmProviderService>();
|
||||
var realtimeSettings = _services.GetRequiredService<RealtimeModelSettings>();
|
||||
|
||||
_model = realtimeSettings.Model;
|
||||
_model ??= realtimeSettings.Model;
|
||||
var settings = settingsService.GetSetting(Provider, _model);
|
||||
|
||||
_session = new LlmRealtimeSession(_services, new ChatSessionOptions
|
||||
|
|
|
|||
Loading…
Reference in a new issue