From 321e24cfce4797b3796dfcfdcf6762618622ec68 Mon Sep 17 00:00:00 2001 From: PaulKoudelka Date: Fri, 20 Feb 2026 14:00:13 +0100 Subject: [PATCH] Fixed handling of Google embedding response --- .../Google/GoogleEmbeddingResponse.cs | 37 +++++++++++++++++++ .../Provider/Google/ProviderGoogle.cs | 10 ----- 2 files changed, 37 insertions(+), 10 deletions(-) create mode 100644 app/MindWork AI Studio/Provider/Google/GoogleEmbeddingResponse.cs diff --git a/app/MindWork AI Studio/Provider/Google/GoogleEmbeddingResponse.cs b/app/MindWork AI Studio/Provider/Google/GoogleEmbeddingResponse.cs new file mode 100644 index 00000000..f76215a7 --- /dev/null +++ b/app/MindWork AI Studio/Provider/Google/GoogleEmbeddingResponse.cs @@ -0,0 +1,37 @@ +using System.Text.Json; +using System.Text.Json.Serialization; + +namespace AIStudio.Provider.Google; + +public sealed record GoogleEmbeddingResponse +{ + [JsonConverter(typeof(GoogleEmbeddingListConverter))] + public List? Embedding { get; init; } + + private sealed class GoogleEmbeddingListConverter : JsonConverter> + { + public override List Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) + { + if (reader.TokenType == JsonTokenType.StartObject) + { + var single = JsonSerializer.Deserialize(ref reader, options); + return single is null ? new() : new() { single }; + } + + if (reader.TokenType == JsonTokenType.StartArray) + { + return JsonSerializer.Deserialize>(ref reader, options) ?? new(); + } + + throw new JsonException("Expected object or array for embedding."); + } + + public override void Write(Utf8JsonWriter writer, List value, JsonSerializerOptions options) => + JsonSerializer.Serialize(writer, value, options); + } +} + +public sealed record GoogleEmbedding +{ + public List? Values { get; init; } +} \ No newline at end of file diff --git a/app/MindWork AI Studio/Provider/Google/ProviderGoogle.cs b/app/MindWork AI Studio/Provider/Google/ProviderGoogle.cs index 283059a4..d7ab9c86 100644 --- a/app/MindWork AI Studio/Provider/Google/ProviderGoogle.cs +++ b/app/MindWork AI Studio/Provider/Google/ProviderGoogle.cs @@ -256,14 +256,4 @@ public class ProviderGoogle() : BaseProvider(LLMProviders.GOOGLE, "https://gener ? modelId["models/".Length..] : modelId; } - - private sealed record GoogleEmbeddingResponse - { - public List? Embedding { get; set; } - } - - private sealed record GoogleEmbedding - { - public List? Values { get; set; } - } } \ No newline at end of file