Skip to content

Commit 73c2e9c

Browse files
author
Jicheng Lu
committed
minor refine
1 parent b0b6c4b commit 73c2e9c

File tree

7 files changed

+34
-47
lines changed

7 files changed

+34
-47
lines changed

src/Infrastructure/BotSharp.Abstraction/MLTasks/IRealTimeCompletion.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ Task Connect(
1414
Func<string, string, Task> onModelAudioDeltaReceived,
1515
Func<Task> onModelAudioResponseDone,
1616
Func<string, Task> onModelAudioTranscriptDone,
17-
Func<List<RoleDialogModel>, Task<bool>> onModelResponseDone,
17+
Func<List<RoleDialogModel>, Task> onModelResponseDone,
1818
Func<string, Task> onConversationItemCreated,
1919
Func<RoleDialogModel, Task> onInputAudioTranscriptionDone,
2020
Func<Task> onInterruptionDetected);

src/Infrastructure/BotSharp.Core.Realtime/Services/RealtimeHub.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,10 @@ await HookEmitter.Emit<IRoutingHook>(_services, async hook => await hook.OnRouti
124124
if (isReconnect) break;
125125
}
126126

127-
return isReconnect;
127+
if (isReconnect)
128+
{
129+
await _completer.Reconnect(_conn);
130+
}
128131
},
129132
onConversationItemCreated: async response =>
130133
{

src/Plugins/BotSharp.Plugin.GoogleAI/Providers/Realtime/RealTimeCompletionProvider.cs

Lines changed: 17 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ public class GoogleRealTimeProvider : IRealTimeCompletion
4242
private Func<string, string, Task> _onModelAudioDeltaReceived;
4343
private Func<Task> _onModelAudioResponseDone;
4444
private Func<string, Task> _onModelAudioTranscriptDone;
45-
private Func<List<RoleDialogModel>, Task<bool>> _onModelResponseDone;
45+
private Func<List<RoleDialogModel>, Task> _onModelResponseDone;
4646
private Func<string, Task> _onConversationItemCreated;
4747
private Func<RoleDialogModel, Task> _onInputAudioTranscriptionDone;
4848
private Func<Task> _onInterruptionDetected;
@@ -68,11 +68,13 @@ public async Task Connect(
6868
Func<string, string, Task> onModelAudioDeltaReceived,
6969
Func<Task> onModelAudioResponseDone,
7070
Func<string, Task> onModelAudioTranscriptDone,
71-
Func<List<RoleDialogModel>, Task<bool>> onModelResponseDone,
71+
Func<List<RoleDialogModel>, Task> onModelResponseDone,
7272
Func<string, Task> onConversationItemCreated,
7373
Func<RoleDialogModel, Task> onInputAudioTranscriptionDone,
7474
Func<Task> onInterruptionDetected)
7575
{
76+
_logger.LogInformation($"Connecting {Provider} realtime server...");
77+
7678
_conn = conn;
7779
_onModelReady = onModelReady;
7880
_onModelAudioDeltaReceived = onModelAudioDeltaReceived;
@@ -106,8 +108,6 @@ public async Task Connect(
106108

107109
private async Task ReceiveMessage()
108110
{
109-
var isReconnect = false;
110-
111111
await foreach (ChatSessionUpdate update in _session.ReceiveUpdatesAsync(CancellationToken.None))
112112
{
113113
var receivedText = update?.RawResponse;
@@ -142,7 +142,7 @@ private async Task ReceiveMessage()
142142
if (functionCall != null)
143143
{
144144
var messages = OnFunctionCall(_conn, functionCall);
145-
isReconnect = await _onModelResponseDone(messages);
145+
await _onModelResponseDone(messages);
146146
}
147147
}
148148
else if (response.ServerContent != null)
@@ -161,9 +161,9 @@ private async Task ReceiveMessage()
161161
{
162162
// Handle input transcription
163163
var inputTranscription = _inputStream.GetText();
164-
if (!string.IsNullOrEmpty(inputTranscription))
164+
if (!string.IsNullOrWhiteSpace(inputTranscription))
165165
{
166-
var message = OnUserAudioTranscriptionCompleted(_conn, inputTranscription);
166+
var message = OnUserAudioTranscriptionCompleted(_conn, inputTranscription ?? string.Empty);
167167
await _onInputAudioTranscriptionDone(message);
168168
}
169169
_inputStream.Clear();
@@ -190,17 +190,15 @@ private async Task ReceiveMessage()
190190

191191
// Handle output transcription
192192
var outputTranscription = _outputStream.GetText();
193-
var messages = await OnResponseDone(_conn, outputTranscription ?? string.Empty, response.UsageMetaData);
194-
isReconnect = await _onModelResponseDone(messages);
193+
if (!string.IsNullOrWhiteSpace(outputTranscription))
194+
{
195+
var messages = await OnResponseDone(_conn, outputTranscription ?? string.Empty, response.UsageMetaData);
196+
await _onModelResponseDone(messages);
197+
}
195198
_inputStream.Clear();
196199
_outputStream.Clear();
197200
}
198201
}
199-
200-
if (isReconnect)
201-
{
202-
break;
203-
}
204202
}
205203
catch (Exception ex)
206204
{
@@ -209,16 +207,9 @@ private async Task ReceiveMessage()
209207
}
210208
}
211209

212-
if (isReconnect)
213-
{
214-
await Reconnect(_conn);
215-
}
216-
else
217-
{
218-
_inputStream.Dispose();
219-
_outputStream.Dispose();
220-
_session.Dispose();
221-
}
210+
_inputStream.Dispose();
211+
_outputStream.Dispose();
212+
_session.Dispose();
222213
}
223214

