diff --git a/Directory.Packages.props b/Directory.Packages.props index 38e68d3a..03798e37 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -45,8 +45,8 @@ - - + + @@ -148,4 +148,4 @@ - + \ No newline at end of file diff --git a/src/Infrastructure/BotSharp.Core/Infrastructures/CompletionProvider.cs b/src/Infrastructure/BotSharp.Core/Infrastructures/CompletionProvider.cs index 4bf45d86..4409c8eb 100644 --- a/src/Infrastructure/BotSharp.Core/Infrastructures/CompletionProvider.cs +++ b/src/Infrastructure/BotSharp.Core/Infrastructures/CompletionProvider.cs @@ -213,7 +213,7 @@ public class CompletionProvider model = agentConfig?.Model ?? agentSetting.LlmConfig?.Model; if (state.ContainsState("model")) { - model = state.GetState("model", model ?? "dall-e-3"); + model = state.GetState("model", model ?? "gpt-image-1"); } else if (state.ContainsState("model_id") || !string.IsNullOrEmpty(modelId)) { diff --git a/src/Plugins/BotSharp.Plugin.OpenAI/Providers/Image/ImageCompletionProvider.Generation.cs b/src/Plugins/BotSharp.Plugin.OpenAI/Providers/Image/ImageCompletionProvider.Generation.cs index 2f55d917..5747df2b 100644 --- a/src/Plugins/BotSharp.Plugin.OpenAI/Providers/Image/ImageCompletionProvider.Generation.cs +++ b/src/Plugins/BotSharp.Plugin.OpenAI/Providers/Image/ImageCompletionProvider.Generation.cs @@ -38,10 +38,8 @@ public partial class ImageCompletionProvider var options = new ImageGenerationOptions { - Size = size, - Quality = quality, - Style = style, - ResponseFormat = format + Quality = new GeneratedImageQuality("medium"), + Size = GeneratedImageSize.W1024xH1024 }; return (prompt, count, options); } diff --git a/src/Plugins/BotSharp.Plugin.OpenAI/Providers/Image/ImageCompletionProvider.cs b/src/Plugins/BotSharp.Plugin.OpenAI/Providers/Image/ImageCompletionProvider.cs index 7cfda0f5..eaa03bb0 100644 --- a/src/Plugins/BotSharp.Plugin.OpenAI/Providers/Image/ImageCompletionProvider.cs +++ b/src/Plugins/BotSharp.Plugin.OpenAI/Providers/Image/ImageCompletionProvider.cs @@ -44,7 +44,7 @@ public partial class ImageCompletionProvider : IImageCompletion { generatedImage.ImageUrl = image?.ImageUri?.AbsoluteUri ?? string.Empty; } - else if (format == GeneratedImageFormat.Bytes) + else { var base64Str = string.Empty; var bytes = image?.ImageBytes?.ToArray(); @@ -125,16 +125,16 @@ public partial class ImageCompletionProvider : IImageCompletion private GeneratedImageFormat GetImageFormat(string format) { - var value = !string.IsNullOrEmpty(format) ? format : "uri"; + var value = !string.IsNullOrEmpty(format) ? format : "bytes"; GeneratedImageFormat retFormat; switch (value) { - case "bytes": - retFormat = GeneratedImageFormat.Bytes; + case "url": + retFormat = GeneratedImageFormat.Uri; break; default: - retFormat = GeneratedImageFormat.Uri; + retFormat = GeneratedImageFormat.Bytes; break; } diff --git a/src/Plugins/BotSharp.Plugin.Twilio/TwilioStreamMiddleware.cs b/src/Plugins/BotSharp.Plugin.Twilio/TwilioStreamMiddleware.cs index ea4d5c50..3bcaf18b 100644 --- a/src/Plugins/BotSharp.Plugin.Twilio/TwilioStreamMiddleware.cs +++ b/src/Plugins/BotSharp.Plugin.Twilio/TwilioStreamMiddleware.cs @@ -3,6 +3,7 @@ using BotSharp.Abstraction.MLTasks; using BotSharp.Abstraction.Realtime; using BotSharp.Abstraction.Realtime.Models; using BotSharp.Abstraction.Routing; +using BotSharp.Abstraction.Utilities; using BotSharp.Plugin.Twilio.Interfaces; using BotSharp.Plugin.Twilio.Models.Stream; using Microsoft.AspNetCore.Http; @@ -88,10 +89,15 @@ public class TwilioStreamMiddleware continue; } - var (eventType, data) = MapEvents(conn, receivedText); + var (eventType, data) = MapEvents(conn, receivedText, conversationId); if (eventType == "user_connected") { +#if DEBUG + _logger.LogCritical($"Start twilio stream connection for conversation ({conversationId})"); +#else + _logger.LogInformation($"Start twilio stream connection for conversation ({conversationId})"); +#endif // Connect to model await ConnectToModel(hub, webSocket); } @@ -115,6 +121,11 @@ public class TwilioStreamMiddleware } else if (eventType == "user_disconnected") { +#if DEBUG + _logger.LogCritical($"Disconnecting twilio stream connection for conversation ({conversationId})"); +#else + _logger.LogInformation($"Disconnecting twilio stream connection for conversation ({conversationId})"); +#endif await hub.Completer.Disconnect(); await HandleUserDisconnected(); } @@ -131,9 +142,19 @@ public class TwilioStreamMiddleware }); } - private (string, string) MapEvents(RealtimeHubConnection conn, string receivedText) + private (string, string) MapEvents(RealtimeHubConnection conn, string receivedText, string conversationId) { - var response = JsonSerializer.Deserialize(receivedText); + StreamEventResponse? response = new(); + + try + { + response = JsonSerializer.Deserialize(receivedText); + } + catch (Exception ex) + { + _logger.LogError(ex, $"Error when deserializing twilio stream event response for conversation ({conversationId}) (response: {receivedText?.SubstringMax(30)})"); + } + conn.StreamId = response.StreamSid; string eventType = response.Event; string data = string.Empty;