diff --git a/src/Infrastructure/BotSharp.Core.Realtime/Services/RealtimeHub.cs b/src/Infrastructure/BotSharp.Core.Realtime/Services/RealtimeHub.cs index ead4185f..748468df 100644 --- a/src/Infrastructure/BotSharp.Core.Realtime/Services/RealtimeHub.cs +++ b/src/Infrastructure/BotSharp.Core.Realtime/Services/RealtimeHub.cs @@ -39,8 +39,8 @@ public class RealtimeHub : IRealtimeHub var dialogs = convService.GetDialogHistory(); if (dialogs.Count == 0) { - //dialogs.Add(new RoleDialogModel(AgentRole.User, "Hi")); - //storage.Append(_conn.ConversationId, dialogs.First()); + dialogs.Add(new RoleDialogModel(AgentRole.User, "Hi")); + storage.Append(_conn.ConversationId, dialogs.First()); } routing.Context.SetDialogs(dialogs); diff --git a/src/Plugins/BotSharp.Plugin.OpenAI/Providers/Realtime/RealTimeCompletionProvider.cs b/src/Plugins/BotSharp.Plugin.OpenAI/Providers/Realtime/RealTimeCompletionProvider.cs index eee38122..40467d3f 100644 --- a/src/Plugins/BotSharp.Plugin.OpenAI/Providers/Realtime/RealTimeCompletionProvider.cs +++ b/src/Plugins/BotSharp.Plugin.OpenAI/Providers/Realtime/RealTimeCompletionProvider.cs @@ -1,11 +1,7 @@ -using BotSharp.Abstraction.Options; using BotSharp.Plugin.OpenAI.Models.Realtime; using BotSharp.Plugin.OpenAI.Providers.Realtime.Session; -using Newtonsoft.Json.Linq; using OpenAI.Chat; -using System.Collections.Concurrent; -using System.Threading.Channels; -using static System.Runtime.InteropServices.JavaScript.JSType; +using System; namespace BotSharp.Plugin.OpenAI.Providers.Realtime; @@ -25,9 +21,6 @@ public class RealTimeCompletionProvider : IRealTimeCompletion protected string _model = "gpt-4o-mini-realtime-preview"; private RealtimeChatSession _session; - //private Channel _messageChannel; - //private ConcurrentDictionary _messageDic; - public RealTimeCompletionProvider( RealtimeModelSettings settings, ILogger logger, @@ -54,13 +47,6 @@ public class RealTimeCompletionProvider : IRealTimeCompletion var realtimeModelSettings = _services.GetRequiredService(); _model = realtimeModelSettings.Model; - //_messageDic = new(); - //_messageChannel = Channel.CreateUnbounded(new UnboundedChannelOptions - //{ - // SingleReader = true, - // SingleWriter = true - //}); - if (_session != null) { _session.Dispose(); @@ -78,38 +64,6 @@ public class RealTimeCompletionProvider : IRealTimeCompletion onConversationItemCreated, onInputAudioTranscriptionCompleted, onInterruptionDetected); - - //_ = Task.Run(async () => - //{ - // await foreach (var item in _messageChannel.Reader.ReadAllAsync()) - // { - // var start = DateTime.UtcNow; - // while (_messageDic.TryGetValue(item.ItemId, out var found) && !string.IsNullOrEmpty(found.Transcript)) - // { - // if (found.Event == "conversation.item.input_audio_transcription.completed") - // { - // var message = await OnUserAudioTranscriptionCompleted(conn, found.ReceivedText); - // if (!string.IsNullOrEmpty(message.Content)) - // { - // onInputAudioTranscriptionCompleted(message); - // } - // _messageDic.TryRemove(found.ItemId, out _); - // } - // else if (found.Event == "response.done") - // { - // var messages = await OnResponsedDone(conn, found.ReceivedText); - // onModelResponseDone(messages); - // _messageDic.TryRemove(found.ItemId, out _); - // } - - // if ((DateTime.UtcNow - start).TotalSeconds > 2) - // { - // _messageDic.TryRemove(found.ItemId, out _); - // start = DateTime.UtcNow; - // } - // } - // } - //}); } public async Task Disconnect() @@ -241,16 +195,6 @@ public class RealTimeCompletionProvider : IRealTimeCompletion { _logger.LogInformation($"{response.Type}: {receivedText}"); - //var data = JsonSerializer.Deserialize(receivedText); - //var output = data.Body.Outputs.FirstOrDefault(); - - //if (output != null && _messageDic.TryGetValue(output.Id, out var item)) - //{ - // item.Event = response.Type; - // item.ReceivedText = receivedText; - // item.Transcript = output.Content.FirstOrDefault()?.Transcript; - //} - var messages = await OnResponsedDone(conn, receivedText); onModelResponseDone(messages); } @@ -259,17 +203,6 @@ public class RealTimeCompletionProvider : IRealTimeCompletion _logger.LogInformation($"{response.Type}: {receivedText}"); var data = JsonSerializer.Deserialize(receivedText); - //_messageDic.TryAdd(data.Item.Id, new AudioMessage - //{ - // ItemId = data.Item.Id, - // ReceivedText = receivedText - //}); - //await _messageChannel.Writer.WriteAsync(new AudioMessage - //{ - // ItemId = data.Item.Id, - // ReceivedText = receivedText - //}); - await Task.Delay(500); onConversationItemCreated(receivedText); } @@ -277,14 +210,6 @@ public class RealTimeCompletionProvider : IRealTimeCompletion { _logger.LogInformation($"{response.Type}: {receivedText}"); - //var data = JsonSerializer.Deserialize(receivedText); - //if (_messageDic.TryGetValue(data.ItemId, out var item)) - //{ - // item.Event = response.Type; - // item.ReceivedText = receivedText; - // item.Transcript = data.Transcript; - //} - var message = await OnUserAudioTranscriptionCompleted(conn, receivedText); if (!string.IsNullOrEmpty(message.Content)) { @@ -305,12 +230,9 @@ public class RealTimeCompletionProvider : IRealTimeCompletion else if (response.Type == "input_audio_buffer.committed") { _logger.LogInformation($"{response.Type}: {receivedText}"); - await Task.Delay(500); } } - //_messageChannel?.Writer.TryComplete(); - //_messageChannel = null; _session.Dispose(); }