224215

@@ -369,8 +360,8 @@ await HookEmitter.Emit<IContentGeneratingHook>(_services,
369360
Model = Model.ToModelId(),
370361
SystemInstruction = request.SystemInstruction,
371362
Tools = request.Tools?.ToArray(),
372-
InputAudioTranscription = realtimeSetting.InputAudioTranscribe ? new() : null,
373-
OutputAudioTranscription = realtimeSetting.InputAudioTranscribe ? new() : null
363+
InputAudioTranscription = new(),
364+
OutputAudioTranscription = new()
374365
}
375366
};
376367

src/Plugins/BotSharp.Plugin.MicrosoftExtensionsAI/MicrosoftExtensionsAITextEmbeddingProvider.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ public MicrosoftExtensionsAITextEmbeddingProvider(IEmbeddingGenerator<string, Em
2727

2828
/// <inheritdoc/>
2929
public async Task<float[]> GetVectorAsync(string text) =>
30-
(await _generator.GenerateEmbeddingVectorAsync(text, CreateOptions())).ToArray();
30+
(await _generator.GenerateVectorAsync(text, CreateOptions())).ToArray();
3131

3232
/// <inheritdoc/>
3333
public async Task<List<float[]>> GetVectorsAsync(List<string> texts)

src/Plugins/BotSharp.Plugin.OpenAI/BotSharp.Plugin.OpenAI.csproj

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,10 @@
1010
<OutputPath>$(SolutionDir)packages</OutputPath>
1111
</PropertyGroup>
1212

13+
<ItemGroup>
14+
<None Remove="Providers\Realtime\2lpg51hd.uih~" />
15+
</ItemGroup>
16+
1317
<ItemGroup>
1418
<PackageReference Include="OpenAI" />
1519
</ItemGroup>

src/Plugins/BotSharp.Plugin.OpenAI/Providers/Realtime/RealTimeCompletionProvider.cs

Lines changed: 6 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ public class RealTimeCompletionProvider : IRealTimeCompletion
2525
private Func<string, string, Task> _onModelAudioDeltaReceived;
2626
private Func<Task> _onModelAudioResponseDone;
2727
private Func<string, Task> _onModelAudioTranscriptDone;
28-
private Func<List<RoleDialogModel>, Task<bool>> _onModelResponseDone;
28+
private Func<List<RoleDialogModel>, Task> _onModelResponseDone;
2929
private Func<string, Task> _onConversationItemCreated;
3030
private Func<RoleDialogModel, Task> _onInputAudioTranscriptionDone;
3131
private Func<Task> _onInterruptionDetected;
@@ -46,11 +46,13 @@ public async Task Connect(
4646
Func<string, string, Task> onModelAudioDeltaReceived,
4747
Func<Task> onModelAudioResponseDone,
4848
Func<string, Task> onModelAudioTranscriptDone,
49-
Func<List<RoleDialogModel>, Task<bool>> onModelResponseDone,
49+
Func<List<RoleDialogModel>, Task> onModelResponseDone,
5050
Func<string, Task> onConversationItemCreated,
5151
Func<RoleDialogModel, Task> onInputAudioTranscriptionDone,
5252
Func<Task> onInterruptionDetected)
5353
{
54+
_logger.LogInformation($"Connecting {Provider} realtime server...");
55+
5456
_conn = conn;
5557
_onModelReady = onModelReady;
5658
_onModelAudioDeltaReceived = onModelAudioDeltaReceived;
@@ -87,7 +89,6 @@ await _session.ConnectAsync(
8789

8890
private async Task ReceiveMessage(RealtimeModelSettings realtimeSettings)
8991
{
90-
var isReconnect = false;
9192
DateTime? startTime = null;
9293

9394
await foreach (ChatSessionUpdate update in _session.ReceiveUpdatesAsync(CancellationToken.None))
@@ -169,7 +170,7 @@ private async Task ReceiveMessage(RealtimeModelSettings realtimeSettings)
169170
else
170171
{
171172
var messages = await OnResponsedDone(_conn, receivedText);
172-
isReconnect = await _onModelResponseDone(messages);
173+
await _onModelResponseDone(messages);
173174
}
174175
}
175176
else if (response.Type == "conversation.item.created")
@@ -208,21 +209,9 @@ private async Task ReceiveMessage(RealtimeModelSettings realtimeSettings)
208209
{
209210
_logger.LogInformation($"{response.Type}: {receivedText}");
210211
}
211-
212-
if (isReconnect)
213-
{
214-
break;
215-
}
216212
}
217213

218-
if (isReconnect)
219-
{
220-
await Reconnect(_conn);
221-
}
222-
else
223-
{
224-
_session.Dispose();
225-
}
214+
_session.Dispose();
226215
}
227216

228217

tests/BotSharp.LLM.Tests/GoogleRealTimeTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ await realTimeCompleter.Connect(
4646
async (s, s1) => { Console.WriteLine(s); },
4747
async () => { },
4848
async (s) => { Console.WriteLine(s); },
49-
async list => { Console.WriteLine(list); return false; },
49+
async list => { Console.WriteLine(list); },
5050
async s => { Console.WriteLine(s); },
5151
async model => { Console.WriteLine(model); },
5252
async () => { Console.WriteLine("UserInterrupted"); });

0 commit comments

Comments
 (0)