From 9febf00795296d4d0b846404bfc55809f77b73a0 Mon Sep 17 00:00:00 2001
From: Jicheng Lu <103353@smsassist.com>
Date: Mon, 28 Apr 2025 17:23:25 -0500
Subject: [PATCH] exclude conclude log when init
---
.../BotSharp.Abstraction/Loggers/IContentGeneratingHook.cs | 2 +-
.../BotSharp.Abstraction/MLTasks/IRealTimeCompletion.cs | 2 +-
.../BotSharp.Core.Realtime/Services/RealtimeHub.cs | 2 +-
src/Plugins/BotSharp.Plugin.ChatHub/ChatStreamMiddleware.cs | 4 ++--
.../BotSharp.Plugin.ChatHub/Hooks/StreamingLogHook.cs | 4 +++-
.../Providers/Realtime/RealTimeCompletionProvider.cs | 4 ++--
.../Providers/Realtime/RealTimeCompletionProvider.cs | 6 ++----
7 files changed, 12 insertions(+), 12 deletions(-)
diff --git a/src/Infrastructure/BotSharp.Abstraction/Loggers/IContentGeneratingHook.cs b/src/Infrastructure/BotSharp.Abstraction/Loggers/IContentGeneratingHook.cs
index c4f63450..03b69f5f 100644
--- a/src/Infrastructure/BotSharp.Abstraction/Loggers/IContentGeneratingHook.cs
+++ b/src/Infrastructure/BotSharp.Abstraction/Loggers/IContentGeneratingHook.cs
@@ -47,5 +47,5 @@ public interface IContentGeneratingHook
///
///
///
- Task OnSessionUpdated(Agent agent, string instruction, FunctionDef[] functions) => Task.CompletedTask;
+ Task OnSessionUpdated(Agent agent, string instruction, FunctionDef[] functions, bool isInit = false) => Task.CompletedTask;
}
diff --git a/src/Infrastructure/BotSharp.Abstraction/MLTasks/IRealTimeCompletion.cs b/src/Infrastructure/BotSharp.Abstraction/MLTasks/IRealTimeCompletion.cs
index 5800c836..11174356 100644
--- a/src/Infrastructure/BotSharp.Abstraction/MLTasks/IRealTimeCompletion.cs
+++ b/src/Infrastructure/BotSharp.Abstraction/MLTasks/IRealTimeCompletion.cs
@@ -24,7 +24,7 @@ public interface IRealTimeCompletion
Task SendEventToModel(object message);
Task Disconnect();
- Task UpdateSession(RealtimeHubConnection conn);
+ Task UpdateSession(RealtimeHubConnection conn, bool isInit = false);
Task InsertConversationItem(RoleDialogModel message);
Task RemoveConversationItem(string itemId);
Task TriggerModelInference(string? instructions = null);
diff --git a/src/Infrastructure/BotSharp.Core.Realtime/Services/RealtimeHub.cs b/src/Infrastructure/BotSharp.Core.Realtime/Services/RealtimeHub.cs
index 64b63e46..b81fe0f5 100644
--- a/src/Infrastructure/BotSharp.Core.Realtime/Services/RealtimeHub.cs
+++ b/src/Infrastructure/BotSharp.Core.Realtime/Services/RealtimeHub.cs
@@ -47,7 +47,7 @@ public class RealtimeHub : IRealtimeHub
onModelReady: async () =>
{
// Not TriggerModelInference, waiting for user utter.
- var instruction = await _completer.UpdateSession(_conn);
+ var instruction = await _completer.UpdateSession(_conn, isInit: true);
var data = _conn.OnModelReady();
await (init?.Invoke(data) ?? Task.CompletedTask);
await HookEmitter.Emit(_services, async hook => await hook.OnModelReady(agent, _completer));
diff --git a/src/Plugins/BotSharp.Plugin.ChatHub/ChatStreamMiddleware.cs b/src/Plugins/BotSharp.Plugin.ChatHub/ChatStreamMiddleware.cs
index e19d3fe5..90318ff2 100644
--- a/src/Plugins/BotSharp.Plugin.ChatHub/ChatStreamMiddleware.cs
+++ b/src/Plugins/BotSharp.Plugin.ChatHub/ChatStreamMiddleware.cs
@@ -109,9 +109,9 @@ public class ChatStreamMiddleware
private async Task SendEventToUser(WebSocket webSocket, string message)
{
- var buffer = Encoding.UTF8.GetBytes(message);
- if (!webSocket.CloseStatus.HasValue)
+ if (webSocket.State == WebSocketState.Open)
{
+ var buffer = Encoding.UTF8.GetBytes(message);
await webSocket.SendAsync(new ArraySegment(buffer), WebSocketMessageType.Text, true, CancellationToken.None);
}
}
diff --git a/src/Plugins/BotSharp.Plugin.ChatHub/Hooks/StreamingLogHook.cs b/src/Plugins/BotSharp.Plugin.ChatHub/Hooks/StreamingLogHook.cs
index 069b6fc2..c5d6b15c 100644
--- a/src/Plugins/BotSharp.Plugin.ChatHub/Hooks/StreamingLogHook.cs
+++ b/src/Plugins/BotSharp.Plugin.ChatHub/Hooks/StreamingLogHook.cs
@@ -85,7 +85,7 @@ public class StreamingLogHook : ConversationHookBase, IContentGeneratingHook, IR
await SendContentLog(conversationId, input);
}
- public async Task OnSessionUpdated(Agent agent, string instruction, FunctionDef[] functions)
+ public async Task OnSessionUpdated(Agent agent, string instruction, FunctionDef[] functions, bool isInit = false)
{
var conversationId = _state.GetConversationId();
if (string.IsNullOrEmpty(conversationId)) return;
@@ -98,6 +98,8 @@ public class StreamingLogHook : ConversationHookBase, IContentGeneratingHook, IR
}
_logger.LogInformation(log);
+ if (isInit) return;
+
var message = new RoleDialogModel(AgentRole.Assistant, log)
{
MessageId = _routingCtx.MessageId
diff --git a/src/Plugins/BotSharp.Plugin.GoogleAI/Providers/Realtime/RealTimeCompletionProvider.cs b/src/Plugins/BotSharp.Plugin.GoogleAI/Providers/Realtime/RealTimeCompletionProvider.cs
index de262d80..98896ac3 100644
--- a/src/Plugins/BotSharp.Plugin.GoogleAI/Providers/Realtime/RealTimeCompletionProvider.cs
+++ b/src/Plugins/BotSharp.Plugin.GoogleAI/Providers/Realtime/RealTimeCompletionProvider.cs
@@ -238,7 +238,7 @@ public class GoogleRealTimeProvider : IRealTimeCompletion
//todo Send Audio Chunks to Model, Botsharp RealTime Implementation seems to be incomplete
}
- public async Task UpdateSession(RealtimeHubConnection conn)
+ public async Task UpdateSession(RealtimeHubConnection conn, bool isInit = false)
{
var convService = _services.GetRequiredService();
var conv = await convService.GetConversation(conn.ConversationId);
@@ -278,7 +278,7 @@ public class GoogleRealTimeProvider : IRealTimeCompletion
}).ToArray();
await HookEmitter.Emit(_services,
- async hook => { await hook.OnSessionUpdated(agent, prompt, functions); });
+ async hook => { await hook.OnSessionUpdated(agent, prompt, functions, isInit); });
if (_settings.Gemini.UseGoogleSearch)
{
diff --git a/src/Plugins/BotSharp.Plugin.OpenAI/Providers/Realtime/RealTimeCompletionProvider.cs b/src/Plugins/BotSharp.Plugin.OpenAI/Providers/Realtime/RealTimeCompletionProvider.cs
index a863d8c1..064718b4 100644
--- a/src/Plugins/BotSharp.Plugin.OpenAI/Providers/Realtime/RealTimeCompletionProvider.cs
+++ b/src/Plugins/BotSharp.Plugin.OpenAI/Providers/Realtime/RealTimeCompletionProvider.cs
@@ -264,7 +264,7 @@ public class RealTimeCompletionProvider : IRealTimeCompletion
await _session.SendEventToModel(message);
}
- public async Task UpdateSession(RealtimeHubConnection conn)
+ public async Task UpdateSession(RealtimeHubConnection conn, bool isInit = false)
{
var convService = _services.GetRequiredService();
var conv = await convService.GetConversation(conn.ConversationId);
@@ -328,13 +328,11 @@ public class RealTimeCompletionProvider : IRealTimeCompletion
await HookEmitter.Emit(_services, async hook =>
{
- await hook.OnSessionUpdated(agent, instruction, functions);
+ await hook.OnSessionUpdated(agent, instruction, functions, isInit);
});
await SendEventToModel(sessionUpdate);
-
await Task.Delay(300);
-
return instruction;
}