From bc182303cb96451c8c5501e365f8aa08ec0631b9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B2=88=E6=98=9F=E7=B9=81?= Date: Sun, 30 Nov 2025 21:53:21 +0800 Subject: [PATCH 1/6] feat: support upload files api --- README.zh-Hans.md | 91 ++++++++++-- .../Files/FileUploadSample.cs | 37 +++++ .../Text/DataMiningSample.cs | 14 +- .../Text/LongContextSample.cs | 48 +++++-- .../DashScopeClientCore.cs | 124 ++++++++++++++-- .../DashScopeFailedUploadRecord.cs | 9 ++ src/Cnblogs.DashScope.Core/DashScopeFile.cs | 4 +- .../DashScopeFileDetail.cs | 28 ++++ .../DashScopeFileResponse.cs | 15 ++ .../DashScopeListFilesData.cs | 10 ++ ...s => DashScopeOpenAiCompatibleFileList.cs} | 2 +- .../DashScopeUploadFileData.cs | 10 ++ .../DashScopeUploadFileInput.cs | 9 ++ .../DashScopeUploadedFileRecord.cs | 8 ++ .../IDashScopeClient.cs | 93 ++++++++++-- .../Internals/ApiLinks.cs | 3 +- .../Internals/QueryStringBuilder.cs | 42 ++++++ .../ErrorTests.cs | 6 +- .../FileSerializationTests.cs | 42 ++++-- .../OpenAiCompatibleFileSerializationTests.cs | 94 ++++++++++++ .../UploadSerializationTests.cs | 6 +- ...e-file-compatible-nosse.request.header.txt | 6 + ...te-file-compatible-nosse.response.body.txt | 1 + ...-file-compatible-nosse.response.header.txt | 10 ++ .../delete-file-nosse.request.header.txt | 2 +- .../delete-file-nosse.response.body.txt | 2 +- .../delete-file-nosse.response.header.txt | 17 +-- ...t-file-compatible-nosse.request.header.txt | 6 + ...et-file-compatible-nosse.response.body.txt | 1 + ...-file-compatible-nosse.response.header.txt | 12 ++ .../get-file-nosse.request.header.txt | 2 +- .../get-file-nosse.response.body.txt | 2 +- .../get-file-nosse.response.header.txt | 13 +- .../get-upload-policy-nosse.response.body.txt | 2 +- ...-files-compatible-nosse.request.header.txt | 6 + ...t-files-compatible-nosse.response.body.txt | 1 + ...files-compatible-nosse.response.header.txt | 11 ++ .../list-files-nosse.request.header.txt | 2 +- .../list-files-nosse.response.body.txt | 2 +- .../list-files-nosse.response.header.txt | 13 +- ...oad-file-compatible-nosse.request.body.txt | 7 + ...d-file-compatible-nosse.request.header.txt | 8 ++ ...ad-file-compatible-nosse.response.body.txt | 1 + ...-file-compatible-nosse.response.header.txt | 12 ++ .../upload-file-nosse.request.header.txt | 3 +- .../upload-file-nosse.response.body.txt | 2 +- .../upload-file-nosse.response.header.txt | 13 +- ...load-temporary-file-nosse.request.body.txt | 2 +- .../Utils/RequestSnapshot.cs | 12 ++ .../Utils/Snapshots.OpenAiCompatibleFile.cs | 134 ++++++++++++++++++ .../Utils/Snapshots.cs | 43 +----- 51 files changed, 892 insertions(+), 151 deletions(-) create mode 100644 sample/Cnblogs.DashScope.Sample/Files/FileUploadSample.cs create mode 100644 src/Cnblogs.DashScope.Core/DashScopeFailedUploadRecord.cs create mode 100644 src/Cnblogs.DashScope.Core/DashScopeFileDetail.cs create mode 100644 src/Cnblogs.DashScope.Core/DashScopeFileResponse.cs create mode 100644 src/Cnblogs.DashScope.Core/DashScopeListFilesData.cs rename src/Cnblogs.DashScope.Core/{DashScopeFileList.cs => DashScopeOpenAiCompatibleFileList.cs} (72%) create mode 100644 src/Cnblogs.DashScope.Core/DashScopeUploadFileData.cs create mode 100644 src/Cnblogs.DashScope.Core/DashScopeUploadFileInput.cs create mode 100644 src/Cnblogs.DashScope.Core/DashScopeUploadedFileRecord.cs create mode 100644 src/Cnblogs.DashScope.Core/Internals/QueryStringBuilder.cs create mode 100644 test/Cnblogs.DashScope.Sdk.UnitTests/OpenAiCompatibleFileSerializationTests.cs create mode 100644 test/Cnblogs.DashScope.Tests.Shared/RawHttpData/delete-file-compatible-nosse.request.header.txt create mode 100644 test/Cnblogs.DashScope.Tests.Shared/RawHttpData/delete-file-compatible-nosse.response.body.txt create mode 100644 test/Cnblogs.DashScope.Tests.Shared/RawHttpData/delete-file-compatible-nosse.response.header.txt create mode 100644 test/Cnblogs.DashScope.Tests.Shared/RawHttpData/get-file-compatible-nosse.request.header.txt create mode 100644 test/Cnblogs.DashScope.Tests.Shared/RawHttpData/get-file-compatible-nosse.response.body.txt create mode 100644 test/Cnblogs.DashScope.Tests.Shared/RawHttpData/get-file-compatible-nosse.response.header.txt create mode 100644 test/Cnblogs.DashScope.Tests.Shared/RawHttpData/list-files-compatible-nosse.request.header.txt create mode 100644 test/Cnblogs.DashScope.Tests.Shared/RawHttpData/list-files-compatible-nosse.response.body.txt create mode 100644 test/Cnblogs.DashScope.Tests.Shared/RawHttpData/list-files-compatible-nosse.response.header.txt create mode 100644 test/Cnblogs.DashScope.Tests.Shared/RawHttpData/upload-file-compatible-nosse.request.body.txt create mode 100644 test/Cnblogs.DashScope.Tests.Shared/RawHttpData/upload-file-compatible-nosse.request.header.txt create mode 100644 test/Cnblogs.DashScope.Tests.Shared/RawHttpData/upload-file-compatible-nosse.response.body.txt create mode 100644 test/Cnblogs.DashScope.Tests.Shared/RawHttpData/upload-file-compatible-nosse.response.header.txt create mode 100644 test/Cnblogs.DashScope.Tests.Shared/Utils/Snapshots.OpenAiCompatibleFile.cs diff --git a/README.zh-Hans.md b/README.zh-Hans.md index 65b1b82..d64ef04 100644 --- a/README.zh-Hans.md +++ b/README.zh-Hans.md @@ -1173,13 +1173,46 @@ Usage: in(31)/out(34)/reasoning()/total(65) 尽管 QWen-Long 支持直接传入字符串,但还是推荐先将文件上传后再通过 FileId 的形式传入 `message` 数组中。 -上传文件,使用 `UploadFileAsync()` 方法传入文件(注意不是 `UploadTemporaryFileAsync`, 后者是用于上传媒体文件的): +上传文件,使用 `OpenAiCompatibleUploadFileAsync()` 方法传入文件: ```csharp -var file1 = await client.UploadFileAsync(File.OpenRead("1024-1.txt"), "file1.txt"); +var file1 = await client.OpenAiCompatibleUploadFileAsync(File.OpenRead("1024-1.txt"), "file1.txt"); ``` -然后将文件作为 `system` 消息传入消息数组中,注意第一条 `system` 消息不能省略,否则模型可能会将文件里的内容当作 System prompt 。 +如果文件比较大,服务端可能需要几秒的时间进行解析。根据返回的 `file.Status` 属性是否为 `processed` 可以判断是否解析完成。未解析完成的文件无法被模型使用,需要等待解析完成。以下是一个示例方法,自动等待文档解析完毕或超时抛出异常: + +```csharp +private static async Task EnsureFileProcessedAsync( + IDashScopeClient client, + DashScopeFileId id, + int timeoutInSeconds = 5) +{ + var timeout = Task.Delay(TimeSpan.FromSeconds(timeoutInSeconds)); + while (timeout.IsCompleted == false) + { + var file = await client.GetFileAsync(id); + if (file.Status == "processed") + { + return; + } + + await Task.Delay(1000); + } + + throw new InvalidOperationException($"File not processed within timeout, fileId: {id}"); +} +``` + +调用方式: + +```csharp +if (file.Status != "processed") +{ + await EnsureFileProcessedAsync(client, file.Id, 3); // 最多等待 3 秒 +} +``` + +待文档解析完成后,将文件作为 `system` 消息传入消息数组中,注意第一条 `system` 消息不能省略,否则模型可能会将文件里的内容当作 `System prompt` 。 ```csharp var messages = new List(); @@ -1211,10 +1244,10 @@ var completion = client.GetTextCompletionStreamAsync( }); ``` -最后可以通过 `DeleteFileAsync()` 方法删除上传的文件 +最后可以通过 `OpenAiCompatibleDeleteFileAsync()` 方法删除上传的文件。 ```csharp -var result = await client.DeleteFileAsync(file1.Id); +var result = await client.OpenAiCompatibleDeleteFileAsync(file1.Id); Console.WriteLine(result.Deleted ? "Success" : "Failed"); ``` @@ -1222,11 +1255,14 @@ Console.WriteLine(result.Deleted ? "Success" : "Failed"); ```csharp Console.WriteLine("Uploading file1..."); -var file1 = await client.UploadFileAsync(File.OpenRead("1024-1.txt"), "file1.txt"); +var file1 = await client.OpenAiCompatibleUploadFileAsync(File.OpenRead("1024-1.txt"), "file1.txt"); Console.WriteLine("Uploading file2..."); -var file2 = await client.UploadFileAsync(File.OpenRead("1024-2.txt"), "file2.txt"); +var file2 = await client.OpenAiCompatibleUploadFileAsync(File.OpenRead("1024-2.txt"), "file2.txt"); Console.WriteLine($"Uploaded, file1 id: {file1.Id.ToUrl()}, file2 id: {file2.Id.ToUrl()}"); +await EnsureFileProcessedAsync(client, file1); +await EnsureFileProcessedAsync(client, file2); + var messages = new List(); messages.Add(TextChatMessage.System("You are a helpful assistant")); messages.Add(TextChatMessage.File(file1.Id)); @@ -1292,6 +1328,31 @@ Console.Write("Deleting file2..."); result = await client.DeleteFileAsync(file2.Id); Console.WriteLine(result.Deleted ? "Success" : "Failed"); +private static async Task EnsureFileProcessedAsync( + IDashScopeClient client, + DashScopeFile file, + int timeoutInSeconds = 5) +{ + if (file.Status == "processed") + { + return; + } + + var timeout = Task.Delay(TimeSpan.FromSeconds(timeoutInSeconds)); + while (timeout.IsCompleted == false) + { + var realtime = await client.GetFileAsync(file.Id); + if (realtime.Status == "processed") + { + return; + } + + await Task.Delay(1000); + } + + throw new InvalidOperationException($"File not processed within timeout, fileId: {file.Id}"); +} + /* Uploading file1... Uploading file2... @@ -1324,6 +1385,14 @@ Deleting file2...Success */ ``` +**注意及时删除上传的文件,这个接口有文件总数(1万)和文件总量(100GB)限制。** + +你可以使用 `ListFileAsync` 获取完整的文件列表并删除不再需要使用的文件 + +示例: + + + ### 翻译能力(Qwen-MT) 翻译能力主要通过 `Parameters` 里的 `TranslationOptions` 进行配置。 @@ -1507,10 +1576,10 @@ Usage: in(147)/out(130)/total(277) ### 数据挖掘(Qwen-doc-turbo) -上传文件,使用 `UploadFileAsync()` 方法传入文件(注意不是 `UploadTemporaryFileAsync`, 后者是用于上传媒体文件的): +上传文件,使用 `OpenAiCompatibleUploadFileAsync()` 方法传入文件(注意不是 `UploadTemporaryFileAsync`, 后者是用于上传媒体文件的): ```csharp -var file1 = await client.UploadFileAsync(File.OpenRead("1024-1.txt"), "file1.txt"); +var file1 = await client.OpenAiCompatibleUploadFileAsync(File.OpenRead("1024-1.txt"), "file1.txt"); ``` 然后将文件作为 `system` 消息传入消息数组中,注意第一条 `system` 消息不能省略,否则模型可能会将文件里的内容当作 System prompt 。 @@ -1549,7 +1618,7 @@ var completion = client.GetTextCompletionStreamAsync( ````csharp Console.WriteLine("Uploading file1..."); -var file1 = await client.UploadFileAsync(File.OpenRead("1024-1.txt"), "file1.txt"); +var file1 = await client.OpenAiCompatibleUploadFileAsync(File.OpenRead("1024-1.txt"), "file1.txt"); var messages = new List(); messages.Add(TextChatMessage.System("You are a helpful assistant")); messages.Add(TextChatMessage.File(file1.Id)); @@ -1593,7 +1662,7 @@ if (usage != null) // Deleting files Console.Write("Deleting file1..."); -var result = await client.DeleteFileAsync(file1.Id); +var result = await client.OpenAiCompatibleDeleteFileAsync(file1.Id); Console.WriteLine(result.Deleted ? "Success" : "Failed"); /* diff --git a/sample/Cnblogs.DashScope.Sample/Files/FileUploadSample.cs b/sample/Cnblogs.DashScope.Sample/Files/FileUploadSample.cs new file mode 100644 index 0000000..cc3298a --- /dev/null +++ b/sample/Cnblogs.DashScope.Sample/Files/FileUploadSample.cs @@ -0,0 +1,37 @@ +using System.Text.Json; +using Cnblogs.DashScope.Core; + +namespace Cnblogs.DashScope.Sample.Files; + +public class FileUploadSample : ISample +{ + /// + public string Description => "Upload File Sample"; + + /// + public async Task RunAsync(IDashScopeClient client) + { + var json = new JsonSerializerOptions(JsonSerializerDefaults.Web) { WriteIndented = true }; + var file = new FileInfo("Lenna.jpg"); + Console.WriteLine("Uploading file..."); + var response = await client.UploadFilesAsync( + "file-extract", + [new DashScopeUploadFileInput(file.OpenRead(), file.Name, "Lenna")]); + Console.WriteLine($"File uploaded, fileId: {response.Data.UploadedFiles[0].FileId}"); + + await Task.Delay(1000); + Console.WriteLine("Get file info..."); + var fileInfo = await client.GetFileAsync(response.Data.UploadedFiles[0].FileId); + Console.WriteLine(JsonSerializer.Serialize(fileInfo.Data, json)); + + await Task.Delay(1000); + Console.WriteLine("List files..."); + var list = await client.ListFilesAsync(1, 2); + Console.WriteLine(JsonSerializer.Serialize(list.Data.Files, json)); + + await Task.Delay(1000); + Console.Write("Delete file..."); + await client.DeleteFileAsync(response.Data.UploadedFiles[0].FileId); + Console.WriteLine("Success"); + } +} diff --git a/sample/Cnblogs.DashScope.Sample/Text/DataMiningSample.cs b/sample/Cnblogs.DashScope.Sample/Text/DataMiningSample.cs index 3dff9a5..d8d2f60 100644 --- a/sample/Cnblogs.DashScope.Sample/Text/DataMiningSample.cs +++ b/sample/Cnblogs.DashScope.Sample/Text/DataMiningSample.cs @@ -12,11 +12,13 @@ public class DataMiningSample : ISample public async Task RunAsync(IDashScopeClient client) { Console.WriteLine("Uploading file1..."); - var file1 = await client.UploadFileAsync(File.OpenRead("1024-1.txt"), "file1.txt"); - var messages = new List(); - messages.Add(TextChatMessage.System("You are a helpful assistant")); - messages.Add(TextChatMessage.File(file1.Id)); - messages.Add(TextChatMessage.User("这篇文章讲了什么,整理成一个 JSON,需要包含标题(title)和摘要(description)")); + var file1 = await client.OpenAiCompatibleUploadFileAsync(File.OpenRead("1024-1.txt"), "file1.txt"); + var messages = new List + { + TextChatMessage.System("You are a helpful assistant"), + TextChatMessage.File(file1.Id), + TextChatMessage.User("这篇文章讲了什么,整理成一个 JSON,需要包含标题(title)和摘要(description)") + }; messages.ForEach(m => Console.WriteLine($"{m.Role} > {m.Content}")); var completion = client.GetTextCompletionStreamAsync( new ModelRequest() @@ -56,7 +58,7 @@ public async Task RunAsync(IDashScopeClient client) // Deleting files Console.Write("Deleting file1..."); - var result = await client.DeleteFileAsync(file1.Id); + var result = await client.OpenAiCompatibleDeleteFileAsync(file1.Id); Console.WriteLine(result.Deleted ? "Success" : "Failed"); } } diff --git a/sample/Cnblogs.DashScope.Sample/Text/LongContextSample.cs b/sample/Cnblogs.DashScope.Sample/Text/LongContextSample.cs index 2701673..d89fe4a 100644 --- a/sample/Cnblogs.DashScope.Sample/Text/LongContextSample.cs +++ b/sample/Cnblogs.DashScope.Sample/Text/LongContextSample.cs @@ -12,16 +12,21 @@ public class LongContextSample : ISample public async Task RunAsync(IDashScopeClient client) { Console.WriteLine("Uploading file1..."); - var file1 = await client.UploadFileAsync(File.OpenRead("1024-1.txt"), "file1.txt"); + var file1 = await client.OpenAiCompatibleUploadFileAsync(File.OpenRead("1024-1.txt"), "file1.txt"); Console.WriteLine("Uploading file2..."); - var file2 = await client.UploadFileAsync(File.OpenRead("1024-2.txt"), "file2.txt"); + var file2 = await client.OpenAiCompatibleUploadFileAsync(File.OpenRead("1024-2.txt"), "file2.txt"); Console.WriteLine($"Uploaded, file1 id: {file1.Id.ToUrl()}, file2 id: {file2.Id.ToUrl()}"); - var messages = new List(); - messages.Add(TextChatMessage.System("You are a helpful assistant")); - messages.Add(TextChatMessage.File(file1.Id)); - messages.Add(TextChatMessage.File(file2.Id)); - messages.Add(TextChatMessage.User("这两篇文章分别讲了什么?")); + await EnsureFileProcessedAsync(client, file1); + await EnsureFileProcessedAsync(client, file2); + + var messages = new List + { + TextChatMessage.System("You are a helpful assistant"), + TextChatMessage.File(file1.Id), + TextChatMessage.File(file2.Id), + TextChatMessage.User("这两篇文章分别讲了什么?") + }; messages.ForEach(m => Console.WriteLine($"{m.Role} > {m.Content}")); var completion = client.GetTextCompletionStreamAsync( @@ -72,12 +77,37 @@ public async Task RunAsync(IDashScopeClient client) // Deleting files Console.Write("Deleting file1..."); - var result = await client.DeleteFileAsync(file1.Id); + var result = await client.OpenAiCompatibleDeleteFileAsync(file1.Id); Console.WriteLine(result.Deleted ? "Success" : "Failed"); Console.Write("Deleting file2..."); - result = await client.DeleteFileAsync(file2.Id); + result = await client.OpenAiCompatibleDeleteFileAsync(file2.Id); Console.WriteLine(result.Deleted ? "Success" : "Failed"); } + + private static async Task EnsureFileProcessedAsync( + IDashScopeClient client, + DashScopeFile file, + int timeoutInSeconds = 5) + { + if (file.Status == "processed") + { + return; + } + + var timeout = Task.Delay(TimeSpan.FromSeconds(timeoutInSeconds)); + while (timeout.IsCompleted == false) + { + var realtime = await client.OpenAiCompatibleGetFileAsync(file.Id); + if (realtime.Status == "processed") + { + return; + } + + await Task.Delay(1000); + } + + throw new InvalidOperationException($"File not processed within timeout, fileId: {file.Id}"); + } } /* diff --git a/src/Cnblogs.DashScope.Core/DashScopeClientCore.cs b/src/Cnblogs.DashScope.Core/DashScopeClientCore.cs index 8bded6e..bc2eb3a 100644 --- a/src/Cnblogs.DashScope.Core/DashScopeClientCore.cs +++ b/src/Cnblogs.DashScope.Core/DashScopeClientCore.cs @@ -242,7 +242,7 @@ public async Task - public async Task UploadFileAsync( + public async Task OpenAiCompatibleUploadFileAsync( Stream file, string filename, string purpose = "file-extract", @@ -251,30 +251,44 @@ public async Task UploadFileAsync( var form = new MultipartFormDataContent(); form.Add(new StreamContent(file), "file", filename); form.Add(new StringContent(purpose), nameof(purpose)); - var request = new HttpRequestMessage(HttpMethod.Post, ApiLinks.Files) { Content = form }; + var request = new HttpRequestMessage(HttpMethod.Post, ApiLinks.FilesCompatible) { Content = form }; return (await SendCompatibleAsync(request, cancellationToken))!; } /// - public async Task GetFileAsync(DashScopeFileId id, CancellationToken cancellationToken = default) + public async Task OpenAiCompatibleGetFileAsync( + DashScopeFileId id, + CancellationToken cancellationToken = default) { - var request = BuildRequest(HttpMethod.Get, ApiLinks.Files + $"/{id}"); + var request = BuildRequest(HttpMethod.Get, ApiLinks.FilesCompatible + $"/{id}"); return (await SendCompatibleAsync(request, cancellationToken))!; } /// - public async Task ListFilesAsync(CancellationToken cancellationToken = default) + public async Task OpenAiCompatibleListFilesAsync( + string? after = null, + int? limit = null, + string? createAfter = null, + string? createBefore = null, + string? purpose = null, + CancellationToken cancellationToken = default) { - var request = BuildRequest(HttpMethod.Get, ApiLinks.Files); - return (await SendCompatibleAsync(request, cancellationToken))!; + var queryString = new QueryStringBuilder() + .Add(after) + .Add(limit) + .Add(createAfter, "create_after") + .Add(createBefore, "create_before") + .Add(purpose); + var request = BuildRequest(HttpMethod.Get, ApiLinks.FilesCompatible + queryString.Build()); + return (await SendCompatibleAsync(request, cancellationToken))!; } /// - public async Task DeleteFileAsync( + public async Task OpenAiCompatibleDeleteFileAsync( DashScopeFileId id, CancellationToken cancellationToken = default) { - var request = BuildRequest(HttpMethod.Delete, ApiLinks.Files + $"/{id}"); + var request = BuildRequest(HttpMethod.Delete, ApiLinks.FilesCompatible + $"/{id}"); return (await SendCompatibleAsync(request, cancellationToken))!; } @@ -332,7 +346,9 @@ public async Task UploadTemporaryFileAsync( form.Add(GetFormDataStringContent(policy.Data.XOssForbidOverwrite, "x-oss-forbid-overwrite")); var file = new StreamContent(fileStream); file.Headers.ContentType = null; - file.Headers.TryAddWithoutValidation("Content-Disposition", $"form-data; name=\"file\"; filename=\"{filename}\""); + file.Headers.TryAddWithoutValidation( + "Content-Disposition", + $"form-data; name=\"file\"; filename=\"{filename}\""); file.Headers.TryAddWithoutValidation("Content-Type", "application/octet-stream"); form.Add(file); var response = await _httpClient.PostAsync(policy.Data.UploadHost, form); @@ -348,6 +364,94 @@ public async Task UploadTemporaryFileAsync( await response.Content.ReadAsStringAsync()); } + /// + public async Task> UploadFilesAsync( + string purpose, + IEnumerable files, + bool leaveStreamOpen = false) + { + var form = DashScopeMultipartContent.Create(); + form.Add(GetFormDataStringContent(purpose, nameof(purpose))); + + List? toClose = null; + foreach (var fileData in files) + { + var file = new StreamContent(fileData.FileStream); + file.Headers.ContentType = null; + file.Headers.TryAddWithoutValidation( + "Content-Disposition", + $"form-data; name=\"file\"; filename=\"{fileData.FileName}\""); + form.Add(file); + if (string.IsNullOrWhiteSpace(fileData.Description) == false) + { + form.Add(GetFormDataStringContent(fileData.Description, "description")); + } + + if (!leaveStreamOpen) + { + toClose ??= new List(); + toClose.Add(fileData.FileStream); + } + } + + var response = await _httpClient.PostAsync(ApiLinks.Files(), form); + if (toClose?.Count > 0) + { + toClose.ForEach(x => x.Dispose()); + } + + return (await response.Content.ReadFromJsonAsync>( + DashScopeDefaults.SerializationOptions))!; + } + + /// + public async Task> ListFilesAsync( + int pageNo, + int pageSize, + CancellationToken cancellationToken = default) + { + var query = new QueryStringBuilder().Add(pageNo, "page_no").Add(pageSize, "page_size"); + var request = BuildRequest(HttpMethod.Get, ApiLinks.Files() + query.Build()); + var response = await SendAsync>(request, cancellationToken); + return response!; + } + + /// + public Task> GetFileAsync( + DashScopeFileId fileId, + CancellationToken cancellationToken = default) + { + return GetFileAsync(fileId.Value, cancellationToken); + } + + /// + public async Task> GetFileAsync( + string fileId, + CancellationToken cancellationToken = default) + { + var request = BuildRequest(HttpMethod.Get, ApiLinks.Files(fileId)); + var response = await SendAsync>(request, cancellationToken); + return response!; + } + + /// + public Task DeleteFileAsync( + DashScopeFileId fileId, + CancellationToken cancellationToken = default) + { + return DeleteFileAsync(fileId.Value, cancellationToken); + } + + /// + public async Task DeleteFileAsync( + string fileId, + CancellationToken cancellationToken = default) + { + var request = BuildRequest(HttpMethod.Delete, ApiLinks.Files(fileId)); + var response = await SendAsync(request, cancellationToken); + return response!; + } + private static StringContent GetFormDataStringContent(string value, string key) { var content = new StringContent(value); diff --git a/src/Cnblogs.DashScope.Core/DashScopeFailedUploadRecord.cs b/src/Cnblogs.DashScope.Core/DashScopeFailedUploadRecord.cs new file mode 100644 index 0000000..7def05a --- /dev/null +++ b/src/Cnblogs.DashScope.Core/DashScopeFailedUploadRecord.cs @@ -0,0 +1,9 @@ +namespace Cnblogs.DashScope.Core; + +/// +/// Represents one failed upload record. +/// +/// File name. +/// Error code. +/// Error message. +public record DashScopeFailedUploadRecord(string Name, string Code, string Message); diff --git a/src/Cnblogs.DashScope.Core/DashScopeFile.cs b/src/Cnblogs.DashScope.Core/DashScopeFile.cs index a544a2c..eb7c302 100644 --- a/src/Cnblogs.DashScope.Core/DashScopeFile.cs +++ b/src/Cnblogs.DashScope.Core/DashScopeFile.cs @@ -9,10 +9,12 @@ /// Unix timestamp(in seconds) of file create time. /// Name of the file. /// Purpose of the file. +/// Status of the file. public record DashScopeFile( DashScopeFileId Id, string Object, int Bytes, int CreatedAt, string Filename, - string? Purpose); + string? Purpose, + string Status); diff --git a/src/Cnblogs.DashScope.Core/DashScopeFileDetail.cs b/src/Cnblogs.DashScope.Core/DashScopeFileDetail.cs new file mode 100644 index 0000000..774b8bc --- /dev/null +++ b/src/Cnblogs.DashScope.Core/DashScopeFileDetail.cs @@ -0,0 +1,28 @@ +namespace Cnblogs.DashScope.Core; + +/// +/// Detail info of a DashScope file. +/// +/// ID of the file, can be used in model request. +/// Name of the file. +/// Description of the file. +/// File size in byte. +/// File's MD5. +/// Upload time. +/// Download link of the file. +/// Uploader's ID. +/// Region of the file. +/// ID of the api key which uploaded this file. +/// Internal ID of the file. +public record DashScopeFileDetail( + DashScopeFileId FileId, + string Name, + string Description, + int Size, + string Md5, + string GmtCreate, + string Url, + string? UserId, + string? Region, + string? ApiKeyId, + int? Id); diff --git a/src/Cnblogs.DashScope.Core/DashScopeFileResponse.cs b/src/Cnblogs.DashScope.Core/DashScopeFileResponse.cs new file mode 100644 index 0000000..64d3f41 --- /dev/null +++ b/src/Cnblogs.DashScope.Core/DashScopeFileResponse.cs @@ -0,0 +1,15 @@ +namespace Cnblogs.DashScope.Core; + +/// +/// Represent a file api response. +/// +/// Unique ID of the request. +public record DashScopeFileResponse(string RequestId); + +/// +/// Represent a file api response. +/// +/// Unique ID of the request. +/// Data of the response. +/// Type of the data. +public record DashScopeFileResponse(string RequestId, TData Data) : DashScopeFileResponse(RequestId); diff --git a/src/Cnblogs.DashScope.Core/DashScopeListFilesData.cs b/src/Cnblogs.DashScope.Core/DashScopeListFilesData.cs new file mode 100644 index 0000000..921c9e9 --- /dev/null +++ b/src/Cnblogs.DashScope.Core/DashScopeListFilesData.cs @@ -0,0 +1,10 @@ +namespace Cnblogs.DashScope.Core; + +/// +/// Represent one page of file list. +/// +/// Total count of files. +/// Page index. +/// Page size. +/// File item list. +public record DashScopeListFilesData(int Total, int PageNo, int PageSize, List Files); diff --git a/src/Cnblogs.DashScope.Core/DashScopeFileList.cs b/src/Cnblogs.DashScope.Core/DashScopeOpenAiCompatibleFileList.cs similarity index 72% rename from src/Cnblogs.DashScope.Core/DashScopeFileList.cs rename to src/Cnblogs.DashScope.Core/DashScopeOpenAiCompatibleFileList.cs index 447bc23..18874e1 100644 --- a/src/Cnblogs.DashScope.Core/DashScopeFileList.cs +++ b/src/Cnblogs.DashScope.Core/DashScopeOpenAiCompatibleFileList.cs @@ -6,4 +6,4 @@ /// Always be "list". /// True if not reached last page. /// Items of current page. -public record DashScopeFileList(string Object, bool HasMore, List Data); +public record DashScopeOpenAiCompatibleFileList(string Object, bool HasMore, List Data); diff --git a/src/Cnblogs.DashScope.Core/DashScopeUploadFileData.cs b/src/Cnblogs.DashScope.Core/DashScopeUploadFileData.cs new file mode 100644 index 0000000..c0d9f73 --- /dev/null +++ b/src/Cnblogs.DashScope.Core/DashScopeUploadFileData.cs @@ -0,0 +1,10 @@ +namespace Cnblogs.DashScope.Core; + +/// +/// Represents upload file result data. +/// +/// Successful uploads. +/// Failed uploads. +public record DashScopeUploadFileData( + List UploadedFiles, + List FailedUploads); diff --git a/src/Cnblogs.DashScope.Core/DashScopeUploadFileInput.cs b/src/Cnblogs.DashScope.Core/DashScopeUploadFileInput.cs new file mode 100644 index 0000000..baa6854 --- /dev/null +++ b/src/Cnblogs.DashScope.Core/DashScopeUploadFileInput.cs @@ -0,0 +1,9 @@ +namespace Cnblogs.DashScope.Core; + +/// +/// Represents one file input. +/// +/// File data. +/// Name of the file. +/// Description of the file. +public record DashScopeUploadFileInput(Stream FileStream, string FileName, string? Description = null); diff --git a/src/Cnblogs.DashScope.Core/DashScopeUploadedFileRecord.cs b/src/Cnblogs.DashScope.Core/DashScopeUploadedFileRecord.cs new file mode 100644 index 0000000..32916d6 --- /dev/null +++ b/src/Cnblogs.DashScope.Core/DashScopeUploadedFileRecord.cs @@ -0,0 +1,8 @@ +namespace Cnblogs.DashScope.Core; + +/// +/// Represents one uploaded file. +/// +/// File Id. +/// File name. +public record DashScopeUploadedFileRecord(DashScopeFileId FileId, string Name); diff --git a/src/Cnblogs.DashScope.Core/IDashScopeClient.cs b/src/Cnblogs.DashScope.Core/IDashScopeClient.cs index 679477d..c206916 100644 --- a/src/Cnblogs.DashScope.Core/IDashScopeClient.cs +++ b/src/Cnblogs.DashScope.Core/IDashScopeClient.cs @@ -202,7 +202,7 @@ Task> CreateImageGene /// The input of the task. /// The cancellation token to use. /// - public Task> + Task> CreateBackgroundGenerationTaskAsync( ModelRequest input, CancellationToken cancellationToken = default); @@ -215,7 +215,7 @@ public Task /// Purpose of the file, use "file-extract" to allow model access the file. Use "batch" for uploading batch operations .jsonl file. /// The cancellation token to use. /// - public Task UploadFileAsync( + Task OpenAiCompatibleUploadFileAsync( Stream file, string filename, string purpose = "file-extract", @@ -224,18 +224,29 @@ public Task UploadFileAsync( /// /// Get DashScope file by id. /// - /// Id of the file. + /// ID of the file. /// The cancellation token to use. /// /// Throws when file not exists, Status will be 404 in this case. - public Task GetFileAsync(DashScopeFileId id, CancellationToken cancellationToken = default); + Task OpenAiCompatibleGetFileAsync(DashScopeFileId id, CancellationToken cancellationToken = default); /// /// List DashScope files. /// + /// Fetch items after given file id. + /// Limit item count per page. + /// Filter files that created after given time. e.g. 20250306123000 + /// Filter files that created before given time. e.g. 20250306123000 + /// Filter files with given purpose. e.g. file-extract or batch. /// The cancellation token to use. /// - public Task ListFilesAsync(CancellationToken cancellationToken = default); + Task OpenAiCompatibleListFilesAsync( + string? after = null, + int? limit = null, + string? createAfter = null, + string? createBefore = null, + string? purpose = null, + CancellationToken cancellationToken = default); /// /// Delete DashScope file. @@ -244,7 +255,7 @@ public Task UploadFileAsync( /// The cancellation token to use. /// /// Throws when file not exists, Status would be 404. - public Task DeleteFileAsync( + Task OpenAiCompatibleDeleteFileAsync( DashScopeFileId id, CancellationToken cancellationToken = default); @@ -254,7 +265,7 @@ public Task DeleteFileAsync( /// The model to use. /// Cancellation token. /// - public Task CreateSpeechSynthesizerSocketSessionAsync( + Task CreateSpeechSynthesizerSocketSessionAsync( string modelId, CancellationToken cancellationToken = default); @@ -264,7 +275,7 @@ public Task CreateSpeechSynthesizerSocketSession /// The name of the model. /// /// - public Task GetTemporaryUploadPolicyAsync( + Task GetTemporaryUploadPolicyAsync( string modelId, CancellationToken cancellationToken = default); @@ -277,7 +288,7 @@ public Task CreateSpeechSynthesizerSocketSession /// /// Oss url of the file. /// Throws if response code is not 200. - public Task UploadTemporaryFileAsync( + Task UploadTemporaryFileAsync( string modelId, Stream fileStream, string filename, @@ -291,8 +302,70 @@ public Task UploadTemporaryFileAsync( /// The grant info. /// /// Throws if response code is not 200. - public Task UploadTemporaryFileAsync( + Task UploadTemporaryFileAsync( Stream fileStream, string filename, DashScopeTemporaryUploadPolicy policy); + + /// + /// Upload multiple files. + /// + /// Purpose of the file, can be 'file-extract', 'fine-tune', 'batch'. + /// The files to upload. + /// Do not dispose streams after request sent. + /// + Task> UploadFilesAsync( + string purpose, + IEnumerable files, + bool leaveStreamOpen = false); + + /// + /// List uploaded files. + /// + /// Page index. + /// Page size. + /// The to use. + /// + Task> ListFilesAsync( + int pageNo, + int pageSize, + CancellationToken cancellationToken = default); + + /// + /// Get uploaded file detail. + /// + /// The id of the file. + /// The to use. + /// + Task> GetFileAsync( + DashScopeFileId fileId, + CancellationToken cancellationToken = default); + + /// + /// Get uploaded file detail. + /// + /// The ID of the file. + /// The to use. + /// + Task> GetFileAsync( + string fileId, + CancellationToken cancellationToken = default); + + /// + /// Delete uploaded file. + /// + /// The ID of the file. + /// The to use. + /// + Task DeleteFileAsync( + DashScopeFileId fileId, + CancellationToken cancellationToken = default); + + /// + /// Delete uploaded file. + /// + /// The ID of the file. + /// The to use. + /// + Task DeleteFileAsync(string fileId, CancellationToken cancellationToken = default); } diff --git a/src/Cnblogs.DashScope.Core/Internals/ApiLinks.cs b/src/Cnblogs.DashScope.Core/Internals/ApiLinks.cs index aebeb4f..5cc65ca 100644 --- a/src/Cnblogs.DashScope.Core/Internals/ApiLinks.cs +++ b/src/Cnblogs.DashScope.Core/Internals/ApiLinks.cs @@ -11,6 +11,7 @@ internal static class ApiLinks public const string Tasks = "tasks/"; public const string Uploads = "uploads/"; public const string Tokenizer = "tokenizer"; - public const string Files = "/compatible-mode/v1/files"; + public static string Files(string? id = null) => string.IsNullOrWhiteSpace(id) ? "files" : $"files/{id}"; + public const string FilesCompatible = "/compatible-mode/v1/files"; public static string Application(string applicationId) => $"apps/{applicationId}/completion"; } diff --git a/src/Cnblogs.DashScope.Core/Internals/QueryStringBuilder.cs b/src/Cnblogs.DashScope.Core/Internals/QueryStringBuilder.cs new file mode 100644 index 0000000..2f28dd3 --- /dev/null +++ b/src/Cnblogs.DashScope.Core/Internals/QueryStringBuilder.cs @@ -0,0 +1,42 @@ +using System.Runtime.CompilerServices; +using System.Web; + +namespace Cnblogs.DashScope.Core.Internals; + +internal class QueryStringBuilder +{ + private readonly List> _items = new(); + + public QueryStringBuilder Add(T? value, [CallerArgumentExpression("value")] string? key = null) + => value switch + { + null => Add(key, null), + Enum e => Add(key, e.ToString("D")), + _ => Add(key, value.ToString()) + }; + + private QueryStringBuilder Add(string? parameterName, string? value) + { + ArgumentNullException.ThrowIfNull(parameterName); + if (string.IsNullOrEmpty(value)) + { + return this; + } + + _items.Add(new KeyValuePair(parameterName, value)); + return this; + } + + public string Build() + { + if (_items.Count == 0) + { + return string.Empty; + } + + var partial = string.Join( + '&', + _items.Select(x => $"{HttpUtility.UrlEncode(x.Key)}={HttpUtility.UrlEncode(x.Value)}")); + return $"?{partial}"; + } +} diff --git a/test/Cnblogs.DashScope.Sdk.UnitTests/ErrorTests.cs b/test/Cnblogs.DashScope.Sdk.UnitTests/ErrorTests.cs index 3f3d9b5..afb4ce6 100644 --- a/test/Cnblogs.DashScope.Sdk.UnitTests/ErrorTests.cs +++ b/test/Cnblogs.DashScope.Sdk.UnitTests/ErrorTests.cs @@ -92,9 +92,9 @@ public async Task Error_OpenAiCompatibleError_ExceptionAsync() var (client, _) = await Sut.GetTestClientAsync(false, testCase); // Act - var act = async () => await client.UploadFileAsync( - Snapshots.File.TestFile.OpenRead(), - Snapshots.File.TestFile.Name, + var act = async () => await client.OpenAiCompatibleUploadFileAsync( + Snapshots.OpenAiCompatibleFile.TestFile.OpenRead(), + Snapshots.OpenAiCompatibleFile.TestFile.Name, "other"); // Assert diff --git a/test/Cnblogs.DashScope.Sdk.UnitTests/FileSerializationTests.cs b/test/Cnblogs.DashScope.Sdk.UnitTests/FileSerializationTests.cs index 5a9dac0..5f420a2 100644 --- a/test/Cnblogs.DashScope.Sdk.UnitTests/FileSerializationTests.cs +++ b/test/Cnblogs.DashScope.Sdk.UnitTests/FileSerializationTests.cs @@ -1,5 +1,6 @@ -using Cnblogs.DashScope.Tests.Shared.Utils; - +using Cnblogs.DashScope.Core; +using Cnblogs.DashScope.Core.Internals; +using Cnblogs.DashScope.Tests.Shared.Utils; using NSubstitute; namespace Cnblogs.DashScope.Sdk.UnitTests; @@ -15,11 +16,19 @@ public async Task File_Upload_SuccessAsync() var (client, handler) = await Sut.GetTestClientAsync(sse, testCase); // Act - var task = await client.UploadFileAsync(Snapshots.File.TestFile.OpenRead(), Snapshots.File.TestFile.Name); + var task = await client.UploadFilesAsync( + "file-extract", + new[] + { + new DashScopeUploadFileInput(Snapshots.File.TestFile.OpenRead(), Snapshots.File.TestFile.Name), + new DashScopeUploadFileInput(Snapshots.File.TestImage.OpenRead(), Snapshots.File.TestImage.Name) + }); // Assert handler.Received().MockSend( - Arg.Is(r => r.RequestUri!.AbsolutePath == "/compatible-mode/v1/files"), + Arg.Is(r + => r.Method == testCase.GetRequestMethod(sse) + && ("/api/v1" + r.RequestUri!.PathAndQuery) == testCase.GetRequestPathAndQuery(sse)), Arg.Any()); Assert.Equivalent(testCase.ResponseModel, task); } @@ -33,12 +42,13 @@ public async Task File_Get_SuccessAsync() var (client, handler) = await Sut.GetTestClientAsync(sse, testCase); // Act - var task = await client.GetFileAsync(testCase.ResponseModel.Id); + var task = await client.GetFileAsync(testCase.ResponseModel.Data.FileId); // Assert handler.Received().MockSend( - Arg.Is( - r => r.RequestUri!.AbsolutePath == "/compatible-mode/v1/files/" + testCase.ResponseModel.Id.Value), + Arg.Is(r + => r.Method == testCase.GetRequestMethod(sse) + && ("/api/v1" + r.RequestUri!.PathAndQuery) == testCase.GetRequestPathAndQuery(sse)), Arg.Any()); Assert.Equivalent(testCase.ResponseModel, task); } @@ -48,13 +58,18 @@ public async Task File_List_SuccessAsync() { // Arrange const bool sse = false; - var testCase = Snapshots.File.ListFileNoSse; - var (client, _) = await Sut.GetTestClientAsync(sse, testCase); + var testCase = Snapshots.File.ListFilesNoSse; + var (client, handler) = await Sut.GetTestClientAsync(sse, testCase); // Act - var list = await client.ListFilesAsync(); + var list = await client.ListFilesAsync(1, 2); // Assert + handler.Received().MockSend( + Arg.Is(r + => r.Method == testCase.GetRequestMethod(sse) + && ("/api/v1" + r.RequestUri!.PathAndQuery) == testCase.GetRequestPathAndQuery(sse)), + Arg.Any()); Assert.Equivalent(testCase.ResponseModel, list); } @@ -67,12 +82,13 @@ public async Task File_Delete_SuccessAsync() var (client, handler) = await Sut.GetTestClientAsync(sse, testCase); // Act - var task = await client.DeleteFileAsync(testCase.ResponseModel.Id); + var task = await client.DeleteFileAsync("file-fe-5d5eb068893f4b5e8551ada4"); // Assert handler.Received().MockSend( - Arg.Is( - r => r.RequestUri!.AbsolutePath == "/compatible-mode/v1/files/" + testCase.ResponseModel.Id.Value), + Arg.Is(r + => r.Method == testCase.GetRequestMethod(sse) + && ("/api/v1" + r.RequestUri!.PathAndQuery) == testCase.GetRequestPathAndQuery(sse)), Arg.Any()); Assert.Equivalent(testCase.ResponseModel, task); } diff --git a/test/Cnblogs.DashScope.Sdk.UnitTests/OpenAiCompatibleFileSerializationTests.cs b/test/Cnblogs.DashScope.Sdk.UnitTests/OpenAiCompatibleFileSerializationTests.cs new file mode 100644 index 0000000..95439e8 --- /dev/null +++ b/test/Cnblogs.DashScope.Sdk.UnitTests/OpenAiCompatibleFileSerializationTests.cs @@ -0,0 +1,94 @@ +using Cnblogs.DashScope.Tests.Shared.Utils; +using NSubstitute; + +namespace Cnblogs.DashScope.Sdk.UnitTests; + +public class OpenAiCompatibleFileSerializationTests +{ + [Fact] + public async Task OpenAiFile_Upload_SuccessAsync() + { + // Arrange + const bool sse = false; + var testCase = Snapshots.OpenAiCompatibleFile.UploadFileCompatibleNoSse; + var (client, handler) = await Sut.GetTestClientAsync(sse, testCase); + + // Act + var task = await client.OpenAiCompatibleUploadFileAsync( + Snapshots.OpenAiCompatibleFile.TestFile.OpenRead(), + Snapshots.OpenAiCompatibleFile.TestFile.Name); + + // Assert + handler.Received().MockSend( + Arg.Is(r + => r.Method == testCase.GetRequestMethod(sse) + && r.RequestUri!.PathAndQuery == testCase.GetRequestPathAndQuery(sse)), + Arg.Any()); + Assert.Equivalent(testCase.ResponseModel, task); + } + + [Fact] + public async Task OpenAiFile_Get_SuccessAsync() + { + // Arrange + const bool sse = false; + var testCase = Snapshots.OpenAiCompatibleFile.GetFileCompatibleNoSse; + var (client, handler) = await Sut.GetTestClientAsync(sse, testCase); + + // Act + var task = await client.OpenAiCompatibleGetFileAsync(testCase.ResponseModel.Id); + + // Assert + handler.Received().MockSend( + Arg.Is(r + => r.Method == testCase.GetRequestMethod(sse) + && r.RequestUri!.PathAndQuery == testCase.GetRequestPathAndQuery(sse)), + Arg.Any()); + Assert.Equivalent(testCase.ResponseModel, task); + } + + [Fact] + public async Task OpenAiFile_List_SuccessAsync() + { + // Arrange + const bool sse = false; + var testCase = Snapshots.OpenAiCompatibleFile.ListFileCompatibleNoSse; + var (client, handler) = await Sut.GetTestClientAsync(sse, testCase); + + // Act + var list = await client.OpenAiCompatibleListFilesAsync( + "file-fe-e457d4773c3f4c9fbfadffaf", + 3, + "20250101", + "20251101", + "file-extract"); + + // Assert + handler.Received().MockSend( + Arg.Is(r + => r.Method == testCase.GetRequestMethod(sse) + && r.RequestUri!.PathAndQuery == testCase.GetRequestPathAndQuery(sse)), + Arg.Any()); + Assert.Equivalent(testCase.ResponseModel, list); + } + + [Fact] + public async Task OpenAiFile_Delete_SuccessAsync() + { + // Arrange + const bool sse = false; + var testCase = Snapshots.OpenAiCompatibleFile.DeleteFileCompatibleNoSse; + var (client, handler) = await Sut.GetTestClientAsync(sse, testCase); + + // Act + var task = await client.OpenAiCompatibleDeleteFileAsync(testCase.ResponseModel.Id); + + // Assert + handler.Received().MockSend( + Arg.Is(r + => r.Method == testCase.GetRequestMethod(sse) + && r.RequestUri!.PathAndQuery == testCase.GetRequestPathAndQuery(sse)), + Arg.Any()); + Assert.Equivalent(testCase.ResponseModel, task); + } +} diff --git a/test/Cnblogs.DashScope.Sdk.UnitTests/UploadSerializationTests.cs b/test/Cnblogs.DashScope.Sdk.UnitTests/UploadSerializationTests.cs index b53b069..7f77974 100644 --- a/test/Cnblogs.DashScope.Sdk.UnitTests/UploadSerializationTests.cs +++ b/test/Cnblogs.DashScope.Sdk.UnitTests/UploadSerializationTests.cs @@ -29,7 +29,7 @@ public async Task Upload_GetPolicy_SuccessAsync() public async Task Upload_SubmitFileForm_SuccessAsync() { // Arrange - var file = Snapshots.File.TestImage; + var file = Snapshots.OpenAiCompatibleFile.TestImage; var policy = Snapshots.Upload.GetPolicyNoSse.ResponseModel; var testCase = Snapshots.Upload.UploadTemporaryFileNoSse; var (client, handler) = await Sut.GetTestClientAsync(new HttpResponseMessage(HttpStatusCode.NoContent)); @@ -52,7 +52,7 @@ public async Task Upload_GetOssLinkDirectly_SuccessAsync() { // Arrange const bool sse = false; - var file = Snapshots.File.TestImage; + var file = Snapshots.OpenAiCompatibleFile.TestImage; var policyCase = Snapshots.Upload.GetPolicyNoSse; var testCase = Snapshots.Upload.UploadTemporaryFileNoSse; var (client, handler) = await Sut.GetTestClientAsync(sse, policyCase); @@ -74,7 +74,7 @@ public async Task Upload_GetOssLinkDirectly_SuccessAsync() public async Task Upload_GetPolicyFailed_ThrowsAsync() { // Arrange - var file = Snapshots.File.TestImage; + var file = Snapshots.OpenAiCompatibleFile.TestImage; var (client, _) = await Sut.GetTestClientAsync( new HttpResponseMessage(HttpStatusCode.OK) { Content = new StringContent("null") }); diff --git a/test/Cnblogs.DashScope.Tests.Shared/RawHttpData/delete-file-compatible-nosse.request.header.txt b/test/Cnblogs.DashScope.Tests.Shared/RawHttpData/delete-file-compatible-nosse.request.header.txt new file mode 100644 index 0000000..0d3b51c --- /dev/null +++ b/test/Cnblogs.DashScope.Tests.Shared/RawHttpData/delete-file-compatible-nosse.request.header.txt @@ -0,0 +1,6 @@ +DELETE /compatible-mode/v1/files/file-fe-d5c0ea9110bd47afb0505f43 HTTP/1.1 +Accept: */* +Cache-Control: no-cache +Host: dashscope.aliyuncs.com +Accept-Encoding: gzip, deflate, br +Connection: keep-alive diff --git a/test/Cnblogs.DashScope.Tests.Shared/RawHttpData/delete-file-compatible-nosse.response.body.txt b/test/Cnblogs.DashScope.Tests.Shared/RawHttpData/delete-file-compatible-nosse.response.body.txt new file mode 100644 index 0000000..8623bcd --- /dev/null +++ b/test/Cnblogs.DashScope.Tests.Shared/RawHttpData/delete-file-compatible-nosse.response.body.txt @@ -0,0 +1 @@ +{"id":"file-fe-d5c0ea9110bd47afb0505f43","object":"file","deleted":true} diff --git a/test/Cnblogs.DashScope.Tests.Shared/RawHttpData/delete-file-compatible-nosse.response.header.txt b/test/Cnblogs.DashScope.Tests.Shared/RawHttpData/delete-file-compatible-nosse.response.header.txt new file mode 100644 index 0000000..46d225f --- /dev/null +++ b/test/Cnblogs.DashScope.Tests.Shared/RawHttpData/delete-file-compatible-nosse.response.header.txt @@ -0,0 +1,10 @@ +HTTP/1.1 200 OK +x-request-id: 49bfe5eb-b1e3-43fe-8689-d930a0bd2427 +content-type: application/json +content-length: 72 +req-cost-time: 549 +req-arrive-time: 1764499740121 +resp-start-time: 1764499740670 +x-envoy-upstream-service-time: 549 +date: Sun, 30 Nov 2025 10:49:00 GMT +server: istio-envoy diff --git a/test/Cnblogs.DashScope.Tests.Shared/RawHttpData/delete-file-nosse.request.header.txt b/test/Cnblogs.DashScope.Tests.Shared/RawHttpData/delete-file-nosse.request.header.txt index 4f671b2..92043fc 100644 --- a/test/Cnblogs.DashScope.Tests.Shared/RawHttpData/delete-file-nosse.request.header.txt +++ b/test/Cnblogs.DashScope.Tests.Shared/RawHttpData/delete-file-nosse.request.header.txt @@ -1,4 +1,4 @@ -DELETE /api/v1/files/a4f34423-d413-4530-b167-b5180394f2ce HTTP/1.1 +DELETE /api/v1/files/file-fe-5d5eb068893f4b5e8551ada4 HTTP/1.1 Accept: */* Cache-Control: no-cache Host: dashscope.aliyuncs.com diff --git a/test/Cnblogs.DashScope.Tests.Shared/RawHttpData/delete-file-nosse.response.body.txt b/test/Cnblogs.DashScope.Tests.Shared/RawHttpData/delete-file-nosse.response.body.txt index f9cb602..146e441 100644 --- a/test/Cnblogs.DashScope.Tests.Shared/RawHttpData/delete-file-nosse.response.body.txt +++ b/test/Cnblogs.DashScope.Tests.Shared/RawHttpData/delete-file-nosse.response.body.txt @@ -1 +1 @@ -{"object":"file","deleted":true,"id":"file-fe-qBKjZKfTx64R9oYmwyovNHBH"} +{"request_id":"df35151c-0df6-4cad-9912-83ebf8c633a4"} diff --git a/test/Cnblogs.DashScope.Tests.Shared/RawHttpData/delete-file-nosse.response.header.txt b/test/Cnblogs.DashScope.Tests.Shared/RawHttpData/delete-file-nosse.response.header.txt index 134a7f3..2ec839d 100644 --- a/test/Cnblogs.DashScope.Tests.Shared/RawHttpData/delete-file-nosse.response.header.txt +++ b/test/Cnblogs.DashScope.Tests.Shared/RawHttpData/delete-file-nosse.response.header.txt @@ -1,12 +1,9 @@ HTTP/1.1 200 OK -x-request-id: 3817b00a-0e6d-90cd-ada4-14a468185a59 -content-type: application/json;charset=UTF-8 -date: Wed, 10 Jul 2024 04:29:31 GMT -req-cost-time: 566 -req-arrive-time: 1720585771814 -resp-start-time: 1720585772380 -x-envoy-upstream-service-time: 565 -content-encoding: gzip -vary: Accept-Encoding +content-type: application/json +content-length: 53 +req-cost-time: 843 +req-arrive-time: 1764501039838 +resp-start-time: 1764501040681 +x-envoy-upstream-service-time: 834 +date: Sun, 30 Nov 2025 11:10:40 GMT server: istio-envoy -transfer-encoding: chunked diff --git a/test/Cnblogs.DashScope.Tests.Shared/RawHttpData/get-file-compatible-nosse.request.header.txt b/test/Cnblogs.DashScope.Tests.Shared/RawHttpData/get-file-compatible-nosse.request.header.txt new file mode 100644 index 0000000..4580970 --- /dev/null +++ b/test/Cnblogs.DashScope.Tests.Shared/RawHttpData/get-file-compatible-nosse.request.header.txt @@ -0,0 +1,6 @@ +GET /compatible-mode/v1/files/file-fe-d5c0ea9110bd47afb0505f43 HTTP/1.1 +Accept: */* +Cache-Control: no-cache +Host: dashscope.aliyuncs.com +Accept-Encoding: gzip, deflate, br +Connection: keep-alive diff --git a/test/Cnblogs.DashScope.Tests.Shared/RawHttpData/get-file-compatible-nosse.response.body.txt b/test/Cnblogs.DashScope.Tests.Shared/RawHttpData/get-file-compatible-nosse.response.body.txt new file mode 100644 index 0000000..ba9d7a6 --- /dev/null +++ b/test/Cnblogs.DashScope.Tests.Shared/RawHttpData/get-file-compatible-nosse.response.body.txt @@ -0,0 +1 @@ +{"id":"file-fe-d5c0ea9110bd47afb0505f43","object":"file","bytes":1314,"filename":"file1.txt","purpose":"file-extract","status":"processed","created_at":1761480070} diff --git a/test/Cnblogs.DashScope.Tests.Shared/RawHttpData/get-file-compatible-nosse.response.header.txt b/test/Cnblogs.DashScope.Tests.Shared/RawHttpData/get-file-compatible-nosse.response.header.txt new file mode 100644 index 0000000..6ba197b --- /dev/null +++ b/test/Cnblogs.DashScope.Tests.Shared/RawHttpData/get-file-compatible-nosse.response.header.txt @@ -0,0 +1,12 @@ +HTTP/1.1 200 OK +x-request-id: a5c36afb-16a5-4f01-81a9-4001b2e0f206 +content-type: application/json +req-cost-time: 94 +req-arrive-time: 1764499203790 +resp-start-time: 1764499203885 +x-envoy-upstream-service-time: 93 +content-encoding: gzip +vary: Accept-Encoding +date: Sun, 30 Nov 2025 10:40:03 GMT +server: istio-envoy +transfer-encoding: chunked diff --git a/test/Cnblogs.DashScope.Tests.Shared/RawHttpData/get-file-nosse.request.header.txt b/test/Cnblogs.DashScope.Tests.Shared/RawHttpData/get-file-nosse.request.header.txt index 88f0217..1073e2b 100644 --- a/test/Cnblogs.DashScope.Tests.Shared/RawHttpData/get-file-nosse.request.header.txt +++ b/test/Cnblogs.DashScope.Tests.Shared/RawHttpData/get-file-nosse.request.header.txt @@ -1,4 +1,4 @@ -GET /api/v1/files/6f87e744-aaff-409c-b596-1b851554bd6d HTTP/1.1 +GET /api/v1/files/file-fe-5d5eb068893f4b5e8551ada4 HTTP/1.1 Accept: */* Cache-Control: no-cache Host: dashscope.aliyuncs.com diff --git a/test/Cnblogs.DashScope.Tests.Shared/RawHttpData/get-file-nosse.response.body.txt b/test/Cnblogs.DashScope.Tests.Shared/RawHttpData/get-file-nosse.response.body.txt index 8fdf9c4..5a5c625 100644 --- a/test/Cnblogs.DashScope.Tests.Shared/RawHttpData/get-file-nosse.response.body.txt +++ b/test/Cnblogs.DashScope.Tests.Shared/RawHttpData/get-file-nosse.response.body.txt @@ -1 +1 @@ -{"id":"file-fe-qBKjZKfTx64R9oYmwyovNHBH","object":"file","bytes":6,"created_at":1720582024,"filename":"test1.txt","purpose":"file-extract","status":"processed"} +{"data":{"id":193306194,"name":"test2.txt","description":"","purpose":"file-extract","size":7,"md5":"Td5oBnUd0kfuUGMd0zd5Ig==","region":"cn-beijing","file_id":"file-fe-5d5eb068893f4b5e8551ada4","url":"http://dashscope-file-mgr.oss-cn-beijing.aliyuncs.com/api-fs/1493478651020171/67516/2f2e1a67-e94c-4a00-8e86-6d51d94a8f75/test2.txt?Expires=1764587166&OSSAccessKeyId=STS.NZN1pTGUrUxPQhPveYcaRAYMg&Signature=k7llO9KgcPkeuQicUgwaGR2w%2F4A%3D&security-token=CAIS1AJ1q6Ft5B2yfSjIr5n7esrgqopT4rq7U07hkmUMb%2B5%2BrpzmhTz2IHhMdHFqBOwasfQ1nWxY7P0Ylrp6SJtIXleCZtF94oxN9h2gb4fb4wUfE3vB08%2FLI3OaLjKm9u2wCryLYbGwU%2FOpbE%2B%2B5U0X6LDmdDKkckW4OJmS8%2FBOZcgWWQ%2FKBlgvRq0hRG1YpdQdKGHaONu0LxfumRCwNkdzvRdmgm4NgsbWgO%2Fks0SD0gall7ZO%2FNiqfcL%2FMvMBZskvD42Hu8VtbbfE3SJq7BxHybx7lqQs%2B02c5onNWwMMv0nZY7CNro01d1VjFqQhXqBFqPW5jvBipO3YmsHv0RFBeOZOSDQE1i1TRm1UcgnAGaHaFd6TUxylurgEBon2HKn5z1gvlRKYWhvQG45hiCYmPtXwQEGpNl5k7MlN5QbLfi8Yf1QXq3esyb6gQz4rK%2F1R8LZDUvdUGoABihW5mNOnIIV1zRuddC7OZ50nQwm%2F23uV3Y8WICHL1WbbOqhjkgUlqZdQhBVk4pNlL2QoziUCeSwPJa6o2mvoch%2BIVx5OA48YB9pBa2KYLl%2BAkVNzQVU%2FLtOR2bQQWQwIwtKwJEP107ZOFwwQgLOapGkrawOc7PEdg0Brr71x%2BrEgAA%3D%3D","user_id":"1493478651020171","api_key_id":"67516","gmt_create":"2025-11-30 18:42:45"},"request_id":"1f05e2cb-de12-46f1-872c-ab70aa15e87f"} diff --git a/test/Cnblogs.DashScope.Tests.Shared/RawHttpData/get-file-nosse.response.header.txt b/test/Cnblogs.DashScope.Tests.Shared/RawHttpData/get-file-nosse.response.header.txt index 8cf0266..457bd0e 100644 --- a/test/Cnblogs.DashScope.Tests.Shared/RawHttpData/get-file-nosse.response.header.txt +++ b/test/Cnblogs.DashScope.Tests.Shared/RawHttpData/get-file-nosse.response.header.txt @@ -1,12 +1,11 @@ HTTP/1.1 200 OK -x-request-id: 7564ffca-ae8f-9b85-908b-c33ab076a364 -content-type: application/json;charset=UTF-8 -date: Wed, 10 Jul 2024 04:12:14 GMT -req-cost-time: 138 -req-arrive-time: 1720584734533 -resp-start-time: 1720584734671 -x-envoy-upstream-service-time: 137 +content-type: application/json +req-cost-time: 50 +req-arrive-time: 1764500766449 +resp-start-time: 1764500766499 +x-envoy-upstream-service-time: 44 content-encoding: gzip vary: Accept-Encoding +date: Sun, 30 Nov 2025 11:06:06 GMT server: istio-envoy transfer-encoding: chunked diff --git a/test/Cnblogs.DashScope.Tests.Shared/RawHttpData/get-upload-policy-nosse.response.body.txt b/test/Cnblogs.DashScope.Tests.Shared/RawHttpData/get-upload-policy-nosse.response.body.txt index fec31a7..82c0f7b 100644 --- a/test/Cnblogs.DashScope.Tests.Shared/RawHttpData/get-upload-policy-nosse.response.body.txt +++ b/test/Cnblogs.DashScope.Tests.Shared/RawHttpData/get-upload-policy-nosse.response.body.txt @@ -1 +1 @@ -{"data":{"policy":"eyJleHBpcmF0aW9uIjoiMjAyNS0wNy0xMlQxMjoxMDoyNC40ODhaIiwiY29uZGl0aW9ucyI6W1siY29udGVudC1sZW5ndGgtcmFuZ2UiLDAsMTA3Mzc0MTgyNF0sWyJzdGFydHMtd2l0aCIsIiRrZXkiLCJkYXNoc2NvcGUtaW5zdGFudFwvNTJhZmUwNzdmYjQ4MjVjNmQ3NDQxMTc1OGNiMWFiOThcLzIwMjUtMDctMTJcL2I3NDRmNGY4LTFhOWMtOWM2Yi05NTBkLTBkMzI3ZTMzMWYyZiJdLHsiYnVja2V0IjoiZGFzaHNjb3BlLWZpbGUtbWdyIn0seyJ4LW9zcy1vYmplY3QtYWNsIjoicHJpdmF0ZSJ9LHsieC1vc3MtZm9yYmlkLW92ZXJ3cml0ZSI6InRydWUifV19","signature":"n3dNX/aD3+WAly0QgzsURfiIk00=","upload_dir":"dashscope-instant/52afe077fb4825c6d74411758cb1ab98/2025-07-12/b744f4f8-1a9c-9c6b-950d-0d327e331f2f","upload_host":"https://dashscope-file-mgr.oss-cn-beijing.aliyuncs.com","expire_in_seconds":300,"max_file_size_mb":1024,"capacity_limit_mb":999999999,"oss_access_key_id":"LTAI5tG7vL6zZFFbuNrkCjdo","x_oss_object_acl":"private","x_oss_forbid_overwrite":"true"},"request_id":"b744f4f8-1a9c-9c6b-950d-0d327e331f2f"} +{"data":{"policy":"eyJleHBpcmF0aW9uIjoiMjAyNS0wNy0xMlQxMjoxMDoyNC40ODhaIiwiY29uZGl0aW9ucyI6W1siY29udGVudC1sZW5ndGgtcmFuZ2UiLDAsMTA3Mzc0MTgyNF0sWyJzdGFydHMtd2l0aCIsIiRrZXkiLCJkYXNoc2NvcGUtaW5zdGFudFwvNTJhZmUwNzdmYjQ4MjVjNmQ3NDQxMTc1OGNiMWFiOThcLzIwMjUtMDctMTJcL2I3NDRmNGY4LTFhOWMtOWM2Yi05NTBkLTBkMzI3ZTMzMWYyZiJdLHsiYnVja2V0IjoiZGFzaHNjb3BlLWZpbGUtbWdyIn0seyJ4LW9zcy1vYmplY3QtYWNsIjoicHJpdmF0ZSJ9LHsieC1vc3MtZm9yYmlkLW92ZXJ3cml0ZSI6InRydWUifV19","signature":"n3dNX/aD3+WAly0QgzsURfiIk00=","upload_dir":"dashscope-instant/52afe077fb4825c6d74411758cb1ab98/2025-07-12/b744f4f8-1a9c-9c6b-950d-0d327e331f2f","upload_host":"https://dashscope-file-mgr.oss-cn-beijing.aliyuncs.com","expire_in_seconds":300,"max_file_size_mb":1024,"capacity_limit_mb":999999999,"oss_access_key_id":"accessKeyId","x_oss_object_acl":"private","x_oss_forbid_overwrite":"true"},"request_id":"b744f4f8-1a9c-9c6b-950d-0d327e331f2f"} diff --git a/test/Cnblogs.DashScope.Tests.Shared/RawHttpData/list-files-compatible-nosse.request.header.txt b/test/Cnblogs.DashScope.Tests.Shared/RawHttpData/list-files-compatible-nosse.request.header.txt new file mode 100644 index 0000000..61b8dd2 --- /dev/null +++ b/test/Cnblogs.DashScope.Tests.Shared/RawHttpData/list-files-compatible-nosse.request.header.txt @@ -0,0 +1,6 @@ +GET /compatible-mode/v1/files?after=file-fe-e457d4773c3f4c9fbfadffaf&limit=3&create_after=20250101&create_before=20251101&purpose=file-extract HTTP/1.1 +Accept: */* +Cache-Control: no-cache +Host: dashscope.aliyuncs.com +Accept-Encoding: gzip, deflate, br +Connection: keep-alive diff --git a/test/Cnblogs.DashScope.Tests.Shared/RawHttpData/list-files-compatible-nosse.response.body.txt b/test/Cnblogs.DashScope.Tests.Shared/RawHttpData/list-files-compatible-nosse.response.body.txt new file mode 100644 index 0000000..5075987 --- /dev/null +++ b/test/Cnblogs.DashScope.Tests.Shared/RawHttpData/list-files-compatible-nosse.response.body.txt @@ -0,0 +1 @@ +{"object":"list","data":[{"id":"file-fe-d5c0ea9110bd47afb0505f43","object":"file","bytes":1314,"filename":"file1.txt","purpose":"file-extract","status":"processed","created_at":1761480070}],"has_more":false} diff --git a/test/Cnblogs.DashScope.Tests.Shared/RawHttpData/list-files-compatible-nosse.response.header.txt b/test/Cnblogs.DashScope.Tests.Shared/RawHttpData/list-files-compatible-nosse.response.header.txt new file mode 100644 index 0000000..071972e --- /dev/null +++ b/test/Cnblogs.DashScope.Tests.Shared/RawHttpData/list-files-compatible-nosse.response.header.txt @@ -0,0 +1,11 @@ +HTTP/1.1 200 OK +x-request-id: 5f796ece-c45b-4cda-94fb-b291ef925bc9 +content-type: application/json +req-cost-time: 200 +req-arrive-time: 1764485805115 +resp-start-time: 1764485805315 +x-envoy-upstream-service-time: 199 +content-encoding: gzip +vary: Accept-Encoding +date: Sun, 30 Nov 2025 06:56:44 GMT +server: istio-envoy diff --git a/test/Cnblogs.DashScope.Tests.Shared/RawHttpData/list-files-nosse.request.header.txt b/test/Cnblogs.DashScope.Tests.Shared/RawHttpData/list-files-nosse.request.header.txt index 83d65b4..55d1d9b 100644 --- a/test/Cnblogs.DashScope.Tests.Shared/RawHttpData/list-files-nosse.request.header.txt +++ b/test/Cnblogs.DashScope.Tests.Shared/RawHttpData/list-files-nosse.request.header.txt @@ -1,4 +1,4 @@ -GET /api/v1/files?page_no=1&page_size=1 HTTP/1.1 +GET /api/v1/files?page_no=1&page_size=2 HTTP/1.1 Accept: */* Cache-Control: no-cache Host: dashscope.aliyuncs.com diff --git a/test/Cnblogs.DashScope.Tests.Shared/RawHttpData/list-files-nosse.response.body.txt b/test/Cnblogs.DashScope.Tests.Shared/RawHttpData/list-files-nosse.response.body.txt index cc2b25e..3e7d550 100644 --- a/test/Cnblogs.DashScope.Tests.Shared/RawHttpData/list-files-nosse.response.body.txt +++ b/test/Cnblogs.DashScope.Tests.Shared/RawHttpData/list-files-nosse.response.body.txt @@ -1 +1 @@ -{"object":"list","has_more":false,"data":[{"id":"file-fe-qBKjZKfTx64R9oYmwyovNHBH","object":"file","bytes":6,"created_at":1720582024,"filename":"test1.txt","purpose":"file-extract","status":"processed"},{"id":"file-fe-WTTG89tIUTd4ByqP3K48R3bn","object":"file","bytes":6,"created_at":1720535665,"filename":"test1.txt","purpose":"file-extract","status":"processed"}]} +{"data":{"total":15,"files":[{"id":193320717,"name":"test2.txt","description":"test2","size":7,"md5":"Td5oBnUd0kfuUGMd0zd5Ig==","region":"cn-beijing","file_id":"311d3340-1f9b-487c-bd35-481cd5a23855","url":"http://dashscope-file-mgr.oss-cn-beijing.aliyuncs.com/api-fs/1493478651020171/67516/311d3340-1f9b-487c-bd35-481cd5a23855/test2.txt?Expires=1764589060&OSSAccessKeyId=STS.NYUDr5WyfdYrXTGudSB7jFWoH&Signature=xa4nsjmZTcHaOfTXvv3cR7C7vNE%3D&security-token=CAIS1AJ1q6Ft5B2yfSjIr5rgD8iBuqZH05uZWnL2kWQGTrhGqZLEqjz2IHhMdHFqBOwasfQ1nWxY7P0Ylrp6SJtIXleCZtF94oxN9h2gb4fb40tLcHrB08%2FLI3OaLjKm9u2wCryLYbGwU%2FOpbE%2B%2B5U0X6LDmdDKkckW4OJmS8%2FBOZcgWWQ%2FKBlgvRq0hRG1YpdQdKGHaONu0LxfumRCwNkdzvRdmgm4NgsbWgO%2Fks0SD0gall7ZO%2FNiqfcL%2FMvMBZskvD42Hu8VtbbfE3SJq7BxHybx7lqQs%2B02c5onNWwMMv0nZY7CNro01d1VjFqQhXqBFqPW5jvBipO3YmsHv0RFBeOZOSDQE1i1TRm1UcgnAGaHaFd6TUxylurgEJk7zIan5z1gvlRKYWhvQG45hiCYmPtXwQEGpNl5k7MlN5QbLfi8Yf1QXq3esyb6gQz4rK2zRlCpDUvdUGoABOb8SEKtMfDU%2FVSF1VJ7hLFCQxC%2F7xuFKTrsxyK2UMGsgt18A%2Fe8Tq%2BtiBoH94pv%2B1hhJ34C6qRwLdhbhIN31TmYd%2FV9xPc9QFJYZuh49xUXFeapxnuaM8KxoXVc94FBlIy9ccDi%2FG%2BOyNbrtISjtNhJXehcJQ66tMTRxYIVeUA4gAA%3D%3D","user_id":"1493478651020171","api_key_id":"67516","gmt_create":"2025-11-30 19:37:33"},{"id":193320718,"name":"test1.txt","description":"test1","size":6,"md5":"2wbHjR4kz3CKFM6BybYX7A==","region":"cn-beijing","file_id":"8a95f76a-8d79-4d8d-b372-7d0a72493680","url":"http://dashscope-file-mgr.oss-cn-beijing.aliyuncs.com/api-fs/1493478651020171/67516/8a95f76a-8d79-4d8d-b372-7d0a72493680/test1.txt?Expires=1764589060&OSSAccessKeyId=STS.NYUDr5WyfdYrXTGudSB7jFWoH&Signature=1Gi%2FeChAGNPeFQj2oLszyd7M3ng%3D&security-token=CAIS1AJ1q6Ft5B2yfSjIr5rgD8iBuqZH05uZWnL2kWQGTrhGqZLEqjz2IHhMdHFqBOwasfQ1nWxY7P0Ylrp6SJtIXleCZtF94oxN9h2gb4fb40tLcHrB08%2FLI3OaLjKm9u2wCryLYbGwU%2FOpbE%2B%2B5U0X6LDmdDKkckW4OJmS8%2FBOZcgWWQ%2FKBlgvRq0hRG1YpdQdKGHaONu0LxfumRCwNkdzvRdmgm4NgsbWgO%2Fks0SD0gall7ZO%2FNiqfcL%2FMvMBZskvD42Hu8VtbbfE3SJq7BxHybx7lqQs%2B02c5onNWwMMv0nZY7CNro01d1VjFqQhXqBFqPW5jvBipO3YmsHv0RFBeOZOSDQE1i1TRm1UcgnAGaHaFd6TUxylurgEJk7zIan5z1gvlRKYWhvQG45hiCYmPtXwQEGpNl5k7MlN5QbLfi8Yf1QXq3esyb6gQz4rK2zRlCpDUvdUGoABOb8SEKtMfDU%2FVSF1VJ7hLFCQxC%2F7xuFKTrsxyK2UMGsgt18A%2Fe8Tq%2BtiBoH94pv%2B1hhJ34C6qRwLdhbhIN31TmYd%2FV9xPc9QFJYZuh49xUXFeapxnuaM8KxoXVc94FBlIy9ccDi%2FG%2BOyNbrtISjtNhJXehcJQ66tMTRxYIVeUA4gAA%3D%3D","user_id":"1493478651020171","api_key_id":"67516","gmt_create":"2025-11-30 19:37:33"}],"page_size":2,"page_no":1},"request_id":"d4bdceb3-0a87-4025-b226-afb13c5a3442"} diff --git a/test/Cnblogs.DashScope.Tests.Shared/RawHttpData/list-files-nosse.response.header.txt b/test/Cnblogs.DashScope.Tests.Shared/RawHttpData/list-files-nosse.response.header.txt index 4c0de6c..15ea150 100644 --- a/test/Cnblogs.DashScope.Tests.Shared/RawHttpData/list-files-nosse.response.header.txt +++ b/test/Cnblogs.DashScope.Tests.Shared/RawHttpData/list-files-nosse.response.header.txt @@ -1,12 +1,11 @@ HTTP/1.1 200 OK -x-request-id: 7b920d81-2d97-965e-835d-f3ca7ee25ae4 -content-type: application/json;charset=UTF-8 -date: Wed, 10 Jul 2024 04:24:18 GMT -req-cost-time: 159 -req-arrive-time: 1720585458676 -resp-start-time: 1720585458835 -x-envoy-upstream-service-time: 158 +content-type: application/json +req-cost-time: 148 +req-arrive-time: 1764502659968 +resp-start-time: 1764502660116 +x-envoy-upstream-service-time: 139 content-encoding: gzip vary: Accept-Encoding +date: Sun, 30 Nov 2025 11:37:39 GMT server: istio-envoy transfer-encoding: chunked diff --git a/test/Cnblogs.DashScope.Tests.Shared/RawHttpData/upload-file-compatible-nosse.request.body.txt b/test/Cnblogs.DashScope.Tests.Shared/RawHttpData/upload-file-compatible-nosse.request.body.txt new file mode 100644 index 0000000..640df95 --- /dev/null +++ b/test/Cnblogs.DashScope.Tests.Shared/RawHttpData/upload-file-compatible-nosse.request.body.txt @@ -0,0 +1,7 @@ +----------------------------124769516956446222138824 +Content-Disposition: form-data; name="file"; filename="1ef3db24-f499-44b0-a5df-1db496e7f22e" +<1ef3db24-f499-44b0-a5df-1db496e7f22e> +----------------------------124769516956446222138824 +Content-Disposition: form-data; name="purpose" +file-extract +----------------------------124769516956446222138824-- diff --git a/test/Cnblogs.DashScope.Tests.Shared/RawHttpData/upload-file-compatible-nosse.request.header.txt b/test/Cnblogs.DashScope.Tests.Shared/RawHttpData/upload-file-compatible-nosse.request.header.txt new file mode 100644 index 0000000..318b370 --- /dev/null +++ b/test/Cnblogs.DashScope.Tests.Shared/RawHttpData/upload-file-compatible-nosse.request.header.txt @@ -0,0 +1,8 @@ +POST /compatible-mode/v1/files HTTP/1.1 +Accept: */* +Cache-Control: no-cache +Host: dashscope.aliyuncs.com +Accept-Encoding: gzip, deflate, br +Connection: keep-alive +Content-Type: multipart/form-data; boundary=--------------------------124769516956446222138824 +Content-Length: 332 diff --git a/test/Cnblogs.DashScope.Tests.Shared/RawHttpData/upload-file-compatible-nosse.response.body.txt b/test/Cnblogs.DashScope.Tests.Shared/RawHttpData/upload-file-compatible-nosse.response.body.txt new file mode 100644 index 0000000..4b469fd --- /dev/null +++ b/test/Cnblogs.DashScope.Tests.Shared/RawHttpData/upload-file-compatible-nosse.response.body.txt @@ -0,0 +1 @@ +{"id":"file-fe-5d5eb068893f4b5e8551ada4","object":"file","bytes":7,"filename":"test2.txt","purpose":"file-extract","status":"processed","created_at":1764499365} diff --git a/test/Cnblogs.DashScope.Tests.Shared/RawHttpData/upload-file-compatible-nosse.response.header.txt b/test/Cnblogs.DashScope.Tests.Shared/RawHttpData/upload-file-compatible-nosse.response.header.txt new file mode 100644 index 0000000..e0f7fa9 --- /dev/null +++ b/test/Cnblogs.DashScope.Tests.Shared/RawHttpData/upload-file-compatible-nosse.response.header.txt @@ -0,0 +1,12 @@ +HTTP/1.1 200 OK +x-request-id: 2f2e1a67-e94c-4a00-8e86-6d51d94a8f75 +content-type: application/json +req-cost-time: 574 +req-arrive-time: 1764499364785 +resp-start-time: 1764499365360 +x-envoy-upstream-service-time: 574 +content-encoding: gzip +vary: Accept-Encoding +date: Sun, 30 Nov 2025 10:42:45 GMT +server: istio-envoy +transfer-encoding: chunked diff --git a/test/Cnblogs.DashScope.Tests.Shared/RawHttpData/upload-file-nosse.request.header.txt b/test/Cnblogs.DashScope.Tests.Shared/RawHttpData/upload-file-nosse.request.header.txt index 40d8b49..86093e8 100644 --- a/test/Cnblogs.DashScope.Tests.Shared/RawHttpData/upload-file-nosse.request.header.txt +++ b/test/Cnblogs.DashScope.Tests.Shared/RawHttpData/upload-file-nosse.request.header.txt @@ -4,4 +4,5 @@ Cache-Control: no-cache Host: dashscope.aliyuncs.com Accept-Encoding: gzip, deflate, br Connection: keep-alive -Content-Type: multipart/form-data; +Content-Type: multipart/form-data; boundary=--------------------------077180496463466976744602 +Content-Length: 599 diff --git a/test/Cnblogs.DashScope.Tests.Shared/RawHttpData/upload-file-nosse.response.body.txt b/test/Cnblogs.DashScope.Tests.Shared/RawHttpData/upload-file-nosse.response.body.txt index 8fdf9c4..ac9098d 100644 --- a/test/Cnblogs.DashScope.Tests.Shared/RawHttpData/upload-file-nosse.response.body.txt +++ b/test/Cnblogs.DashScope.Tests.Shared/RawHttpData/upload-file-nosse.response.body.txt @@ -1 +1 @@ -{"id":"file-fe-qBKjZKfTx64R9oYmwyovNHBH","object":"file","bytes":6,"created_at":1720582024,"filename":"test1.txt","purpose":"file-extract","status":"processed"} +{"data":{"uploaded_files":[{"name":"test2.txt","file_id":"ed5a313b-3fdf-4cc9-a0b0-66664af692e1"}],"failed_uploads":[{"name":"test1.txt","code":"BadRequest.TooMany","message":"Out of number, <10> of <10> files has been uploaded."}]},"request_id":"982c4dc2-95a0-4fa5-982e-2732f5f9c011"} diff --git a/test/Cnblogs.DashScope.Tests.Shared/RawHttpData/upload-file-nosse.response.header.txt b/test/Cnblogs.DashScope.Tests.Shared/RawHttpData/upload-file-nosse.response.header.txt index 99d5d08..fbe7475 100644 --- a/test/Cnblogs.DashScope.Tests.Shared/RawHttpData/upload-file-nosse.response.header.txt +++ b/test/Cnblogs.DashScope.Tests.Shared/RawHttpData/upload-file-nosse.response.header.txt @@ -1,12 +1,11 @@ HTTP/1.1 200 OK -x-request-id: 8ef1f38f-fc7b-90f9-bb09-1926c2675299 -content-type: application/json;charset=UTF-8 -date: Wed, 10 Jul 2024 03:27:04 GMT -req-cost-time: 346 -req-arrive-time: 1720582024232 -resp-start-time: 1720582024578 -x-envoy-upstream-service-time: 344 +content-type: application/json +req-cost-time: 392 +req-arrive-time: 1764502036427 +resp-start-time: 1764502036820 +x-envoy-upstream-service-time: 386 content-encoding: gzip vary: Accept-Encoding +date: Sun, 30 Nov 2025 11:27:16 GMT server: istio-envoy transfer-encoding: chunked diff --git a/test/Cnblogs.DashScope.Tests.Shared/RawHttpData/upload-temporary-file-nosse.request.body.txt b/test/Cnblogs.DashScope.Tests.Shared/RawHttpData/upload-temporary-file-nosse.request.body.txt index 11a3297..16d66ab 100644 --- a/test/Cnblogs.DashScope.Tests.Shared/RawHttpData/upload-temporary-file-nosse.request.body.txt +++ b/test/Cnblogs.DashScope.Tests.Shared/RawHttpData/upload-temporary-file-nosse.request.body.txt @@ -1,7 +1,7 @@ --5aa22a67-eae4-4c54-8f62-c486fefd11a5 Content-Type: text/plain; charset=utf-8 Content-Disposition: form-data; name=OSSAccessKeyId -LTAI5tG7vL6zZFFbuNrkCjdo +accessKeyId --5aa22a67-eae4-4c54-8f62-c486fefd11a5 Content-Type: text/plain; charset=utf-8 Content-Disposition: form-data; name=policy diff --git a/test/Cnblogs.DashScope.Tests.Shared/Utils/RequestSnapshot.cs b/test/Cnblogs.DashScope.Tests.Shared/Utils/RequestSnapshot.cs index cdd3ed8..63cbf5e 100644 --- a/test/Cnblogs.DashScope.Tests.Shared/Utils/RequestSnapshot.cs +++ b/test/Cnblogs.DashScope.Tests.Shared/Utils/RequestSnapshot.cs @@ -54,6 +54,18 @@ public string GetRequestBody(bool sse, string ext = "txt") { return File.ReadAllText(Path.Combine("RawHttpData", $"{GetSnapshotCaseName(sse)}.request.body.{ext}")); } + + public HttpMethod GetRequestMethod(bool sse) + { + var firstLine = File.ReadAllLines(Path.Combine("RawHttpData", $"{GetSnapshotCaseName(sse)}.request.header.txt"))[0]; + return new HttpMethod(firstLine.Split(' ')[0]); + } + + public string GetRequestPathAndQuery(bool sse) + { + var firstLine = File.ReadAllLines(Path.Combine("RawHttpData", $"{GetSnapshotCaseName(sse)}.request.header.txt"))[0]; + return firstLine.Split(' ')[1]; + } } public record RequestSnapshot(string Name, TResponse ResponseModel) : RequestSnapshot(Name) diff --git a/test/Cnblogs.DashScope.Tests.Shared/Utils/Snapshots.OpenAiCompatibleFile.cs b/test/Cnblogs.DashScope.Tests.Shared/Utils/Snapshots.OpenAiCompatibleFile.cs new file mode 100644 index 0000000..711d11f --- /dev/null +++ b/test/Cnblogs.DashScope.Tests.Shared/Utils/Snapshots.OpenAiCompatibleFile.cs @@ -0,0 +1,134 @@ +using Cnblogs.DashScope.Core; + +namespace Cnblogs.DashScope.Tests.Shared.Utils; + +public static partial class Snapshots +{ + public static class OpenAiCompatibleFile + { + public static readonly FileInfo TestFile = new("RawHttpData/test2.txt"); + public static readonly FileInfo TestImage = new("RawHttpData/Lenna.jpg"); + + public static readonly RequestSnapshot UploadFileCompatibleNoSse = new( + "upload-file-compatible", + new DashScopeFile( + "file-fe-5d5eb068893f4b5e8551ada4", + "file", + 7, + 1764499365, + "test2.txt", + "file-extract", + "processed")); + + public static readonly RequestSnapshot GetFileCompatibleNoSse = new( + "get-file-compatible", + new DashScopeFile( + "file-fe-d5c0ea9110bd47afb0505f43", + "file", + 1314, + 1761480070, + "file1.txt", + "file-extract", + "processed")); + + public static readonly RequestSnapshot ListFileCompatibleNoSse = new( + "list-files-compatible", + new DashScopeOpenAiCompatibleFileList( + "list", + false, + new List + { + new( + "file-fe-d5c0ea9110bd47afb0505f43", + "file", + 1314, + 1761480070, + "file1.txt", + "file-extract", + "processed"), + })); + + public static readonly RequestSnapshot DeleteFileCompatibleNoSse = new( + "delete-file-compatible", + new DashScopeDeleteFileResult("file", true, "file-fe-d5c0ea9110bd47afb0505f43")); + } + + public static class File + { + public static readonly FileInfo TestFile = new("RawHttpData/test2.txt"); + public static readonly FileInfo TestImage = new("RawHttpData/Lenna.jpg"); + + public static readonly RequestSnapshot> ListFilesNoSse = new( + "list-files", + new DashScopeFileResponse( + "d4bdceb3-0a87-4025-b226-afb13c5a3442", + new DashScopeListFilesData( + 15, + 1, + 2, + new List + { + new( + "311d3340-1f9b-487c-bd35-481cd5a23855", + "test2.txt", + "test2", + 7, + "Td5oBnUd0kfuUGMd0zd5Ig==", + "2025-11-30 19:37:33", + "http://dashscope-file-mgr.oss-cn-beijing.aliyuncs.com/api-fs/1493478651020171/67516/311d3340-1f9b-487c-bd35-481cd5a23855/test2.txt?Expires=1764589060&OSSAccessKeyId=STS.NYUDr5WyfdYrXTGudSB7jFWoH&Signature=xa4nsjmZTcHaOfTXvv3cR7C7vNE%3D&security-token=CAIS1AJ1q6Ft5B2yfSjIr5rgD8iBuqZH05uZWnL2kWQGTrhGqZLEqjz2IHhMdHFqBOwasfQ1nWxY7P0Ylrp6SJtIXleCZtF94oxN9h2gb4fb40tLcHrB08%2FLI3OaLjKm9u2wCryLYbGwU%2FOpbE%2B%2B5U0X6LDmdDKkckW4OJmS8%2FBOZcgWWQ%2FKBlgvRq0hRG1YpdQdKGHaONu0LxfumRCwNkdzvRdmgm4NgsbWgO%2Fks0SD0gall7ZO%2FNiqfcL%2FMvMBZskvD42Hu8VtbbfE3SJq7BxHybx7lqQs%2B02c5onNWwMMv0nZY7CNro01d1VjFqQhXqBFqPW5jvBipO3YmsHv0RFBeOZOSDQE1i1TRm1UcgnAGaHaFd6TUxylurgEJk7zIan5z1gvlRKYWhvQG45hiCYmPtXwQEGpNl5k7MlN5QbLfi8Yf1QXq3esyb6gQz4rK2zRlCpDUvdUGoABOb8SEKtMfDU%2FVSF1VJ7hLFCQxC%2F7xuFKTrsxyK2UMGsgt18A%2Fe8Tq%2BtiBoH94pv%2B1hhJ34C6qRwLdhbhIN31TmYd%2FV9xPc9QFJYZuh49xUXFeapxnuaM8KxoXVc94FBlIy9ccDi%2FG%2BOyNbrtISjtNhJXehcJQ66tMTRxYIVeUA4gAA%3D%3D", + "1493478651020171", + "cn-beijing", + "67516", + 193320717), + new( + "8a95f76a-8d79-4d8d-b372-7d0a72493680", + "test1.txt", + "test1", + 6, + "2wbHjR4kz3CKFM6BybYX7A==", + "2025-11-30 19:37:33", + "http://dashscope-file-mgr.oss-cn-beijing.aliyuncs.com/api-fs/1493478651020171/67516/8a95f76a-8d79-4d8d-b372-7d0a72493680/test1.txt?Expires=1764589060&OSSAccessKeyId=STS.NYUDr5WyfdYrXTGudSB7jFWoH&Signature=1Gi%2FeChAGNPeFQj2oLszyd7M3ng%3D&security-token=CAIS1AJ1q6Ft5B2yfSjIr5rgD8iBuqZH05uZWnL2kWQGTrhGqZLEqjz2IHhMdHFqBOwasfQ1nWxY7P0Ylrp6SJtIXleCZtF94oxN9h2gb4fb40tLcHrB08%2FLI3OaLjKm9u2wCryLYbGwU%2FOpbE%2B%2B5U0X6LDmdDKkckW4OJmS8%2FBOZcgWWQ%2FKBlgvRq0hRG1YpdQdKGHaONu0LxfumRCwNkdzvRdmgm4NgsbWgO%2Fks0SD0gall7ZO%2FNiqfcL%2FMvMBZskvD42Hu8VtbbfE3SJq7BxHybx7lqQs%2B02c5onNWwMMv0nZY7CNro01d1VjFqQhXqBFqPW5jvBipO3YmsHv0RFBeOZOSDQE1i1TRm1UcgnAGaHaFd6TUxylurgEJk7zIan5z1gvlRKYWhvQG45hiCYmPtXwQEGpNl5k7MlN5QbLfi8Yf1QXq3esyb6gQz4rK2zRlCpDUvdUGoABOb8SEKtMfDU%2FVSF1VJ7hLFCQxC%2F7xuFKTrsxyK2UMGsgt18A%2Fe8Tq%2BtiBoH94pv%2B1hhJ34C6qRwLdhbhIN31TmYd%2FV9xPc9QFJYZuh49xUXFeapxnuaM8KxoXVc94FBlIy9ccDi%2FG%2BOyNbrtISjtNhJXehcJQ66tMTRxYIVeUA4gAA%3D%3D", + "1493478651020171", + "cn-beijing", + "67516", + 193320718) + }))); + + public static readonly RequestSnapshot> GetFileNoSse = new( + "get-file", + new DashScopeFileResponse( + "1f05e2cb-de12-46f1-872c-ab70aa15e87f", + new DashScopeFileDetail( + "file-fe-5d5eb068893f4b5e8551ada4", + "test2.txt", + string.Empty, + 7, + "Td5oBnUd0kfuUGMd0zd5Ig==", + "2025-11-30 18:42:45", + "http://dashscope-file-mgr.oss-cn-beijing.aliyuncs.com/api-fs/1493478651020171/67516/2f2e1a67-e94c-4a00-8e86-6d51d94a8f75/test2.txt?Expires=1764587166&OSSAccessKeyId=STS.NZN1pTGUrUxPQhPveYcaRAYMg&Signature=k7llO9KgcPkeuQicUgwaGR2w%2F4A%3D&security-token=CAIS1AJ1q6Ft5B2yfSjIr5n7esrgqopT4rq7U07hkmUMb%2B5%2BrpzmhTz2IHhMdHFqBOwasfQ1nWxY7P0Ylrp6SJtIXleCZtF94oxN9h2gb4fb4wUfE3vB08%2FLI3OaLjKm9u2wCryLYbGwU%2FOpbE%2B%2B5U0X6LDmdDKkckW4OJmS8%2FBOZcgWWQ%2FKBlgvRq0hRG1YpdQdKGHaONu0LxfumRCwNkdzvRdmgm4NgsbWgO%2Fks0SD0gall7ZO%2FNiqfcL%2FMvMBZskvD42Hu8VtbbfE3SJq7BxHybx7lqQs%2B02c5onNWwMMv0nZY7CNro01d1VjFqQhXqBFqPW5jvBipO3YmsHv0RFBeOZOSDQE1i1TRm1UcgnAGaHaFd6TUxylurgEBon2HKn5z1gvlRKYWhvQG45hiCYmPtXwQEGpNl5k7MlN5QbLfi8Yf1QXq3esyb6gQz4rK%2F1R8LZDUvdUGoABihW5mNOnIIV1zRuddC7OZ50nQwm%2F23uV3Y8WICHL1WbbOqhjkgUlqZdQhBVk4pNlL2QoziUCeSwPJa6o2mvoch%2BIVx5OA48YB9pBa2KYLl%2BAkVNzQVU%2FLtOR2bQQWQwIwtKwJEP107ZOFwwQgLOapGkrawOc7PEdg0Brr71x%2BrEgAA%3D%3D", + "1493478651020171", + "cn-beijing", + "67516", + 193306194))); + + public static readonly RequestSnapshot DeleteFileNoSse = + new("delete-file", new("df35151c-0df6-4cad-9912-83ebf8c633a4")); + + public static readonly RequestSnapshot> UploadFileNoSse = new( + "upload-file", + new DashScopeFileResponse( + "982c4dc2-95a0-4fa5-982e-2732f5f9c011", + new DashScopeUploadFileData( + new List() + { + new("ed5a313b-3fdf-4cc9-a0b0-66664af692e1", "test2.txt") + }, + new List() + { + new( + "test1.txt", + "BadRequest.TooMany", + "Out of number, <10> of <10> files has been uploaded.") + }))); + } +} diff --git a/test/Cnblogs.DashScope.Tests.Shared/Utils/Snapshots.cs b/test/Cnblogs.DashScope.Tests.Shared/Utils/Snapshots.cs index e78f08b..7e22bf6 100644 --- a/test/Cnblogs.DashScope.Tests.Shared/Utils/Snapshots.cs +++ b/test/Cnblogs.DashScope.Tests.Shared/Utils/Snapshots.cs @@ -133,47 +133,6 @@ public static readonly }); } - public static class File - { - public static readonly FileInfo TestFile = new("RawHttpData/test1.txt"); - public static readonly FileInfo TestImage = new("RawHttpData/Lenna.jpg"); - - public static readonly RequestSnapshot UploadFileNoSse = new( - "upload-file", - new DashScopeFile("file-fe-qBKjZKfTx64R9oYmwyovNHBH", "file", 6, 1720582024, "test1.txt", "file-extract")); - - public static readonly RequestSnapshot GetFileNoSse = new( - "get-file", - new DashScopeFile("file-fe-qBKjZKfTx64R9oYmwyovNHBH", "file", 6, 1720582024, "test1.txt", "file-extract")); - - public static readonly RequestSnapshot ListFileNoSse = new( - "list-files", - new DashScopeFileList( - "list", - false, - new List - { - new( - "file-fe-qBKjZKfTx64R9oYmwyovNHBH", - "file", - 6, - 1720582024, - "test1.txt", - "file-extract"), - new( - "file-fe-WTTG89tIUTd4ByqP3K48R3bn", - "file", - 6, - 1720535665, - "test1.txt", - "file-extract") - })); - - public static readonly RequestSnapshot DeleteFileNoSse = new( - "delete-file", - new DashScopeDeleteFileResult("file", true, "file-fe-qBKjZKfTx64R9oYmwyovNHBH")); - } - public static class Upload { public static readonly RequestSnapshot GetPolicyNoSse = new( @@ -188,7 +147,7 @@ public static class Upload 300, 1024, 999999999, - "LTAI5tG7vL6zZFFbuNrkCjdo", + "accessKeyId", "private", "true"))); From 2b9065d740af7ae7233f416a2c373903a933bb52 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B2=88=E6=98=9F=E7=B9=81?= Date: Mon, 1 Dec 2025 00:09:52 +0800 Subject: [PATCH 2/6] feat: add doc url tests --- .../DashScopeChatClient.cs | 2 +- .../TextChatMessageContentConvertor.cs | 62 +++ .../TextChatMessageContentInternal.cs | 9 + src/Cnblogs.DashScope.Core/TextChatMessage.cs | 17 +- .../TextChatMessageContent.cs | 62 +++ .../TextGenerationTokenUsage.cs | 5 + .../FileSerializationTests.cs | 1 - ...extChatMessageContentJsonConvertorTests.cs | 97 ++++ .../TextGenerationSerializationTests.cs | 3 +- ...message-with-doc-url-sse.request.body.json | 32 ++ ...essage-with-doc-url-sse.request.header.txt | 8 + ...message-with-doc-url-sse.response.body.txt | 465 ++++++++++++++++++ ...ssage-with-doc-url-sse.response.header.txt | 27 + .../Utils/Snapshots.TextGeneration.cs | 55 ++- .../Utils/Snapshots.cs | 2 + 15 files changed, 839 insertions(+), 8 deletions(-) create mode 100644 src/Cnblogs.DashScope.Core/Internals/TextChatMessageContentConvertor.cs create mode 100644 src/Cnblogs.DashScope.Core/Internals/TextChatMessageContentInternal.cs create mode 100644 src/Cnblogs.DashScope.Core/TextChatMessageContent.cs create mode 100644 test/Cnblogs.DashScope.Sdk.UnitTests/TextChatMessageContentJsonConvertorTests.cs create mode 100644 test/Cnblogs.DashScope.Tests.Shared/RawHttpData/conversation-generation-message-with-doc-url-sse.request.body.json create mode 100644 test/Cnblogs.DashScope.Tests.Shared/RawHttpData/conversation-generation-message-with-doc-url-sse.request.header.txt create mode 100644 test/Cnblogs.DashScope.Tests.Shared/RawHttpData/conversation-generation-message-with-doc-url-sse.response.body.txt create mode 100644 test/Cnblogs.DashScope.Tests.Shared/RawHttpData/conversation-generation-message-with-doc-url-sse.response.header.txt diff --git a/src/Cnblogs.DashScope.AI/DashScopeChatClient.cs b/src/Cnblogs.DashScope.AI/DashScopeChatClient.cs index ab0007c..9cef10f 100644 --- a/src/Cnblogs.DashScope.AI/DashScopeChatClient.cs +++ b/src/Cnblogs.DashScope.AI/DashScopeChatClient.cs @@ -248,7 +248,7 @@ public async IAsyncEnumerable GetStreamingResponseAsync( Role = streamedRole }; - if (response.Output.Choices?.FirstOrDefault()?.Message.Content is { Length: > 0 }) + if (response.Output.Choices?.FirstOrDefault()?.Message.Content.ToString() is { Length: > 0 }) { update.Contents.Add(new TextContent(response.Output.Choices[0].Message.Content)); } diff --git a/src/Cnblogs.DashScope.Core/Internals/TextChatMessageContentConvertor.cs b/src/Cnblogs.DashScope.Core/Internals/TextChatMessageContentConvertor.cs new file mode 100644 index 0000000..c0fa679 --- /dev/null +++ b/src/Cnblogs.DashScope.Core/Internals/TextChatMessageContentConvertor.cs @@ -0,0 +1,62 @@ +using System.Text.Json; +using System.Text.Json.Serialization; + +namespace Cnblogs.DashScope.Core.Internals; + +internal class TextChatMessageContentConvertor : JsonConverter +{ + /// + public override TextChatMessageContent? Read( + ref Utf8JsonReader reader, + Type typeToConvert, + JsonSerializerOptions options) + { + if (reader.TokenType == JsonTokenType.String) + { + var s = reader.GetString(); + return s == null ? null : new TextChatMessageContent(s); + } + + if (reader.TokenType == JsonTokenType.StartArray) + { + var contents = JsonSerializer.Deserialize>(ref reader, options); + if (contents == null) + { + // impossible + return null; + } + + var text = contents.FirstOrDefault(x => string.IsNullOrEmpty(x.Text) == false)?.Text + ?? throw new JsonException("No text found in content array"); + var docUrls = contents.FirstOrDefault(x => x.DocUrl != null)?.DocUrl; + return new TextChatMessageContent(text, docUrls); + } + + throw new JsonException("Unknown type for TextChatMessageContent"); + } + + /// + public override void Write(Utf8JsonWriter writer, TextChatMessageContent value, JsonSerializerOptions options) + { + if (value.DocUrls != null) + { + JsonSerializer.Serialize( + writer, + new List() + { + new() { Type = "text", Text = value.Text }, + new() + { + Type = "doc_url", + DocUrl = value.DocUrls.ToList(), + FileParsingStrategy = "auto" + } + }, + options); + } + else + { + JsonSerializer.Serialize(writer, value.Text, options); + } + } +} diff --git a/src/Cnblogs.DashScope.Core/Internals/TextChatMessageContentInternal.cs b/src/Cnblogs.DashScope.Core/Internals/TextChatMessageContentInternal.cs new file mode 100644 index 0000000..49c3760 --- /dev/null +++ b/src/Cnblogs.DashScope.Core/Internals/TextChatMessageContentInternal.cs @@ -0,0 +1,9 @@ +namespace Cnblogs.DashScope.Core.Internals; + +internal class TextChatMessageContentInternal +{ + public string Type { get; set; } = "text"; + public string? Text { get; set; } + public List? DocUrl { get; set; } + public string? FileParsingStrategy { get; set; } +} diff --git a/src/Cnblogs.DashScope.Core/TextChatMessage.cs b/src/Cnblogs.DashScope.Core/TextChatMessage.cs index c9301c1..1ed4d25 100644 --- a/src/Cnblogs.DashScope.Core/TextChatMessage.cs +++ b/src/Cnblogs.DashScope.Core/TextChatMessage.cs @@ -6,7 +6,7 @@ namespace Cnblogs.DashScope.Core; /// /// Represents a chat message between the user and the model. /// -public record TextChatMessage : IMessage +public record TextChatMessage : IMessage { /// /// Create chat message from an uploaded DashScope file. @@ -38,7 +38,7 @@ public TextChatMessage(IEnumerable fileIds) [JsonConstructor] public TextChatMessage( string role, - string content, + TextChatMessageContent content, string? toolCallId = null, bool? partial = null, string? reasoningContent = null, @@ -56,7 +56,7 @@ public TextChatMessage( public string Role { get; init; } /// The content of this message. - public string Content { get; init; } + public TextChatMessageContent Content { get; init; } /// Used when role is tool, represents the function name of this message generated by. public string? ToolCallId { get; init; } @@ -105,6 +105,17 @@ public static TextChatMessage File(IEnumerable fileIds) return new TextChatMessage(fileIds); } + /// + /// Create a docUrls message. + /// + /// Text input. + /// The doc urls. + /// + public static TextChatMessage DocUrl(string prompt, IEnumerable docUrls) + { + return new TextChatMessage(DashScopeRoleNames.User, new TextChatMessageContent(prompt, docUrls)); + } + /// /// Create a user message. /// diff --git a/src/Cnblogs.DashScope.Core/TextChatMessageContent.cs b/src/Cnblogs.DashScope.Core/TextChatMessageContent.cs new file mode 100644 index 0000000..0121861 --- /dev/null +++ b/src/Cnblogs.DashScope.Core/TextChatMessageContent.cs @@ -0,0 +1,62 @@ +using System.Text.Json.Serialization; +using Cnblogs.DashScope.Core.Internals; + +namespace Cnblogs.DashScope.Core; + +/// +/// Content of the . +/// +[JsonConverter(typeof(TextChatMessageContentConvertor))] +public class TextChatMessageContent +{ + /// + /// The text part of the content. + /// + public string Text { get; } + + /// + /// Optional doc urls. + /// + public IEnumerable? DocUrls { get; } + + /// + /// Creates a with text content. + /// + /// The text content. + public TextChatMessageContent(string text) + { + Text = text; + DocUrls = null; + } + + /// + /// Creates a with text content and doc urls. + /// + /// The text content. + /// The doc urls. + public TextChatMessageContent(string text, IEnumerable? docUrls) + { + Text = text; + DocUrls = docUrls; + } + + /// + /// Convert string to TextChatMessageContent implicitly. + /// + /// The string value to convert. + /// + public static implicit operator TextChatMessageContent(string value) => new(value); + + /// + /// Convert to string implicitly. + /// + /// The value to convert. + /// + public static implicit operator string(TextChatMessageContent value) => value.Text; + + /// + public override string ToString() + { + return Text; + } +} diff --git a/src/Cnblogs.DashScope.Core/TextGenerationTokenUsage.cs b/src/Cnblogs.DashScope.Core/TextGenerationTokenUsage.cs index b9b2ca1..d611881 100644 --- a/src/Cnblogs.DashScope.Core/TextGenerationTokenUsage.cs +++ b/src/Cnblogs.DashScope.Core/TextGenerationTokenUsage.cs @@ -35,4 +35,9 @@ public class TextGenerationTokenUsage /// The total number of token. /// public int TotalTokens { get; set; } + + /// + /// Cached token count. + /// + public int? CachedTokens { get; set; } } diff --git a/test/Cnblogs.DashScope.Sdk.UnitTests/FileSerializationTests.cs b/test/Cnblogs.DashScope.Sdk.UnitTests/FileSerializationTests.cs index 5f420a2..1d336fc 100644 --- a/test/Cnblogs.DashScope.Sdk.UnitTests/FileSerializationTests.cs +++ b/test/Cnblogs.DashScope.Sdk.UnitTests/FileSerializationTests.cs @@ -1,5 +1,4 @@ using Cnblogs.DashScope.Core; -using Cnblogs.DashScope.Core.Internals; using Cnblogs.DashScope.Tests.Shared.Utils; using NSubstitute; diff --git a/test/Cnblogs.DashScope.Sdk.UnitTests/TextChatMessageContentJsonConvertorTests.cs b/test/Cnblogs.DashScope.Sdk.UnitTests/TextChatMessageContentJsonConvertorTests.cs new file mode 100644 index 0000000..782bba6 --- /dev/null +++ b/test/Cnblogs.DashScope.Sdk.UnitTests/TextChatMessageContentJsonConvertorTests.cs @@ -0,0 +1,97 @@ +using System.Text.Json; +using Cnblogs.DashScope.Core; +using Cnblogs.DashScope.Core.Internals; + +namespace Cnblogs.DashScope.Sdk.UnitTests; + +public class TextChatMessageContentJsonConvertorTests +{ + private const string TextJson = "\"some text\""; + + private const string DocUrlJson = + "[{\"type\":\"text\",\"text\":\"some content\"},{\"type\":\"doc_url\",\"doc_url\":[\"url1\"],\"file_parsing_strategy\":\"auto\"}]"; + + [Fact] + public void Serialize_Text_StringAsync() + { + // Arrange + var content = new TextChatMessageContent("some text"); + + // Act + var json = JsonSerializer.Serialize(content, DashScopeDefaults.SerializationOptions); + + // Assert + Assert.Equal(TextJson, json); + } + + [Fact] + public void Serialize_DocUrl_ObjectAsync() + { + // Arrange + var content = new TextChatMessageContent("some content", new[] { "url1" }); + + // Act + var json = JsonSerializer.Serialize(content, DashScopeDefaults.SerializationOptions); + + // Assert + Assert.Equal(DocUrlJson, json); + } + + [Fact] + public void Deserialize_InvalidType_ThrowAsync() + { + // Arrange + const string errJson = "{}"; + + // Act + var act = () => JsonSerializer.Deserialize( + errJson, + DashScopeDefaults.SerializationOptions); + + // Assert + Assert.Throws(act); + } + + [Fact] + public void Deserialize_InvalidArray_ThrowAsync() + { + // Arrange + const string errJson = "[{\"type\":\"doc_url\", \"doc_url\":[]}]"; + + // Act + var act = () => JsonSerializer.Deserialize( + errJson, + DashScopeDefaults.SerializationOptions); + + // Assert + Assert.Throws(act); + } + + [Fact] + public void Deserialize_Text_SetTextOnlyAsync() + { + // Act + var content = JsonSerializer.Deserialize( + TextJson, + DashScopeDefaults.SerializationOptions); + + // Assert + Assert.NotNull(content); + Assert.Equal("some text", content.Text); + Assert.Null(content.DocUrls); + } + + [Fact] + public void Deserialize_DocUrl_SetUrlsAsync() + { + // Act + var content = JsonSerializer.Deserialize( + DocUrlJson, + DashScopeDefaults.SerializationOptions); + + // Assert + Assert.NotNull(content); + Assert.Equal("some content", content.Text); + Assert.Equivalent(new[] { "url1" }, content.DocUrls); + } +} diff --git a/test/Cnblogs.DashScope.Sdk.UnitTests/TextGenerationSerializationTests.cs b/test/Cnblogs.DashScope.Sdk.UnitTests/TextGenerationSerializationTests.cs index a53c654..8bfc404 100644 --- a/test/Cnblogs.DashScope.Sdk.UnitTests/TextGenerationSerializationTests.cs +++ b/test/Cnblogs.DashScope.Sdk.UnitTests/TextGenerationSerializationTests.cs @@ -225,7 +225,8 @@ public async Task ConversationCompletion_DeepResearchSse_SuccessAsync( public static readonly TheoryData, ModelResponse>> ConversationMessageFormatSseData = new( Snapshots.TextGeneration.MessageFormat.ConversationMessageIncremental, - Snapshots.TextGeneration.MessageFormat.ConversationMessageWithFilesIncremental); + Snapshots.TextGeneration.MessageFormat.ConversationMessageWithFilesIncremental, + Snapshots.TextGeneration.MessageFormat.ConversationMessageWithDocUrlsIncremental); public static readonly TheoryData, ModelResponse>> ConversationMessageFormatNoSseData = new( diff --git a/test/Cnblogs.DashScope.Tests.Shared/RawHttpData/conversation-generation-message-with-doc-url-sse.request.body.json b/test/Cnblogs.DashScope.Tests.Shared/RawHttpData/conversation-generation-message-with-doc-url-sse.request.body.json new file mode 100644 index 0000000..3441a7e --- /dev/null +++ b/test/Cnblogs.DashScope.Tests.Shared/RawHttpData/conversation-generation-message-with-doc-url-sse.request.body.json @@ -0,0 +1,32 @@ +{ + "model": "qwen-doc-turbo", + "input": { + "messages": [ + { + "role": "system", + "content": "You are a helpful assistant." + }, + { + "role": "user", + "content": [ + { + "type": "text", + "text": "从这两份产品手册中,提取所有产品信息,并整理成一个标准的JSON数组。每个对象需要包含:model(产品的型号)、name(产品的名称)、price(价格(去除货币符号和逗号))" + }, + { + "type": "doc_url", + "doc_url": [ + "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20251107/jockge/%E7%A4%BA%E4%BE%8B%E4%BA%A7%E5%93%81%E6%89%8B%E5%86%8CA.docx", + "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20251107/ztwxzr/%E7%A4%BA%E4%BE%8B%E4%BA%A7%E5%93%81%E6%89%8B%E5%86%8CB.docx" + ], + "file_parsing_strategy": "auto" + } + ] + } + ] + }, + "parameters": { + "result_format": "message", + "incremental_output": true + } +} diff --git a/test/Cnblogs.DashScope.Tests.Shared/RawHttpData/conversation-generation-message-with-doc-url-sse.request.header.txt b/test/Cnblogs.DashScope.Tests.Shared/RawHttpData/conversation-generation-message-with-doc-url-sse.request.header.txt new file mode 100644 index 0000000..66810f9 --- /dev/null +++ b/test/Cnblogs.DashScope.Tests.Shared/RawHttpData/conversation-generation-message-with-doc-url-sse.request.header.txt @@ -0,0 +1,8 @@ +POST /api/v1/services/aigc/text-generation/generation HTTP/1.1 +Accept: text/event-stream +Content-Type: application/json +Cache-Control: no-cache +Host: dashscope.aliyuncs.com +Accept-Encoding: gzip, deflate, br +Connection: keep-alive +Content-Length: 1341 diff --git a/test/Cnblogs.DashScope.Tests.Shared/RawHttpData/conversation-generation-message-with-doc-url-sse.response.body.txt b/test/Cnblogs.DashScope.Tests.Shared/RawHttpData/conversation-generation-message-with-doc-url-sse.response.body.txt new file mode 100644 index 0000000..33694e4 --- /dev/null +++ b/test/Cnblogs.DashScope.Tests.Shared/RawHttpData/conversation-generation-message-with-doc-url-sse.response.body.txt @@ -0,0 +1,465 @@ +id:1 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":"```","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":1827,"output_tokens":1,"input_tokens":1826,"cached_tokens":0},"request_id":"ee1a01a9-4c9e-4729-ae35-f5948124b302"} + +id:2 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":"json","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":1828,"output_tokens":2,"input_tokens":1826,"cached_tokens":0},"request_id":"ee1a01a9-4c9e-4729-ae35-f5948124b302"} + +id:3 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":"\n","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":1829,"output_tokens":3,"input_tokens":1826,"cached_tokens":0},"request_id":"ee1a01a9-4c9e-4729-ae35-f5948124b302"} + +id:4 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":"[\n","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":1830,"output_tokens":4,"input_tokens":1826,"cached_tokens":0},"request_id":"ee1a01a9-4c9e-4729-ae35-f5948124b302"} + +id:5 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":" {\n \"","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":1834,"output_tokens":8,"input_tokens":1826,"cached_tokens":0},"request_id":"ee1a01a9-4c9e-4729-ae35-f5948124b302"} + +id:6 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":"model\": \"PRO","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":1838,"output_tokens":12,"input_tokens":1826,"cached_tokens":0},"request_id":"ee1a01a9-4c9e-4729-ae35-f5948124b302"} + +id:7 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":"-100","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":1842,"output_tokens":16,"input_tokens":1826,"cached_tokens":0},"request_id":"ee1a01a9-4c9e-4729-ae35-f5948124b302"} + +id:8 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":"\",\n \"name","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":1846,"output_tokens":20,"input_tokens":1826,"cached_tokens":0},"request_id":"ee1a01a9-4c9e-4729-ae35-f5948124b302"} + +id:9 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":"\": \"智能打印机","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":1850,"output_tokens":24,"input_tokens":1826,"cached_tokens":0},"request_id":"ee1a01a9-4c9e-4729-ae35-f5948124b302"} + +id:10 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":"\",\n \"price","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":1854,"output_tokens":28,"input_tokens":1826,"cached_tokens":0},"request_id":"ee1a01a9-4c9e-4729-ae35-f5948124b302"} + +id:11 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":"\": \"89","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":1858,"output_tokens":32,"input_tokens":1826,"cached_tokens":0},"request_id":"ee1a01a9-4c9e-4729-ae35-f5948124b302"} + +id:12 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":"99\"\n ","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":1862,"output_tokens":36,"input_tokens":1826,"cached_tokens":0},"request_id":"ee1a01a9-4c9e-4729-ae35-f5948124b302"} + +id:13 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":" },\n {\n ","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":1866,"output_tokens":40,"input_tokens":1826,"cached_tokens":0},"request_id":"ee1a01a9-4c9e-4729-ae35-f5948124b302"} + +id:14 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":" \"model\": \"","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":1870,"output_tokens":44,"input_tokens":1826,"cached_tokens":0},"request_id":"ee1a01a9-4c9e-4729-ae35-f5948124b302"} + +id:15 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":"PRO-20","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":1874,"output_tokens":48,"input_tokens":1826,"cached_tokens":0},"request_id":"ee1a01a9-4c9e-4729-ae35-f5948124b302"} + +id:16 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":"0\",\n \"","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":1878,"output_tokens":52,"input_tokens":1826,"cached_tokens":0},"request_id":"ee1a01a9-4c9e-4729-ae35-f5948124b302"} + +id:17 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":"name\": \"智能","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":1882,"output_tokens":56,"input_tokens":1826,"cached_tokens":0},"request_id":"ee1a01a9-4c9e-4729-ae35-f5948124b302"} + +id:18 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":"扫描仪\",\n ","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":1886,"output_tokens":60,"input_tokens":1826,"cached_tokens":0},"request_id":"ee1a01a9-4c9e-4729-ae35-f5948124b302"} + +id:19 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":" \"price\": \"","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":1890,"output_tokens":64,"input_tokens":1826,"cached_tokens":0},"request_id":"ee1a01a9-4c9e-4729-ae35-f5948124b302"} + +id:20 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":"1299","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":1894,"output_tokens":68,"input_tokens":1826,"cached_tokens":0},"request_id":"ee1a01a9-4c9e-4729-ae35-f5948124b302"} + +id:21 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":"9\"\n },\n","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":1898,"output_tokens":72,"input_tokens":1826,"cached_tokens":0},"request_id":"ee1a01a9-4c9e-4729-ae35-f5948124b302"} + +id:22 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":" {\n \"","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":1902,"output_tokens":76,"input_tokens":1826,"cached_tokens":0},"request_id":"ee1a01a9-4c9e-4729-ae35-f5948124b302"} + +id:23 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":"model\": \"PRO","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":1906,"output_tokens":80,"input_tokens":1826,"cached_tokens":0},"request_id":"ee1a01a9-4c9e-4729-ae35-f5948124b302"} + +id:24 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":"-300","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":1910,"output_tokens":84,"input_tokens":1826,"cached_tokens":0},"request_id":"ee1a01a9-4c9e-4729-ae35-f5948124b302"} + +id:25 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":"\",\n \"name","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":1914,"output_tokens":88,"input_tokens":1826,"cached_tokens":0},"request_id":"ee1a01a9-4c9e-4729-ae35-f5948124b302"} + +id:26 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":"\": \"智能会议","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":1918,"output_tokens":92,"input_tokens":1826,"cached_tokens":0},"request_id":"ee1a01a9-4c9e-4729-ae35-f5948124b302"} + +id:27 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":"系统\",\n \"","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":1922,"output_tokens":96,"input_tokens":1826,"cached_tokens":0},"request_id":"ee1a01a9-4c9e-4729-ae35-f5948124b302"} + +id:28 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":"price\": \"2","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":1926,"output_tokens":100,"input_tokens":1826,"cached_tokens":0},"request_id":"ee1a01a9-4c9e-4729-ae35-f5948124b302"} + +id:29 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":"5999","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":1930,"output_tokens":104,"input_tokens":1826,"cached_tokens":0},"request_id":"ee1a01a9-4c9e-4729-ae35-f5948124b302"} + +id:30 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":"\"\n },\n ","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":1934,"output_tokens":108,"input_tokens":1826,"cached_tokens":0},"request_id":"ee1a01a9-4c9e-4729-ae35-f5948124b302"} + +id:31 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":" {\n \"model","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":1938,"output_tokens":112,"input_tokens":1826,"cached_tokens":0},"request_id":"ee1a01a9-4c9e-4729-ae35-f5948124b302"} + +id:32 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":"\": \"PRO-","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":1942,"output_tokens":116,"input_tokens":1826,"cached_tokens":0},"request_id":"ee1a01a9-4c9e-4729-ae35-f5948124b302"} + +id:33 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":"400\",\n","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":1946,"output_tokens":120,"input_tokens":1826,"cached_tokens":0},"request_id":"ee1a01a9-4c9e-4729-ae35-f5948124b302"} + +id:34 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":" \"name\":","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":1950,"output_tokens":124,"input_tokens":1826,"cached_tokens":0},"request_id":"ee1a01a9-4c9e-4729-ae35-f5948124b302"} + +id:35 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":" \"智能考勤","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":1954,"output_tokens":128,"input_tokens":1826,"cached_tokens":0},"request_id":"ee1a01a9-4c9e-4729-ae35-f5948124b302"} + +id:36 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":"机\",\n \"","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":1958,"output_tokens":132,"input_tokens":1826,"cached_tokens":0},"request_id":"ee1a01a9-4c9e-4729-ae35-f5948124b302"} + +id:37 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":"price\": \"6","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":1962,"output_tokens":136,"input_tokens":1826,"cached_tokens":0},"request_id":"ee1a01a9-4c9e-4729-ae35-f5948124b302"} + +id:38 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":"999\"\n","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":1966,"output_tokens":140,"input_tokens":1826,"cached_tokens":0},"request_id":"ee1a01a9-4c9e-4729-ae35-f5948124b302"} + +id:39 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":" },\n {\n","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":1970,"output_tokens":144,"input_tokens":1826,"cached_tokens":0},"request_id":"ee1a01a9-4c9e-4729-ae35-f5948124b302"} + +id:40 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":" \"model\":","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":1974,"output_tokens":148,"input_tokens":1826,"cached_tokens":0},"request_id":"ee1a01a9-4c9e-4729-ae35-f5948124b302"} + +id:41 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":" \"PRO-5","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":1978,"output_tokens":152,"input_tokens":1826,"cached_tokens":0},"request_id":"ee1a01a9-4c9e-4729-ae35-f5948124b302"} + +id:42 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":"00\",\n ","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":1982,"output_tokens":156,"input_tokens":1826,"cached_tokens":0},"request_id":"ee1a01a9-4c9e-4729-ae35-f5948124b302"} + +id:43 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":" \"name\": \"","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":1986,"output_tokens":160,"input_tokens":1826,"cached_tokens":0},"request_id":"ee1a01a9-4c9e-4729-ae35-f5948124b302"} + +id:44 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":"智能文件柜\",\n","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":1990,"output_tokens":164,"input_tokens":1826,"cached_tokens":0},"request_id":"ee1a01a9-4c9e-4729-ae35-f5948124b302"} + +id:45 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":" \"price\":","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":1994,"output_tokens":168,"input_tokens":1826,"cached_tokens":0},"request_id":"ee1a01a9-4c9e-4729-ae35-f5948124b302"} + +id:46 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":" \"159","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":1998,"output_tokens":172,"input_tokens":1826,"cached_tokens":0},"request_id":"ee1a01a9-4c9e-4729-ae35-f5948124b302"} + +id:47 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":"99\"\n ","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":2002,"output_tokens":176,"input_tokens":1826,"cached_tokens":0},"request_id":"ee1a01a9-4c9e-4729-ae35-f5948124b302"} + +id:48 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":" },\n {\n ","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":2006,"output_tokens":180,"input_tokens":1826,"cached_tokens":0},"request_id":"ee1a01a9-4c9e-4729-ae35-f5948124b302"} + +id:49 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":" \"model\": \"","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":2010,"output_tokens":184,"input_tokens":1826,"cached_tokens":0},"request_id":"ee1a01a9-4c9e-4729-ae35-f5948124b302"} + +id:50 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":"SEC-10","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":2014,"output_tokens":188,"input_tokens":1826,"cached_tokens":0},"request_id":"ee1a01a9-4c9e-4729-ae35-f5948124b302"} + +id:51 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":"0\",\n \"","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":2018,"output_tokens":192,"input_tokens":1826,"cached_tokens":0},"request_id":"ee1a01a9-4c9e-4729-ae35-f5948124b302"} + +id:52 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":"name\": \"智能","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":2022,"output_tokens":196,"input_tokens":1826,"cached_tokens":0},"request_id":"ee1a01a9-4c9e-4729-ae35-f5948124b302"} + +id:53 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":"监控摄像头\",\n ","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":2026,"output_tokens":200,"input_tokens":1826,"cached_tokens":0},"request_id":"ee1a01a9-4c9e-4729-ae35-f5948124b302"} + +id:54 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":" \"price\": \"","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":2030,"output_tokens":204,"input_tokens":1826,"cached_tokens":0},"request_id":"ee1a01a9-4c9e-4729-ae35-f5948124b302"} + +id:55 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":"3999","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":2034,"output_tokens":208,"input_tokens":1826,"cached_tokens":0},"request_id":"ee1a01a9-4c9e-4729-ae35-f5948124b302"} + +id:56 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":"\"\n },\n ","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":2038,"output_tokens":212,"input_tokens":1826,"cached_tokens":0},"request_id":"ee1a01a9-4c9e-4729-ae35-f5948124b302"} + +id:57 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":" {\n \"model","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":2042,"output_tokens":216,"input_tokens":1826,"cached_tokens":0},"request_id":"ee1a01a9-4c9e-4729-ae35-f5948124b302"} + +id:58 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":"\": \"SEC-","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":2046,"output_tokens":220,"input_tokens":1826,"cached_tokens":0},"request_id":"ee1a01a9-4c9e-4729-ae35-f5948124b302"} + +id:59 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":"200\",\n","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":2050,"output_tokens":224,"input_tokens":1826,"cached_tokens":0},"request_id":"ee1a01a9-4c9e-4729-ae35-f5948124b302"} + +id:60 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":" \"name\":","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":2054,"output_tokens":228,"input_tokens":1826,"cached_tokens":0},"request_id":"ee1a01a9-4c9e-4729-ae35-f5948124b302"} + +id:61 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":" \"智能门禁","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":2058,"output_tokens":232,"input_tokens":1826,"cached_tokens":0},"request_id":"ee1a01a9-4c9e-4729-ae35-f5948124b302"} + +id:62 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":"系统\",\n \"","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":2062,"output_tokens":236,"input_tokens":1826,"cached_tokens":0},"request_id":"ee1a01a9-4c9e-4729-ae35-f5948124b302"} + +id:63 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":"price\": \"1","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":2066,"output_tokens":240,"input_tokens":1826,"cached_tokens":0},"request_id":"ee1a01a9-4c9e-4729-ae35-f5948124b302"} + +id:64 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":"5999","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":2070,"output_tokens":244,"input_tokens":1826,"cached_tokens":0},"request_id":"ee1a01a9-4c9e-4729-ae35-f5948124b302"} + +id:65 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":"\"\n },\n ","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":2074,"output_tokens":248,"input_tokens":1826,"cached_tokens":0},"request_id":"ee1a01a9-4c9e-4729-ae35-f5948124b302"} + +id:66 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":" {\n \"model","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":2078,"output_tokens":252,"input_tokens":1826,"cached_tokens":0},"request_id":"ee1a01a9-4c9e-4729-ae35-f5948124b302"} + +id:67 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":"\": \"SEC-","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":2082,"output_tokens":256,"input_tokens":1826,"cached_tokens":0},"request_id":"ee1a01a9-4c9e-4729-ae35-f5948124b302"} + +id:68 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":"300\",\n","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":2086,"output_tokens":260,"input_tokens":1826,"cached_tokens":0},"request_id":"ee1a01a9-4c9e-4729-ae35-f5948124b302"} + +id:69 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":" \"name\":","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":2090,"output_tokens":264,"input_tokens":1826,"cached_tokens":0},"request_id":"ee1a01a9-4c9e-4729-ae35-f5948124b302"} + +id:70 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":" \"智能报警系统","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":2094,"output_tokens":268,"input_tokens":1826,"cached_tokens":0},"request_id":"ee1a01a9-4c9e-4729-ae35-f5948124b302"} + +id:71 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":"\",\n \"price","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":2098,"output_tokens":272,"input_tokens":1826,"cached_tokens":0},"request_id":"ee1a01a9-4c9e-4729-ae35-f5948124b302"} + +id:72 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":"\": \"28","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":2102,"output_tokens":276,"input_tokens":1826,"cached_tokens":0},"request_id":"ee1a01a9-4c9e-4729-ae35-f5948124b302"} + +id:73 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":"999\"\n","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":2106,"output_tokens":280,"input_tokens":1826,"cached_tokens":0},"request_id":"ee1a01a9-4c9e-4729-ae35-f5948124b302"} + +id:74 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":" },\n {\n","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":2110,"output_tokens":284,"input_tokens":1826,"cached_tokens":0},"request_id":"ee1a01a9-4c9e-4729-ae35-f5948124b302"} + +id:75 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":" \"model\":","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":2114,"output_tokens":288,"input_tokens":1826,"cached_tokens":0},"request_id":"ee1a01a9-4c9e-4729-ae35-f5948124b302"} + +id:76 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":" \"SEC-4","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":2118,"output_tokens":292,"input_tokens":1826,"cached_tokens":0},"request_id":"ee1a01a9-4c9e-4729-ae35-f5948124b302"} + +id:77 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":"00\",\n ","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":2122,"output_tokens":296,"input_tokens":1826,"cached_tokens":0},"request_id":"ee1a01a9-4c9e-4729-ae35-f5948124b302"} + +id:78 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":" \"name\": \"","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":2126,"output_tokens":300,"input_tokens":1826,"cached_tokens":0},"request_id":"ee1a01a9-4c9e-4729-ae35-f5948124b302"} + +id:79 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":"智能访客系统","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":2130,"output_tokens":304,"input_tokens":1826,"cached_tokens":0},"request_id":"ee1a01a9-4c9e-4729-ae35-f5948124b302"} + +id:80 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":"\",\n \"price","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":2134,"output_tokens":308,"input_tokens":1826,"cached_tokens":0},"request_id":"ee1a01a9-4c9e-4729-ae35-f5948124b302"} + +id:81 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":"\": \"99","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":2138,"output_tokens":312,"input_tokens":1826,"cached_tokens":0},"request_id":"ee1a01a9-4c9e-4729-ae35-f5948124b302"} + +id:82 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":"99\"\n ","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":2142,"output_tokens":316,"input_tokens":1826,"cached_tokens":0},"request_id":"ee1a01a9-4c9e-4729-ae35-f5948124b302"} + +id:83 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":" },\n {\n ","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":2146,"output_tokens":320,"input_tokens":1826,"cached_tokens":0},"request_id":"ee1a01a9-4c9e-4729-ae35-f5948124b302"} + +id:84 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":" \"model\": \"","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":2150,"output_tokens":324,"input_tokens":1826,"cached_tokens":0},"request_id":"ee1a01a9-4c9e-4729-ae35-f5948124b302"} + +id:85 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":"SEC-50","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":2154,"output_tokens":328,"input_tokens":1826,"cached_tokens":0},"request_id":"ee1a01a9-4c9e-4729-ae35-f5948124b302"} + +id:86 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":"0\",\n \"","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":2158,"output_tokens":332,"input_tokens":1826,"cached_tokens":0},"request_id":"ee1a01a9-4c9e-4729-ae35-f5948124b302"} + +id:87 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":"name\": \"智能","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":2162,"output_tokens":336,"input_tokens":1826,"cached_tokens":0},"request_id":"ee1a01a9-4c9e-4729-ae35-f5948124b302"} + +id:88 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":"停车管理\",\n ","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":2166,"output_tokens":340,"input_tokens":1826,"cached_tokens":0},"request_id":"ee1a01a9-4c9e-4729-ae35-f5948124b302"} + +id:89 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":" \"price\": \"","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":2170,"output_tokens":344,"input_tokens":1826,"cached_tokens":0},"request_id":"ee1a01a9-4c9e-4729-ae35-f5948124b302"} + +id:90 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":"2299","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":2174,"output_tokens":348,"input_tokens":1826,"cached_tokens":0},"request_id":"ee1a01a9-4c9e-4729-ae35-f5948124b302"} + +id:91 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":"9\"\n }\n","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":2178,"output_tokens":352,"input_tokens":1826,"cached_tokens":0},"request_id":"ee1a01a9-4c9e-4729-ae35-f5948124b302"} + +id:92 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":"]\n```","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":2180,"output_tokens":354,"input_tokens":1826,"cached_tokens":0},"request_id":"ee1a01a9-4c9e-4729-ae35-f5948124b302"} + +id:93 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":"","role":"assistant"},"finish_reason":"stop"}]},"usage":{"total_tokens":2180,"output_tokens":354,"input_tokens":1826,"cached_tokens":0},"request_id":"ee1a01a9-4c9e-4729-ae35-f5948124b302"} + diff --git a/test/Cnblogs.DashScope.Tests.Shared/RawHttpData/conversation-generation-message-with-doc-url-sse.response.header.txt b/test/Cnblogs.DashScope.Tests.Shared/RawHttpData/conversation-generation-message-with-doc-url-sse.response.header.txt new file mode 100644 index 0000000..acdf959 --- /dev/null +++ b/test/Cnblogs.DashScope.Tests.Shared/RawHttpData/conversation-generation-message-with-doc-url-sse.response.header.txt @@ -0,0 +1,27 @@ +HTTP/1.1 200 OK +vary: Origin,Access-Control-Request-Method,Access-Control-Request-Headers +x-request-id: ee1a01a9-4c9e-4729-ae35-f5948124b302 +content-type: text/event-stream;charset=UTF-8 +x-dashscope-call-gateway: true +x-dashscope-timeout: 298 +x-dashscope-apikeyid: 67516 +x-dashscope-inner-streammode: OUT +x-dashscope-inner-requestreadytime: 1764518201003 +x-dashscope-inner-gateway-datainspection: {"input":"disable","output":"disable","bach_characters":15,"gateway_check":true} +x-dashscope-inner-model-type: BASE_MODEL +x-dashscope-uid: 1493478651020171 +x-dashscope-inner-enableestimatedusage: true +x-dashscope-requestid: ee1a01a9-4c9e-4729-ae35-f5948124b302 +x-dashscope-inner-request-priority: 10 +x-dashscope-apikeyloc: header +x-dashscope-inner-flow-control: verified +x-dashscope-inner-logging-policy: default +x-dashscope-inner-timeout: 298 +x-dashscope-finished: false +req-cost-time: 820 +req-arrive-time: 1764518200992 +resp-start-time: 1764518201812 +x-envoy-upstream-service-time: 812 +date: Sun, 30 Nov 2025 15:56:41 GMT +server: istio-envoy +transfer-encoding: chunked diff --git a/test/Cnblogs.DashScope.Tests.Shared/Utils/Snapshots.TextGeneration.cs b/test/Cnblogs.DashScope.Tests.Shared/Utils/Snapshots.TextGeneration.cs index c523850..af7698d 100644 --- a/test/Cnblogs.DashScope.Tests.Shared/Utils/Snapshots.TextGeneration.cs +++ b/test/Cnblogs.DashScope.Tests.Shared/Utils/Snapshots.TextGeneration.cs @@ -341,8 +341,9 @@ public static readonly { FinishReason = "stop", Index = 1, - Message = TextChatMessage.Assistant( - "行吧,不过这东西有点复杂哦~你要先了解基本的数据结构和平衡树的概念才行。。。你想不想听我说说看啊?") + Message = + TextChatMessage.Assistant( + "行吧,不过这东西有点复杂哦~你要先了解基本的数据结构和平衡树的概念才行。。。你想不想听我说说看啊?") } } }, @@ -1123,6 +1124,56 @@ public static readonly InputTokens = 58 } }); + + public static readonly RequestSnapshot, + ModelResponse> + ConversationMessageWithDocUrlsIncremental = new( + "conversation-generation-message-with-doc-url", + new ModelRequest() + { + Model = "qwen-doc-turbo", + Input = new TextGenerationInput() + { + Messages = new List() + { + TextChatMessage.System("You are a helpful assistant."), + TextChatMessage.DocUrl( + "从这两份产品手册中,提取所有产品信息,并整理成一个标准的JSON数组。每个对象需要包含:model(产品的型号)、name(产品的名称)、price(价格(去除货币符号和逗号))", + new[] + { + "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20251107/jockge/%E7%A4%BA%E4%BE%8B%E4%BA%A7%E5%93%81%E6%89%8B%E5%86%8CA.docx", + "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20251107/ztwxzr/%E7%A4%BA%E4%BE%8B%E4%BA%A7%E5%93%81%E6%89%8B%E5%86%8CB.docx" + }) + } + }, + Parameters = new TextGenerationParameters() + { + ResultFormat = "message", IncrementalOutput = true + } + }, + new ModelResponse() + { + RequestId = "ee1a01a9-4c9e-4729-ae35-f5948124b302", + Output = new TextGenerationOutput() + { + Choices = new List() + { + new() + { + FinishReason = "stop", + Message = TextChatMessage.Assistant( + "```json\n[\n {\n \"model\": \"PRO-100\",\n \"name\": \"智能打印机\",\n \"price\": \"8999\"\n },\n {\n \"model\": \"PRO-200\",\n \"name\": \"智能扫描仪\",\n \"price\": \"12999\"\n },\n {\n \"model\": \"PRO-300\",\n \"name\": \"智能会议系统\",\n \"price\": \"25999\"\n },\n {\n \"model\": \"PRO-400\",\n \"name\": \"智能考勤机\",\n \"price\": \"6999\"\n },\n {\n \"model\": \"PRO-500\",\n \"name\": \"智能文件柜\",\n \"price\": \"15999\"\n },\n {\n \"model\": \"SEC-100\",\n \"name\": \"智能监控摄像头\",\n \"price\": \"3999\"\n },\n {\n \"model\": \"SEC-200\",\n \"name\": \"智能门禁系统\",\n \"price\": \"15999\"\n },\n {\n \"model\": \"SEC-300\",\n \"name\": \"智能报警系统\",\n \"price\": \"28999\"\n },\n {\n \"model\": \"SEC-400\",\n \"name\": \"智能访客系统\",\n \"price\": \"9999\"\n },\n {\n \"model\": \"SEC-500\",\n \"name\": \"智能停车管理\",\n \"price\": \"22999\"\n }\n]\n```") + } + } + }, + Usage = new TextGenerationTokenUsage() + { + TotalTokens = 2180, + OutputTokens = 354, + InputTokens = 1826, + CachedTokens = 0 + } + }); } } } diff --git a/test/Cnblogs.DashScope.Tests.Shared/Utils/Snapshots.cs b/test/Cnblogs.DashScope.Tests.Shared/Utils/Snapshots.cs index 7e22bf6..6bcb43d 100644 --- a/test/Cnblogs.DashScope.Tests.Shared/Utils/Snapshots.cs +++ b/test/Cnblogs.DashScope.Tests.Shared/Utils/Snapshots.cs @@ -135,6 +135,7 @@ public static readonly public static class Upload { + // get-upload-policy.response.body.txt must be CRLF public static readonly RequestSnapshot GetPolicyNoSse = new( "get-upload-policy", new DashScopeTemporaryUploadPolicy( @@ -151,6 +152,7 @@ public static class Upload "private", "true"))); + // upload-temporary-file.request.body.txt must be CRLF public static readonly RequestSnapshot UploadTemporaryFileNoSse = new("upload-temporary-file") { Boundary = "5aa22a67-eae4-4c54-8f62-c486fefd11a5" From d4f10e271c5b2087e11fe0c7c66662c09c769d4f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B2=88=E6=98=9F=E7=B9=81?= Date: Mon, 1 Dec 2025 23:03:08 +0800 Subject: [PATCH 3/6] feat: add qwen audio sample (#151) * chore: update xml documents * docs: update docs * feat: group samples by type * feat: add audio caption sample * feat: add audio understanding sample --- README.md | 78 +- README.zh-Hans.md | 114 +- .../Cnblogs.DashScope.Sample.csproj | 3 + .../Files/FileUploadSample.cs | 6 +- .../Cnblogs.DashScope.Sample/FilesSample.cs | 15 + sample/Cnblogs.DashScope.Sample/ISample.cs | 1 + .../Multimodal/AudioUnderstanding.cs | 79 + .../Multimodal/GuiSample.cs | 6 +- .../Multimodal/ImageInputSample.cs | 6 +- .../Multimodal/ImageUploadSample.cs | 6 +- .../OcrAdvancedRecognitionSample.cs | 6 +- .../Multimodal/OcrDocumentToLaTeXSample.cs | 6 +- .../Multimodal/OcrFormulaRecognitionSample.cs | 6 +- .../OcrKeyInformationExtractionSample.cs | 6 +- .../Multimodal/OcrMultilanguageSample.cs | 6 +- .../Multimodal/OcrSample.cs | 6 +- .../Multimodal/OcrTableParsingSample.cs | 6 +- .../Multimodal/OcrTextRecognition.cs | 6 +- .../Multimodal/VideoInputSample.cs | 6 +- .../MultimodalSample.cs | 15 + sample/Cnblogs.DashScope.Sample/Program.cs | 16 +- .../Text/ChatReasoningSample.cs | 6 +- .../Text/ChatSample.cs | 6 +- .../Text/ChatStreamSample.cs | 6 +- .../Text/ChatThinkingBudgetSample.cs | 6 +- .../Text/ChatToolCallingSample.cs | 6 +- .../Text/ChatWebSearchSample.cs | 6 +- .../Text/DataMiningSample.cs | 6 +- .../Text/DeepResearchSample.cs | 6 +- .../Text/JsonOutputSample.cs | 6 +- .../Text/LongContextSample.cs | 6 +- .../Text/PrefixCompletionSample.cs | 6 +- .../Text/RolePlaySample.cs | 6 +- .../Text/TranslationSample.cs | 6 +- sample/Cnblogs.DashScope.Sample/TextSample.cs | 15 + sample/Cnblogs.DashScope.Sample/noise.wav | Bin 0 -> 576078 bytes .../DashScopeClientCore.cs | 2 + .../IDashScopeClient.cs | 4 +- .../MultimodalInputTokenDetails.cs | 7 +- .../MultimodalMessageContent.cs | 1 + .../MultimodalGenerationSerializationTests.cs | 6 +- ...ration-audio-caption-sse.request.body.json | 16 + ...ation-audio-caption-sse.request.header.txt | 9 + ...ration-audio-caption-sse.response.body.txt | 2215 +++++++++++++++++ ...tion-audio-caption-sse.response.header.txt | 14 + .../Snapshots.MultimodalGeneration.Audio.cs | 168 ++ .../Utils/Snapshots.MultimodalGeneration.cs | 114 +- 47 files changed, 2830 insertions(+), 218 deletions(-) create mode 100644 sample/Cnblogs.DashScope.Sample/FilesSample.cs create mode 100644 sample/Cnblogs.DashScope.Sample/Multimodal/AudioUnderstanding.cs create mode 100644 sample/Cnblogs.DashScope.Sample/MultimodalSample.cs create mode 100644 sample/Cnblogs.DashScope.Sample/TextSample.cs create mode 100644 sample/Cnblogs.DashScope.Sample/noise.wav create mode 100644 test/Cnblogs.DashScope.Tests.Shared/RawHttpData/multimodal-generation-audio-caption-sse.request.body.json create mode 100644 test/Cnblogs.DashScope.Tests.Shared/RawHttpData/multimodal-generation-audio-caption-sse.request.header.txt create mode 100644 test/Cnblogs.DashScope.Tests.Shared/RawHttpData/multimodal-generation-audio-caption-sse.response.body.txt create mode 100644 test/Cnblogs.DashScope.Tests.Shared/RawHttpData/multimodal-generation-audio-caption-sse.response.header.txt create mode 100644 test/Cnblogs.DashScope.Tests.Shared/Utils/Snapshots.MultimodalGeneration.Audio.cs diff --git a/README.md b/README.md index f6cd6de..9ecbb6f 100644 --- a/README.md +++ b/README.md @@ -109,7 +109,8 @@ public class YourService(IDashScopeClient client) - [Formula Recognition](#formula-recognition) - [Text Recognition](#text-recognition) - [Multilanguage](#multilanguage) - + - [GUI](#gui) + - [Audio Understanding](#audio-understanding) - [Text-to-Speech](#text-to-speech) - CosyVoice, Sambert, etc. For TTS applications - [Image Generation](#image-generation) - wanx2.1, etc. For text-to-image and portrait style transfer - [Application Call](#application-call) @@ -499,7 +500,7 @@ new ModelRequest() For Qwen-Long models: ```csharp var file = new FileInfo("test.txt"); -var uploadedFile = await dashScopeClient.UploadFileAsync(file.OpenRead(), file.Name); +var uploadedFile = await dashScopeClient.OpenAiCompatibleUploadFileAsync(file.OpenRead(), file.Name); var history = new List { ChatMessage.File(uploadedFile.Id) }; var completion = await client.client.GetTextCompletionAsync( new ModelRequest() @@ -514,7 +515,7 @@ var completion = await client.client.GetTextCompletionAsync( }); Console.WriteLine(completion.Output.Choices[0].Message.Content); // Cleanup -await dashScopeClient.DeleteFileAsync(uploadedFile.Id); +await dashScopeClient.OpenAiCompatibleDeleteFileAsync(uploadedFile.Id); ``` ## Multimodal @@ -1442,6 +1443,77 @@ Response: Then you can execute the command that model returns, and reply the screenshot with next intension. +### Audio Understanding + +Example(use `Qwen3-Omni-Captioner`) + +```csharp +// upload file +await using var audio = File.OpenRead("noise.wav"); +var ossLink = await client.UploadTemporaryFileAsync("qwen3-omni-30b-a3b-captioner", audio, "noise.wav"); +Console.WriteLine($"File uploaded: {ossLink}"); +var messages = new List +{ + MultimodalMessage.User( + [ + // 也可以直接传入公网地址 + MultimodalMessageContent.AudioContent(ossLink), + ]) +}; +var completion = client.GetMultimodalGenerationStreamAsync( + new ModelRequest() + { + Model = "qwen3-omni-30b-a3b-captioner", + Input = new MultimodalInput() { Messages = messages }, + Parameters = new MultimodalParameters() { IncrementalOutput = true, } + }); +var reply = new StringBuilder(); +var first = true; +MultimodalTokenUsage? usage = null; +await foreach (var chunk in completion) +{ + var choice = chunk.Output.Choices[0]; + if (first) + { + first = false; + Console.WriteLine(); + Console.Write("Assistant > "); + } + + if (choice.Message.Content.Count == 0) + { + continue; + } + + Console.Write(choice.Message.Content[0].Text); + reply.Append(choice.Message.Content[0].Text); + usage = chunk.Usage; +} + +Console.WriteLine(); +messages.Add(MultimodalMessage.Assistant([MultimodalMessageContent.TextContent(reply.ToString())])); +if (usage != null) +{ + Console.WriteLine( + $"Usage: in({usage.InputTokens})/out({usage.OutputTokens})/audio({usage.InputTokensDetails?.AudioTokens})/total({usage.TotalTokens})"); +} +``` + +Sample output + +```csharp +Assistant > The audio clip opens with a rapid, percussive metallic clatter, reminiscent of a typewriter or similar mechanical device, which continues in a steady rhythm throughout the recording. This clatter is slightly left-of-center in the stereo field and is accompanied by a faint, low-frequency hum, likely from a household appliance or HVAC system. The acoustic environment is a small, enclosed room with hard surfaces, indicated by the short, bright reverberation of both the clatter and the speaker’s voice. The audio quality is moderate, with a noticeable electronic hiss and some loss of high-frequency detail, but no digital distortion or clipping. + +At the one-second mark, a male voice enters, positioned slightly right-of-center and closer to the microphone. He speaks in standard Mandarin, with a tone of weary exasperation: “哎 呀,这样我还怎么安静工作啊?” (“Aiyā, zěnyàng wǒ hái zěnme ānjìng gōngzuò a?”), which translates to “Oh, how can I possibly work quietly like this?” His speech is clear, with a slightly rising pitch on “安静” (“quietly”) and a falling pitch on “啊” (“a”), conveying a sense of complaint and fatigue. The accent is standard, with no regional inflection, and the voice is that of a young to middle-aged adult male. + +Throughout the clip, the mechanical clatter remains constant and prominent, occasionally competing with the voice for clarity. There are no other sounds, such as footsteps, additional voices, or environmental noises, and the background is otherwise quiet. The interplay between the persistent mechanical noise and the speaker’s complaint creates a vivid sense of disruption and frustration, suggesting an environment where work is being impeded by an external, uncontrolled sound source. + +Culturally, the use of Mandarin, standard pronunciation, and modern recording quality indicate a contemporary, urban Chinese setting. The language and tone are universally relatable, reflecting a common experience of being disturbed during work. The lack of regional markers or distinctive background noises suggests a generic, possibly domestic or office-like space, but with no clear indicators of a specific location or social context. + +In summary, the audio portrays a modern Mandarin-speaking man, exasperated by a constant, distracting mechanical noise (likely a typewriter or similar device), attempting to work in a small, reverberant room. The recording’s technical and acoustic features reinforce the sense of disruption and frustration, while the language and setting suggest a contemporary, urban Chinese context. +Usage: in(160)/out(514)/audio(152)/total(674) +``` + ## Text-to-Speech Create a speech synthesis session using `dashScopeClient.CreateSpeechSynthesizerSocketSessionAsync()`. diff --git a/README.zh-Hans.md b/README.zh-Hans.md index d64ef04..f101473 100644 --- a/README.zh-Hans.md +++ b/README.zh-Hans.md @@ -108,6 +108,7 @@ public class YourService(IDashScopeClient client) - [通用文本识别](#通用文本识别) - [多语言识别](#多语言识别) - [界面交互](#界面交互) + - [音频理解](#音频理解) - [语音合成](#语音合成) - CosyVoice,Sambert 等,支持 TTS 等应用场景 - [图像生成](#图像生成) - wanx2.1 等,支持文生图,人像风格重绘等应用场景 - [应用调用](#应用调用) @@ -1385,14 +1386,6 @@ Deleting file2...Success */ ``` -**注意及时删除上传的文件,这个接口有文件总数(1万)和文件总量(100GB)限制。** - -你可以使用 `ListFileAsync` 获取完整的文件列表并删除不再需要使用的文件 - -示例: - - - ### 翻译能力(Qwen-MT) 翻译能力主要通过 `Parameters` 里的 `TranslationOptions` 进行配置。 @@ -1614,6 +1607,23 @@ var completion = client.GetTextCompletionStreamAsync( }); ``` +如果文件来自公网 URL,也可以使用 `TextChatMessage.DocUrl` 传入,此时不再需要额外添加一个 User 信息。 + +示例: + +```csharp +var messages = new List + { + TextChatMessage.System("You are a helpful assistant"), + TextChatMessage.DocUrl( + "从这两份产品手册中,提取所有产品信息,并整理成一个标准的JSON数组。每个对象需要包含:model(产品的型号)、name(产品的名称)、price(价格(去除货币符号和逗号))", + [ + "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20251107/jockge/%E7%A4%BA%E4%BE%8B%E4%BA%A7%E5%93%81%E6%89%8B%E5%86%8CA.docx", + "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20251107/ztwxzr/%E7%A4%BA%E4%BE%8B%E4%BA%A7%E5%93%81%E6%89%8B%E5%86%8CB.docx" + ]), + }; +``` + 完整示例代码: ````csharp @@ -2680,7 +2690,7 @@ foreach (var info in completion.Output.Choices[0].Message.Content[0].OcrResult!. 输出结果: ````csharp -Text: +Text: ```json [ {"rotate_rect": [236, 254, 115, 299, 90], "text": "OpenAI 兼容"}, @@ -2690,7 +2700,7 @@ Text: {"rotate_rect": [712, 684, 115, 85, 90], "text": "curl"} ] ``` -WordsInfo: +WordsInfo: OpenAI 兼容 Location: [46,55,205,55,205,87,46,87] RotateRect: [125,71,159,32,0] @@ -3309,7 +3319,7 @@ Salam! "y": , "description": "" } - + ### TYPE - **功能**: 输入文本。 - **Parameters模板**: @@ -3317,7 +3327,7 @@ Salam! "text": "", "needs_enter": } - + ### SCROLL - **功能**: 滚动窗口。 - **Parameters模板**: @@ -3325,28 +3335,28 @@ Salam! "direction": "<'up' or 'down'>", "amount": "<'small', 'medium', or 'large'>" } - + ### KEY_PRESS - **功能**: 按下功能键。 - **Parameters模板**: { "key": "" } - + ### FINISH - **功能**: 任务成功完成。 - **Parameters模板**: { "message": "" } - + ### FAILE - **功能**: 任务无法完成。 - **Parameters模板**: { "reason": "" } - + ## 4. 思维与决策框架 在生成每一步操作前,请严格遵循以下思考-验证流程: @@ -3400,6 +3410,78 @@ var completion = client.GetMultimodalGenerationStreamAsync( 随后您需要自行实现大模型返回的操作(这里是点击屏幕上的位置),然后返回下一步的截图和意图。 +### 音频理解 + +`qwen-audio` 无法用于生产环境,这里以使用 `Qwen3-Omni-Captioner` 为例: + +示例请求: + +```csharp +// upload file +await using var audio = File.OpenRead("noise.wav"); +var ossLink = await client.UploadTemporaryFileAsync("qwen3-omni-30b-a3b-captioner", audio, "noise.wav"); +Console.WriteLine($"File uploaded: {ossLink}"); +var messages = new List +{ + MultimodalMessage.User( + [ + // 也可以直接传入公网地址 + MultimodalMessageContent.AudioContent(ossLink), + ]) +}; +var completion = client.GetMultimodalGenerationStreamAsync( + new ModelRequest() + { + Model = "qwen3-omni-30b-a3b-captioner", + Input = new MultimodalInput() { Messages = messages }, + Parameters = new MultimodalParameters() { IncrementalOutput = true, } + }); +``` + +这里开启了流式增量输出,遍历返回的 `IAsyncEnumerable` 即可获取模型回复,示例: + +```csharp +var reply = new StringBuilder(); +var first = true; +MultimodalTokenUsage? usage = null; +await foreach (var chunk in completion) +{ + var choice = chunk.Output.Choices[0]; + if (first) + { + first = false; + Console.WriteLine(); + Console.Write("Assistant > "); + } + + if (choice.Message.Content.Count == 0) + { + continue; + } + + Console.Write(choice.Message.Content[0].Text); + reply.Append(choice.Message.Content[0].Text); + usage = chunk.Usage; +} + +Console.WriteLine(); +messages.Add(MultimodalMessage.Assistant([MultimodalMessageContent.TextContent(reply.ToString())])); +``` + +示例输出: + +``` +Assistant > The audio clip opens with a rapid, percussive metallic clatter, reminiscent of a typewriter or similar mechanical device, which continues in a steady rhythm throughout the recording. This clatter is slightly left-of-center in the stereo field and is accompanied by a faint, low-frequency hum, likely from a household appliance or HVAC system. The acoustic environment is a small, enclosed room with hard surfaces, indicated by the short, bright reverberation of both the clatter and the speaker’s voice. The audio quality is moderate, with a noticeable electronic hiss and some loss of high-frequency detail, but no digital distortion or clipping. + +At the one-second mark, a male voice enters, positioned slightly right-of-center and closer to the microphone. He speaks in standard Mandarin, with a tone of weary exasperation: “哎 呀,这样我还怎么安静工作啊?” (“Aiyā, zěnyàng wǒ hái zěnme ānjìng gōngzuò a?”), which translates to “Oh, how can I possibly work quietly like this?” His speech is clear, with a slightly rising pitch on “安静” (“quietly”) and a falling pitch on “啊” (“a”), conveying a sense of complaint and fatigue. The accent is standard, with no regional inflection, and the voice is that of a young to middle-aged adult male. + +Throughout the clip, the mechanical clatter remains constant and prominent, occasionally competing with the voice for clarity. There are no other sounds, such as footsteps, additional voices, or environmental noises, and the background is otherwise quiet. The interplay between the persistent mechanical noise and the speaker’s complaint creates a vivid sense of disruption and frustration, suggesting an environment where work is being impeded by an external, uncontrolled sound source. + +Culturally, the use of Mandarin, standard pronunciation, and modern recording quality indicate a contemporary, urban Chinese setting. The language and tone are universally relatable, reflecting a common experience of being disturbed during work. The lack of regional markers or distinctive background noises suggests a generic, possibly domestic or office-like space, but with no clear indicators of a specific location or social context. + +In summary, the audio portrays a modern Mandarin-speaking man, exasperated by a constant, distracting mechanical noise (likely a typewriter or similar device), attempting to work in a small, reverberant room. The recording’s technical and acoustic features reinforce the sense of disruption and frustration, while the language and setting suggest a contemporary, urban Chinese context. +``` + ## 语音合成 通过 `dashScopeClient.CreateSpeechSynthesizerSocketSessionAsync()` 来创建一个语音合成会话。 diff --git a/sample/Cnblogs.DashScope.Sample/Cnblogs.DashScope.Sample.csproj b/sample/Cnblogs.DashScope.Sample/Cnblogs.DashScope.Sample.csproj index b75cd98..00a1318 100644 --- a/sample/Cnblogs.DashScope.Sample/Cnblogs.DashScope.Sample.csproj +++ b/sample/Cnblogs.DashScope.Sample/Cnblogs.DashScope.Sample.csproj @@ -50,6 +50,9 @@ Always + + PreserveNewest + diff --git a/sample/Cnblogs.DashScope.Sample/Files/FileUploadSample.cs b/sample/Cnblogs.DashScope.Sample/Files/FileUploadSample.cs index cc3298a..7ded2de 100644 --- a/sample/Cnblogs.DashScope.Sample/Files/FileUploadSample.cs +++ b/sample/Cnblogs.DashScope.Sample/Files/FileUploadSample.cs @@ -3,13 +3,13 @@ namespace Cnblogs.DashScope.Sample.Files; -public class FileUploadSample : ISample +public class FileUploadSample : FilesSample { /// - public string Description => "Upload File Sample"; + public override string Description => "Upload File Sample"; /// - public async Task RunAsync(IDashScopeClient client) + public override async Task RunAsync(IDashScopeClient client) { var json = new JsonSerializerOptions(JsonSerializerDefaults.Web) { WriteIndented = true }; var file = new FileInfo("Lenna.jpg"); diff --git a/sample/Cnblogs.DashScope.Sample/FilesSample.cs b/sample/Cnblogs.DashScope.Sample/FilesSample.cs new file mode 100644 index 0000000..c7aa556 --- /dev/null +++ b/sample/Cnblogs.DashScope.Sample/FilesSample.cs @@ -0,0 +1,15 @@ +using Cnblogs.DashScope.Core; + +namespace Cnblogs.DashScope.Sample; + +public abstract class FilesSample : ISample +{ + /// + public string Group => "Files"; + + /// + public abstract string Description { get; } + + /// + public abstract Task RunAsync(IDashScopeClient client); +} diff --git a/sample/Cnblogs.DashScope.Sample/ISample.cs b/sample/Cnblogs.DashScope.Sample/ISample.cs index eb5c50e..3692b47 100644 --- a/sample/Cnblogs.DashScope.Sample/ISample.cs +++ b/sample/Cnblogs.DashScope.Sample/ISample.cs @@ -4,6 +4,7 @@ namespace Cnblogs.DashScope.Sample; public interface ISample { + string Group { get; } string Description { get; } Task RunAsync(IDashScopeClient client); } diff --git a/sample/Cnblogs.DashScope.Sample/Multimodal/AudioUnderstanding.cs b/sample/Cnblogs.DashScope.Sample/Multimodal/AudioUnderstanding.cs new file mode 100644 index 0000000..a8ee12b --- /dev/null +++ b/sample/Cnblogs.DashScope.Sample/Multimodal/AudioUnderstanding.cs @@ -0,0 +1,79 @@ +using System.Text; +using Cnblogs.DashScope.Core; + +namespace Cnblogs.DashScope.Sample.Multimodal; + +public class AudioUnderstanding : MultimodalSample +{ + /// + public override string Description => "Audio Understanding Sample"; + + /// + public override async Task RunAsync(IDashScopeClient client) + { + // upload file + await using var audio = File.OpenRead("noise.wav"); + var ossLink = await client.UploadTemporaryFileAsync("qwen3-omni-30b-a3b-captioner", audio, "noise.wav"); + Console.WriteLine($"File uploaded: {ossLink}"); + var messages = new List + { + MultimodalMessage.User( + [ + // 也可以直接传入公网地址 + MultimodalMessageContent.AudioContent(ossLink), + ]) + }; + var completion = client.GetMultimodalGenerationStreamAsync( + new ModelRequest() + { + Model = "qwen3-omni-30b-a3b-captioner", + Input = new MultimodalInput() { Messages = messages }, + Parameters = new MultimodalParameters() { IncrementalOutput = true, } + }); + var reply = new StringBuilder(); + var first = true; + MultimodalTokenUsage? usage = null; + await foreach (var chunk in completion) + { + var choice = chunk.Output.Choices[0]; + if (first) + { + first = false; + Console.WriteLine(); + Console.Write("Assistant > "); + } + + if (choice.Message.Content.Count == 0) + { + continue; + } + + Console.Write(choice.Message.Content[0].Text); + reply.Append(choice.Message.Content[0].Text); + usage = chunk.Usage; + } + + Console.WriteLine(); + messages.Add(MultimodalMessage.Assistant([MultimodalMessageContent.TextContent(reply.ToString())])); + if (usage != null) + { + Console.WriteLine( + $"Usage: in({usage.InputTokens})/out({usage.OutputTokens})/audio({usage.InputTokensDetails?.AudioTokens})/total({usage.TotalTokens})"); + } + } +} + +/* +File uploaded: oss://dashscope-instant/52afe077fb4825c6d74411758cb1ab98/2025-12-01/f33b0b0e-7314-4ffd-b459-f418eb1e0866/sample.mp4 + +Assistant > The audio clip opens with a rapid, percussive metallic clatter, reminiscent of a typewriter or similar mechanical device, which continues in a steady rhythm throughout the recording. This clatter is slightly left-of-center in the stereo field and is accompanied by a faint, low-frequency hum, likely from a household appliance or HVAC system. The acoustic environment is a small, enclosed room with hard surfaces, indicated by the short, bright reverberation of both the clatter and the speaker’s voice. The audio quality is moderate, with a noticeable electronic hiss and some loss of high-frequency detail, but no digital distortion or clipping. + +At the one-second mark, a male voice enters, positioned slightly right-of-center and closer to the microphone. He speaks in standard Mandarin, with a tone of weary exasperation: “哎 呀,这样我还怎么安静工作啊?” (“Aiyā, zěnyàng wǒ hái zěnme ānjìng gōngzuò a?”), which translates to “Oh, how can I possibly work quietly like this?” His speech is clear, with a slightly rising pitch on “安静” (“quietly”) and a falling pitch on “啊” (“a”), conveying a sense of complaint and fatigue. The accent is standard, with no regional inflection, and the voice is that of a young to middle-aged adult male. + +Throughout the clip, the mechanical clatter remains constant and prominent, occasionally competing with the voice for clarity. There are no other sounds, such as footsteps, additional voices, or environmental noises, and the background is otherwise quiet. The interplay between the persistent mechanical noise and the speaker’s complaint creates a vivid sense of disruption and frustration, suggesting an environment where work is being impeded by an external, uncontrolled sound source. + +Culturally, the use of Mandarin, standard pronunciation, and modern recording quality indicate a contemporary, urban Chinese setting. The language and tone are universally relatable, reflecting a common experience of being disturbed during work. The lack of regional markers or distinctive background noises suggests a generic, possibly domestic or office-like space, but with no clear indicators of a specific location or social context. + +In summary, the audio portrays a modern Mandarin-speaking man, exasperated by a constant, distracting mechanical noise (likely a typewriter or similar device), attempting to work in a small, reverberant room. The recording’s technical and acoustic features reinforce the sense of disruption and frustration, while the language and setting suggest a contemporary, urban Chinese context. +Usage: in(160)/out(514)/audio(152)/total(674) + */ diff --git a/sample/Cnblogs.DashScope.Sample/Multimodal/GuiSample.cs b/sample/Cnblogs.DashScope.Sample/Multimodal/GuiSample.cs index ed017ec..5a4c385 100644 --- a/sample/Cnblogs.DashScope.Sample/Multimodal/GuiSample.cs +++ b/sample/Cnblogs.DashScope.Sample/Multimodal/GuiSample.cs @@ -3,7 +3,7 @@ namespace Cnblogs.DashScope.Sample.Multimodal; -public class GuiSample : ISample +public class GuiSample : MultimodalSample { private const string SystemPrompt = """ @@ -82,10 +82,10 @@ c. 精确复制该action的parameters模板,并填充值。 """; /// - public string Description => "Gui Operation Sample"; + public override string Description => "Gui Operation Sample"; /// - public async Task RunAsync(IDashScopeClient client) + public override async Task RunAsync(IDashScopeClient client) { var messages = new List { diff --git a/sample/Cnblogs.DashScope.Sample/Multimodal/ImageInputSample.cs b/sample/Cnblogs.DashScope.Sample/Multimodal/ImageInputSample.cs index b37b193..85ed8d0 100644 --- a/sample/Cnblogs.DashScope.Sample/Multimodal/ImageInputSample.cs +++ b/sample/Cnblogs.DashScope.Sample/Multimodal/ImageInputSample.cs @@ -3,13 +3,13 @@ namespace Cnblogs.DashScope.Sample.Multimodal; -public class ImageInputSample : ISample +public class ImageInputSample: MultimodalSample { /// - public string Description => "Chat with image input"; + public override string Description => "Chat with image input"; /// - public async Task RunAsync(IDashScopeClient client) + public override async Task RunAsync(IDashScopeClient client) { var messages = new List(); messages.Add( diff --git a/sample/Cnblogs.DashScope.Sample/Multimodal/ImageUploadSample.cs b/sample/Cnblogs.DashScope.Sample/Multimodal/ImageUploadSample.cs index a636a0e..4104cef 100644 --- a/sample/Cnblogs.DashScope.Sample/Multimodal/ImageUploadSample.cs +++ b/sample/Cnblogs.DashScope.Sample/Multimodal/ImageUploadSample.cs @@ -3,13 +3,13 @@ namespace Cnblogs.DashScope.Sample.Multimodal; -public class ImageUploadSample : ISample +public class ImageUploadSample: MultimodalSample { /// - public string Description => "Upload image from file system"; + public override string Description => "Upload image from file system"; /// - public async Task RunAsync(IDashScopeClient client) + public override async Task RunAsync(IDashScopeClient client) { // upload file await using var lenna = File.OpenRead("Lenna.jpg"); diff --git a/sample/Cnblogs.DashScope.Sample/Multimodal/OcrAdvancedRecognitionSample.cs b/sample/Cnblogs.DashScope.Sample/Multimodal/OcrAdvancedRecognitionSample.cs index 4189135..611128b 100644 --- a/sample/Cnblogs.DashScope.Sample/Multimodal/OcrAdvancedRecognitionSample.cs +++ b/sample/Cnblogs.DashScope.Sample/Multimodal/OcrAdvancedRecognitionSample.cs @@ -2,13 +2,13 @@ namespace Cnblogs.DashScope.Sample.Multimodal; -public class OcrAdvancedRecognitionSample : ISample +public class OcrAdvancedRecognitionSample: MultimodalSample { /// - public string Description => "OCR Advanced Recognition Task Sample"; + public override string Description => "OCR Advanced Recognition Task Sample"; /// - public async Task RunAsync(IDashScopeClient client) + public override async Task RunAsync(IDashScopeClient client) { // upload file await using var file = File.OpenRead("webpage.jpg"); diff --git a/sample/Cnblogs.DashScope.Sample/Multimodal/OcrDocumentToLaTeXSample.cs b/sample/Cnblogs.DashScope.Sample/Multimodal/OcrDocumentToLaTeXSample.cs index fde2dc1..84986ec 100644 --- a/sample/Cnblogs.DashScope.Sample/Multimodal/OcrDocumentToLaTeXSample.cs +++ b/sample/Cnblogs.DashScope.Sample/Multimodal/OcrDocumentToLaTeXSample.cs @@ -2,13 +2,13 @@ namespace Cnblogs.DashScope.Sample.Multimodal; -public class OcrDocumentToLaTeXSample : ISample +public class OcrDocumentToLaTeXSample: MultimodalSample { /// - public string Description => "OCR parsing scanned document to LaTeX sample"; + public override string Description => "OCR parsing scanned document to LaTeX sample"; /// - public async Task RunAsync(IDashScopeClient client) + public override async Task RunAsync(IDashScopeClient client) { // upload file await using var file = File.OpenRead("scanned.jpg"); diff --git a/sample/Cnblogs.DashScope.Sample/Multimodal/OcrFormulaRecognitionSample.cs b/sample/Cnblogs.DashScope.Sample/Multimodal/OcrFormulaRecognitionSample.cs index d1dd377..f15a989 100644 --- a/sample/Cnblogs.DashScope.Sample/Multimodal/OcrFormulaRecognitionSample.cs +++ b/sample/Cnblogs.DashScope.Sample/Multimodal/OcrFormulaRecognitionSample.cs @@ -2,13 +2,13 @@ namespace Cnblogs.DashScope.Sample.Multimodal; -public class OcrFormulaRecognitionSample : ISample +public class OcrFormulaRecognitionSample: MultimodalSample { /// - public string Description => "OCR Math Formula Recognition Sample"; + public override string Description => "OCR Math Formula Recognition Sample"; /// - public async Task RunAsync(IDashScopeClient client) + public override async Task RunAsync(IDashScopeClient client) { // upload file await using var file = File.OpenRead("math.jpg"); diff --git a/sample/Cnblogs.DashScope.Sample/Multimodal/OcrKeyInformationExtractionSample.cs b/sample/Cnblogs.DashScope.Sample/Multimodal/OcrKeyInformationExtractionSample.cs index e1ab7e7..9abf9a3 100644 --- a/sample/Cnblogs.DashScope.Sample/Multimodal/OcrKeyInformationExtractionSample.cs +++ b/sample/Cnblogs.DashScope.Sample/Multimodal/OcrKeyInformationExtractionSample.cs @@ -4,13 +4,13 @@ namespace Cnblogs.DashScope.Sample.Multimodal; -public class OcrKeyInformationExtractionSample : ISample +public class OcrKeyInformationExtractionSample: MultimodalSample { /// - public string Description => "OCR Key Information Extraction Sample"; + public override string Description => "OCR Key Information Extraction Sample"; /// - public async Task RunAsync(IDashScopeClient client) + public override async Task RunAsync(IDashScopeClient client) { // upload file await using var file = File.OpenRead("receipt.jpg"); diff --git a/sample/Cnblogs.DashScope.Sample/Multimodal/OcrMultilanguageSample.cs b/sample/Cnblogs.DashScope.Sample/Multimodal/OcrMultilanguageSample.cs index 0733a7f..dd4c5c9 100644 --- a/sample/Cnblogs.DashScope.Sample/Multimodal/OcrMultilanguageSample.cs +++ b/sample/Cnblogs.DashScope.Sample/Multimodal/OcrMultilanguageSample.cs @@ -2,13 +2,13 @@ namespace Cnblogs.DashScope.Sample.Multimodal; -public class OcrMultilanguageSample : ISample +public class OcrMultilanguageSample: MultimodalSample { /// - public string Description => "OCR Text Recognition(Multilanguage) Sample"; + public override string Description => "OCR Text Recognition(Multilanguage) Sample"; /// - public async Task RunAsync(IDashScopeClient client) + public override async Task RunAsync(IDashScopeClient client) { // upload file await using var file = File.OpenRead("multilanguage.jpg"); diff --git a/sample/Cnblogs.DashScope.Sample/Multimodal/OcrSample.cs b/sample/Cnblogs.DashScope.Sample/Multimodal/OcrSample.cs index aa06b13..c4b1924 100644 --- a/sample/Cnblogs.DashScope.Sample/Multimodal/OcrSample.cs +++ b/sample/Cnblogs.DashScope.Sample/Multimodal/OcrSample.cs @@ -3,13 +3,13 @@ namespace Cnblogs.DashScope.Sample.Multimodal; -public class OcrSample : ISample +public class OcrSample: MultimodalSample { /// - public string Description => "OCR Sample with rotate enabled"; + public override string Description => "OCR Sample with rotate enabled"; /// - public async Task RunAsync(IDashScopeClient client) + public override async Task RunAsync(IDashScopeClient client) { // upload file await using var tilted = File.OpenRead("tilted.png"); diff --git a/sample/Cnblogs.DashScope.Sample/Multimodal/OcrTableParsingSample.cs b/sample/Cnblogs.DashScope.Sample/Multimodal/OcrTableParsingSample.cs index 1650201..31403b8 100644 --- a/sample/Cnblogs.DashScope.Sample/Multimodal/OcrTableParsingSample.cs +++ b/sample/Cnblogs.DashScope.Sample/Multimodal/OcrTableParsingSample.cs @@ -2,13 +2,13 @@ namespace Cnblogs.DashScope.Sample.Multimodal; -public class OcrTableParsingSample : ISample +public class OcrTableParsingSample: MultimodalSample { /// - public string Description => "OCR Table Parsing Sample"; + public override string Description => "OCR Table Parsing Sample"; /// - public async Task RunAsync(IDashScopeClient client) + public override async Task RunAsync(IDashScopeClient client) { // upload file await using var file = File.OpenRead("table.jpg"); diff --git a/sample/Cnblogs.DashScope.Sample/Multimodal/OcrTextRecognition.cs b/sample/Cnblogs.DashScope.Sample/Multimodal/OcrTextRecognition.cs index cc7a64a..5ab9329 100644 --- a/sample/Cnblogs.DashScope.Sample/Multimodal/OcrTextRecognition.cs +++ b/sample/Cnblogs.DashScope.Sample/Multimodal/OcrTextRecognition.cs @@ -2,13 +2,13 @@ namespace Cnblogs.DashScope.Sample.Multimodal; -public class OcrTextRecognition : ISample +public class OcrTextRecognition: MultimodalSample { /// - public string Description => "OCR Text Recognition(Chinese and English) Sample"; + public override string Description => "OCR Text Recognition(Chinese and English) Sample"; /// - public async Task RunAsync(IDashScopeClient client) + public override async Task RunAsync(IDashScopeClient client) { // upload file await using var file = File.OpenRead("webpage.jpg"); diff --git a/sample/Cnblogs.DashScope.Sample/Multimodal/VideoInputSample.cs b/sample/Cnblogs.DashScope.Sample/Multimodal/VideoInputSample.cs index 942df81..bd2af6d 100644 --- a/sample/Cnblogs.DashScope.Sample/Multimodal/VideoInputSample.cs +++ b/sample/Cnblogs.DashScope.Sample/Multimodal/VideoInputSample.cs @@ -3,13 +3,13 @@ namespace Cnblogs.DashScope.Sample.Multimodal; -public class VideoInputSample : ISample +public class VideoInputSample: MultimodalSample { /// - public string Description => "Video input sample"; + public override string Description => "Video input sample"; /// - public async Task RunAsync(IDashScopeClient client) + public override async Task RunAsync(IDashScopeClient client) { // upload file await using var video = File.OpenRead("sample.mp4"); diff --git a/sample/Cnblogs.DashScope.Sample/MultimodalSample.cs b/sample/Cnblogs.DashScope.Sample/MultimodalSample.cs new file mode 100644 index 0000000..d759251 --- /dev/null +++ b/sample/Cnblogs.DashScope.Sample/MultimodalSample.cs @@ -0,0 +1,15 @@ +using Cnblogs.DashScope.Core; + +namespace Cnblogs.DashScope.Sample; + +public abstract class MultimodalSample : ISample +{ + /// + public string Group => "Multimodal"; + + /// + public abstract string Description { get; } + + /// + public abstract Task RunAsync(IDashScopeClient client); +} diff --git a/sample/Cnblogs.DashScope.Sample/Program.cs b/sample/Cnblogs.DashScope.Sample/Program.cs index c282f8b..33c2d5b 100644 --- a/sample/Cnblogs.DashScope.Sample/Program.cs +++ b/sample/Cnblogs.DashScope.Sample/Program.cs @@ -18,12 +18,20 @@ .Select(x => Activator.CreateInstance(x) as ISample) .Where(x => x != null) .Select(x => x!) - .ToList(); + .GroupBy(x => x.Group) + .ToDictionary(x => x.Key, x => x.ToList()); +var flatten = new List(); Console.WriteLine("Choose the sample you want to run:"); -for (var i = 0; i < samples.Count; i++) +foreach (var samplesKey in samples.Keys) { - Console.WriteLine($"{i}. {samples[i].Description}"); + Console.WriteLine(samplesKey); + var samplesInGroup = samples[samplesKey]; + foreach (var sample in samplesInGroup) + { + flatten.Add(sample); + Console.WriteLine($"{flatten.Count}. {sample.Description}"); + } } Console.WriteLine(); @@ -35,4 +43,4 @@ return; } -await samples[index].RunAsync(dashScopeClient); +await flatten[index - 1].RunAsync(dashScopeClient); diff --git a/sample/Cnblogs.DashScope.Sample/Text/ChatReasoningSample.cs b/sample/Cnblogs.DashScope.Sample/Text/ChatReasoningSample.cs index d746bdd..81790c0 100644 --- a/sample/Cnblogs.DashScope.Sample/Text/ChatReasoningSample.cs +++ b/sample/Cnblogs.DashScope.Sample/Text/ChatReasoningSample.cs @@ -2,13 +2,13 @@ namespace Cnblogs.DashScope.Sample.Text; -public class ChatReasoningSample : ISample +public class ChatReasoningSample : TextSample { /// - public string Description => "Chat with reasoning content"; + public override string Description => "Chat with reasoning content"; /// - public async Task RunAsync(IDashScopeClient client) + public override async Task RunAsync(IDashScopeClient client) { var messages = new List(); messages.Add(TextChatMessage.System("You are a helpful assistant")); diff --git a/sample/Cnblogs.DashScope.Sample/Text/ChatSample.cs b/sample/Cnblogs.DashScope.Sample/Text/ChatSample.cs index 5852421..74c309b 100644 --- a/sample/Cnblogs.DashScope.Sample/Text/ChatSample.cs +++ b/sample/Cnblogs.DashScope.Sample/Text/ChatSample.cs @@ -2,13 +2,13 @@ namespace Cnblogs.DashScope.Sample.Text; -public class ChatSample : ISample +public class ChatSample: TextSample { /// - public string Description => "Basic chat completion"; + public override string Description => "Basic chat completion"; /// - public async Task RunAsync(IDashScopeClient client) + public async override Task RunAsync(IDashScopeClient client) { var messages = new List(); messages.Add(TextChatMessage.System("You are a helpful assistant")); diff --git a/sample/Cnblogs.DashScope.Sample/Text/ChatStreamSample.cs b/sample/Cnblogs.DashScope.Sample/Text/ChatStreamSample.cs index 49a9f3e..0ecce02 100644 --- a/sample/Cnblogs.DashScope.Sample/Text/ChatStreamSample.cs +++ b/sample/Cnblogs.DashScope.Sample/Text/ChatStreamSample.cs @@ -3,13 +3,13 @@ namespace Cnblogs.DashScope.Sample.Text; -public class ChatStreamSample : ISample +public class ChatStreamSample: TextSample { /// - public string Description => "Chat completion with stream output"; + public override string Description => "Chat completion with stream output"; /// - public async Task RunAsync(IDashScopeClient client) + public async override Task RunAsync(IDashScopeClient client) { var messages = new List(); messages.Add(TextChatMessage.System("You are a helpful assistant")); diff --git a/sample/Cnblogs.DashScope.Sample/Text/ChatThinkingBudgetSample.cs b/sample/Cnblogs.DashScope.Sample/Text/ChatThinkingBudgetSample.cs index 684395a..cb7e789 100644 --- a/sample/Cnblogs.DashScope.Sample/Text/ChatThinkingBudgetSample.cs +++ b/sample/Cnblogs.DashScope.Sample/Text/ChatThinkingBudgetSample.cs @@ -3,13 +3,13 @@ namespace Cnblogs.DashScope.Sample.Text; -public class ChatThinkingBudgetSample : ISample +public class ChatThinkingBudgetSample: TextSample { /// - public string Description => "Chat completion with thinking budget"; + public override string Description => "Chat completion with thinking budget"; /// - public async Task RunAsync(IDashScopeClient client) + public async override Task RunAsync(IDashScopeClient client) { const int budget = 10; Console.WriteLine($"Set thinking budget to {budget} tokens"); diff --git a/sample/Cnblogs.DashScope.Sample/Text/ChatToolCallingSample.cs b/sample/Cnblogs.DashScope.Sample/Text/ChatToolCallingSample.cs index a9382aa..1789a60 100644 --- a/sample/Cnblogs.DashScope.Sample/Text/ChatToolCallingSample.cs +++ b/sample/Cnblogs.DashScope.Sample/Text/ChatToolCallingSample.cs @@ -7,13 +7,13 @@ namespace Cnblogs.DashScope.Sample.Text; -public class ChatToolCallingSample : ISample +public class ChatToolCallingSample: TextSample { /// - public string Description => "Chat with tool calling"; + public override string Description => "Chat with tool calling"; /// - public async Task RunAsync(IDashScopeClient client) + public async override Task RunAsync(IDashScopeClient client) { var tools = new List { diff --git a/sample/Cnblogs.DashScope.Sample/Text/ChatWebSearchSample.cs b/sample/Cnblogs.DashScope.Sample/Text/ChatWebSearchSample.cs index 5b4af4c..c8b5302 100644 --- a/sample/Cnblogs.DashScope.Sample/Text/ChatWebSearchSample.cs +++ b/sample/Cnblogs.DashScope.Sample/Text/ChatWebSearchSample.cs @@ -3,13 +3,13 @@ namespace Cnblogs.DashScope.Sample.Text; -public class ChatWebSearchSample : ISample +public class ChatWebSearchSample: TextSample { /// - public string Description => "Chat with web search enabled"; + public override string Description => "Chat with web search enabled"; /// - public async Task RunAsync(IDashScopeClient client) + public async override Task RunAsync(IDashScopeClient client) { var messages = new List(); while (true) diff --git a/sample/Cnblogs.DashScope.Sample/Text/DataMiningSample.cs b/sample/Cnblogs.DashScope.Sample/Text/DataMiningSample.cs index d8d2f60..44c5085 100644 --- a/sample/Cnblogs.DashScope.Sample/Text/DataMiningSample.cs +++ b/sample/Cnblogs.DashScope.Sample/Text/DataMiningSample.cs @@ -3,13 +3,13 @@ namespace Cnblogs.DashScope.Sample.Text; -public class DataMiningSample : ISample +public class DataMiningSample: TextSample { /// - public string Description => "Data Mining with Qwen-Doc-Turbo"; + public override string Description => "Data Mining with Qwen-Doc-Turbo"; /// - public async Task RunAsync(IDashScopeClient client) + public async override Task RunAsync(IDashScopeClient client) { Console.WriteLine("Uploading file1..."); var file1 = await client.OpenAiCompatibleUploadFileAsync(File.OpenRead("1024-1.txt"), "file1.txt"); diff --git a/sample/Cnblogs.DashScope.Sample/Text/DeepResearchSample.cs b/sample/Cnblogs.DashScope.Sample/Text/DeepResearchSample.cs index 395bb51..5949928 100644 --- a/sample/Cnblogs.DashScope.Sample/Text/DeepResearchSample.cs +++ b/sample/Cnblogs.DashScope.Sample/Text/DeepResearchSample.cs @@ -3,13 +3,13 @@ namespace Cnblogs.DashScope.Sample.Text; -public class DeepResearchSample : ISample +public class DeepResearchSample: TextSample { /// - public string Description => "Deep research sample"; + public override string Description => "Deep research sample"; /// - public async Task RunAsync(IDashScopeClient client) + public async override Task RunAsync(IDashScopeClient client) { Console.Clear(); var messages = new List(); diff --git a/sample/Cnblogs.DashScope.Sample/Text/JsonOutputSample.cs b/sample/Cnblogs.DashScope.Sample/Text/JsonOutputSample.cs index c40174d..e6477a7 100644 --- a/sample/Cnblogs.DashScope.Sample/Text/JsonOutputSample.cs +++ b/sample/Cnblogs.DashScope.Sample/Text/JsonOutputSample.cs @@ -3,13 +3,13 @@ namespace Cnblogs.DashScope.Sample.Text; -public class JsonOutputSample : ISample +public class JsonOutputSample: TextSample { /// - public string Description => "JSON output text sample"; + public override string Description => "JSON output text sample"; /// - public async Task RunAsync(IDashScopeClient client) + public async override Task RunAsync(IDashScopeClient client) { var messages = new List(); messages.Add(TextChatMessage.System("使用 JSON 输出用户输入的字数信息")); diff --git a/sample/Cnblogs.DashScope.Sample/Text/LongContextSample.cs b/sample/Cnblogs.DashScope.Sample/Text/LongContextSample.cs index d89fe4a..0598d18 100644 --- a/sample/Cnblogs.DashScope.Sample/Text/LongContextSample.cs +++ b/sample/Cnblogs.DashScope.Sample/Text/LongContextSample.cs @@ -3,13 +3,13 @@ namespace Cnblogs.DashScope.Sample.Text; -public class LongContextSample : ISample +public class LongContextSample: TextSample { /// - public string Description => "File upload and long context model sample"; + public override string Description => "File upload and long context model sample"; /// - public async Task RunAsync(IDashScopeClient client) + public async override Task RunAsync(IDashScopeClient client) { Console.WriteLine("Uploading file1..."); var file1 = await client.OpenAiCompatibleUploadFileAsync(File.OpenRead("1024-1.txt"), "file1.txt"); diff --git a/sample/Cnblogs.DashScope.Sample/Text/PrefixCompletionSample.cs b/sample/Cnblogs.DashScope.Sample/Text/PrefixCompletionSample.cs index 8dce4ae..bead37a 100644 --- a/sample/Cnblogs.DashScope.Sample/Text/PrefixCompletionSample.cs +++ b/sample/Cnblogs.DashScope.Sample/Text/PrefixCompletionSample.cs @@ -3,13 +3,13 @@ namespace Cnblogs.DashScope.Sample.Text; -public class PrefixCompletionSample : ISample +public class PrefixCompletionSample: TextSample { /// - public string Description => "Prefix completion sample"; + public override string Description => "Prefix completion sample"; /// - public async Task RunAsync(IDashScopeClient client) + public async override Task RunAsync(IDashScopeClient client) { var messages = new List { diff --git a/sample/Cnblogs.DashScope.Sample/Text/RolePlaySample.cs b/sample/Cnblogs.DashScope.Sample/Text/RolePlaySample.cs index c2d04ba..3ce6cff 100644 --- a/sample/Cnblogs.DashScope.Sample/Text/RolePlaySample.cs +++ b/sample/Cnblogs.DashScope.Sample/Text/RolePlaySample.cs @@ -2,13 +2,13 @@ namespace Cnblogs.DashScope.Sample.Text; -public class RolePlaySample : ISample +public class RolePlaySample: TextSample { /// - public string Description => "Role play with qwen-character"; + public override string Description => "Role play with qwen-character"; /// - public async Task RunAsync(IDashScopeClient client) + public async override Task RunAsync(IDashScopeClient client) { var messages = new List() { diff --git a/sample/Cnblogs.DashScope.Sample/Text/TranslationSample.cs b/sample/Cnblogs.DashScope.Sample/Text/TranslationSample.cs index a47e04d..28868e3 100644 --- a/sample/Cnblogs.DashScope.Sample/Text/TranslationSample.cs +++ b/sample/Cnblogs.DashScope.Sample/Text/TranslationSample.cs @@ -2,13 +2,13 @@ namespace Cnblogs.DashScope.Sample.Text; -public class TranslationSample : ISample +public class TranslationSample: TextSample { /// - public string Description => "Translate with Qwen-MT models"; + public override string Description => "Translate with Qwen-MT models"; /// - public async Task RunAsync(IDashScopeClient client) + public async override Task RunAsync(IDashScopeClient client) { var messages = new List { diff --git a/sample/Cnblogs.DashScope.Sample/TextSample.cs b/sample/Cnblogs.DashScope.Sample/TextSample.cs new file mode 100644 index 0000000..a780bd3 --- /dev/null +++ b/sample/Cnblogs.DashScope.Sample/TextSample.cs @@ -0,0 +1,15 @@ +using Cnblogs.DashScope.Core; + +namespace Cnblogs.DashScope.Sample; + +public abstract class TextSample : ISample +{ + /// + public string Group => "Text"; + + /// + public abstract string Description { get; } + + /// + public abstract Task RunAsync(IDashScopeClient client); +} diff --git a/sample/Cnblogs.DashScope.Sample/noise.wav b/sample/Cnblogs.DashScope.Sample/noise.wav new file mode 100644 index 0000000000000000000000000000000000000000..0aca97ed8b2a19d45f90d3085ea4b86882cc5384 GIT binary patch literal 576078 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

;5N9MDOT!La1Shv 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 $o3$EkmNrKnsp_e8 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%0AIAR_ZpmzLd#JbcOb|sHI3FZ2 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

R)^g+5S9fqy!vYZCD#uufBc2t|Ku2Mcg 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 fE| zhQ!TaKO$+9#Wrg$ujBdvgIUA0<}TwoD9e4LJ5wj92TUcts*sC+!Q?~5J;_G+4#Hq= z9Q}%XN1bJ734=wSaEC2}f3t_kqzoVhtRj~H{zV-BQ1YlYDwW|i?-zO^+j4-~qUtEE zg4^~Nh1I?_v?BWJw`mBqPIE?|Vwz(qYig|9jFinv#!rr=o`ufE#&YU7)gpt-RW9ab zjMh`n6sHa8`q>Wp>&9mL{@Ny*^4p&IOXN<J7?}>T4qi{ z;>dmHN9SC}W$P-_3L-*mGa1ZzjH`6Z;2cG2&KO3UJ=Xo^rG|^@1Mo`kr8lBx0`o7qGkSxZ%yj1qiSNaZQVTgrc?i!x8~2r> zq7A`~OM+IrKKqDSfysFVvxxOFrJ`qYO6E)r&nNrB&*~;rvwz4dU@6Zf=ivUk7VQ?U zoTJXJn_WHhC$f(GOgJJ*XFD~?vx(>zg?fz#7lRgz(@ zdAOw?(%Lop2Kp9;n}+I!+E7yUfGbI}6(hdv4bSpA;+-GtfWAo#IGzws+6uqao(@ctXyQ-_Yi+;Rmp1Cd2TU}NR2wUV5I-_w5F-E&y&Mmf)ZmOKxiE5j8 zi)tO26rI52@Oy=$oJcRGs?)RBr~Dp4!w;b^Mc#z=g-en9>EqxrvA_#10T~}dFQjGy zU#LsHrHf$$d5P-^HkE~IkHodY@Xvk(-hVERW6rPx1l-%;Ib;cIz?|9)?Raah1XGII zLvE)EGELYb++Mz@q*r-0$279~hH8*r5qX95Q>~it+M!Wd?F6 zKdWX)uemDhU~Z4_7dx-&KmiJhgw$5t%MGAck(H>2Oe=m2aNqp=OYR1LT{J3vptR7) z+l1lZ)n3Cic7D&1qv5@n-wRhHFf!E_#@o-H*K zT8c-N^2m$2i!9U4;vFGDnxhEn8`@I3{@M+iYTEmH*4W>C!uVL%Qk`G*L3Ikd&k@RA z>5q6px~x1`-_Qt12req0lqxDM!0a0;U*mq$eb~9u8BL<@mTHEuiygt|R@E`Ig`a-| z{TQ%Q9_!+aF4H}IA=NE$w!BPt+`Ps**3?#4OTAOm!Dx1zagDTFjCyS~%`W{i^8(v) z>mnnitEg9-uQpN=OYwzhRnm&USS<>8-c%WZv7;U;? zt!2Mp?PZMBUc;W&fz-o2x-c?<7wESU_snH%Db`d|Sf5|}NYfi>z}F0?w7lF@+$$YY z*E7VKE)gFz%cMViUGW`!hWBZ@sVX3A;kIgv&PEJ2NSaK!6A%bV48f<+1rPSMnkM>o z#;2wh#x1&^sxeSa7n2HOADjYL>jl_&9^or07qwgTUflwfNqPrwpJ&WCYH*}lPM54H z+1;Zbc)MnkKCHbe_eWOOO}Zd6k?I__WNpdF$=VQU$rR=H^DCivB>0FpUa6+c5&lro zkSnKAcmN$1E+`3Vn|ctoCPCF1)kIZO<*~FGJQb?ukNFLt95D9kqGQimsKUn z&4knJ8Dcuj(e>e1;l;=~-o)s+TYP=#w!*1?E3d_t z9FL9QVdf(H6RgCBbX{m-sDb>{3tD6x6lR$LTM?J7po*NoQ4d%?|A&U0HpM{yVk=zjZPCX1bP|5-J0F^r1*{ zJ*E07?}fX~RiTVj4%100Sj_SAOjUd6WJ9Vo@)~hII6as7$6Pn|2lg9F=rZhTJ{g@= zUg;G2^#$;Hh^l(1!^$Y>hpgZb<0?CLs z42QHckt^&|U(~(9Hh7YuzqX!wjrz4VOE2r!Xj>rtn^3>hcQNm_gpJ*Fw^e#o1I=mu zHzXWKbf4A#sIJ2;@|AACJ_+gJGjtpE4Tvem4#q`>JKBxN&W+U$)?2{qeWNdm?9USV zO2#6Viq@y*I`CuNL=-X`Y)kC4?WbkCsf}@?QD-i0Ni`>#ti(S3HGL(bnJHqf0!NRi zah|ap_S88>i{Xl`VE?t}mNT!gzxcr<3sdBCP=g)^*Zd+9%qPi7!V+c->U%xzqc{e+->u>B{#&uB zD{EYu!Kz$xJNRtBlJ+YXpsEni&nnWt$`#z!vysDgL#`^77N;SrX1h>M>I%L00Q9@? z|JN0OinOgEMO|O6D;+}mc1=}OX{x%6GuA-2&2S%%Pz8|kSppmHGMY9>3}35WsZP~s z^|`SfU!;4e>8{!$KY)4EUj!wwyBnZ@WM{hpVq0t|4-2v)dRq4D5f5# z{i?4+Of+=Y{R5X=PWweY0FJ`X#l@-@@UwiN^{S5IdC)75)MGWjRCna5NPSbQzG-%9 zNmWov5|TuRGDWjh*Gc7cFQmR74OB7G1yDz$aT!E$SAxQ{fkBl?>_ z+*YDG%pnFCUm&$_tLmAwNxH3?qg{tA#}Voz!v~Yz($k!a@Tt4O@9(u#L(Y*ZAtC0V z@(Q@XCFzK=2g$+3Wr54fM%XXHGUbdqMtut|3Gu2es#8ca3QG<7Olo^%XJi271;eTz zlsH4#EUtyHR9+38#VonIxD8&5{iJK008RM^@@?pQXc1FWd7$~Bdxe~Y0-E3QX>fv5 zxDiy4e9t@*hbjZqv*9G(SdBz^Rg6A~NYOrqWBxCwHD;=sYF_K+X+-Iyn4)}yANX!< zRM%0<$&00;s*2jJT0&D;^-2Dza_Y|D<{GIVtf?m-7c!+|>X4?rdaQJd{|(2R_wqcj z1>33`NoqmI&0^lswb^If1>F6Ixzg&ZIv;p;R^9v1WxQOjg=QD>l70b+E1vqDQ5Yq^hvG=reark zk=2tQ$=9TatY}R7?z+(badZ~IQKVZNZXefp0!eTP?(P=c!{W~3dU1CaTijt;+}+*X zo!}0U@tOAS|J}c+t>xBoDH3|VKHoX-c^i5-JS{Uw_PHG;p zNGR-IfFV+@Y9$WPa4oJ6f=3DW_~YtuH4FkLe}C4Ex1ycHe&X4?Ps7{WrWU%VI51ZltzQ8- zqOIlz;o^YmBagEusbccN&?VnQf7kGHxhvI)8jB}ox4cblrZ<8aU6Gmv{Gs>69#aeB z5bm<6r!~nMFugE2O+G3Krc*cdk?ILUZv*nJYSzEdr3`zFqs(`Vi#JaBqH>_%$-!|HA7El@M=B6OnhD%R9omg&0g7 z=Bp#*?vbwkg#kO9%FpD3AdLJYO%ywzHgCY^L8gTiX#gWz z6z&hAA$I=CP|%(kbN$V{IpD|AIsJ=>%BSLfz#mR32-+e8^ZfT>IN$p}*Q~%R4 z)xktD@{GP*Eh63Ej|gYw{n`cGmKw=zBn$D19bt%NP7qg6@lK=c`V-Bn{{;WYsHUs! zwL5f*{fSF5m!Y>17pbL86K;p`5tl(+5b{LE5v%N0+ed;`zLIxfS}4o*VV=@2$s)2( z97c>`iZddzpLK~9T0GgGx=l7C+vy9`uLO*|L=y7i-H9&b5ctsQ5C_!_QUfA|RrTYc zgWk$QGyNj?v~Q)Bpk$oWo{|nWhW$Zl`d$UeMC|BQlvfI)g|MqBn>)ibHEaPNy98U^=%%YmbA)A@U2h}~ z=2uF6wTs#gy&zqV$tByXW#oZsrZ!REhp)7)vRq4{PZ&O#Us;bC=MuxzKJwqf6TXR9 z3jM)q@+~z&IxU6lHB7U(k_M7(t(1~-iRNT4aZ9kh@CRw2+KMHG*UV(&RsEQnLXV+O zNWtL5(3nURy4a=VQbYsYFV7=da~wU5_>-G#UPMopDRD2-1|u-ZdM(^jFAxW{c1o;v zoP5N-;fCWgJI6aOXG&xU5{`ELe{3ag75e=pxr(L??ld!>tN~}(DY>dPkSan&^sCeY zV`Y1W&CmX#v*UoEA!pv|hsGb1rdAHPj}WfTBHHs;D@$7_}-01&gFuWg}rr?qjOk_M5h7?ZOYk<<*+ZVXh1AF*oT_ z`VcJ%@5q3@P<;&RVa?zr-zDBf9W;mrg4iD}A8MmEGZbV_ssm6Xb``Gr=Zb$&Bh=@@ zKJ^c9pCoj)A8WnjSoM>BM%yWK!b__M1*+Onn0Ja<*S zCLYtH;0bz5pHpT^oYqj!mJ^i*czb8_dt{m(NFi^kHRB$zeTcGp9rZQxS{u~@$k2xA zlZ>Vo5~`?v<~%!xcqA6WS$R^ML-#ZeHqWH3(p7OWd4_FFj@68`jZM{JMZcOu)JHd{ zGc&h9A8)t4QW<3yQIl>?*~mYs(uO}wBbgIY`>;2BFo@}q z{+sM34DeE zHiOwgS(^~v;Pu=Bxr2f(_P*E<1aE}@QWle+v=ZVp%($+|>kOOSyz33q5_?9a^t0?8(=0;+yE8+`x-YC<1w8z5H$YkxPS+jOzR)}RopZR;*M`ot6K9@{vkmq0zuBpDC?QS^6 zT+}sz_Sg3-YJTGnV-meo@&{VvI{X!-3Pc4scIFV>!nbp(hDNc~>@98Gne1@u+_3M8 z;$ushXp@hyh@+K}^hdf5^3!joyr(Uwt$T@lgvI$d-o`xFd zD7-v5+G=K=sg*g0?y7tii)gR8#^z`AY*fE*!8L25zQt`YOD~}o5&hCfvOSk+{MVwJ zuIYD!Z^O^1KE}%IUq~G;S3S}ccE8JD`>cJF^T4FLlsK=?(2D5m*=*Yr^JyXhJm1#T zK2An5Yz>hiH^yyxvea15V82kgGB|;74%El5nge=Y5WSzn`da!KIY+!38YUFe6zz)q zO!-cn(B8n@T9o$&O`$5XiyW@@z)s1lNS}yXZppkg{iLo$Y6Y*sQ~6Rltj6jUh&L0kM_w{afqgHi%r)IYne*wgGf;RVOne-!u28l(5(^9zf`$_?EHAL zjW$dxqdeD_m|W&5Oa{#puhq}wF6xAEH{6i?V9H@#V4!B9KRc8yl_Kst~_~)JP{Ko|(kF(rU^@#Nz=eXQ1z*yoC9SEGrPf zUjBCeKA~!ID*c-Iq8FE2i;ejo;lXkVe0pCiL5UR`guu9#`ked-ri16& zTGJ%!4MQrKPi`mfS3h$N?77yl+zYLnyo>M~kJ?{bv*{Uf4eG z^DotZ2?4k8znMJf%6SL}`CC{Mp%t%wnOs88f;C~8u@YBVD=LhMY?n?_V@xkB)9I~| z6@gbmA)*Pp*!;#IDbK>_?aO8LCxnYmXGZ8V#aKCxeg*s2OGY4$tI!uI6Lr1kMP;%o1H!ir{_lC$?(`i%m6wEX2eaYC58#7F&zL^eYov zwS&}n!+GvDd00*b)8(bGQ?5c4r&HwV!X2iQb1twgXQ*_dhMLK*6?64o^lxIQG&53` zUq;ZD4D%J{wE8?~_q+++#?5>l@j*?MrG1v*sZk6T(H!19x}hwPKK}f8Ua)#ac%=X46W_?7Zj>(il008S)zoaVKhudcAP<p+!3A|gw_5B}90qLw;Unk~GQo8p!%Dfd(-UB*z?mL27cnr%O6{6IN~ zZfGMcqfcwEl)`E~{Q{kA_-NQ`NN2Va8;Hx~M|uD|fZM@^m;B=>bCGLcrf+STzFKv=ikvylTDHo{W_G&KCFhm~(#^X3SM#wLZ zRNG4RrIqp|=@qExONh$ME~93xY;R~gXsV-sMH0^@tPC~uTg4}|&h^G@EX{VsKAU;1 ztmeI8ihm;9RGX3;4Tr49jdjRzN(D8DuXiiVCOgQ2`YZJwY3D8(Ld-<9zR*{CEw__W z)S`rks820tt{WFx&Kfr9QF0-13ihu4j9d_k5=+o?h-XF-6i)0k%%0+vc)cGp)RfoK z(eO;$9e(7y5ZR`!(VO9>Jv&%J_(c}7FL3v=?W3y7r^6$Bet-LLC&{NY6MFGSbud3I zOW70pTJeZfRx{`_$Xp{(f4l_ip@kX~y6Yb#9MrC|LF;GR8zW8KLSE%C(S|NUPbXf9 zdm;hhjaXCvV92#drdQm1W(|3hEXP*nMv!iqRdR^)+*Zq2%T2>J>W6wylGOD~18xz! zjExv}7&-I+n$I|BndV)JLwSZqUzDK8XLb&KM_VtS z6vs;qwV|Ym=|)$is*r0`S>cFnlj>0ku)lEiS6(Eac)v8Wa#r(hqe6qzd@5%x+y^(^<;| z>rcj@yb(XkSFrW8Rl7!AqNZ45kUdr?O^8vHm$*nI5t*<(?3NE|ndDHa7J6JQ zm5KbmNL^tVGPcce!!AQEB%SmYQdf_v^^~1rVeG>8Pz3EIwGZ6BvP@XbFWwO5NCVXi zdMSFip$I!xpQ|<@iqh?A6I+4pK;F}DklmOH+&r*K$I)|$?bJi&KRZ$rnx#sjD_6qo zw0E@cH$Ko0%2%~1WVSv-eXTj@Tg+0fj=7wLHxwYh$)Ckz!fJUHI=17q9r8V554scuZ%!qZ<04l&$JUvAM$u=d9C~8d99C}PmJtzj|@-ziGzEj?1NYvYN(xeDgjruwWyZv~R| ze(kb;n=Cr`VEF3MB*FTfBiNb0lxwdMjN`hFko$99zl6`ph-h-RrNcuR{p7^G9lsjTi z%b^s;Jmrw~Q|$~#&~t!NX>DxN>j517vEW# z%RMr^U^AEt>{(_osE_lQne2W_BwMpj4QH7=f?zm=vj_qqUk!=ff+_$WSX*bC@i<5&!0u4Q4`7U`U72}F0wYpK&(Zc zxt#JzoleR);|GJ0)*t=nK_m&9PfxNBg?p;rRqu@61-A9Yy;^U2F!PX_gztxeI0FXf zBYH18njWMrmP$yXd`REMEa2v&osyA1sD(UFf4FqL&jJ84>OuQjqk%#pyNQQ-x zH^BUcXr>Jm{h_bn^5Pry9LW&H)q{8fUSguO44LDPxN#T83BxJh`ElWe{Bt=C3Am5+ z|CsuEth7=%CZ*^L=_PD;I!S-5G(o@PCOI2<*xlqcq~$sgx5yMakv5V~kam7dTw~MC zBTT8x1HA+M7A`H3*hT47F>*HS0z6V!GtdouOctQcY&FJ5e$)@DPvjIO4HU;_Nf?SPVrEi#S8ju@1M5IziOg+YieLC>IilAfZCY)~g>=~tj?0tr7lWG?T*?6&jCodWRCVpt*PbcnebM>BDd)x{4@PA!+%0yoJd?j z4y3U9QX52-VOKKesc%#gy$8M0P9Q!uCVuFB$yW47<~g&6x~%V1Cu#M_^Ryj~=1#;m z^_cn@6R(BLFJ>@(oxH0L(%z}3v8UTf?MfUWeYm$S*C!Kisq)M*CZ4U#j3f#xE9HVZ zPq#Ll#oRrG%myMBFzNuFr7tnrY z7$eYK>1tFXdtO_xw79#+etn`|Z%2_rFys72-{^PvZvu2#b2 zn9^Q=`g2VBi8MVeo77tRC1QvEME#)+pnDn`84Ga#!}q(ZykGgRGuV=mWX zo+a5GtT zy^T%#&e-!Pikz_~IpjR(2L7Y&K=x-cTpGFkGGUG-XfbQ z{lrA^u3UpiWty>*X)`%hUjkRgM{)u?&QO}mr1Mcf^v&u+q@+3^b9)bIsJ5g|Eur7g zcc{&J52ZOs=OHy)Tdo%Z>B9()lAQ>U9%SiWF^6E$`;ASQf?8*y9({}%#q6dVQ2mJ@ zYLM30E2xHvKn9W^N5EiOi2a|J>KV+Bu2I$5uG|MUi!MO+My;Z%sicGX4ARJ3dL3hD zi!v{fHEIkV&Phz%+oEIa~so7RbL2R`DIe4M{_=|DN~zhg=~0Ny&QFkK1z+(%fMfMT|G=~ z=89lv^eIl4tLOlCB2Ou=crHwYy92yJJpt8|CNwqq`_i)yoa{qv-MD0 zMYN=*)0^oJ+7rKjmV^~ z3r*)YDL<)c#(9<{ux{?93+PwX6nzf7;3ndtR#uhepUM|~990Z`%9(^+bD_SNrPjfx zVK;Jw@!VTxBy}BcipDZ84w6nN9rU8G4I8P>_`E&S_G9m3+}=_2eV z!xv*eV-Z6P*NVLlL)kiNDiTTA+Gb>Y<}o2Ahi*@eA`hUtD@Qd)WnBTE>pIjd;yb>o z%SeCUz}@z=Rs%_nG`K`C;n2scL*!%9aQF_^Vq38?o}7QBt#W0p0(wv%k>_{-6Z39x z8OsX;#U*kdaADSh-tiY`Mfbs%-HT1L0rC{=7hjTcg;c(IxG8qC+>s1_J(l0X5h-{2hD7so2x( z5&2iJ%59ap@=~4&-t`vuzVJ;5A|WpxP@>?jtAV?~q3~f)ji-ke@SQ*_C@wS(b@Pw# zzYdkhy{xUeS?mKl&xXh$p(iL!X7O<(7&h}0vA^Msd;}e_M0hR#RgNeACD#!Zu#NFe z8w`&_e)0fe)RU0mJWiEoH*+lv{fte_jjU#Sb@&a2+9`Vt$4h6H^Sa}_eVwh2^}WSr z+v`Y+Diyad$(0h7T08l1V*9v*(XOa#?m(11ws8E91Z$po$yq6VQ)=a%pI9+|f9#^z zXK|(kZ+v3>khn5&t>Xf*w_+ku`(3XbG?<3B?N0k*+X>rx+aT*+m<@Uu*Kr|wD_Nh| zr|0Slag)r#^r^0rF69xu!bR~Oc+-o;GcZPM0gL5#cyee=aA0sys753&$a$xPJ&}r` z-+`9FEuq`kwNDG}3j7g}gI3-l)y2DIi%^L#h3za)Z6EBWMx$FI?;-L&fPanH>YDZzn|oZ z@>DX@lf8>uU^?b({k0Fo71(3fgATHSdBG&IG}94t#aHrn*j)00lC=xF+B=lHs-%5K zCZ(J1(#9%1<%i%HRS@T4H`@j~=Me1O>_sZ9yx0PJsQaZEc=xo1@40L^G1N1(H~e>` zYGgy`THqM0LFEHXuyt@5c3LgiRXZB`5-J-472Ds+m&cdos}@)YD`_9^wOn`Z>|D;9 zoM?pf}jdu8;k*w=AeV^2i&aK5y4v^KTWHz%9m`!Foy z#&BIY1?Sp*>K`IMHtu}-Es)*MW52Gl{trklzi@I)ko-apcKx%2`m&&!;MIs|ZI$}s zg~%}M91jmKj%?un7G_~PqcO6e?d7hhFGlkDLCfP|+1@2(iI>3eTP>NDt*WdQAexXB zspr%X`T@O_zDFG*Pm*7$+H?vs>i3Dt)GhixQ-XaB#*78;)DQGk&TY)W=8zj!;tn*6 z{o|L61=H)%T6^pbHr7mVvlLb{P}%9 zJU4P5nPHs%)1EuI_Yx#unCALxJOJL~<^(>6CgN6dPZ zRV8~+_Rj2PImdEt1GI*>s=z_PMTW#wtk1bPeXB-n;HL=Ne)}1%HUF_PpUa{k%hB}AX zH`{MGtnXES2Ik$C*fl-?Ce~f>G9SjZO1zloax#;`<~^Oz4hV)3anryb zDjAnA{%%5*q^e0P6I#cruDS%m6Me%5-+Ed)^i`Nv`dxrzKytcRV;j$(d=(pMAl#5DDuI5Tn; z)QT73oXB(jqR>Wqgk*9<&@#IdL$%e41Ic(2dHqJxKGZ4IrJ+h*{Rj*wt6yN=(*Me9?)FXcB?e*%aK^lvkb|NFnt#O$DIh3fPJG1&a6>E*-!cz|Fl3dcBL1=&~Xj4 z9}6gIN;o6D6hw*#FvR}1k9s%sBKQ&Rii6-+G4KyBgd3}c|3UCk_-N!}WHx5s3qn1> zxFo~L!3^J458-X#v-`)w(sIY&G9U+Pg#L&GK@RhWMg?B^s`%RaCx+6*+FDua93ybN zG0l{h8%!k1bwS` z@jU+6VeWAb#xcxQIi_R0oUkgfMPm7ct8ueqrI_@Xkx}Wc*N%twQMNr6)-;LzLMH1E z)RXFXy$2PfquFTmsDIEcNryIG>dl8?f=rAYg>z@JcoeLIs`66FDPDv#B1OC-y#USe zomg8a5t$tB8X3)h5`JRO9fu#>B14AprfGm>gyouPrlA35Gdxv_K1wTe zbKF<+BeA}jsZTqp4PeW=6_6-$n200 zuF7tKCBdh`Ji%9i2H4@f2UgWdSbt9j9t8FUPlYOlx(AH@p}tezgPtVMWRKU=4o~D_ z|AxT6z}G;h@K^DZc8*MyAj?wgjOp=90NE(Rdg?JCQre zedFwgx17kHVy4gp(n__^XSu0G6C8P$+)H&pM{+bac0JS#YGcf~dfX-8OF&d|0QuuSE zw1iDiEeW-dS-dJN$1SXkv_Lo&c^0k&M{y;w3=*>CkTKqaP5g&ovIIejZ5DYM@&##d zNqtA)M=oPptRNWBcK55xr5hw4SlV5HpR`{Q}*hPPx+ zXjyQM|F%!|e+n){m9hr!`c6UBAMlTah3Yom?c;r$z308FeXPGJ-tbnB-Se;Kr8n8% z!(Z2T($mT_$ZPkv4U`wx9z7wZTWsr?gP`-?h#D1pDQ>-3A6KLr*z1FFMr|usrk5+MM;0eosEis3n)kBjhmG4 zPr~OoE>@4ujdHkU#}V8rZrU6$``oZA)>fuL>?x`aIffWSAm>QFgac(D*^z2Q*P**m z963+VqvcZ{DL$pI`Wt*{w>lV3yNlS+iPG=sJ&3L7K|Ru1s8=y1JtrQ*OgN9+Q8}QN z(f=W~laFviDWvD1Yu*Z-tF}sJl>nY?_!a^+8 zpXnA-qHZwvSR1#My~HGAuV4#ukMFf3N+xK}d9f4HP_3pP)Qz}p>;S)g3h|ye03LR8 zy%ACXE`7N6P%V$%g-yC8j+0{HF|UDboO03wIOFF^CFN{sHMUJ|z>=1r80GTfu}J># zo^VZG2Knb}xOAkd&{c9Po3PXRLA|HE0u{Bnyg`~TP7;n_%YD7jS~?+*QVwG8l>$FS zQWG?zb{D%<9hKqo6lpY`X-;^>2l=6(TC|q#BG2WNcZ=IVKr4gW3n|H%rG-H8RY7^5 z#`nkDBNSQ+Q`%F|p>BpIg9XnA_b!+xuDj|w zpW6Phy>M9F8>4o`%!`jC+VafI^FB}UJQWi1#>_-6s=M10^)PNqp4BPI`Of8AoUcWy zDS2no#Ds=%4Pv@PUx+>&GbVOLY)0(pn37RroUiR;>;vpi?Tk}&9(NwI541!Z+p#Hh zFL=%BA&q^3(1mcJo}m69wxi27K~2{(^;zU;>M1puT%|YFT4*}X98uG>%{akI z5S{ej>UFu5c$iPav}=uaiaN>8=PI%nsNTeU?VXa2=d`ZeRQ;`grOva*4Filec&zFh zsw3qynEjVNN&aWdT?+PACQ*P4lGW%{%q_M97mME`KzE?>5hvA?@=vLnJV*}6soD;r zA=#360N1XO_(Puxs`YO4Pi)xp=an0v%beE^=n2FeP_J9*ebg(mUHXrN8ii*vQ%3cv z?3Dip20ETL>Ad&|`DENXBP3|-I)7d$AoY|#VLRWZ^h4fysZf(20QN!(zmn%MneBnk z+6nMdv!yt6UJ2#6k_0c|Dj0sM%57j_9S5d#C(s{i!9Ow-=sdu$i0=%>N)M8 zRs$Bx`XcNaFTWvL{K26fb+Hn3^XlV zBC;raH@GBlA&?a85@_cC?o05k@jT2O=2_{z>#gjq&l= zF1&eboLy`kaC0f}AMM6`+B(`X%T)yT)RVE>qTfZ`jTT}m#XXE4k+?0XS{`ejiAiGO zl!ODZe?;%c`Pe)*Iq_8T`1~IVo-5=k)Sy74)B<^)#Py7B;9l-Zb03cy8?!1lgx_gN z%(FJJ;WTPSh4`&M^E_?PSjtztlmaqrL^`hCPBls3~iw{87YeUL}$Gp z-p=bm)_krU(1sB0FjHPao*^x8Qf7eipN#Fmt@>v4=c#4FTitH{Sm{wKTm8$bZ-LO2}Y7C8Mzy*bA=mR$5iP3egrDZCxlY zW@AR8l~!IYrnHp@qgNjX9<*DQ#KXcv+{`25MfCnMK|6gcJLLv&JRN}{Xrm&!4%|a^iDd=e){I z_H53L%Nd*1IO}%S<*Y+l7qU!QYk%$hnf>#@ukF8UW&Qds{krl?`PJrkzAPrYWp>5v zM%jC^_vdh)+1`zTmb^nApxjgXgYZR4t@$;P<-&Pv&G(^en$Ft?x+}pFwK96HYo2|s zWgZBP8Rl|UH;DP)>{(7@RBH6Fn7VN>@r&a!K+{>2P(I0*bRw}xygTNbD-Gnc6!*TU zezBDk+2o`7-WRM_xJIEn`JU#n$6tyr9Tjn}h$HA!rVDG)?@Z0;?6YNK9 zi7@eXwoEih+)!pacq6yTaj>)X1ch}YrVUVF;nRbY9juxZ%vv)R~|yojXLdoq#Qi0O=`wgPYG5814AQHx+-nWBF( zqqt6nT844l1a<`SST~W6D1{#L2;b*0iwHb{5y_r4yi znZkVe$ntO;Xy_6cYQK@)Ef%^Ld=Z)vNrh|SI^MU%BEv(0AQ_$+*}^{*c=5XwkgtKf z+gZMdv#f>~4SxAV(EGoE8h%sWp{iPOy@}?+T*|E+Qm(77v<^Crn^LxR829zbgdLk# zeyyJVOFu+dP$9+XXVurrCG0QH(Yolz^+S3;u!#uGu1-J_<2GC^6NI90PLu>ct2vAU zcVH&`i+>+E1~dG!pd5S@suL~%Hc|1=vEcOJl;95RaOMQ*;3t0@e^viu{}Ql>8V3dj z3I|sDd;4vE(R;^pB6m!Vmi;KFbMDWac{$s2l$<5Gy*)|Zpf|xE=YQ*c>+$C%=l062 zopO+7=7tNTtqT{AFRx63S!Io+yO7bK12|3MRv}W0#IvY6W*=S3BQ#WHFV`*c^ zxX66j^3yWe8V}RsI!8I@R#%g#*qD#8QSoo$RS?QzV{1ewxW73HJA#gw7}8dh+fxO9VTJZk>a^4omQlwmAp;JMR=?r^idHQG(Q@sqK#si$d) zaUXV;T4VN7kOZLu8(<%(1=K89i1X6XOj|YyWb|0>I6T(aJf+s7`#e%7u?3n+U1Bo1 zlKAQ@rn<(@To3fSCX>y;@STBlzeqO2_E~o-iMmcElaukCS_vm!W4XF=4WEGK+6=Xc z(onvMJ&5n(Cn3P+16}zU|KHYx0=vW`zN4^8+<^Mgu2hv};dCSe`yfMLwaE`l$j3+{ zn18Q|r=^?Vg>@F22v_-+m^E|&4e%$pQM6QF39B)BFMSNo-`dJSSq0N(AD;YNah8-R z7suo}irh=25j^Zm=P^4XiFK&J8!2CuPN3Vb0rTsG)(Cg|1%w2~{YB!X-W>*SxM5v~ukA0s zIo~Lf8r~cVhK`0Cfj)K^G}yRE_sA(setQX9Bb7pZ10QfBPY-?rng48He&9@?Xs}Tz zIb1R{-~Yv9^IY|$;dx!`*@&Ol$bFdG-CNSP-CNaT&wZIwGV* z*f!bsI~~#I;%n!1rk2YWldo%PR`UBKA#P9fO!wced#?9xH;feXW12^ga^H34$H}}9 z)xj;;RsvDqqnbyJas6p8Y{8}wC$Q7G4#w8z5$MYV%vt7!mY$YImb#WYmZ6p;>jmpl zSSJsdWh1=m^ii@NW^mQ%(hSFLWv{aHSQ9&u`3c`-32HIk_tmJjFu?Udx=>4un$6lE7Or|H{B8FeLTu$6A=Kfq$#r}h9>Y=XL69iVo`jCu&(?N9VH zqNn~=orU{;QK=R7Y_EbV`v|v>j^GOn2Dxz{%+MTeJ7-}`m?tT?S#$=GGM2v-8O(PB zg>gAQhHr}L9wTLn4sjpX zU|eWlXj^z97`z0?EgiyzLZ)EeKo$Q7FYjsOUF;=%3(@nM1?xmwXld|SU|1k7aNWPl z-_rloH`h17H^L|T1b;6$tMdnZ{uD4#vS0w->+cw-5bhzY7iF=ZTvk~u-NB^izF1G) zsTZU^v8rjEb%*V}t*-5iWvb~DrofX8M~$P+tTn-Qz_!ZncCK@+1Cg&~OoKQjeq3T! zQmMSp@*Ga&;%COJh#Kjx>j#JLF<cUe-F>oM;+iIKxdgJTZDq^UX%f z49jLqb<0TeUDFcNTGMh<1=9q~s7GR-<_&BqgP7v<5GtLTL%pK<(rL_1<`ff!6w7<; zhJU4p&^yseTjXKBNk`T)eW z8yHZ#!^^_?B5V1#nCf&D55kU?3jXs!(0mt2!$nm%EbhjW{Q_@;hDtiTZ%q}aatbp^ zR#^gu-y*zSGqoFV!@UDpyp@`*IMrS1L}Vg+g5-A?=QF7nA;yywbs0&icEoJmjr(L} z{T-;2WwrJAb;I-~V5PLfCnE!F!^xPM?Z)oUjNUlu+D z4{UAikxR>l&Gj7aWEa5owS!jt6Rxh=@S{Bp*T88#6LzD9;jSSb6vG9zI$p?Mut`B{fp4iFleg!cnkSOjKcRlSFYY7EmVbg( zogOE}r6+7ote7Mv&PhCzkQo<_Hn{(GOtI~=$S}IMhBxbw<(jpp?VWA0y{KcDV;eZ` ze#dCXC);>S#P}6C$v@FkN~818bMO>rz_C^ZISQTr3y!s#6h+-ZPbyn~poP??>L!q= z8_G0lgvt0!7gC37|M4xdkPouqyw$-_JuUr)W32}aYhCe7jt`#$!Rb?IS~wTf(}^H` zW`nNWE;tV-#UTG_U#hRZFV0^sFbG`bSzv`14E79s@-M^ROP}Cy%%_u3Ev|-}p&}~7 z<-Wt-9^PDUwEt*;hR3m6@OGd@ux{uy2)D<=QISh91+0rigQZ?bD8;{vcq8+W7xhaQ zl~d|Wtq*F~qk0VNu;(=-EAjN*CcI=@syB6&YD`Z?|F#nSg<4AekK*VkrV`tTv*A-; z%dnD5;Y!2eF`b*jZRRe6IPL%^p@VU+F~fM?P{|PCZiDE2AB@q$TqpJnbCB^dyO3XM zN=c~lr|2K_orIZOK&;eHX(cgRD+7+@CQZji=5(d9a!uyss_6G72n*mxatXDB&#=xM z;@9xQVWE2jvvrAZ<4}oU^}rH;VZXt@&ez9x&zI^i<`3cDXMBTvgfHZ6;j8Q0Z~ zc!j5!=UZ+&kIftF9q0Lx`zm*#=ef6)e{tYyAmVT8Z|z_2Kki@XC;VRTM$gyWDIUMK zzQ10edN2w7;(x+tBJ}AWBKLY1sBko=uNTD;^!ugO`4uWCcQ~$ z9B++l7|X}hf~9pz-0%1{NzIapd}Z>#$rqomS!$(}*LgSOd6`r`DJJoJd?0R4+^N`% zm~Bxl-M?J}-1DO{qxZ)A#*cw8wAXZ(a1OM;wR+4ij0@o4+-T4YUkuaX1ejw;G+sAO zF%>m0G&eKHnYtQQvUsAYL&RR}-2DVc>J~VRr}ZJa6%+fm$Q({Wr{Dmr!O2Qv^r4cJ z=I93P0dIXEGJJbcnZA+d!~8H`8L9qKXRH6h9`FSlF;8HXEG6zjW%~h@;(N@tcA-0T z2Syb)+*BUk40h-!Jd2GY@BVu_!L@w|%54jH*Dv$^(M=kRnz|3q@ed>CVHo<4^en+B zd;ng(wvoQb9S_7a&;bduemZn@i<7!edvF8BZUi@}m0sjjqfv%7)pSL|>;n(J!b<)Lya} zIg8k(@73;u`rbxeh?-i)PT&}HW*#Unl^4noWtv=Ax+%OzKW_!>O1WUkNAUeQ56b-9 z$UdABzhSm`9=HV>?Z(1Xt+Mo@|1^si>DhM}MbpS2vY zDUM36Z_X2rRq#^iwy(DG_5=33jtTIt8Js!Jq3(jw-B5R2j5&rBK*9JcacObgV?EJD zqheutITLj>`mdOMv9a+p66PgVO4^rnDQRrdheRbIDxqKe{?BnS=&I%8Pf^FM)oP@pej`nDca-oNM;IH$4|Kw!(X6U zeu6FQ5gU&=Xa-pr*;Eca&Nb?HRH*N?X?ilAi0jCCEC1IE=P;wXA0 z5AfV?R#(E8)VP^jl4uv)(N)GwZddLW9q{^R0tlhVIUV5K>~CUc5Iq}H|K%1e3!t% z;&mBTh)kg{y5_fe4jq>%!Uo|o?7MNOQ7BYO&2T~$K`v%PWHro4Rblfg!uJuj!gf4X zsxFBjjSmIGdj>wA_4pg0bnl52#{}q}Fj#a*Zuz|OReMB~!R^h#9Ac8$ZI~n6G5i7p z=%jI^agVV-Ofk{sucm#-X*ab%! zS4DTg{UNG!j4jTc&^2*iV%Nmi38fNR#5ayBj8Dq+sB-RkuAZ)`uHE?m9(FBswQ&`9 zHFPy{U2;BhEXUSi6>Ce&VDk#oPI!y%a&g=d_5k|~?ogREa`m}8+(Z~`HX6?v>ltSo zPGgSTh3&^A(&xwS?H}QekLR1B5Zxbrq0(e{G(dL4{y8x`|2FU#$mIcWnHOK5?0k&8w z!J=x#%=IhY>x1Cy`UYNRHXM`t!mq-0ah`ui@9rvmG3gN^vLNgUl@2WomJ6DLM34>U z;BCD(uraVba58Ws@HX%|a6GUiupw|a;0dG#`vq?W>wxJ!ESw&xfozrqhJ!pXUmS*w zs5_X-@6kD)0dveUISn0zw`xy#3%Y2jaIVgVA$W$q5*sCbQJLiE(+L6drT*|e=aN&X zRGk0Ku_Ha4X}~mr{V9dr3!7yeZuwi;Hf%g=!$0qt?%zl;dIt76=Te2?I#uzWxJCYhd;JPb1X8I9)OqR8#xuRUDN ztDb>hu`cezn{kq4NE_hgyNKs^Ay}Fd@uMfKq-jEuV1fH=13b%P@qIjtw`fJY7pp}w zVen9quw8~bjs_2sCAcXtI50PGG4LtyB(Moo^M3*_(4Sd~yTE@gy3@hSFws1~&h^RQ z85qCH!v>ZW(nAue$Y$YfVItBZauR9XE;wZl!v@#|cE9!!28JIuKT>c@TjT=j2W=hp zoPW`k*`^%Nl{Qqw%&aFia9I$rr+|e0&REIx+|=J(-15mX(AvQEKl=wq9hVa>xl?c+ zE_2p#=5?wL+F8xH!8y@&*3C!Nh?x}oSKNa5-U(k5swTEcloMJf)QW!}y9&vltuTK+ zbRTz{qb@{kh#nI2Cgw%V`WS0WesmLK-QS!y9ZT&UZ6mE;EZb3qEwl`=Ot2iW{I*oL zjE^Ip1lyT|;j}g~MfFvUm{M zk0<*rT&=JJ1*6cVXozIYtN3EtyF+128 zC1D?Eus%Sq3uekzxGEc{rIZ}$GIGo_VLfk!K5Ikt0NM+4gh#@ActVnd{-_sMpr>;V zB+@aFrcq&|${H^{{;4;_L{xA`Bum$ z4dc5(F?o!ij$GFuCfbXmUTvWSZk3lw6M#AV1 zuA%XVaWqbcrRIm`dX{|4W$QN^h-Hq~&UQhgu-CT^O2w;ckm!8syzIQ@Obv<;t`IUM zbW7N@@RkwI$n%lSz~0y!wJ@qy)Xm5`k-H-VWReGv$`lcHA4%m?Lpz09LvJI|IS@Pp z$++P`qn+2#o8;TJ;jE}@USg_c>S5Y!dS&vPUYib@_L@GJ;>|^HYNeUx8Q*ZJI44ks z0Fiu)-D?pXs25=WnnhM2y~F{cFQ%Af^bT5c@MT-cN2FeGjISr9BI9@_5K0-sM0ECT+az>j4j zlDPvoTSg)=t}RlaD)H99g+N8&AEYL~Lgx5BFol+bPdyO%A*WE2)PR=pDx3jdYO>Z+ z->LrsCnuTc2*20DPnX(L&esmJ8Q3Rb$ zt-+coLT*P-IhQy~oF?WFg^4rzB%Duc(3|bho1j}CgOmt2dK#nJPx*)%vkeqX)n$`> zLuxO56nlX2bOBG_D6EkL!6~ppFizcH=$!ruRKrdbirhga;6R4!0^EUAq-56xBl}2T z4lvT&$hq8uY|K4;8{lE}`C3RL*@2XSRR2W(eSbk9N`I102l`h6Z>xvQi)?(p1u}RV z@e!y@f8zSi$M<;^=z&V>B6tBW0+WFv=LRO=cek)sGlg2>E#$d1mYmX2af2v|&!hlh zXA7qRuJsj=BC-mJrz4#II(IljgB}FE2!0qcDKs){Z&~n3mua)n&GqI~+|`%h zy7fW^;4AdfPq`h)V*g?2Y}kuk?meAJvEazP!bGq#cycqrd!GsRL@YQzpWt9&QadV3 z;8tmr+K5|mS`PphI|+>TA8@>HA$p+Ze}}Z&qDZcdlwU~wkkr*j%tmfZcVy4DMvXcE zQ=!*FL*!)KM3M-yUXWh!FH#`N1?a$apn5g2*VRUj%o+Y0&x5m89sW;W1O0Hdf5P$j zB-{s@2qZAUoyaR&joe8Z{Mu9@UdTe;!#>>gcYzQ*B@vk5KSO_U9rsQOR1-GAe|)zn zpqCga9Y?o65#9fNC=|kxH3G#G!IJ06s?=~eboK!9TN&Kc0Qr>6fO6MIj-)6k#J?cl zD~4&ytY!jG=1yj3;7q8@Hf1-$v84*!Fk0cY(vZOUxtqrJrm?1?rjy2cMi+M+8vUP0 zVSWGw$Z?h^`&XYZKbzJqc)M~07POO7qqz#6)^d9oLFC&?o zCNqeY#A;$Kyn3C)Q7A-e=%M;P+>y~pL^+9Er@P7?B^r*sQSuilPa@?H(r8Q$Okyt~ z0LI@fT!ZKE$Bh(*Az}SJx`~p)5%lEwNHKZI-^K~E1CG+qz{82dd2$N4&`}`IL0|~p z_NDsQh+Sq@Mrt2NbL+q4($_Qv2FZafOibR39%1|g%1fSUy&FSi(1Zy z8Fo*k(GN%e&tOHi75X97rWX5+ZDlxS@S)n8 z0gXpC*VOo*v61N_vK!i&Z$dMcU=^(^Y({$pyU~8#_P4F1E#6k%*4eh!rrKKBU)m=l zfBlQ|NYJR@At5c1Sa~eW7+x$qIQ&2u8CD~7bjU|!os>aFS}P<^-o*)Y-g(5i)j8G~ z;au)`YgcW>ZE4nIOO9!iaVU2f*-|_bwCmumW*G``ZMdo2K1|{Eac#Mqh7dz5b{X>+ z=_dn#d>6)vKY|#D9^yKxkNd<7Xzy0*<=~B$rY%zUDp!yvz8*dIGpV6`M=lEF`y#Z| zr9m5EnCv`K}q<1WEz7m8_xEdRe-ga!H9g~93XNBo3qNq2HKly;e9 z4OCcrsOvx`I-(YeWtuT<@T$rr;AKUH^aC~0V|;!lBQU9KOSTqUiEYkKV~+um+RP4x z-k>wPlKlu2sJhnzJW5_c#`#{d zG5Husmsh`|FG7mqHzZsoX@2z=+-4;86RzS=WDpKf=L0GDOFf{7;ByFIV=lsZ&Pe}? zvM^PsEJO==z#bL`#$b2f3e4>kvJWSrFLodo^Z@Fg$w&_z$?rvC@*sTmTfhnyd1qlh zax&`)*TI_HjV#xC$n*G)jQa?`?kkV3uLVy1OUS>fhg{o9{C(&_i=vZZk%G4=Pz2{k z6y}Hxk+?YE_scVd6#ZV-17R5CmD0M)pA&H#QLzwkV7N;U}YZLgsSCMm@hl$N1 zsk|&81tFkX_0mxIPo(D42bkmRLZoHyz!!188udRn| zRqXfe^&E2@2OQ&2DGjp!vdy>kvrV;avi-D;!>l01Sudz*@Su>9p{YpCEEk>y0mCyklVO?K@MI9kb@0{Hp--KOG|YxX17Z}|f}4oR zL@Y5+f1_!r0xa-zD_BIjx`?sP0prOkLIvI3oP%2yGm1Iv1dJE38fTocENapDu~qnm-=WDAWk zo2`r|tdg7|M!iR zX<|q-6g0eJ7qivbx6C-kgKmU^s(m%q%>b$eRTeq9#i&A*1^ZMzGM$itg9iiYyMXF& zAMn1XnjhI*(RzsfU0V(R21#A7R#z{eSAQeV0<*HRoPFwEkw0Oz_So)NDj(eZ~EhYDgdCKDf#<0W8c>yJdor}A&O zyq*SD-w)rlEto8&k(+u1o}MFtbZrOYBVRJe7PxAcm*;}D+DG{S{o8kSmo^Zb*^;>G zw~=?yA8E*h;V7I~cW{Te)7)(?i>qloXY6K5F{|e7Nb%ln)vVoZmu;VIA8prd+iiz! zZ)`SuH|SJLI`%q>J6Ai)2dP1ag42+Zyewo%$cB(ZA-6(~hja+Z3LXc=#HOJBL6wmw zuR0Gqhd9%~MC#`J%X!O@cIBO!fx!hy!8|sD% z@RDD}ZiSoLC&~f;j|lP$(gSh{58(w$b&EJbY(ZV{H}LDxaIbg_1aum9yHU7TQ?Q$i zLjqU8@u& z)sVVNLx6U6#y(dOiiXNS-Q%Ek+$Ijg>C*|j;34oe-ioip-(tAb5oqUoR4$QnF=Se8 z1hSik)XrB*QFWzS5N_x*kg72f&S$&f5&sZZAe<~sHXyMN!j0rC`5xy{9%j%9RDbFY zRhHgHbHKOyA@^YtGXSSj4P=$|WEL^E85whre{t&cHheVHxchC@Pn9hD= zYB3M!g+RDg0qZ&quZ~mnP5K!;xOc(l=?RrYjYT$kIpUOF9Vh!7t+`eUQ^tkbUU2YF zX=}9cS~sMK7KP*eVqC>Z(Ajr{o4{a66L*LM#db)bJ|g7ywb-Con4ZZGZl z;kfMF64W^OVQ@%D;gB97t3qZY-+nvhf9-;PIA`I^8SFfW9P(O0ErPlQbq*>Q^xN6Q zInXiRzRI@Jx*Lq6XQo&<3*3OOz(+%d;k@BB^gH?RH9KgSfaIv>>_p@?t%kS2K>9Si z?l+Q+$OO2xupbV{W#sSJKisHH=K^C5M^ao> zr4_ObM=L$Snp_E|kDFlpjs|z)G&=2g>^x~$J$I2KR}1gtln?4cWge43%3hyebx2-SHL@if-MNH}H_ay@y3 zJRAGmBI13U~4xj@8J9s5)pMZ**% zN}h$8Nl!6UWYHrsIB8DcY+epz?6L3#J;Xdza9hy*=K!gig(o@3e-L=e3~*)&f-QR% z*yIa*T>W1yH-t~&-}wJU=4hI~slTg#fWN=LuYb1x3{aN7c*jHjDX{wfd>vq49`L^& z0dL&y-|v5i8etCjRfWME`xjHH)(rT( zEG0v$J5D}}4s)$y!IYt%=F^_&8N_087Bzux4DP@v_7~gT@C<#{g|6RX_zEUJfGPG2YVz|82M?_as2DaPjbQ-s7JSQKaPhxrZcRnRO=Qb z0F+Y(BYpfdSVR33LV=C~XWl}5*Q-b-e}H5>E0Q;Nqf#uRmc#e?rkp{N>M~^%@~TOo zOJ8Lhvc>;Z(v|&4COVJYaapN=DfVt?V$a~?y!u%UM&C9`+llN9JJ?Gr^)KK=EFvBg zM))WlCLKtz=uTCmXy^@g06|&K%1DTY@Q>~zbe1E>_YNW0MM8nAormGj`=)l=Dy`gx%G z0Q&NDElX<*jYk)vG|5u?F$+IT7hrZWMcMi6Yqo@8is8MXId_w5YeX`%$!%(DK5I_1 zyu@^5fi=T=#ro6guqD|V+veIHq959C=N!Wwza8D3Z&1PY3|bF-?R!ubG+&F5p57nb zjXmg%^Qd#Ta}(;ea!wDby}l0BKE)nxzh)a``)m!jmaw!lFE{-%b~Ik)YIC0rGYo$j zq74oMgJjfI=wIhBam+1x27IrE!kerdc?Fn2YoZd^%6a-@JwxA$*G916YUnR8Z#ToU zt1TESqrq4`in^-?cK%^VB6y3Q&#VN2&0Gaq()vnqMU`*L^HBxEXI35vonKSb7*pUM zQdOCz90L;cpR!e%qIAT3oKjxM>DY(bf&Wlju83KF8+n=xBm&P(AEZC8#~N9ObzR;gz>hu;}Qh(I8J>h^CNj0VhQR9&?HV&9vCE)e9$&=&@G6GYbCDcxwE&ow( zs9-u3J<>S3KU^H!;{S`#Zp6Q1n(KyCUXd3Z25$A|IEJHezIhBN$cR2DAjBA)XDcx^{d zvj+b0AEa>HmC@iL4ZtjSIPO4>9Elw+TRwz3;wJ7@b7cZfk@ZOGet@ePiJg&BKjA(< z!Ty$@R)f=9K>5Qoex|T$1@NS2qI)|6-RcKbRSRnkwSJffZ$_4oq?N)n_=#SD*h9pS z+sM-BGF#JEpeksHtecli96N-~Kt@zM;BO`%mS4HSSWB}^Ii|+uZRU685K9%Xz6V$q zTeexwS)N$}NY`F!eQ0HEm4PN?*y5pXd~Q#2RCm;J6mWd8AGOc6_psNno9!=cw{0)b zL-97!o@;wbF`3qv0VtfPKPL z1MjvO9fl5Q8fB)&ke|SGipC88H2yUWbyk0=UDi$@F=G$3W`(sY>Hx4vcVVr(#;T|& z^SA?#ag{w%CiDsGG0CZejFhvv{}z4cSM>Tc z`j}+tFZ4i7fTj&bFVg{kJ_($~IzK0Nd_? zUkkH8F*P0rY_BoX0+Y|qOb2}QVY&eaugFl$J#RAAF9|L{n9%(ud zu^zbY(b89(EtAD*NF3iLo)iy=o549+kN-b_k2R>eCW!fuI-X9I7z-~)dC^ifuJMB<^Ttj-~Ab38;64}t6Ps7|H6&dEww12dCxJYkQXTV{or&<|R`vcTb z7ja(XD?hQ{??qkLM)^xA1n0<~P(N%!2QwGD=ppDJuY$Xh0kq*Iu6!2Gk#|Tuy9yLy z7Z9R_@+xR3PoakUCiB?)EDEhaPAb!iLy18Kb|^Z7-*8cY7c1(=t@wWTP!onLwQ&YD z#nV&|Imp$(ATNw_GF}P68CVRpVj6aXKFVTLftk3ooGL^6_Z1)Cl;7w*UMpYVRF#Bm z`SCy+cBmQ1q9@S9H$*ks3LN%f;1@hac6%AUvEEysjqC6cYQKt@qE3es)C$D+bo_Yjq#^q0LYme#O%}9`1C(;H`haHNJyxWUV|D`%QCH10|q-y@ivi2Wqey zQY)yYn*gIp170^A7}^ZfkBz0mQbAN_^`tg8OlDZLt%z$RXtpR4t{{THvhKRO>>8wLyKV+Mo?+0iTv} z+6wRuAAqg+3>eP~Ek`SYr))Tw65XH}o3CGl@0)`NBRIG*Mi9;54tj~W3*76^EbJsa z5d6e%;tulgPJ_Yu7ba%6F|D&9;j%K-i<*LGc?lc~hhp_zMqWWBR0wlWcjwU+Fx|e) z92*l0LWrm}~{Qy!G;J=9f-Z8!~UN9~)wl>BZSz{)59oYOtt|3=~i$b^j6D;yo za1={2WdBbaRhN~(KIw^lI1@edd^{bE&<}*spOJOj2X#v(rt{s&5KKEZf}hq3NJS9P z+wYir9M+fWgK_^WV-A?7orl`Et`?&GQXi_%u)lu6ub0&WU@0!g6l5429OG39r^yNI zZl}@ptOirJ5uT0~$^fj?QK&J>q2_R7J${s5K?QveYxXeK>lUa$_WjAj!n3nVUWu-4 zIV!{{KwTRn?KKFA@G;o0BTyMhl8(yViqDy33bU$0cs2^*cPzdZjQ3W>-a8m|>wcVd zlAM65aUg2l$yk*KluuCN7R21Es#;$i2^V1jKDRURRG-1Rqfj4@MxDGHe742-S7+)~ zu_v7&Zo`FF!5v?VdXS*(@Vv1DovR0)|0MKV3s3=mKw95$@H?-9v33}p)(N0^_krro zp?lLE>Ap}wtiWpxy@=jQU&2=&0qq-#6)01$sf*MhJUKm}^R;3M>?H-@UEj$&==|1U zHO?jffx~zr*5e_p$A5_NL~n49%3+s`B;tt#A_>1DNf7g?kGNBZ@N@UlE9xA4*FI=( z;Gp+S%Z20O7jQC+$m%Jghr`X`K9Kn3+H~BoXtt<0znyo$xUYSL-Ak4z^;i+K%gX58v-H=Gr?@89fH`HvpF7e?Tb@ zz^^^=7E6s$;k70G;wbsIunZSzC@8eKYIKZH9nlCMBTxe@N8db;SVE)|7l=

z;BThtH{f6Fh1)?T!T}$QnQ+-24c+NkJfm&(eC-e_(dY2!5OD`a<6ch3-5_-z?o3ro zwgfn*l-EjueR>z?=Tu;Je=3RY=&?Y9Ogzq^%N%3Dm5R$;A%phFAA zc~$}^VLq^N0%u%n^j+PN;#(CbUIo-J4S?yFKw4O7;FUAL2gpE1^FDl+KfS?coN{-t z{x9Ria{y^;j|pifthU`a?F6v+e__XX3pQ*jxN1i*8Oi{n{R~fNY4Fv`;>j@K8L5t4 zc{{o^5>IyuQ3KavG_eLd?+x&Yb`zV4U6@D+aB*ye+MzA>t(jOcaYzB~h5M=E%Dw?U zUk24hAD|~S{@2@Wryk;dUPmvt5%>5vI7sE8Px=jvWF560_wzYsVwqTvPpP-~KR4d- z8t*=gsqFC5|infV0ESAE^Z>nldYh`D-0wh0jU}1!Qt*l z48u-(4NfQb@ZSMAPdZ_yFq@c)&fEcfQSTNp*##; z7#3~6+7e zp(-tiiew$0uvuCM=#0|v_nFWE4AVP;Mb!sAQ5ew#^VAUHg?<%IqHT$FSaqi{TU|x$ zBi#WG89Nw3n0F?@Yx4c9`y@5XcNj$eufjnSWIMo zp$C~owMI8G82!j}th@l+>N9}A|H5;z0h1h#RESuz7E;`+kU^v!3HRNh0geQ(qB1<< zUg!b68Zi{!n%%I|CSb3PLPc;)udROt!_A|$fv@;+%r!&wbGRE9vBPRuf1Tk~@Cwyj z8urx%sONZ8?wipYvsxjILMp%?oUsAaj8iSYh;{{SBnGtm<4XN z1^4D47zKasj2Yjj2JY`va0|KvFO0^W>4eX<0A6?#$op$N0nt$J2H+1p1AFdf?Ca~H z=xvIh@FiByA?&2-sB3;esdh;pqu0kS`&93WYUV0B^Ce&*dcoEniu+ImoWvX=k?e)% zdLy3ZhEO%E29iGzdt*yXbH8EYWyfr{Dv}jLQ1cYQy-BC8P)%+jgIpb@r-a2<;W>`XIJtibVwdu*Xv?^ zl>!eoO#i4g(UUQ|{Bv?nBtGIiKaG>*75qmhXy>5lkkm`sU^w?i zIk4TGSb@uc3cOTm=AXK$+av2Six#;7TH5?ZS@F!zZ7(wL*210vK*tEiqwE_q$- zekJv0TC_S8*vd3y?^P#C=!euBN)2$sClV24Z8$82LCMN$-}H*uX`bsHwHxXJ%}hih z?{Kgl0G9n*W5^lUv*wT?#2DS9*C79N2Xo+|bW~3w29wvQ=JYvgBH4+sqMBVqou#kQ z%P0%k8_z)}YCE0C+=2S1JML8zx-N9cwU`oc(mzR()Ze(5^{F4IfI3j^;kMq3{mR(s z6T~=uInkHC2$sO#R1dAC@=5JawdSsy#uycPi&h*}Tc{RIO=d zObraAOh=3P#fu;k%YNe&6U3?LF6^VDsxAZn@kEwaOEf@Jf`oP z44kTGC|ik<$X%|+KxpFL=Q`k@r1XQY!83GKPl%;#1LJCgoA@LS^;x_L{A76wG&VIc zvrZsJ(|eG$d{iwguEp$gkMxBYgyh1N(hAr7+C|L%y8V{<2XTyl zCo#)$9lwAxt9dsK%>s|P_m!W%5iOx`@{Q`Z# zaH=XWl__*8@>ljD8D^QVJ}_K-FY}oBjhCm&)znHv9eNl$-_W1CXN)r&&8NBh^cTG$ zIGSz$AW85jC8Atq0H6&Wg^}#LPAdeyIvfbI~)KhI6 zCRT^w6*i682Iu_Wx|uAGEQghb_Eb%zd{qvNmaCHOnGsYgb&vQ|>O^!iyfj+4b@T|} zK10Zx`W5*W@Aph|*Y-^Jbq^GgmMCLE10GK%(4&}CrZ{yOsfq379m*xOo8k*B@wA4U zrjgg>_wXw|E7lX1$nn%CZnJ4S*BD%}p2j7XbZcQtw6PyD@88Npgc*VJ;vF>vQ-BiW zZ{)XZL}Ke6N1DxO{6>{RO?HEf1#2dON`+In3Uxpg>_NY=J5?tx!?8I-*YpjpitkpEKG$jXEn z%FDW1vbsjz4FtM_(n4EK44{u0-kIK5I$DaDoZJ|85i^TTF`hIPg6qr)(>7BnV+rm$ zyBX?)EM}OofF%Q-VkE>E4I(+x|&7wg6?p$qHJ)dECystLJJsm-r-zs%q2w(?u0 z#|n$YDnBxyQsfY1S|U%Bs;?8OU%nwH!5v_b@)FqfVDK3?!X@Al^q`zJMB9S&vaQIN ziPWcRUgfFSnUD5;^U!cU?dQ4T4FY%lhi|6;u<%avv6bN=Kg)98SQ=gOVdQ5OG^%WC zrXdg#yTN3VOu@!RtU{M%p0WLmOHGMfC8{Oz$vx;r-(ud?QTXg5eMR_ASebpuaYRqG z6Yve6JV~hp4F4WF+(l}4C>z&e7EYrp`$U{49}zLAmyVMn-HuI!;`=82vd=R`SOa^D z>CEP`YuM6kQ7+iJ!I>ZQ-eI!ZP2ag^Tr*=icu4m|#>5o(j+yn(a6Z@y#HpB89yRYU z-6*g0KXx~BHE~sNxAPdi?clKP^Q;JL2RfA@&gGYTYkTf`Q-xCMKj^HiS_saqF1m*r z$}((gS|F0O`sxs57R5t(HxO=CADQ*sEmH&2DMJVoO_fI)Xt16`oFl5KMc_^rENkjD zaQLU-49X-k;ZI)!>OQLV6tL-9R(?#h>RL@7)1xCN|G#APZ zVZ+EKYL0SQJC0dPW90XKmK*7{r~powCe%57FLEV^q1*XeYa_1{LiyAF)?%=B2>tdG z)cF5WUD=1+ZxdQt$s(9T~5x|kdMZRrW7QahA3@<@5DY9%E)nT=(eGG(Zl z@aTe1n@T7j;bFQ5?{@kUeFJ?beQSOF;S}@EPYUDYIr?avp$&-Q+CsQ@rOAqNMJu3} z*UJ!9DT*~2bIq*nhOMQ|XWe46+C^J!xRIJ{7cH~Qw@jI)Mdp!a%Cya}pFTu5Fc+Ln zjsaTui>|~hqes#u*)hP68n7S8cPcII5a8quFTmZwI!_a@;(wY+!k!v$jJqQ$MtTIO%KqQlSx~l9KZv|3> zeIl}VF>BE!hq4@LLV4gau7S?76M3H=V)$hE#w;VZAyKTZd>k|B=3)^zkBk87-(PJ> zZe>4mUPBl&ncNJYztwa{27QGduRd4OH3w;=AJP}0K5s%_V*cV7lf~rb!nosxBZeYy zlG$b$!M0(P#Y5<3wZPCLLJGYT+v^X!@--(!qm15QZk1K z%fQkK6V6Lf>O7#rZs0gY_4347vJv%)$X8ubs7OF>+fE_S4K&vyFb4@iCI233u&%&t ztC1z>D0U@g)h)T_2AhFm_tFL71Jsmgjx*^8_-WgyVS1|iRrL{Huo_dSy+DYDl0GJt zn`wAURn{tjRZ&lCKrWz$k`?vS>KJVed5=wii%l!88IuO}fCFgOZt9Spu6%)3^q}%o zy91||QEGpMQ9o%sae>-|KKm*;4LD6K84I2N334%!i2WoAmDt}nql@cCc+vf%YT6)T zA=E);?8hXOa^c{HY^5n`2)OOd@jYLvBV`@cMJ@3kIZHXE_$7-tMYto@SFUQcfYCl8 zE|5O_JRwL`x-4lz4bd*cgAe`H-(5^7(!+U9C)T_W< z8mOg!uIl--pK8dkHlfVigU5?WakVUEO*t@@}orv$uJkxf|Ytu07_!YsRoI_oPt}BNg4@TBv zN~2$4`YVAae3|Ul1or<;I0=PjHOt_9yP03Hl${R0tQ|@T($T{dy&Xa$U1ervDJA_Hm8s$Iu zwKDi93Z}s^rJVK;^vMs%OuC(+yiqn5Ga3zr=rei+rM$Q;kSv5tX3T2VL2-9S#zaBw z1%~B+K#Iqs%krYm=uC{$4#=+r3i`Nj!cb*5@r|y;er81a402DavK`o(Oh4)}aR=C3 z3{b2jy#WxM_1a3cyE0G?z)SWG<{C4gL28NhZ$S!MA!(Le9F=org~zluQCb6ams4_M z+IU;MER9ht*g5j_^H>+Z$Xw!rwjYiPK%TmU~{_ z^_)g|Z9EJg6-f6t^H%ZvLbq=}#S?oeOk<2q0GN}e#^+Q1iO7`5MU&sZM{tZk;TmSXla=TK*g zJ;S`!xX)C;7U^_33R|xk2B7b)%LQA`g3EJ?E5KUWr-t&ThvsziL1PY^MfaqQ%rJHU zay?HWjk&kJp7=u1>^1g1(}?Z`HrG?~0`Xc4RVcA&U}#`D^kt33RQPF~#V%7#o{iaY zO;oB|!N5s}_g6jn5PZOHK|dS79vH7K1=>4C>qF#_o2X=JFEI+p&|IdkaF7QpT6&zMr=wZ>MXPx3E9W*VMf$_juOq%pq9^bCUD@uDR|I_fppy zh54==_VWhTdR)l|TUoI4OAG<(-p$abNw}Zg7>FS@~_|>a8;Ns{1k7?SAor3(6*}^FyF0= zU3!Sx3bT|>T5<3Q#%MaRo4(FgN7`SeaR3zgD=n?9KI=YPOS|1s%Q-6eN?4t!QnCJc zW731ioK49~S(G9ccBEWP8BoMr^jA@`xK?~-iM$fEN-iidq*(8ij>&4`p#n!@ z*G45r>X64M_Y{!1_pRZ-2ciU#zwevp>Fh4y8Rsj-pYwP1#=4)l&UtS6W1&<%&KLJx_6+xa@z00L zW^18@e~-IYeuMm-?m_-{LY}l6u7E$)_GB`W0K0N~m~5iCR$1Ffyri#!A9IzyME#%# zaAs>uXL86dIOr}8dgKfW+74FRB1c!N&GZ3I8399x@uRVvDb+OJR39#7)sa+nlpTq# z;4yI;Rr?Sz1M1`Cz%9P5|D|W7t8M=6`~vPG9;>H>`>?CDyMd>qw~9B+6Yctv8CTr_?+mn_kCkqBjFU-p)+sCYr0-E;{0Z>xWhdKO4~}G9l6#krK8qxRi6aU9tUb zzXmrozkRo3k~1ynMo`BfuY<97wvMutHJ9fGP5 z2X4TDrneX*PK1u9YhW{+;^Mu3yISTI$P0COJVpHibk>ED1LHt8OPcN{gXjlTD`&rF8I38nj%e$ zmo4?Z%=&Wi<$sqOTQ0oZi?WN$)-0P*W?|{$CASp!7kyFWWJ>A6k;$zS>&7>VSsb|{ zykJ;L2;-b&F&a9NleA8lfwzcnwRgLR@Oa&eu*QWE!Q1BS5*yt*-6NdSw;3m|MEuSg(`u) z@X~Gwm$}g%x4W0StowwU^PceC^WX7r^KJB0bH(Ky%DIzGWZSc9WhP|4$?TdvCO195 zvwM_>gnQLj?^)jwW9_|Ryj(kg&aW=Qr*vzuaM%%Yq z9&y=BDKPcFu?HCkSz4JHxZu0uJHuxQy~WyrVczuoKDm{0+vU~EzmzBEywB>DIWsdN z`(@6&+zUD7vTJ0W$XcC~pEusM-L*cyJY2$y<<-rPb(M#2;?(>xu9Keq{^`OB0-?!2^RAI~&+1+BkO~+={2VksBnYW|C!HGjqp6Njj`Q}iw)U2AxOUJsMaC3-*gi&PMP=NaO9F#h62JO8g|a=w~d2x%cjT!r1=-Cg0b^xV_UTiJI4 zJ5MWbOHU~LX1=?dyY}Z+%TCBzo;4#|%Wji1G`E>+fbVr+hFDbW5oia$^(DSB{4Svt zaE{-|a&>slc+2zIaI~Au)Be}!&e8){g-=2!;XU-hv0}QEDUVPd$RAKFPsMpO#dkg6 zmM7|e*vxz3CeR8q?I~0$IS$i|ShWjSP)jgJzKc2{3Qnl~wV6QHdm+Pm1ybf;KuhEV zk1AE!D-W0a@D|B|pWQjJxby~W$OmFknbj7NvCvirAq}+{6r@+^OlF~>oG}=FSx316 z#=Vv*&Xb`PBl|^vj7g2V96vYVMdGQ%^$9HsOpos$e=UAjfy#+V1ve*eEi|k!mvT5| zc#)n(2NZiztYNY1MXnY;kUT%BdBUx@XVF_CK8M;vUIhJeMmrZddO9o)!8XjAX>Ma0 z%{^cWkcx6g;C-6=UVc>GV+jxHBZW)ie@OIf zE{zd>@u&G@p{LYDsi*b_PtvA6(jQVh+r>EEG}%uvz9tKx+c1OkYGq@StKK=>|3$X-!hl2Z|y`xpZ0<0YFQ)|JXGr`?VvS?09)(6JWg!S+kBF@ zJuirNl{B@M{5;_BCnL*;M-O((^VYQ`zjuC|Ynfa3uvkAwk+&D^p8!4882=sLWv>Sg zXQwoPTvq;EB|XuK6=BO;G_5$I?3u{MPV+#)@Sop@M!Kvo)4Y{ zUNf91Cj0jJ+W9qpow!q(soAttqQ-{q2OS#7xf7|HQoswTVK*veYjaoYJXC?@1W z=0)UNr1d@P5Zw>jBd>ZmppyTb$0+SII*ISA56e zIJUqWlZBjWDKJ3fX5lq8!IDE%aNqTeEB)J1qI^>G1dh=hsm=XjM>i zCt+W0`CuwxN;XY0wlFlK=M!a+&%i;O^Z|8bxV8#vr?uea4n_jd9dUth1s+3XfpH}A zz5VI%q5JIJ;cepG<7o%~v=`{;uKSXaa#z%Q)mz&CgGUaN&>xz_wE-&7o_~Y{ucz=N zl97Wm1F3fpp_TgpXXyw2f8kA+4)2%x@KU%Vv_|!rfJyr}xsGUur`0Izh~wp9~wB#KZch{8~-tX7xa_m0vq^s{-?fwkfwLXJHq>~_k;I{uK<5Ea2S1i3Vd8E zL(kt3o|YE_wQ)Lc^Pl851=hnI?wEgyZ=zR&V{xia_2r?zYv(PG`ujGYEv!T8LAJlM zZ-cKkUreY5-<4!x06K>)LK;#N(&hD%L3|HaJ3fGJ1bV3snBscjyfPL}DZk*G`5rzu zli^;I%X@qiJX2jHPA#+dgRctwz4qc{StEqP1$MlU4Trj;{B}&^x~R{zJ>ZZSi3fzA zTm-IhE>(k>VmM=LZZ2T$V6X1H5#$W%5c(v{5pgr3W#q@mE>Ypp6=OP}2I?BuE$%|x zwD_(C>L%1o%uI|Tj;N08+W3VxeJxZLEHwIFWjAZew$X9ZPXA9ZY^RV3@x3h-#yyvH99z6I+ zFYE4-_bq#1R+lVe&fC12?h&30%*Z6)8R46fLd*xt&P-(LUrWH#z*+hyTrVju65qKyg}H--}cURFL00cRT3wv zt@L%;2TU4sFq2+P@1x6*Nm^00sBWg`86u1ixy^?C>=f2wcw!I@eGF^a5>QyaV#mUF zdI|RyinTdhY3?Z0F2&fgOc}Z#)r+bN+h!KLb8WLFK$$8x{Cu?Hag6 z&6G^&=jzC-q0f3CR}%O0t^IS+gS3DP@k!ne3~iS%23TQfZJ}CU2>^eaiqz;_cqD}e z>Z3>L!gmWS6UyKzZx4T<9>Pd*qLczwZ$&V5Z^&*X6-v*4v;k@>dGw1dwN%){R^4tvc+xDIW=sYLN}{q0aK zS$u`P-8=#0r>44--DBMgk=5sw8b@~7Yh zCEK z7#S1uEcQTLiTM5TK?VLQa5=t7Tz62GA4Oe`=40N+Zjaj3Gs%p>6`AH&{#v)b@GZ z-&|$f1K@Ao(EHdO$Zwm!)1`Z^VwYI!z2e>hUt__2(p$)X9LnQgK9{dFlG&HYtN-u= zl{_d~hp5okf)7RMLHcy!9o39|3_rcnTzT#ccf`2TRLQ)=yvw}RJk?yqe8BVpIW|`~ zp4(x}0w2AO#PJoKq;eDmFF^1kMna+~K_^Xuj%=KRjg`+YGpC}($GUmy)u_W}1TZ*l&dV1f&+ zLkJE`4TOri)EGR{|KM$MMD4F1CU?-^n7!;T!${L6Yn0=xqrZK;HO1mG$66|xZ*tQa z9qh6i^h?&u)iGW)j01xr5p2Q|48!v9AKgc1(5Dy|+s`nDji*-pr#oy1j)3=kiiLA6=aQSy4zp@m(xC^1)@8CV? zW&LZg8_$5p&kM}@C_V#uxbp)$#YWKiSCyv1m$6hJBG8E6=X(phE7Nn>H;-Q$_$wg$ zcOh-KfIo|0AXF6nLTzCOd@^HjcC6t`Ah)5Qe}}Ife6;HO&-3GjD`I14!;+vV+b<?Da-@50=LU}&D7HTpSg@> zmgR?KtM#F6nxlKr)8GoBkHW@8G>yuQ_Qb4<&55lO_arVc{y^N&*l*E8qgq8?kI*CL zM9DER@rebF#&?Tb9h(@Z#otI6pKu}WXOs|L9!W+|!smrKLP|S-*mhcLSX)_@VITdn$=f`*}_{;m-c`vw*=Dp4Rkb6G&UQR^zs7&|o z7n#el>*co0bLYLvAK}jSKISc=Ph2H#N2RO?HKa)SGIC&|;s2B+S+r*0JyrpyxH?^o zduP53mGL91~J= znCv$sS7@1%Q5YZSEB3}bUqsIBD(HP50jFsW)_YZbq;f}WFU%2Uipf$RF^kXkesw=^ z&-8BeU*cQvH+_Y?Lp&wC+kBgGHN(9ZEa&JEOo?s2C` z3h{xjz)FYt3V9Z~I=Rx^!#yc*=H2Hr@nZtzg?zZ(*9^p?e{UzpL%H<|zQ$#gXl*W$ zL0zCHg7-fc47X**O4c|>hSTeu?tBMKe^cm)aA(AZ@Q-2p!WxB7jMx~dM_!2>7CADq za@3sYZ!rbpzQ(nPe;(hWz&{22@#Evh#w>`EA{?k_k|GQdJ&`uBBJ_0VjIhe#wZl7w zeF$kAoabEasBFJ#tp(S0A6FCpZcW+uEN5VmrL_+FgBi>jwkvj}TErd9@5U(|lwtA_ z@e@wJVQ@Yi2qofI-~eU+I8q8X#B>>&C-?`Lp{?Mxl~AVkQt3w;T*)tBUI@RlaP**O?4b942t zY9A=U`$GBqT!~fQNpsMdKIZoWu{?wH=#OrXYoY75YrcDeC)8Wt>-9Xtsq{1VpPXSi z+j2|i+gvB}&*rty>zsesT>-Gogr^Ma)*O!?(SX-Vxc$Z>VSbddz+j6)VtEq!ti6m3MFvC@d#}5AT*2 zid~RUb6>fsel{^{OC zPiG)K&HO3IX=vrQ`#1RikE62ykK$Ux@R`}oCYx+Fws9PaJEdrGDemrC+_kv7yE_!8 z6nA%*LXqOG$@=chocnSgp4*!iNOpH-&iT*(f8Y0h_p~I1XPkGgTX#Nj7Ih19(}#IO zJ^Nkd;PotVn>_2>D_kd?_nq0?8N8>-D^vYuUukb)Zvr!}2l!L{zRkYtz8I(}+5Ol2 zvjandBeYHW5V>AC%!K{9C1>acOJTBx*M{n0cddKF2iru{xR~d$T5M9>ua1HV2D#By z6RXG9aukYRl=x@zo#fU@Z4*-Cvp~tnnz$vYU`ngho2g4vmDK(zSyG-Rw@=QWR5T&M zu`#w*>?zXSZpYmtmudi+xf^0$L9Xo^TQ=4fyFTV|bhD`UHr<*%^t3tI^ikO&Dxl9Q zNIJ`4<6jvNe~`8}K=hNd(Dy~^mx2L*qHnS17-=gl+4U;<9|evFi;xWvp{FsUdm^Xf zt(YY?%3kza4(VZXr1pY?(${_e?c4LOTfY@e+mv3BSwyb1PcVWS zryq6y$Lc=Cf5AJ6xzQAVOYOe?MH|XYZ=)|ZxY0PM{DLFz5&E_QBAfC^twf&Tc+)Mk zcSFP%CBnQWh><=PIiwjs@he@w2F(kLZ&N=izblrJgc zQm3Z=ol-gZePZ*(rHQu^izV)iKLFjfFR9b>Vv5D2N9DG6wS5jxv(~W=2&)u&IV6+$ zCUbY8euCq5LO#T4O0!LKA(G}jiB9=QQuY|lUwGMxr-QW~q} zLQ|E6B#I~MCR1zkPV;=yKE{|zk$V)4uD*zQ65WYLq%CD4KyI9*65M8P8UK@fpQpoj^nXXaBrlb-jyGRMrxAl_{ox`6*na7M8r0X(8p!)75M2 zH%a*128%k%ZJbtvNCmnCS0R7~ZL0bR{b?>Sg8aGhsH{elMq*)Y{$>=%6B35kW1w;l zCfYgtEE4DLA@T_h%i+dZt!eOi;6*SMp7aJM?O)z-22YkWxC=+|j^TsH8w#RY7ZP&`{*>s!s)!)|Jz}?67k~=xCw;@&MNq1Yf zhyG$XGu*Epv%7#(Nq?HQAic7)zO#S2k{12F;rBIZk#xH{JA0;|PMefAKW$rDpR|Ou zW8aH>pZ%@sxA^b*)7POwnBw+2pQf*N#(Qr0vhiHa^+dQbI!n5Sc^dgfGuzJ(H87{= zkk7@W{%D}Af1t0Le@ZaYn8TCV0B^2cZjn}MwAuI`3#+Bf-z^WVPa|g7`q&2AGDjA+ z-?mS%EA}S#mr*Ta7dz(1cZ*-^xEj|lu6*1FveEL##W^a+XHVFk(3~z#_2j+qGg6b9 zBz8~Clyoa8kTgCiC8<4`>5Wo~qzp`Y89zF%Jp`FSaVO(0#2$>EW$!@Z%^-WGsP=YY z+YmN5@cSR_J=@<}%=+?xz$Kql}-?=sDqrzgA-L zuXk1#;n6z5#AP{}#`j#wFyUZV_(@(B>(q7B;>jpAhno+>4$n{4@uiUaA?R1>hjeG% z{!C{wOxY-R=m)fI`hW7RGFzRhtVRhvLI2231L?(!M^p!`-oNr~5J|ws)?y z^kABizQ(=SHxS;+x#erAC@dgq#i;6jIf^ zku$f#{chkRysy{9hq+vTD(B6&h|}$BD*JR&U_S&$lFb<(?7*4)p7$E> z@kwwMe$St@h4gQ31lk04`xp3{cpq}&kMzIe@2(B};nUr}QlDtf1lMTiFX?^K%BFX7 z33xqFOuP=y5>n5WdcJXjd+RC#7qV*lI_E(5ZBHHVN3zwz$hA%L27E2ZVw>gL#p(7M zS!X3t$%gv2`Njl_>G5KoI?r6x@+I_@bxOn#+aB8j+cDeN$f+ndrbQ2lJ|FeTKEmE6 zDka7fJHk;t{!Dy@gxv{S60XE2IIOYzqqoti-xSw0K6k>?_^XcbaWQePp=FdycoN^n z@e_GwZ{s?|D+z7l&&4Ii=8dTwvn{4mOb#?%wQaQ`3PqfZm}v`(JZ5_pVTNJ8G5kaL zhVX^fW1%Qy%!%g5W>3gCi`^0xGSIxn+&!ccPMc|@o@KCH3vsXy^fDD9li@ci?(mR( zkk9v%ic`*fm6W!w=H{kq>R!kZXVsCAQ1+`8(cMK0LrhVZnC6&fsy4-o%X^F{3=cAs z$Zyou%Ag~^MhESMQOEFb&0N8XP^Jd()Qpw~^n1a!fgS#d{$~DNzC7MocYEhw>4lvA z*e&TpKxe4$F5}sadf*A9xccr=&PUMPvZcAd-}t`k`~L5tX&cfGrk8UaasTQ0;Mqi0 z*C$VD-&cP#I%oID4@xFOWlwOvHc@YBoWm!Y3;p^t*1sy2~jj9v1WIy+fF{KIlV@)q0$!prqVPf6_oXbD4YZtGA%9jQ?h!C=TRoTE$>ENh`JWN`_yb zru`Kd>dy^JeK`E+X5NeB@g}y5sv zo_(-ndU?Kj26*i5kWZEqa z{6WUd+rVdSososa+`Duqx|;@sjt^fOQ9EKq_~P(#WGr{K4Y%clzB1WnLbWkIc3Ipm zeobvuDZv`ogJiKCu~x@1_!VOj2~CRoE52+}-DF2n&>>>uVsgc1aU3Lj z`BVI;_*P7tdM8{-P!o2<{Ss}9oD~sodmULVN<`(4bca7AkEvlq!-ziCCYJH0rcmCl znh%8h7IM&pVqc9jO+y3SlMad5^ta-Lmt2c}avM{3d}PHHT@8lx4*MK7G_+bsPV*h+ z1*1a8S`L}Uiq$Ya*NG)+1ydrwEmXhqJABun=6hy`d4l?mC%e7qtrS$xE0MyZ+x0p|Bjr!?1WUBV zWZr`#bG{g@)W+>nP1z=kkr(#D*d_9+iR$m1e`{;|s7Oj_g_)5qp^F|t*5CkE-Vgre z_5*X$$=%1c*2 zx8l9!yGO$HVDAuje%B-CGv_L&ht)YX{YZL2SFC5Xx3#aNZxXBYL(i|AHS_u}lTtm< zpO+-Q8&r_bgZBbm{PUUSMg*<|y5J0X!&K|8>x-*Cyo)oQE~Ju5Pf<@ls+q2wc8-!* z6bEr&sao3nYe-1Q3)6O};iuKD=9JJO)*KO;Y`;b3h&m86&v6OrbhX4n3AJD}j!c-I zxG}MDLL{t4C3bRLmxP(g$5UrysFvYN>a+}|OuaH+$vi02+0=5$Nl8!O6coo!Ee9_y#j458O?2^0yP z9(pzOB8=WEmM5f%SNZ?W-GaP_rlz{&zP-Z#8RUc^aDFtyAASZ}eRVk)uhszZ9q-Zt z{LQIkh>cd3h|a_c?bG(-L|jY;(S7nv_A*7D0b%i@zLqufJ)ZJvWLx}>_ph;Gr6Vzn zyZg3pg#S7D?Qgx+sVNV;8oKjv_Dn$w@`@gEdip=-0H$;U{s)1*nHRnTncIIe*sWomIqHd{BuOzZmJb z38xr6#YbfUDGK!J`q_Pe?1uqXbYVUPqDjhtiPeV7mFdiNp-l z{6|HCyh(?B8tV6>^c1@UTLohL&3$WpFZ|nrN%|yR)2;-^qjTTGpXlLF@)h@N#2xkC z)so)%0|@dML%&$3+J=$5y4haXp54CBUM;F!RL`ipQG269Vynh|B5k#$qlsgZwMZNuLtuCb^TFr2dv+QHHu1(o*N8+EX{DR7jbb+$ZT_ zLcRE5jzSLMXczZ6#vGku?{8~C`rYer1fSt&!-s^YgqN_c4c#2FlQpChB$hL82j}{HccudLIZjA>kw&J*4~EAkw)`1{*@6{2cg#$J|2JVL;0%Thd=C zZfdUD6{l>+X`~;?Go83YCo|bEYK$T2;VS<94Mrr19D|^qj-anygVg$4hSP|LtJMwG z#&MJ}nf2d{LF8X-ljn?Up}pMzP|M8UZ85L6TC*YUnzeZ-z{hnxqW~7cKgcvhQX|vM1FQ2 z<{i=SkOz1_cy_~8F~f8%gA(#5cS|UCTOcv!_HOk&hCtwP6>txLoYK!-)ScJ8$lbv+ zz*_}+!8>n$KDk|FuU;q7I1lT}CeKB0N&kXC>tM&=7w+R`j=(_dGgo-*vxn zfmdFb%#X3;n%pHJ!wb3cgIKOEF=r%6elk?9ccELuHZV)+5-}zscf|Ve0k9kI+g96W zLLNO8`6mtohusl&>tmVJ)q1t(vu*^>%1J ziwKzlr*ODA4?d%c>VK^1HHD(wW!LV7>qv+^c*Z}F4qH)oFf};EUHdUWf|YhjpFmo~ zS$(aZg;e&&Jn<>Aihe6_*>{i*@LO*-700Khf{<_7NjGtn7u z<8KovPv@pX;56=qv*gd$Bwu?oPkm0;2&aix+6=Y(LC+;VgIuTuwgg&0SJ>r0=gsFC zf{wlTim0#%dxj(*2MIUO>#_)e;S_>zbLL&Z1dP%aVz8dB-ToD zCwdZm@$2Jb5|$)PO1KvP+|keR(eW^Te!_J6?;~T6MO}kKv@WuYy@LHhljOFH z)ir}YN>4Q|8I?$txkRFEVLg&F%rl?nY3Cl|%H=BQngXFQ%H77jh4W?y*63BJN@sf) zql_8rigA5m?`@r)n)dcv^KXa0o%xOJI(A|>}AY{S{yLn$b(Zo99!E}{rJ<;?ANdr(^Wvyh&u z;0a38yT}-Plp~C$`g-nxJlbQj;+B)6`aFf5oFZt7Zc=H{X92XvAefz-fte+GX|-*u?go1uyw zg%`RFcKSP4Zr48NTBqAN%~iyG%bkIF(J;=b4_wvU7IbpMQN`UPCq6r8*uVU>0@ZP~ z*7pDIFGoc+7^3XXVCBFy-%)Q9dX}vrgm)rqdyTJC;E47JdRzu^gB`4vScPkQvw1D~ zgvZSvO|MOkkWZHJVY94x!}oevfWGD?e<}IkNuN_x z4~u9U`OZEU-omixPBE_7zZ_@dOC{t^xD$UX-jwhyeqp?qs^n1IpK<9htH;G>OIVwr zCrnOkm=vCzDLF?{$%IhH)YydBpJU@<)tIbNg(CMxWTN9@id1p3KSdey6Mmx15ho&k zjyPs59X5-c#7AL6tQoBbL-&P5nA@0!LQeBCsXs#P?j*Nk-E^qXir67lD@=6=pr)%!^m;}D_AqI zj8o?^?;hVR*3EzYhkcX1C)qh4k?23my~DX8Eywq5-|XM7eb2`l9Q57Ie5M|b#$^Qdc;Tj5T>4M`y2xes}+pYLCI@8!7i&v3i%VYc_e z`>&^)=e%bVn&0zK37SCy8tgw5_!itm&f)^}+{eh;&J|n%{jRwGtnU(Q?3BP;_)X1V zRkzje>Es$2lSt1msn4g+vQV3e1I`qzM()VBKpC=#8j%|Jhjg>XeG_k})ovMibt8B! z*h?Ft*CYR{uyFtedm`0ZKQiI|3!0hVJM=E3Y|hhK1sNXuC-~Z-Oi%UA@#aOHa?N|v zH;R61$9g#j@j^z=?f2RV{eI}^;2WoSFR z&=rci%fm^m!nEzCcbxC4ZwFnPVX(d*`ey{LLDgFvI1{Ksf3g`)=rd%4I?+PUIfSa zCc~asV255rb?6BgaM#ikuMXkJRiNqZ`H6jawVHI_?f?-;4

I5WXd>Rp>dmK{qT{Eln-c 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 GA#9}8>mK3wjY>dBYETc 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

M4iRRo>>nd_H!y<_ZYI&H+ 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 literal 0 HcmV?d00001 diff --git a/src/Cnblogs.DashScope.Core/DashScopeClientCore.cs b/src/Cnblogs.DashScope.Core/DashScopeClientCore.cs index bc2eb3a..72c8c69 100644 --- a/src/Cnblogs.DashScope.Core/DashScopeClientCore.cs +++ b/src/Cnblogs.DashScope.Core/DashScopeClientCore.cs @@ -489,6 +489,8 @@ private static HttpRequestMessage BuildRequest( if (sse) { message.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("text/event-stream")); + // some model requires this header to enable incremental output. + message.Headers.Add("X-DashScope-SSE", "enable"); } if (isTask) diff --git a/src/Cnblogs.DashScope.Core/IDashScopeClient.cs b/src/Cnblogs.DashScope.Core/IDashScopeClient.cs index c206916..14938a7 100644 --- a/src/Cnblogs.DashScope.Core/IDashScopeClient.cs +++ b/src/Cnblogs.DashScope.Core/IDashScopeClient.cs @@ -270,10 +270,10 @@ Task CreateSpeechSynthesizerSocketSessionAsync( CancellationToken cancellationToken = default); ///

- /// Get a temporary upload grant for to access. + /// Get a temporary upload grant for to access. /// /// The name of the model. - /// + /// The to use. /// Task GetTemporaryUploadPolicyAsync( string modelId, diff --git a/src/Cnblogs.DashScope.Core/MultimodalInputTokenDetails.cs b/src/Cnblogs.DashScope.Core/MultimodalInputTokenDetails.cs index 8df996f..9b72d4f 100644 --- a/src/Cnblogs.DashScope.Core/MultimodalInputTokenDetails.cs +++ b/src/Cnblogs.DashScope.Core/MultimodalInputTokenDetails.cs @@ -6,4 +6,9 @@ /// Token count of image. /// Token count of video. /// Token count of text. -public record MultimodalInputTokenDetails(int? ImageTokens = null, int? VideoTokens = null, int? TextTokens = null); +/// Token count of audio. +public record MultimodalInputTokenDetails( + int? ImageTokens = null, + int? VideoTokens = null, + int? TextTokens = null, + int? AudioTokens = null); diff --git a/src/Cnblogs.DashScope.Core/MultimodalMessageContent.cs b/src/Cnblogs.DashScope.Core/MultimodalMessageContent.cs index 5663054..4f3bbdf 100644 --- a/src/Cnblogs.DashScope.Core/MultimodalMessageContent.cs +++ b/src/Cnblogs.DashScope.Core/MultimodalMessageContent.cs @@ -11,6 +11,7 @@ /// For qwen-vl-ocr only. Maximum pixels for ocr task. /// For qwen-vl-ocr only. Rotate before ocr. /// For video content, model will read the video by 1/fps seconds; for frame sequence, indicate that the frame is captured by 1/fps seconds. +/// Extra data from OCR task. public record MultimodalMessageContent( string? Image = null, string? Text = null, diff --git a/test/Cnblogs.DashScope.Sdk.UnitTests/MultimodalGenerationSerializationTests.cs b/test/Cnblogs.DashScope.Sdk.UnitTests/MultimodalGenerationSerializationTests.cs index aac5cdd..c6facfd 100644 --- a/test/Cnblogs.DashScope.Sdk.UnitTests/MultimodalGenerationSerializationTests.cs +++ b/test/Cnblogs.DashScope.Sdk.UnitTests/MultimodalGenerationSerializationTests.cs @@ -45,7 +45,10 @@ public async Task MultimodalGeneration_Sse_SuccessAsync( // Assert handler.Received().MockSend( - Arg.Is(m => Checkers.IsJsonEquivalent(m.Content!, testCase.GetRequestJson(sse))), + Arg.Is(m + => m.Headers.Accept.ToString() == "text/event-stream" + && m.Headers.GetValues("X-DashScope-SSE").First() == "enable" + && Checkers.IsJsonEquivalent(m.Content!, testCase.GetRequestJson(sse))), Arg.Any()); Assert.All(outputs.SkipLast(1), x => Assert.Equal("null", x.Output.Choices[0].FinishReason)); Assert.Equal(testCase.ResponseModel.Output.Choices[0].Message.Content[0].Text, message.ToString()); @@ -85,6 +88,7 @@ ModelResponse>> SseData { Snapshots.MultimodalGeneration.VlSse, Snapshots.MultimodalGeneration.AudioSse, + Snapshots.MultimodalGeneration.AudioCaptionSse, Snapshots.MultimodalGeneration.OcrSse, Snapshots.MultimodalGeneration.VideoSse, Snapshots.MultimodalGeneration.OssVideoSse diff --git a/test/Cnblogs.DashScope.Tests.Shared/RawHttpData/multimodal-generation-audio-caption-sse.request.body.json b/test/Cnblogs.DashScope.Tests.Shared/RawHttpData/multimodal-generation-audio-caption-sse.request.body.json new file mode 100644 index 0000000..09eb08a --- /dev/null +++ b/test/Cnblogs.DashScope.Tests.Shared/RawHttpData/multimodal-generation-audio-caption-sse.request.body.json @@ -0,0 +1,16 @@ +{ + "model": "qwen3-omni-30b-a3b-captioner", + "input":{ + "messages":[ + { + "role": "user", + "content": [ + {"audio": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20240916/xvappi/%E8%A3%85%E4%BF%AE%E5%99%AA%E9%9F%B3.wav"} + ] + } + ] + }, + "parameters": { + "incremental_output": true + } +} diff --git a/test/Cnblogs.DashScope.Tests.Shared/RawHttpData/multimodal-generation-audio-caption-sse.request.header.txt b/test/Cnblogs.DashScope.Tests.Shared/RawHttpData/multimodal-generation-audio-caption-sse.request.header.txt new file mode 100644 index 0000000..b667086 --- /dev/null +++ b/test/Cnblogs.DashScope.Tests.Shared/RawHttpData/multimodal-generation-audio-caption-sse.request.header.txt @@ -0,0 +1,9 @@ +POST /api/v1/services/aigc/multimodal-generation/generation HTTP/1.1 +Accept: text/event-stream +X-DashScope-SSE: enable +Content-Type: application/json +Cache-Control: no-cache +Host: dashscope.aliyuncs.com +Accept-Encoding: gzip, deflate, br +Connection: keep-alive +Content-Length: 441 diff --git a/test/Cnblogs.DashScope.Tests.Shared/RawHttpData/multimodal-generation-audio-caption-sse.response.body.txt b/test/Cnblogs.DashScope.Tests.Shared/RawHttpData/multimodal-generation-audio-caption-sse.response.body.txt new file mode 100644 index 0000000..5cca174 --- /dev/null +++ b/test/Cnblogs.DashScope.Tests.Shared/RawHttpData/multimodal-generation-audio-caption-sse.response.body.txt @@ -0,0 +1,2215 @@ +id:1 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":"The"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":161,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":1,"input_tokens":160,"output_tokens_details":{"text_tokens":1}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:2 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" audio"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":162,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":2,"input_tokens":160,"output_tokens_details":{"text_tokens":2}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:3 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" clip"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":163,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":3,"input_tokens":160,"output_tokens_details":{"text_tokens":3}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:4 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" is"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":164,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":4,"input_tokens":160,"output_tokens_details":{"text_tokens":4}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:5 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" a"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":165,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":5,"input_tokens":160,"output_tokens_details":{"text_tokens":5}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:6 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" short"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":166,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":6,"input_tokens":160,"output_tokens_details":{"text_tokens":6}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:7 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":","}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":167,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":7,"input_tokens":160,"output_tokens_details":{"text_tokens":7}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:8 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" moderately"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":168,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":8,"input_tokens":160,"output_tokens_details":{"text_tokens":8}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:9 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" clear"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":169,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":9,"input_tokens":160,"output_tokens_details":{"text_tokens":9}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:10 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" recording"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":170,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":10,"input_tokens":160,"output_tokens_details":{"text_tokens":10}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:11 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":"—"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":171,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":11,"input_tokens":160,"output_tokens_details":{"text_tokens":11}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:12 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":"approximately"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":172,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":12,"input_tokens":160,"output_tokens_details":{"text_tokens":12}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:13 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" "}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":173,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":13,"input_tokens":160,"output_tokens_details":{"text_tokens":13}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:14 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":"6"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":174,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":14,"input_tokens":160,"output_tokens_details":{"text_tokens":14}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:15 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" seconds"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":175,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":15,"input_tokens":160,"output_tokens_details":{"text_tokens":15}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:16 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" in"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":176,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":16,"input_tokens":160,"output_tokens_details":{"text_tokens":16}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:17 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" length"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":177,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":17,"input_tokens":160,"output_tokens_details":{"text_tokens":17}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:18 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":"—"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":178,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":18,"input_tokens":160,"output_tokens_details":{"text_tokens":18}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:19 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":"set"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":179,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":19,"input_tokens":160,"output_tokens_details":{"text_tokens":19}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:20 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" in"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":180,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":20,"input_tokens":160,"output_tokens_details":{"text_tokens":20}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:21 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" a"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":181,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":21,"input_tokens":160,"output_tokens_details":{"text_tokens":21}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:22 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" small"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":182,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":22,"input_tokens":160,"output_tokens_details":{"text_tokens":22}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:23 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":","}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":183,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":23,"input_tokens":160,"output_tokens_details":{"text_tokens":23}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:24 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" rever"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":184,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":24,"input_tokens":160,"output_tokens_details":{"text_tokens":24}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:25 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":"ber"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":185,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":25,"input_tokens":160,"output_tokens_details":{"text_tokens":25}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:26 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":"ant"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":186,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":26,"input_tokens":160,"output_tokens_details":{"text_tokens":26}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:27 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" indoor"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":187,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":27,"input_tokens":160,"output_tokens_details":{"text_tokens":27}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:28 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" space"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":188,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":28,"input_tokens":160,"output_tokens_details":{"text_tokens":28}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:29 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":","}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":189,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":29,"input_tokens":160,"output_tokens_details":{"text_tokens":29}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:30 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" likely"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":190,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":30,"input_tokens":160,"output_tokens_details":{"text_tokens":30}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:31 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" a"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":191,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":31,"input_tokens":160,"output_tokens_details":{"text_tokens":31}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:32 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" private"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":192,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":32,"input_tokens":160,"output_tokens_details":{"text_tokens":32}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:33 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" home"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":193,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":33,"input_tokens":160,"output_tokens_details":{"text_tokens":33}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:34 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" or"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":194,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":34,"input_tokens":160,"output_tokens_details":{"text_tokens":34}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:35 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" office"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":195,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":35,"input_tokens":160,"output_tokens_details":{"text_tokens":35}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:36 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":"."}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":196,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":36,"input_tokens":160,"output_tokens_details":{"text_tokens":36}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:37 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" The"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":197,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":37,"input_tokens":160,"output_tokens_details":{"text_tokens":37}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:38 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" dominant"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":198,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":38,"input_tokens":160,"output_tokens_details":{"text_tokens":38}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:39 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" feature"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":199,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":39,"input_tokens":160,"output_tokens_details":{"text_tokens":39}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:40 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" is"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":200,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":40,"input_tokens":160,"output_tokens_details":{"text_tokens":40}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:41 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" a"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":201,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":41,"input_tokens":160,"output_tokens_details":{"text_tokens":41}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:42 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" series"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":202,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":42,"input_tokens":160,"output_tokens_details":{"text_tokens":42}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:43 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" of"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":203,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":43,"input_tokens":160,"output_tokens_details":{"text_tokens":43}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:44 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" loud"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":204,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":44,"input_tokens":160,"output_tokens_details":{"text_tokens":44}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:45 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":","}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":205,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":45,"input_tokens":160,"output_tokens_details":{"text_tokens":45}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:46 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" metallic"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":206,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":46,"input_tokens":160,"output_tokens_details":{"text_tokens":46}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:47 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":","}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":207,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":47,"input_tokens":160,"output_tokens_details":{"text_tokens":47}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:48 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" rhyth"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":208,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":48,"input_tokens":160,"output_tokens_details":{"text_tokens":48}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:49 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":"mic"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":209,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":49,"input_tokens":160,"output_tokens_details":{"text_tokens":49}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:50 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" hammer"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":210,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":50,"input_tokens":160,"output_tokens_details":{"text_tokens":50}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:51 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":"ing"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":211,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":51,"input_tokens":160,"output_tokens_details":{"text_tokens":51}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:52 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" noises"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":212,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":52,"input_tokens":160,"output_tokens_details":{"text_tokens":52}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:53 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":","}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":213,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":53,"input_tokens":160,"output_tokens_details":{"text_tokens":53}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:54 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" occurring"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":214,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":54,"input_tokens":160,"output_tokens_details":{"text_tokens":54}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:55 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" at"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":215,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":55,"input_tokens":160,"output_tokens_details":{"text_tokens":55}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:56 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" a"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":216,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":56,"input_tokens":160,"output_tokens_details":{"text_tokens":56}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:57 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" regular"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":217,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":57,"input_tokens":160,"output_tokens_details":{"text_tokens":57}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:58 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" tempo"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":218,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":58,"input_tokens":160,"output_tokens_details":{"text_tokens":58}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:59 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" of"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":219,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":59,"input_tokens":160,"output_tokens_details":{"text_tokens":59}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:60 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" about"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":220,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":60,"input_tokens":160,"output_tokens_details":{"text_tokens":60}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:61 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" "}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":221,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":61,"input_tokens":160,"output_tokens_details":{"text_tokens":61}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:62 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":"1"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":222,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":62,"input_tokens":160,"output_tokens_details":{"text_tokens":62}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:63 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":"2"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":223,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":63,"input_tokens":160,"output_tokens_details":{"text_tokens":63}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:64 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":"0"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":224,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":64,"input_tokens":160,"output_tokens_details":{"text_tokens":64}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:65 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" beats"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":225,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":65,"input_tokens":160,"output_tokens_details":{"text_tokens":65}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:66 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" per"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":226,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":66,"input_tokens":160,"output_tokens_details":{"text_tokens":66}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:67 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" minute"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":227,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":67,"input_tokens":160,"output_tokens_details":{"text_tokens":67}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:68 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":","}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":228,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":68,"input_tokens":160,"output_tokens_details":{"text_tokens":68}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:69 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" with"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":229,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":69,"input_tokens":160,"output_tokens_details":{"text_tokens":69}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:70 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" each"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":230,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":70,"input_tokens":160,"output_tokens_details":{"text_tokens":70}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:71 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" blow"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":231,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":71,"input_tokens":160,"output_tokens_details":{"text_tokens":71}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:72 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" exhibiting"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":232,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":72,"input_tokens":160,"output_tokens_details":{"text_tokens":72}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:73 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" a"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":233,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":73,"input_tokens":160,"output_tokens_details":{"text_tokens":73}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:74 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" sharp"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":234,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":74,"input_tokens":160,"output_tokens_details":{"text_tokens":74}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:75 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":","}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":235,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":75,"input_tokens":160,"output_tokens_details":{"text_tokens":75}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:76 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" high"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":236,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":76,"input_tokens":160,"output_tokens_details":{"text_tokens":76}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:77 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":"-frequency"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":237,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":77,"input_tokens":160,"output_tokens_details":{"text_tokens":77}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:78 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" attack"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":238,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":78,"input_tokens":160,"output_tokens_details":{"text_tokens":78}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:79 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" and"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":239,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":79,"input_tokens":160,"output_tokens_details":{"text_tokens":79}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:80 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" brief"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":240,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":80,"input_tokens":160,"output_tokens_details":{"text_tokens":80}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:81 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" metallic"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":241,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":81,"input_tokens":160,"output_tokens_details":{"text_tokens":81}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:82 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" resonance"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":242,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":82,"input_tokens":160,"output_tokens_details":{"text_tokens":82}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:83 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":"."}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":243,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":83,"input_tokens":160,"output_tokens_details":{"text_tokens":83}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:84 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" These"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":244,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":84,"input_tokens":160,"output_tokens_details":{"text_tokens":84}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:85 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" impacts"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":245,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":85,"input_tokens":160,"output_tokens_details":{"text_tokens":85}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:86 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" are"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":246,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":86,"input_tokens":160,"output_tokens_details":{"text_tokens":86}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:87 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" highly"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":247,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":87,"input_tokens":160,"output_tokens_details":{"text_tokens":87}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:88 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" regular"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":248,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":88,"input_tokens":160,"output_tokens_details":{"text_tokens":88}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:89 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":","}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":249,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":89,"input_tokens":160,"output_tokens_details":{"text_tokens":89}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:90 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" suggesting"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":250,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":90,"input_tokens":160,"output_tokens_details":{"text_tokens":90}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:91 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" the"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":251,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":91,"input_tokens":160,"output_tokens_details":{"text_tokens":91}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:92 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" use"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":252,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":92,"input_tokens":160,"output_tokens_details":{"text_tokens":92}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:93 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" of"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":253,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":93,"input_tokens":160,"output_tokens_details":{"text_tokens":93}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:94 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" a"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":254,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":94,"input_tokens":160,"output_tokens_details":{"text_tokens":94}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:95 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" power"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":255,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":95,"input_tokens":160,"output_tokens_details":{"text_tokens":95}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:96 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" tool"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":256,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":96,"input_tokens":160,"output_tokens_details":{"text_tokens":96}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:97 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" such"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":257,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":97,"input_tokens":160,"output_tokens_details":{"text_tokens":97}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:98 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" as"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":258,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":98,"input_tokens":160,"output_tokens_details":{"text_tokens":98}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:99 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" a"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":259,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":99,"input_tokens":160,"output_tokens_details":{"text_tokens":99}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:100 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" pne"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":260,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":100,"input_tokens":160,"output_tokens_details":{"text_tokens":100}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:101 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":"umatic"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":261,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":101,"input_tokens":160,"output_tokens_details":{"text_tokens":101}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:102 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" nail"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":262,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":102,"input_tokens":160,"output_tokens_details":{"text_tokens":102}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:103 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" gun"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":263,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":103,"input_tokens":160,"output_tokens_details":{"text_tokens":103}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:104 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" or"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":264,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":104,"input_tokens":160,"output_tokens_details":{"text_tokens":104}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:105 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" electric"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":265,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":105,"input_tokens":160,"output_tokens_details":{"text_tokens":105}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:106 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" hammer"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":266,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":106,"input_tokens":160,"output_tokens_details":{"text_tokens":106}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:107 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":","}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":267,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":107,"input_tokens":160,"output_tokens_details":{"text_tokens":107}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:108 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" rather"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":268,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":108,"input_tokens":160,"output_tokens_details":{"text_tokens":108}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:109 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" than"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":269,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":109,"input_tokens":160,"output_tokens_details":{"text_tokens":109}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:110 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" a"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":270,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":110,"input_tokens":160,"output_tokens_details":{"text_tokens":110}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:111 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" hand"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":271,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":111,"input_tokens":160,"output_tokens_details":{"text_tokens":111}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:112 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":"-held"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":272,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":112,"input_tokens":160,"output_tokens_details":{"text_tokens":112}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:113 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" hammer"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":273,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":113,"input_tokens":160,"output_tokens_details":{"text_tokens":113}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:114 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":".\n\n"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":274,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":114,"input_tokens":160,"output_tokens_details":{"text_tokens":114}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:115 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":"Overlay"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":275,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":115,"input_tokens":160,"output_tokens_details":{"text_tokens":115}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:116 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":"ing"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":276,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":116,"input_tokens":160,"output_tokens_details":{"text_tokens":116}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:117 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" this"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":277,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":117,"input_tokens":160,"output_tokens_details":{"text_tokens":117}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:118 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" mechanical"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":278,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":118,"input_tokens":160,"output_tokens_details":{"text_tokens":118}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:119 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" sound"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":279,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":119,"input_tokens":160,"output_tokens_details":{"text_tokens":119}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:120 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":","}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":280,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":120,"input_tokens":160,"output_tokens_details":{"text_tokens":120}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:121 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" a"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":281,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":121,"input_tokens":160,"output_tokens_details":{"text_tokens":121}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:122 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" single"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":282,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":122,"input_tokens":160,"output_tokens_details":{"text_tokens":122}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:123 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" male"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":283,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":123,"input_tokens":160,"output_tokens_details":{"text_tokens":123}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:124 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" voice"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":284,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":124,"input_tokens":160,"output_tokens_details":{"text_tokens":124}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:125 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":","}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":285,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":125,"input_tokens":160,"output_tokens_details":{"text_tokens":125}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:126 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" speaking"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":286,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":126,"input_tokens":160,"output_tokens_details":{"text_tokens":126}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:127 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" in"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":287,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":127,"input_tokens":160,"output_tokens_details":{"text_tokens":127}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:128 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" standard"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":288,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":128,"input_tokens":160,"output_tokens_details":{"text_tokens":128}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:129 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" Mandarin"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":289,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":129,"input_tokens":160,"output_tokens_details":{"text_tokens":129}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:130 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" Chinese"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":290,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":130,"input_tokens":160,"output_tokens_details":{"text_tokens":130}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:131 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":","}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":291,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":131,"input_tokens":160,"output_tokens_details":{"text_tokens":131}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:132 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" delivers"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":292,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":132,"input_tokens":160,"output_tokens_details":{"text_tokens":132}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:133 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" a"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":293,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":133,"input_tokens":160,"output_tokens_details":{"text_tokens":133}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:134 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" brief"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":294,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":134,"input_tokens":160,"output_tokens_details":{"text_tokens":134}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:135 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":","}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":295,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":135,"input_tokens":160,"output_tokens_details":{"text_tokens":135}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:136 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" ex"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":296,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":136,"input_tokens":160,"output_tokens_details":{"text_tokens":136}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:137 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":"asper"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":297,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":137,"input_tokens":160,"output_tokens_details":{"text_tokens":137}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:138 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":"ated"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":298,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":138,"input_tokens":160,"output_tokens_details":{"text_tokens":138}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:139 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" complaint"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":299,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":139,"input_tokens":160,"output_tokens_details":{"text_tokens":139}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:140 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":"."}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":300,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":140,"input_tokens":160,"output_tokens_details":{"text_tokens":140}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:141 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" His"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":301,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":141,"input_tokens":160,"output_tokens_details":{"text_tokens":141}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:142 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" tone"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":302,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":142,"input_tokens":160,"output_tokens_details":{"text_tokens":142}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:143 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" is"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":303,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":143,"input_tokens":160,"output_tokens_details":{"text_tokens":143}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:144 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" weary"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":304,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":144,"input_tokens":160,"output_tokens_details":{"text_tokens":144}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:145 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" and"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":305,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":145,"input_tokens":160,"output_tokens_details":{"text_tokens":145}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:146 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" resigned"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":306,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":146,"input_tokens":160,"output_tokens_details":{"text_tokens":146}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:147 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":","}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":307,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":147,"input_tokens":160,"output_tokens_details":{"text_tokens":147}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:148 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" marked"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":308,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":148,"input_tokens":160,"output_tokens_details":{"text_tokens":148}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:149 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" by"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":309,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":149,"input_tokens":160,"output_tokens_details":{"text_tokens":149}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:150 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" a"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":310,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":150,"input_tokens":160,"output_tokens_details":{"text_tokens":150}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:151 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" sigh"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":311,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":151,"input_tokens":160,"output_tokens_details":{"text_tokens":151}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:152 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" at"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":312,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":152,"input_tokens":160,"output_tokens_details":{"text_tokens":152}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:153 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" the"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":313,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":153,"input_tokens":160,"output_tokens_details":{"text_tokens":153}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:154 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" start"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":314,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":154,"input_tokens":160,"output_tokens_details":{"text_tokens":154}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:155 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" and"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":315,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":155,"input_tokens":160,"output_tokens_details":{"text_tokens":155}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:156 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" a"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":316,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":156,"input_tokens":160,"output_tokens_details":{"text_tokens":156}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:157 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" drawn"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":317,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":157,"input_tokens":160,"output_tokens_details":{"text_tokens":157}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:158 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":"-out"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":318,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":158,"input_tokens":160,"output_tokens_details":{"text_tokens":158}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:159 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":","}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":319,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":159,"input_tokens":160,"output_tokens_details":{"text_tokens":159}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:160 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" slightly"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":320,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":160,"input_tokens":160,"output_tokens_details":{"text_tokens":160}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:161 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" wh"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":321,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":161,"input_tokens":160,"output_tokens_details":{"text_tokens":161}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:162 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":"ining"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":322,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":162,"input_tokens":160,"output_tokens_details":{"text_tokens":162}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:163 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" int"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":323,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":163,"input_tokens":160,"output_tokens_details":{"text_tokens":163}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:164 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":"onation"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":324,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":164,"input_tokens":160,"output_tokens_details":{"text_tokens":164}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:165 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":"."}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":325,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":165,"input_tokens":160,"output_tokens_details":{"text_tokens":165}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:166 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" The"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":326,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":166,"input_tokens":160,"output_tokens_details":{"text_tokens":166}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:167 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" spoken"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":327,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":167,"input_tokens":160,"output_tokens_details":{"text_tokens":167}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:168 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" phrase"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":328,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":168,"input_tokens":160,"output_tokens_details":{"text_tokens":168}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:169 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":","}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":329,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":169,"input_tokens":160,"output_tokens_details":{"text_tokens":169}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:170 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" “"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":330,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":170,"input_tokens":160,"output_tokens_details":{"text_tokens":170}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:171 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":"哎"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":331,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":171,"input_tokens":160,"output_tokens_details":{"text_tokens":171}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:172 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":"呀"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":332,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":172,"input_tokens":160,"output_tokens_details":{"text_tokens":172}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:173 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":","}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":333,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":173,"input_tokens":160,"output_tokens_details":{"text_tokens":173}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:174 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":"这样"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":334,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":174,"input_tokens":160,"output_tokens_details":{"text_tokens":174}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:175 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":"我还"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":335,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":175,"input_tokens":160,"output_tokens_details":{"text_tokens":175}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:176 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":"怎么"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":336,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":176,"input_tokens":160,"output_tokens_details":{"text_tokens":176}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:177 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":"安静"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":337,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":177,"input_tokens":160,"output_tokens_details":{"text_tokens":177}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:178 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":"工作"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":338,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":178,"input_tokens":160,"output_tokens_details":{"text_tokens":178}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:179 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":"啊"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":339,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":179,"input_tokens":160,"output_tokens_details":{"text_tokens":179}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:180 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":"?”"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":340,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":180,"input_tokens":160,"output_tokens_details":{"text_tokens":180}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:181 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" (“"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":341,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":181,"input_tokens":160,"output_tokens_details":{"text_tokens":181}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:182 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":"A"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":342,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":182,"input_tokens":160,"output_tokens_details":{"text_tokens":182}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:183 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":"iy"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":343,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":183,"input_tokens":160,"output_tokens_details":{"text_tokens":183}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:184 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":"ah"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":344,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":184,"input_tokens":160,"output_tokens_details":{"text_tokens":184}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:185 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":","}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":345,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":185,"input_tokens":160,"output_tokens_details":{"text_tokens":185}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:186 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" how"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":346,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":186,"input_tokens":160,"output_tokens_details":{"text_tokens":186}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:187 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" can"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":347,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":187,"input_tokens":160,"output_tokens_details":{"text_tokens":187}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:188 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" I"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":348,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":188,"input_tokens":160,"output_tokens_details":{"text_tokens":188}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:189 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" work"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":349,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":189,"input_tokens":160,"output_tokens_details":{"text_tokens":189}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:190 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" quietly"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":350,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":190,"input_tokens":160,"output_tokens_details":{"text_tokens":190}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:191 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" like"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":351,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":191,"input_tokens":160,"output_tokens_details":{"text_tokens":191}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:192 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" this"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":352,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":192,"input_tokens":160,"output_tokens_details":{"text_tokens":192}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:193 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":"?”"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":353,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":193,"input_tokens":160,"output_tokens_details":{"text_tokens":193}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:194 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":"),"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":354,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":194,"input_tokens":160,"output_tokens_details":{"text_tokens":194}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:195 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" directly"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":355,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":195,"input_tokens":160,"output_tokens_details":{"text_tokens":195}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:196 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" addresses"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":356,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":196,"input_tokens":160,"output_tokens_details":{"text_tokens":196}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:197 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" the"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":357,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":197,"input_tokens":160,"output_tokens_details":{"text_tokens":197}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:198 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" disruptive"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":358,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":198,"input_tokens":160,"output_tokens_details":{"text_tokens":198}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:199 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" nature"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":359,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":199,"input_tokens":160,"output_tokens_details":{"text_tokens":199}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:200 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" of"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":360,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":200,"input_tokens":160,"output_tokens_details":{"text_tokens":200}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:201 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" the"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":361,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":201,"input_tokens":160,"output_tokens_details":{"text_tokens":201}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:202 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" hammer"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":362,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":202,"input_tokens":160,"output_tokens_details":{"text_tokens":202}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:203 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":"ing"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":363,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":203,"input_tokens":160,"output_tokens_details":{"text_tokens":203}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:204 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":","}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":364,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":204,"input_tokens":160,"output_tokens_details":{"text_tokens":204}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:205 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" indicating"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":365,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":205,"input_tokens":160,"output_tokens_details":{"text_tokens":205}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:206 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" a"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":366,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":206,"input_tokens":160,"output_tokens_details":{"text_tokens":206}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:207 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" personal"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":367,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":207,"input_tokens":160,"output_tokens_details":{"text_tokens":207}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:208 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":","}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":368,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":208,"input_tokens":160,"output_tokens_details":{"text_tokens":208}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:209 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" informal"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":369,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":209,"input_tokens":160,"output_tokens_details":{"text_tokens":209}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:210 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" relationship"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":370,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":210,"input_tokens":160,"output_tokens_details":{"text_tokens":210}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:211 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" with"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":371,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":211,"input_tokens":160,"output_tokens_details":{"text_tokens":211}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:212 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" the"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":372,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":212,"input_tokens":160,"output_tokens_details":{"text_tokens":212}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:213 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" person"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":373,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":213,"input_tokens":160,"output_tokens_details":{"text_tokens":213}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:214 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" or"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":374,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":214,"input_tokens":160,"output_tokens_details":{"text_tokens":214}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:215 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" people"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":375,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":215,"input_tokens":160,"output_tokens_details":{"text_tokens":215}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:216 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" responsible"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":376,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":216,"input_tokens":160,"output_tokens_details":{"text_tokens":216}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:217 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" for"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":377,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":217,"input_tokens":160,"output_tokens_details":{"text_tokens":217}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:218 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" the"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":378,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":218,"input_tokens":160,"output_tokens_details":{"text_tokens":218}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:219 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" noise"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":379,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":219,"input_tokens":160,"output_tokens_details":{"text_tokens":219}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:220 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":".\n\n"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":380,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":220,"input_tokens":160,"output_tokens_details":{"text_tokens":220}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:221 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":"The"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":381,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":221,"input_tokens":160,"output_tokens_details":{"text_tokens":221}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:222 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" recording"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":382,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":222,"input_tokens":160,"output_tokens_details":{"text_tokens":222}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:223 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" is"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":383,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":223,"input_tokens":160,"output_tokens_details":{"text_tokens":223}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:224 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" of"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":384,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":224,"input_tokens":160,"output_tokens_details":{"text_tokens":224}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:225 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" moderate"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":385,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":225,"input_tokens":160,"output_tokens_details":{"text_tokens":225}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:226 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" quality"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":386,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":226,"input_tokens":160,"output_tokens_details":{"text_tokens":226}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:227 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":","}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":387,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":227,"input_tokens":160,"output_tokens_details":{"text_tokens":227}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:228 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" with"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":388,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":228,"input_tokens":160,"output_tokens_details":{"text_tokens":228}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:229 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" both"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":389,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":229,"input_tokens":160,"output_tokens_details":{"text_tokens":229}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:230 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" the"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":390,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":230,"input_tokens":160,"output_tokens_details":{"text_tokens":230}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:231 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" voice"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":391,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":231,"input_tokens":160,"output_tokens_details":{"text_tokens":231}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:232 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" and"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":392,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":232,"input_tokens":160,"output_tokens_details":{"text_tokens":232}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:233 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" hammer"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":393,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":233,"input_tokens":160,"output_tokens_details":{"text_tokens":233}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:234 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":"ing"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":394,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":234,"input_tokens":160,"output_tokens_details":{"text_tokens":234}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:235 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" clear"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":395,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":235,"input_tokens":160,"output_tokens_details":{"text_tokens":235}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:236 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" and"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":396,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":236,"input_tokens":160,"output_tokens_details":{"text_tokens":236}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:237 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" intellig"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":397,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":237,"input_tokens":160,"output_tokens_details":{"text_tokens":237}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:238 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":"ible"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":398,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":238,"input_tokens":160,"output_tokens_details":{"text_tokens":238}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:239 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":","}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":399,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":239,"input_tokens":160,"output_tokens_details":{"text_tokens":239}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:240 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" though"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":400,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":240,"input_tokens":160,"output_tokens_details":{"text_tokens":240}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:241 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" the"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":401,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":241,"input_tokens":160,"output_tokens_details":{"text_tokens":241}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:242 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" metallic"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":402,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":242,"input_tokens":160,"output_tokens_details":{"text_tokens":242}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:243 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" sounds"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":403,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":243,"input_tokens":160,"output_tokens_details":{"text_tokens":243}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:244 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" are"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":404,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":244,"input_tokens":160,"output_tokens_details":{"text_tokens":244}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:245 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" slightly"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":405,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":245,"input_tokens":160,"output_tokens_details":{"text_tokens":245}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:246 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" distorted"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":406,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":246,"input_tokens":160,"output_tokens_details":{"text_tokens":246}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:247 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" and"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":407,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":247,"input_tokens":160,"output_tokens_details":{"text_tokens":247}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:248 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" clipped"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":408,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":248,"input_tokens":160,"output_tokens_details":{"text_tokens":248}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:249 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" at"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":409,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":249,"input_tokens":160,"output_tokens_details":{"text_tokens":249}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:250 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" their"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":410,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":250,"input_tokens":160,"output_tokens_details":{"text_tokens":250}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:251 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" lou"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":411,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":251,"input_tokens":160,"output_tokens_details":{"text_tokens":251}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:252 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":"dest"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":412,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":252,"input_tokens":160,"output_tokens_details":{"text_tokens":252}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:253 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" peaks"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":413,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":253,"input_tokens":160,"output_tokens_details":{"text_tokens":253}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:254 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":"."}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":414,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":254,"input_tokens":160,"output_tokens_details":{"text_tokens":254}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:255 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" There"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":415,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":255,"input_tokens":160,"output_tokens_details":{"text_tokens":255}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:256 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" is"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":416,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":256,"input_tokens":160,"output_tokens_details":{"text_tokens":256}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:257 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" a"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":417,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":257,"input_tokens":160,"output_tokens_details":{"text_tokens":257}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:258 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" faint"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":418,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":258,"input_tokens":160,"output_tokens_details":{"text_tokens":258}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:259 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":","}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":419,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":259,"input_tokens":160,"output_tokens_details":{"text_tokens":259}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:260 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" consistent"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":420,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":260,"input_tokens":160,"output_tokens_details":{"text_tokens":260}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:261 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" electronic"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":421,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":261,"input_tokens":160,"output_tokens_details":{"text_tokens":261}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:262 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" his"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":422,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":262,"input_tokens":160,"output_tokens_details":{"text_tokens":262}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:263 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":"s"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":423,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":263,"input_tokens":160,"output_tokens_details":{"text_tokens":263}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:264 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" throughout"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":424,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":264,"input_tokens":160,"output_tokens_details":{"text_tokens":264}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:265 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":","}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":425,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":265,"input_tokens":160,"output_tokens_details":{"text_tokens":265}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:266 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" and"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":426,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":266,"input_tokens":160,"output_tokens_details":{"text_tokens":266}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:267 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" a"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":427,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":267,"input_tokens":160,"output_tokens_details":{"text_tokens":267}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:268 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" low"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":428,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":268,"input_tokens":160,"output_tokens_details":{"text_tokens":268}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:269 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":"-frequency"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":429,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":269,"input_tokens":160,"output_tokens_details":{"text_tokens":269}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:270 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" hum"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":430,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":270,"input_tokens":160,"output_tokens_details":{"text_tokens":270}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:271 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":"—"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":431,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":271,"input_tokens":160,"output_tokens_details":{"text_tokens":271}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:272 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":"pot"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":432,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":272,"input_tokens":160,"output_tokens_details":{"text_tokens":272}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:273 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":"entially"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":433,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":273,"input_tokens":160,"output_tokens_details":{"text_tokens":273}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:274 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" from"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":434,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":274,"input_tokens":160,"output_tokens_details":{"text_tokens":274}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:275 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" nearby"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":435,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":275,"input_tokens":160,"output_tokens_details":{"text_tokens":275}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:276 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" electrical"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":436,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":276,"input_tokens":160,"output_tokens_details":{"text_tokens":276}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:277 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" equipment"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":437,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":277,"input_tokens":160,"output_tokens_details":{"text_tokens":277}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:278 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":"—"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":438,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":278,"input_tokens":160,"output_tokens_details":{"text_tokens":278}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:279 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":"can"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":439,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":279,"input_tokens":160,"output_tokens_details":{"text_tokens":279}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:280 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" be"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":440,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":280,"input_tokens":160,"output_tokens_details":{"text_tokens":280}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:281 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" detected"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":441,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":281,"input_tokens":160,"output_tokens_details":{"text_tokens":281}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:282 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":"."}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":442,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":282,"input_tokens":160,"output_tokens_details":{"text_tokens":282}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:283 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" The"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":443,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":283,"input_tokens":160,"output_tokens_details":{"text_tokens":283}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:284 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" room"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":444,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":284,"input_tokens":160,"output_tokens_details":{"text_tokens":284}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:285 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":"’s"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":445,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":285,"input_tokens":160,"output_tokens_details":{"text_tokens":285}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:286 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" ac"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":446,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":286,"input_tokens":160,"output_tokens_details":{"text_tokens":286}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:287 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":"oust"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":447,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":287,"input_tokens":160,"output_tokens_details":{"text_tokens":287}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:288 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":"ics"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":448,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":288,"input_tokens":160,"output_tokens_details":{"text_tokens":288}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:289 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" are"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":449,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":289,"input_tokens":160,"output_tokens_details":{"text_tokens":289}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:290 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" “"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":450,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":290,"input_tokens":160,"output_tokens_details":{"text_tokens":290}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:291 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":"live"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":451,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":291,"input_tokens":160,"output_tokens_details":{"text_tokens":291}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:292 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":",”"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":452,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":292,"input_tokens":160,"output_tokens_details":{"text_tokens":292}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:293 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" with"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":453,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":293,"input_tokens":160,"output_tokens_details":{"text_tokens":293}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:294 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" short"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":454,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":294,"input_tokens":160,"output_tokens_details":{"text_tokens":294}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:295 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":","}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":455,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":295,"input_tokens":160,"output_tokens_details":{"text_tokens":295}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:296 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" bright"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":456,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":296,"input_tokens":160,"output_tokens_details":{"text_tokens":296}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:297 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" rever"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":457,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":297,"input_tokens":160,"output_tokens_details":{"text_tokens":297}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:298 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":"ber"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":458,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":298,"input_tokens":160,"output_tokens_details":{"text_tokens":298}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:299 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":"ation"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":459,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":299,"input_tokens":160,"output_tokens_details":{"text_tokens":299}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:300 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" tails"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":460,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":300,"input_tokens":160,"output_tokens_details":{"text_tokens":300}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:301 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" on"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":461,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":301,"input_tokens":160,"output_tokens_details":{"text_tokens":301}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:302 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" both"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":462,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":302,"input_tokens":160,"output_tokens_details":{"text_tokens":302}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:303 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" the"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":463,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":303,"input_tokens":160,"output_tokens_details":{"text_tokens":303}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:304 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" voice"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":464,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":304,"input_tokens":160,"output_tokens_details":{"text_tokens":304}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:305 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" and"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":465,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":305,"input_tokens":160,"output_tokens_details":{"text_tokens":305}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:306 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" hammer"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":466,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":306,"input_tokens":160,"output_tokens_details":{"text_tokens":306}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:307 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":"ing"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":467,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":307,"input_tokens":160,"output_tokens_details":{"text_tokens":307}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:308 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":","}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":468,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":308,"input_tokens":160,"output_tokens_details":{"text_tokens":308}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:309 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" suggesting"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":469,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":309,"input_tokens":160,"output_tokens_details":{"text_tokens":309}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:310 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" hard"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":470,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":310,"input_tokens":160,"output_tokens_details":{"text_tokens":310}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:311 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" surfaces"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":471,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":311,"input_tokens":160,"output_tokens_details":{"text_tokens":311}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:312 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" and"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":472,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":312,"input_tokens":160,"output_tokens_details":{"text_tokens":312}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:313 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" a"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":473,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":313,"input_tokens":160,"output_tokens_details":{"text_tokens":313}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:314 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" small"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":474,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":314,"input_tokens":160,"output_tokens_details":{"text_tokens":314}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:315 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":","}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":475,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":315,"input_tokens":160,"output_tokens_details":{"text_tokens":315}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:316 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" enclosed"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":476,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":316,"input_tokens":160,"output_tokens_details":{"text_tokens":316}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:317 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" space"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":477,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":317,"input_tokens":160,"output_tokens_details":{"text_tokens":317}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:318 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":".\n\n"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":478,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":318,"input_tokens":160,"output_tokens_details":{"text_tokens":318}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:319 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":"No"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":479,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":319,"input_tokens":160,"output_tokens_details":{"text_tokens":319}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:320 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" other"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":480,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":320,"input_tokens":160,"output_tokens_details":{"text_tokens":320}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:321 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" human"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":481,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":321,"input_tokens":160,"output_tokens_details":{"text_tokens":321}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:322 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" voices"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":482,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":322,"input_tokens":160,"output_tokens_details":{"text_tokens":322}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:323 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":","}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":483,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":323,"input_tokens":160,"output_tokens_details":{"text_tokens":323}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:324 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" background"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":484,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":324,"input_tokens":160,"output_tokens_details":{"text_tokens":324}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:325 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" conversations"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":485,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":325,"input_tokens":160,"output_tokens_details":{"text_tokens":325}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:326 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":","}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":486,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":326,"input_tokens":160,"output_tokens_details":{"text_tokens":326}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:327 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" or"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":487,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":327,"input_tokens":160,"output_tokens_details":{"text_tokens":327}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:328 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" environmental"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":488,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":328,"input_tokens":160,"output_tokens_details":{"text_tokens":328}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:329 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" cues"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":489,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":329,"input_tokens":160,"output_tokens_details":{"text_tokens":329}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:330 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" are"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":490,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":330,"input_tokens":160,"output_tokens_details":{"text_tokens":330}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:331 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" present"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":491,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":331,"input_tokens":160,"output_tokens_details":{"text_tokens":331}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:332 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":","}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":492,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":332,"input_tokens":160,"output_tokens_details":{"text_tokens":332}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:333 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" reinforcing"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":493,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":333,"input_tokens":160,"output_tokens_details":{"text_tokens":333}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:334 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" the"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":494,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":334,"input_tokens":160,"output_tokens_details":{"text_tokens":334}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:335 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" impression"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":495,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":335,"input_tokens":160,"output_tokens_details":{"text_tokens":335}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:336 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" of"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":496,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":336,"input_tokens":160,"output_tokens_details":{"text_tokens":336}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:337 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" a"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":497,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":337,"input_tokens":160,"output_tokens_details":{"text_tokens":337}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:338 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" solitary"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":498,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":338,"input_tokens":160,"output_tokens_details":{"text_tokens":338}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:339 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":","}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":499,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":339,"input_tokens":160,"output_tokens_details":{"text_tokens":339}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:340 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" private"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":500,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":340,"input_tokens":160,"output_tokens_details":{"text_tokens":340}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:341 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" setting"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":501,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":341,"input_tokens":160,"output_tokens_details":{"text_tokens":341}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:342 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":"."}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":502,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":342,"input_tokens":160,"output_tokens_details":{"text_tokens":342}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:343 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" The"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":503,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":343,"input_tokens":160,"output_tokens_details":{"text_tokens":343}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:344 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" overall"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":504,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":344,"input_tokens":160,"output_tokens_details":{"text_tokens":344}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:345 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" atmosphere"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":505,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":345,"input_tokens":160,"output_tokens_details":{"text_tokens":345}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:346 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" is"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":506,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":346,"input_tokens":160,"output_tokens_details":{"text_tokens":346}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:347 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" one"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":507,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":347,"input_tokens":160,"output_tokens_details":{"text_tokens":347}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:348 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" of"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":508,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":348,"input_tokens":160,"output_tokens_details":{"text_tokens":348}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:349 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" mild"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":509,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":349,"input_tokens":160,"output_tokens_details":{"text_tokens":349}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:350 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" frustration"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":510,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":350,"input_tokens":160,"output_tokens_details":{"text_tokens":350}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:351 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" and"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":511,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":351,"input_tokens":160,"output_tokens_details":{"text_tokens":351}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:352 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" resignation"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":512,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":352,"input_tokens":160,"output_tokens_details":{"text_tokens":352}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:353 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":","}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":513,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":353,"input_tokens":160,"output_tokens_details":{"text_tokens":353}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:354 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" with"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":514,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":354,"input_tokens":160,"output_tokens_details":{"text_tokens":354}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:355 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" the"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":515,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":355,"input_tokens":160,"output_tokens_details":{"text_tokens":355}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:356 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" speaker"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":516,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":356,"input_tokens":160,"output_tokens_details":{"text_tokens":356}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:357 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":"’s"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":517,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":357,"input_tokens":160,"output_tokens_details":{"text_tokens":357}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:358 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" tone"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":518,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":358,"input_tokens":160,"output_tokens_details":{"text_tokens":358}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:359 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" and"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":519,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":359,"input_tokens":160,"output_tokens_details":{"text_tokens":359}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:360 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" the"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":520,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":360,"input_tokens":160,"output_tokens_details":{"text_tokens":360}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:361 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" content"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":521,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":361,"input_tokens":160,"output_tokens_details":{"text_tokens":361}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:362 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" of"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":522,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":362,"input_tokens":160,"output_tokens_details":{"text_tokens":362}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:363 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" his"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":523,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":363,"input_tokens":160,"output_tokens_details":{"text_tokens":363}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:364 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" complaint"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":524,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":364,"input_tokens":160,"output_tokens_details":{"text_tokens":364}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:365 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" expressing"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":525,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":365,"input_tokens":160,"output_tokens_details":{"text_tokens":365}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:366 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" the"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":526,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":366,"input_tokens":160,"output_tokens_details":{"text_tokens":366}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:367 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" classic"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":527,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":367,"input_tokens":160,"output_tokens_details":{"text_tokens":367}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:368 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" annoyance"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":528,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":368,"input_tokens":160,"output_tokens_details":{"text_tokens":368}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:369 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" of"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":529,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":369,"input_tokens":160,"output_tokens_details":{"text_tokens":369}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:370 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" being"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":530,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":370,"input_tokens":160,"output_tokens_details":{"text_tokens":370}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:371 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" unable"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":531,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":371,"input_tokens":160,"output_tokens_details":{"text_tokens":371}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:372 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" to"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":532,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":372,"input_tokens":160,"output_tokens_details":{"text_tokens":372}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:373 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" concentrate"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":533,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":373,"input_tokens":160,"output_tokens_details":{"text_tokens":373}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:374 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" or"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":534,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":374,"input_tokens":160,"output_tokens_details":{"text_tokens":374}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:375 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" work"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":535,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":375,"input_tokens":160,"output_tokens_details":{"text_tokens":375}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:376 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" in"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":536,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":376,"input_tokens":160,"output_tokens_details":{"text_tokens":376}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:377 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" peace"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":537,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":377,"input_tokens":160,"output_tokens_details":{"text_tokens":377}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:378 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" due"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":538,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":378,"input_tokens":160,"output_tokens_details":{"text_tokens":378}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:379 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" to"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":539,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":379,"input_tokens":160,"output_tokens_details":{"text_tokens":379}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:380 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" disruptive"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":540,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":380,"input_tokens":160,"output_tokens_details":{"text_tokens":380}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:381 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":","}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":541,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":381,"input_tokens":160,"output_tokens_details":{"text_tokens":381}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:382 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" persistent"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":542,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":382,"input_tokens":160,"output_tokens_details":{"text_tokens":382}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:383 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" noise"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":543,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":383,"input_tokens":160,"output_tokens_details":{"text_tokens":383}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:384 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":".\n\n"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":544,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":384,"input_tokens":160,"output_tokens_details":{"text_tokens":384}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:385 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":"In"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":545,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":385,"input_tokens":160,"output_tokens_details":{"text_tokens":385}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:386 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" summary"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":546,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":386,"input_tokens":160,"output_tokens_details":{"text_tokens":386}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:387 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":","}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":547,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":387,"input_tokens":160,"output_tokens_details":{"text_tokens":387}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:388 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" the"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":548,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":388,"input_tokens":160,"output_tokens_details":{"text_tokens":388}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:389 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" recording"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":549,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":389,"input_tokens":160,"output_tokens_details":{"text_tokens":389}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:390 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" captures"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":550,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":390,"input_tokens":160,"output_tokens_details":{"text_tokens":390}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:391 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" a"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":551,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":391,"input_tokens":160,"output_tokens_details":{"text_tokens":391}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:392 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" brief"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":552,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":392,"input_tokens":160,"output_tokens_details":{"text_tokens":392}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:393 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":","}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":553,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":393,"input_tokens":160,"output_tokens_details":{"text_tokens":393}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:394 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" personal"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":554,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":394,"input_tokens":160,"output_tokens_details":{"text_tokens":394}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:395 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" moment"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":555,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":395,"input_tokens":160,"output_tokens_details":{"text_tokens":395}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:396 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" of"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":556,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":396,"input_tokens":160,"output_tokens_details":{"text_tokens":396}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:397 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" complaint"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":557,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":397,"input_tokens":160,"output_tokens_details":{"text_tokens":397}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:398 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":":"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":558,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":398,"input_tokens":160,"output_tokens_details":{"text_tokens":398}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:399 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" a"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":559,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":399,"input_tokens":160,"output_tokens_details":{"text_tokens":399}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:400 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" Mandarin"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":560,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":400,"input_tokens":160,"output_tokens_details":{"text_tokens":400}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:401 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":"-speaking"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":561,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":401,"input_tokens":160,"output_tokens_details":{"text_tokens":401}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:402 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" man"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":562,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":402,"input_tokens":160,"output_tokens_details":{"text_tokens":402}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:403 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":","}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":563,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":403,"input_tokens":160,"output_tokens_details":{"text_tokens":403}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:404 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" working"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":564,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":404,"input_tokens":160,"output_tokens_details":{"text_tokens":404}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:405 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" alone"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":565,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":405,"input_tokens":160,"output_tokens_details":{"text_tokens":405}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:406 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" in"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":566,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":406,"input_tokens":160,"output_tokens_details":{"text_tokens":406}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:407 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" a"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":567,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":407,"input_tokens":160,"output_tokens_details":{"text_tokens":407}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:408 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" quiet"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":568,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":408,"input_tokens":160,"output_tokens_details":{"text_tokens":408}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:409 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":","}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":569,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":409,"input_tokens":160,"output_tokens_details":{"text_tokens":409}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:410 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" rever"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":570,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":410,"input_tokens":160,"output_tokens_details":{"text_tokens":410}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:411 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":"ber"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":571,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":411,"input_tokens":160,"output_tokens_details":{"text_tokens":411}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:412 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":"ant"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":572,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":412,"input_tokens":160,"output_tokens_details":{"text_tokens":412}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:413 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" indoor"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":573,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":413,"input_tokens":160,"output_tokens_details":{"text_tokens":413}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:414 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" space"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":574,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":414,"input_tokens":160,"output_tokens_details":{"text_tokens":414}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:415 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":","}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":575,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":415,"input_tokens":160,"output_tokens_details":{"text_tokens":415}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:416 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" is"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":576,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":416,"input_tokens":160,"output_tokens_details":{"text_tokens":416}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:417 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" interrupted"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":577,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":417,"input_tokens":160,"output_tokens_details":{"text_tokens":417}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:418 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" by"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":578,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":418,"input_tokens":160,"output_tokens_details":{"text_tokens":418}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:419 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" the"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":579,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":419,"input_tokens":160,"output_tokens_details":{"text_tokens":419}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:420 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" rhyth"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":580,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":420,"input_tokens":160,"output_tokens_details":{"text_tokens":420}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:421 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":"mic"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":581,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":421,"input_tokens":160,"output_tokens_details":{"text_tokens":421}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:422 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" operation"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":582,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":422,"input_tokens":160,"output_tokens_details":{"text_tokens":422}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:423 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" of"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":583,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":423,"input_tokens":160,"output_tokens_details":{"text_tokens":423}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:424 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" a"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":584,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":424,"input_tokens":160,"output_tokens_details":{"text_tokens":424}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:425 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" power"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":585,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":425,"input_tokens":160,"output_tokens_details":{"text_tokens":425}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:426 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" tool"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":586,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":426,"input_tokens":160,"output_tokens_details":{"text_tokens":426}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:427 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":","}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":587,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":427,"input_tokens":160,"output_tokens_details":{"text_tokens":427}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:428 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" prompting"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":588,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":428,"input_tokens":160,"output_tokens_details":{"text_tokens":428}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:429 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" him"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":589,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":429,"input_tokens":160,"output_tokens_details":{"text_tokens":429}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:430 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" to"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":590,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":430,"input_tokens":160,"output_tokens_details":{"text_tokens":430}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:431 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" voice"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":591,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":431,"input_tokens":160,"output_tokens_details":{"text_tokens":431}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:432 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" his"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":592,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":432,"input_tokens":160,"output_tokens_details":{"text_tokens":432}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:433 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" frustration"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":593,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":433,"input_tokens":160,"output_tokens_details":{"text_tokens":433}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:434 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" at"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":594,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":434,"input_tokens":160,"output_tokens_details":{"text_tokens":434}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:435 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" the"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":595,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":435,"input_tokens":160,"output_tokens_details":{"text_tokens":435}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:436 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" disruption"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":596,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":436,"input_tokens":160,"output_tokens_details":{"text_tokens":436}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:437 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" to"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":597,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":437,"input_tokens":160,"output_tokens_details":{"text_tokens":437}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:438 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" his"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":598,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":438,"input_tokens":160,"output_tokens_details":{"text_tokens":438}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:439 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" peace"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":599,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":439,"input_tokens":160,"output_tokens_details":{"text_tokens":439}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:440 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" and"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":600,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":440,"input_tokens":160,"output_tokens_details":{"text_tokens":440}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:441 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":" productivity"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":601,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":441,"input_tokens":160,"output_tokens_details":{"text_tokens":441}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:442 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[{"text":"."}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":602,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":442,"input_tokens":160,"output_tokens_details":{"text_tokens":442}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + +id:443 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":[],"role":"assistant"},"finish_reason":"stop"}]},"usage":{"total_tokens":602,"input_tokens_details":{"audio_tokens":152,"text_tokens":8},"output_tokens":442,"input_tokens":160,"output_tokens_details":{"text_tokens":442}},"request_id":"5159c491-56f4-47a3-8197-0c81114424d8"} + diff --git a/test/Cnblogs.DashScope.Tests.Shared/RawHttpData/multimodal-generation-audio-caption-sse.response.header.txt b/test/Cnblogs.DashScope.Tests.Shared/RawHttpData/multimodal-generation-audio-caption-sse.response.header.txt new file mode 100644 index 0000000..2339942 --- /dev/null +++ b/test/Cnblogs.DashScope.Tests.Shared/RawHttpData/multimodal-generation-audio-caption-sse.response.header.txt @@ -0,0 +1,14 @@ +HTTP/1.1 200 OK +vary: Origin,Access-Control-Request-Method,Access-Control-Request-Headers +x-request-id: 5159c491-56f4-47a3-8197-0c81114424d8 +content-type: text/event-stream;charset=UTF-8 +x-dashscope-call-gateway: true +x-dashscope-timeout: 298 +x-dashscope-finished: false +req-cost-time: 517 +req-arrive-time: 1764598677105 +resp-start-time: 1764598677622 +x-envoy-upstream-service-time: 510 +date: Mon, 01 Dec 2025 14:17:57 GMT +server: istio-envoy +transfer-encoding: chunked diff --git a/test/Cnblogs.DashScope.Tests.Shared/Utils/Snapshots.MultimodalGeneration.Audio.cs b/test/Cnblogs.DashScope.Tests.Shared/Utils/Snapshots.MultimodalGeneration.Audio.cs new file mode 100644 index 0000000..633aa98 --- /dev/null +++ b/test/Cnblogs.DashScope.Tests.Shared/Utils/Snapshots.MultimodalGeneration.Audio.cs @@ -0,0 +1,168 @@ +using Cnblogs.DashScope.Core; + +namespace Cnblogs.DashScope.Tests.Shared.Utils; + +public static partial class Snapshots +{ + public static partial class MultimodalGeneration + { + public static readonly RequestSnapshot, + ModelResponse> + AudioNoSse = new( + "multimodal-generation-audio", + new ModelRequest + { + Model = "qwen-audio-turbo", + Input = new MultimodalInput + { + Messages = + new List + { + MultimodalMessage.System( + new List + { + MultimodalMessageContent.TextContent("You are a helpful assistant.") + }), + MultimodalMessage.User( + new List + { + MultimodalMessageContent.AudioContent( + "https://dashscope.oss-cn-beijing.aliyuncs.com/audios/2channel_16K.wav"), + MultimodalMessageContent.TextContent("这段音频在说什么,请用简短的语言回答") + }) + } + }, + Parameters = new MultimodalParameters + { + Seed = 1234, + TopK = 100, + TopP = 0.81f + } + }, + new ModelResponse + { + RequestId = "6b6738bd-dd9d-9e78-958b-02574acbda44", + Output = new MultimodalOutput( + new List + { + new( + "stop", + MultimodalMessage.Assistant( + new List + { + MultimodalMessageContent.TextContent( + "这段音频在说中文,内容是\"没有我互联网未来没有我互联网未来没有我互联网未来没有我互联网未来没有我互联网未来没有我互联网未来没有我互联网\"。") + })) + }), + Usage = new MultimodalTokenUsage + { + InputTokens = 786, + OutputTokens = 38, + AudioTokens = 752 + } + }); + + public static readonly RequestSnapshot, + ModelResponse> + AudioSse = new( + "multimodal-generation-audio", + new ModelRequest + { + Model = "qwen-audio-turbo", + Input = new MultimodalInput + { + Messages = + new List + { + MultimodalMessage.System( + new List + { + MultimodalMessageContent.TextContent("You are a helpful assistant.") + }), + MultimodalMessage.User( + new List + { + MultimodalMessageContent.AudioContent( + "https://dashscope.oss-cn-beijing.aliyuncs.com/audios/2channel_16K.wav"), + MultimodalMessageContent.TextContent("这段音频的第一句话说了什么?") + }) + } + }, + Parameters = new MultimodalParameters + { + Seed = 1234, + TopK = 100, + TopP = 0.81f, + IncrementalOutput = true + } + }, + new ModelResponse + { + RequestId = "bb6ab962-af57-99f1-9af8-eb7016ebc18e", + Output = new MultimodalOutput( + new List + { + new( + "stop", + MultimodalMessage.Assistant( + new List + { + MultimodalMessageContent.TextContent("第一句话说了没有我互联网。") + })) + }), + Usage = new MultimodalTokenUsage + { + InputTokens = 783, + OutputTokens = 7, + AudioTokens = 752 + } + }); + + public static readonly RequestSnapshot, + ModelResponse> + AudioCaptionSse = new( + "multimodal-generation-audio-caption", + new ModelRequest + { + Model = "qwen3-omni-30b-a3b-captioner", + Input = new MultimodalInput + { + Messages = + new List + { + MultimodalMessage.User( + new List + { + MultimodalMessageContent.AudioContent( + "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20240916/xvappi/%E8%A3%85%E4%BF%AE%E5%99%AA%E9%9F%B3.wav"), + }) + } + }, + Parameters = new MultimodalParameters { IncrementalOutput = true } + }, + new ModelResponse + { + RequestId = "5159c491-56f4-47a3-8197-0c81114424d8", + Output = new MultimodalOutput( + new List + { + new( + "stop", + MultimodalMessage.Assistant( + new List + { + MultimodalMessageContent.TextContent( + "The audio clip is a short, moderately clear recording—approximately 6 seconds in length—set in a small, reverberant indoor space, likely a private home or office. The dominant feature is a series of loud, metallic, rhythmic hammering noises, occurring at a regular tempo of about 120 beats per minute, with each blow exhibiting a sharp, high-frequency attack and brief metallic resonance. These impacts are highly regular, suggesting the use of a power tool such as a pneumatic nail gun or electric hammer, rather than a hand-held hammer.\n\nOverlaying this mechanical sound, a single male voice, speaking in standard Mandarin Chinese, delivers a brief, exasperated complaint. His tone is weary and resigned, marked by a sigh at the start and a drawn-out, slightly whining intonation. The spoken phrase, “哎呀,这样我还怎么安静工作啊?” (“Aiyah, how can I work quietly like this?”), directly addresses the disruptive nature of the hammering, indicating a personal, informal relationship with the person or people responsible for the noise.\n\nThe recording is of moderate quality, with both the voice and hammering clear and intelligible, though the metallic sounds are slightly distorted and clipped at their loudest peaks. There is a faint, consistent electronic hiss throughout, and a low-frequency hum—potentially from nearby electrical equipment—can be detected. The room’s acoustics are “live,” with short, bright reverberation tails on both the voice and hammering, suggesting hard surfaces and a small, enclosed space.\n\nNo other human voices, background conversations, or environmental cues are present, reinforcing the impression of a solitary, private setting. The overall atmosphere is one of mild frustration and resignation, with the speaker’s tone and the content of his complaint expressing the classic annoyance of being unable to concentrate or work in peace due to disruptive, persistent noise.\n\nIn summary, the recording captures a brief, personal moment of complaint: a Mandarin-speaking man, working alone in a quiet, reverberant indoor space, is interrupted by the rhythmic operation of a power tool, prompting him to voice his frustration at the disruption to his peace and productivity.") + })) + }), + Usage = new MultimodalTokenUsage + { + InputTokens = 160, + InputTokensDetails = new MultimodalInputTokenDetails(AudioTokens: 152, TextTokens: 8), + OutputTokens = 442, + OutputTokensDetails = new MultimodalOutputTokenDetails(TextTokens: 442), + TotalTokens = 602 + } + }); + } +} diff --git a/test/Cnblogs.DashScope.Tests.Shared/Utils/Snapshots.MultimodalGeneration.cs b/test/Cnblogs.DashScope.Tests.Shared/Utils/Snapshots.MultimodalGeneration.cs index bdfc897..0418f25 100644 --- a/test/Cnblogs.DashScope.Tests.Shared/Utils/Snapshots.MultimodalGeneration.cs +++ b/test/Cnblogs.DashScope.Tests.Shared/Utils/Snapshots.MultimodalGeneration.cs @@ -5,7 +5,7 @@ namespace Cnblogs.DashScope.Tests.Shared.Utils; public static partial class Snapshots { - public static class MultimodalGeneration + public static partial class MultimodalGeneration { public static readonly RequestSnapshot, ModelResponse> VlNoSse = @@ -515,118 +515,6 @@ public static class MultimodalGeneration } }); - public static readonly RequestSnapshot, - ModelResponse> - AudioNoSse = new( - "multimodal-generation-audio", - new ModelRequest - { - Model = "qwen-audio-turbo", - Input = new MultimodalInput - { - Messages = - new List - { - MultimodalMessage.System( - new List - { - MultimodalMessageContent.TextContent("You are a helpful assistant.") - }), - MultimodalMessage.User( - new List - { - MultimodalMessageContent.AudioContent( - "https://dashscope.oss-cn-beijing.aliyuncs.com/audios/2channel_16K.wav"), - MultimodalMessageContent.TextContent("这段音频在说什么,请用简短的语言回答") - }) - } - }, - Parameters = new MultimodalParameters - { - Seed = 1234, - TopK = 100, - TopP = 0.81f - } - }, - new ModelResponse - { - RequestId = "6b6738bd-dd9d-9e78-958b-02574acbda44", - Output = new MultimodalOutput( - new List - { - new( - "stop", - MultimodalMessage.Assistant( - new List - { - MultimodalMessageContent.TextContent( - "这段音频在说中文,内容是\"没有我互联网未来没有我互联网未来没有我互联网未来没有我互联网未来没有我互联网未来没有我互联网未来没有我互联网\"。") - })) - }), - Usage = new MultimodalTokenUsage - { - InputTokens = 786, - OutputTokens = 38, - AudioTokens = 752 - } - }); - - public static readonly RequestSnapshot, - ModelResponse> - AudioSse = new( - "multimodal-generation-audio", - new ModelRequest - { - Model = "qwen-audio-turbo", - Input = new MultimodalInput - { - Messages = - new List - { - MultimodalMessage.System( - new List - { - MultimodalMessageContent.TextContent("You are a helpful assistant.") - }), - MultimodalMessage.User( - new List - { - MultimodalMessageContent.AudioContent( - "https://dashscope.oss-cn-beijing.aliyuncs.com/audios/2channel_16K.wav"), - MultimodalMessageContent.TextContent("这段音频的第一句话说了什么?") - }) - } - }, - Parameters = new MultimodalParameters - { - Seed = 1234, - TopK = 100, - TopP = 0.81f, - IncrementalOutput = true - } - }, - new ModelResponse - { - RequestId = "bb6ab962-af57-99f1-9af8-eb7016ebc18e", - Output = new MultimodalOutput( - new List - { - new( - "stop", - MultimodalMessage.Assistant( - new List - { - MultimodalMessageContent.TextContent("第一句话说了没有我互联网。") - })) - }), - Usage = new MultimodalTokenUsage - { - InputTokens = 783, - OutputTokens = 7, - AudioTokens = 752 - } - }); - public static readonly RequestSnapshot, ModelResponse> VideoNoSse = new( From 2ccade3e337feade1be5f3149d9c1970f107c06f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B2=88=E6=98=9F=E7=B9=81?= Date: Tue, 2 Dec 2025 21:18:04 +0800 Subject: [PATCH 4/6] feat: support sending raw message directly via M.E.AI (#156) * feat: support sending raw message directly * fix: enable ci for staging * docs: update sample namespace * fix: sample naming --- .github/workflows/ci.yml | 3 +- README.md | 95 +++++++++++++-- README.zh-Hans.md | 103 ++++++++++++++-- .../MsExtensionsAI/RawInputExample.cs | 98 +++++++++++++++ .../MsExtensionsAI/RawOutputExample.cs | 60 ++++++++++ .../MsExtensionsAiSample.cs | 15 +++ .../Cnblogs.DashScope.AI.csproj | 2 +- .../DashScopeChatClient.cs | 113 +++++++++++------- .../TextChatMessageContentConvertor.cs | 9 +- src/Cnblogs.DashScope.Core/TextChatMessage.cs | 10 +- .../TextChatMessageContent.cs | 10 +- .../ChatClientTests.cs | 46 ++++++- .../Cnblogs.DashScope.AI.UnitTests.csproj | 49 ++++---- ...extChatMessageContentJsonConvertorTests.cs | 2 +- 14 files changed, 514 insertions(+), 101 deletions(-) create mode 100644 sample/Cnblogs.DashScope.Sample/MsExtensionsAI/RawInputExample.cs create mode 100644 sample/Cnblogs.DashScope.Sample/MsExtensionsAI/RawOutputExample.cs create mode 100644 sample/Cnblogs.DashScope.Sample/MsExtensionsAiSample.cs diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 0af6bf5..681349e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -4,13 +4,12 @@ on: push: branches: [ "main" ] pull_request: - branches: [ "main" ] + branches: [ "main", "staging" ] jobs: test-net6: runs-on: ubuntu-latest container: mcr.microsoft.com/dotnet/sdk:6.0 - steps: - name: Checkout uses: actions/checkout@v4 diff --git a/README.md b/README.md index 9ecbb6f..76f2676 100644 --- a/README.md +++ b/README.md @@ -12,15 +12,6 @@ A non-official DashScope (Bailian) service SDK maintained by Cnblogs. ## Quick Start -### Using `Microsoft.Extensions.AI` Interface - -Install NuGet package `Cnblogs.DashScope.AI` -```csharp -var client = new DashScopeClient("your-api-key").AsChatClient("qwen-max"); -var completion = await client.CompleteAsync("hello"); -Console.WriteLine(completion) -``` - ### Console Application Install NuGet package `Cnblogs.DashScope.Sdk` @@ -90,7 +81,93 @@ public class YourService(IDashScopeClient client) } } ``` +### Using `Microsoft.Extensions.AI` Interface + +Install NuGet package `Cnblogs.DashScope.AI` + +```csharp +var client = new DashScopeClient("your-api-key").AsChatClient("qwen-max"); +var completion = await client.GetResponseAsync("hello"); +Console.WriteLine(completion.Text); +``` + +#### Fallback to raw messages + +If you need to use input data or parameters not supported by `Microsoft.Extensions.AI`, you can directly invoke the underlying SDK by passing a raw `TextChatMessage` or `MultimodalMessage` via `RawPresentation`. + +Similarly, to pass unsupported parameters, you can also do so directly by setting the `raw` property within `AdditionalProperties`. + +Example(Using `qwen-doc-turbo`) + +```csharp +var messages = new List() +{ + TextChatMessage.DocUrl( + "从这两份产品手册中,提取所有产品信息,并整理成一个标准的JSON数组。每个对象需要包含:model(产品的型号)、name(产品的名称)、price(价格(去除货币符号和逗号))", + [ + "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20251107/jockge/%E7%A4%BA%E4%BE%8B%E4%BA%A7%E5%93%81%E6%89%8B%E5%86%8CA.docx", + "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20251107/ztwxzr/%E7%A4%BA%E4%BE%8B%E4%BA%A7%E5%93%81%E6%89%8B%E5%86%8CB.docx" + ]) +}; +var parameters = new TextGenerationParameters() +{ + ResultFormat = "message", IncrementalOutput = true, +}; + +var response = client + .AsChatClient("qwen-doc-turbo") + .GetStreamingResponseAsync( + messages.Select(x => new ChatMessage() { RawRepresentation = x }), + new ChatOptions() + { + AdditionalProperties = new AdditionalPropertiesDictionary() { { "raw", parameters } } + }); +await foreach (var chunk in response) +{ + Console.Write(chunk.Text); +} +``` + +Similarly, you can also retrieve the raw message from the `RawPresentation` in the message returned by the model. + +Example (Getting the token count for an image when calling `qwen3-vl-plus`): + +```csharp +var response = client + .AsChatClient("qwen3-vl-plus") + .GetStreamingResponseAsync( + new List() + { + new( + ChatRole.User, + new List() + { + new UriContent( + "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241022/emyrja/dog_and_girl.jpeg", + MediaTypeNames.Image.Jpeg), + new UriContent( + "https://dashscope.oss-cn-beijing.aliyuncs.com/images/tiger.png", + MediaTypeNames.Image.Jpeg), + new TextContent("这些图展现了什么内容?") + }) + }, + new ChatOptions()); +var lastChunk = (ChatResponseUpdate?)null; +await foreach (var chunk in response) +{ + Console.Write(chunk.Text); + lastChunk = chunk; +} + +Console.WriteLine(); + +// Access underlying raw response +var raw = lastChunk?.RawRepresentation as ModelResponse; +Console.WriteLine($"Image token usage: {raw?.Usage?.ImageTokens}"); +``` + ## Supported APIs + - [Text Generation](#text-generation) - QWen3, DeepSeek, etc. Supports reasoning/tool calling/web search/translation scenarios - [Conversation](#conversation) - [Thinking Models](#thinking-models) diff --git a/README.zh-Hans.md b/README.zh-Hans.md index f101473..b1c2b2e 100644 --- a/README.zh-Hans.md +++ b/README.zh-Hans.md @@ -12,16 +12,6 @@ ## 快速开始 -### 使用 `Microsoft.Extensions.AI` 接口 - -安装 NuGet 包 `Cnblogs.DashScope.AI` - -```csharp -var client = new DashScopeClient("your-api-key").AsChatClient("qwen-max"); -var completion = await client.CompleteAsync("hello"); -Console.WriteLine(completion) -``` - ### 控制台应用 安装 NuGet 包 `Cnblogs.DashScope.Sdk`。 @@ -88,6 +78,93 @@ public class YourService(IDashScopeClient client) } ``` +### 使用 `Microsoft.Extensions.AI` 接口 + +安装 NuGet 包 `Cnblogs.DashScope.AI` + +```csharp +var client = new DashScopeClient("your-api-key").AsChatClient("qwen-max"); +var completion = await client.GetResponseAsync("hello"); +Console.WriteLine(completion.Text); +``` + +#### 调用原始 SDK + +如果需要使用 `Microsoft.Extensions.AI` 不支持的输入数据或参数,可以通过 `RawPresentation` 直接传入原始的 `TextChatMessage` 或者 `MultimodalMessage` 来直接调用底层 SDK。 + +类似地,当需要传入不支持的参数时,也可以通过设置 `AdditionalProperties` 里的 `raw` 直接传入原始参数。 + +示例(调用 `qwen-doc-turbo`) + +```csharp +var messages = new List() +{ + TextChatMessage.DocUrl( + "从这两份产品手册中,提取所有产品信息,并整理成一个标准的JSON数组。每个对象需要包含:model(产品的型号)、name(产品的名称)、price(价格(去除货币符号和逗号))", + [ + "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20251107/jockge/%E7%A4%BA%E4%BE%8B%E4%BA%A7%E5%93%81%E6%89%8B%E5%86%8CA.docx", + "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20251107/ztwxzr/%E7%A4%BA%E4%BE%8B%E4%BA%A7%E5%93%81%E6%89%8B%E5%86%8CB.docx" + ]) +}; +var parameters = new TextGenerationParameters() +{ + ResultFormat = "message", IncrementalOutput = true, +}; + +var response = client + .AsChatClient("qwen-doc-turbo") + .GetStreamingResponseAsync( + messages.Select(x => new ChatMessage() { RawRepresentation = x }), + new ChatOptions() + { + AdditionalProperties = new AdditionalPropertiesDictionary() { { "raw", parameters } } + }); +await foreach (var chunk in response) +{ + Console.Write(chunk.Text); +} +``` + +类似地,也可以通过模型返回消息里的 `RawPresentation` 获取原始消息。 + +示例(调用 `qwen3-vl-plus` 时获取图像消耗的 Token 数): + +```csharp +var response = client + .AsChatClient("qwen3-vl-plus") + .GetStreamingResponseAsync( + new List() + { + new( + ChatRole.User, + new List() + { + new UriContent( + "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241022/emyrja/dog_and_girl.jpeg", + MediaTypeNames.Image.Jpeg), + new UriContent( + "https://dashscope.oss-cn-beijing.aliyuncs.com/images/tiger.png", + MediaTypeNames.Image.Jpeg), + new TextContent("这些图展现了什么内容?") + }) + }, + new ChatOptions()); +var lastChunk = (ChatResponseUpdate?)null; +await foreach (var chunk in response) +{ + Console.Write(chunk.Text); + lastChunk = chunk; +} + +Console.WriteLine(); + +// 访问原始消息 +var raw = lastChunk?.RawRepresentation as ModelResponse; +Console.WriteLine($"Image token usage: {raw?.Usage?.ImageTokens}"); +``` + + + ## 支持的 API - [文本生成](#文本生成) - QWen3, DeepSeek 等,支持推理/工具调用/网络搜索/翻译等场景 @@ -97,6 +174,10 @@ public class YourService(IDashScopeClient client) - [工具调用](#工具调用) - [前缀续写](#前缀续写) - [长上下文(Qwen-Long)](#长上下文(Qwen-Long)) + - [翻译能力(Qwen-MT)](#翻译能力(Qwen-MT)) + - [角色扮演(Qwen-Character)](#角色扮演(Qwen-Character)) + - [数据挖掘(Qwen-doc-turbo)](#数据挖掘(Qwen-doc-turbo)) + - [深入研究(Qwen-Deep-Research)](#深入研究(Qwen-Deep-Research)) - [多模态](#多模态) - QWen-VL,QVQ 等,支持推理/视觉理解/OCR/音频理解等场景 - [视觉理解/推理](#视觉理解/推理) - 图像/视频输入与理解,支持推理模式 - [文字提取](#文字提取) - OCR 任务,读取表格/文档/公式等 @@ -2670,7 +2751,7 @@ var completion = client.GetMultimodalGenerationAsync( 示例: -![倾斜的图像](sample/Cnblogs.DashScope.Sample/tilted.png) +![网页](sample/Cnblogs.DashScope.Sample/webpage.jpg) ```csharp Console.WriteLine("Text:"); diff --git a/sample/Cnblogs.DashScope.Sample/MsExtensionsAI/RawInputExample.cs b/sample/Cnblogs.DashScope.Sample/MsExtensionsAI/RawInputExample.cs new file mode 100644 index 0000000..67ee947 --- /dev/null +++ b/sample/Cnblogs.DashScope.Sample/MsExtensionsAI/RawInputExample.cs @@ -0,0 +1,98 @@ +using Cnblogs.DashScope.Core; +using Microsoft.Extensions.AI; + +namespace Cnblogs.DashScope.Sample.MsExtensionsAI; + +public class RawInputExample : MsExtensionsAiSample +{ + /// + public override string Description => "Chat with raw message and parameter input"; + + /// + public override async Task RunAsync(IDashScopeClient client) + { + var messages = new List() + { + TextChatMessage.DocUrl( + "从这两份产品手册中,提取所有产品信息,并整理成一个标准的JSON数组。每个对象需要包含:model(产品的型号)、name(产品的名称)、price(价格(去除货币符号和逗号))", + [ + "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20251107/jockge/%E7%A4%BA%E4%BE%8B%E4%BA%A7%E5%93%81%E6%89%8B%E5%86%8CA.docx", + "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20251107/ztwxzr/%E7%A4%BA%E4%BE%8B%E4%BA%A7%E5%93%81%E6%89%8B%E5%86%8CB.docx" + ]) + }; + var parameters = new TextGenerationParameters() + { + ResultFormat = "message", IncrementalOutput = true, + }; + + var response = client + .AsChatClient("qwen-doc-turbo") + .GetStreamingResponseAsync( + messages.Select(x => new ChatMessage() { RawRepresentation = x }), + new ChatOptions() + { + AdditionalProperties = new AdditionalPropertiesDictionary() { { "raw", parameters } } + }); + await foreach (var chunk in response) + { + Console.Write(chunk.Text); + } + } +} + +/* +```json +[ + { + "model": "PRO-100", + "name": "智能打印机", + "price": "8999" + }, + { + "model": "PRO-200", + "name": "智能扫描仪", + "price": "12999" + }, + { + "model": "PRO-300", + "name": "智能会议系统", + "price": "25999" + }, + { + "model": "PRO-400", + "name": "智能考勤机", + "price": "6999" + }, + { + "model": "PRO-500", + "name": "智能文件柜", + "price": "15999" + }, + { + "model": "SEC-100", + "name": "智能监控摄像头", + "price": "3999" + }, + { + "model": "SEC-200", + "name": "智能门禁系统", + "price": "15999" + }, + { + "model": "SEC-300", + "name": "智能报警系统", + "price": "28999" + }, + { + "model": "SEC-400", + "name": "智能访客系统", + "price": "9999" + }, + { + "model": "SEC-500", + "name": "智能停车管理", + "price": "22999" + } +] +``` + */ diff --git a/sample/Cnblogs.DashScope.Sample/MsExtensionsAI/RawOutputExample.cs b/sample/Cnblogs.DashScope.Sample/MsExtensionsAI/RawOutputExample.cs new file mode 100644 index 0000000..56eb013 --- /dev/null +++ b/sample/Cnblogs.DashScope.Sample/MsExtensionsAI/RawOutputExample.cs @@ -0,0 +1,60 @@ +using System.Net.Mime; +using Cnblogs.DashScope.Core; +using Microsoft.Extensions.AI; + +namespace Cnblogs.DashScope.Sample.MsExtensionsAI; + +public class RawOutputExample : MsExtensionsAiSample +{ + /// + public override string Description => "Chat with extra data from raw output"; + + /// + public override async Task RunAsync(IDashScopeClient client) + { + var response = client + .AsChatClient("qwen3-vl-plus") + .GetStreamingResponseAsync( + new List() + { + new( + ChatRole.User, + new List() + { + new UriContent( + "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241022/emyrja/dog_and_girl.jpeg", + MediaTypeNames.Image.Jpeg), + new UriContent( + "https://dashscope.oss-cn-beijing.aliyuncs.com/images/tiger.png", + MediaTypeNames.Image.Png), + new TextContent("这些图展现了什么内容?") + }) + }, + new ChatOptions()); + var lastChunk = (ChatResponseUpdate?)null; + await foreach (var chunk in response) + { + Console.Write(chunk.Text); + lastChunk = chunk; + } + + Console.WriteLine(); + var raw = lastChunk?.RawRepresentation as ModelResponse; + Console.WriteLine($"Image token usage: {raw?.Usage?.ImageTokens}"); + } +} + +/* +这两张图片展现了截然不同的主题和氛围: + +- **第一张图片**:描绘了一幅温馨、宁静的场景。一位年轻女子坐在沙滩上,与一只金毛犬互动。狗狗抬起前爪,似乎在与女子“击掌”,女子面带微笑,享受着与宠物共度的美好时光。背景是波光粼粼的大海和柔和的日落光线,整个画面充满了温暖、快乐和人与动物之间亲密无间的情感。 + +- **第二张图片**:展现了一只威严的老虎在森林中行走的画面。老虎正视镜头,眼神锐利,姿态充满力量感,仿佛正在巡视自己的领地。周围是茂密的树林、覆盖苔藓的树根和散落的落叶,营造出一种原始、神秘且略带危险的自然野性氛围。 + +总的来说,这两张图分别代表了: +- **人与宠物的温情陪伴**(第一张) +- **野生动物的原始力量与自然之美**(第二张) + +它们形成了鲜明对比:一张是温柔的人类情感,另一张是野性的自然力量。 +Image token usage: 3529 + */ diff --git a/sample/Cnblogs.DashScope.Sample/MsExtensionsAiSample.cs b/sample/Cnblogs.DashScope.Sample/MsExtensionsAiSample.cs new file mode 100644 index 0000000..536b26d --- /dev/null +++ b/sample/Cnblogs.DashScope.Sample/MsExtensionsAiSample.cs @@ -0,0 +1,15 @@ +using Cnblogs.DashScope.Core; + +namespace Cnblogs.DashScope.Sample; + +public abstract class MsExtensionsAiSample : ISample +{ + /// + public string Group => "Microsoft.Extensions.AI"; + + /// + public abstract string Description { get; } + + /// + public abstract Task RunAsync(IDashScopeClient client); +} diff --git a/src/Cnblogs.DashScope.AI/Cnblogs.DashScope.AI.csproj b/src/Cnblogs.DashScope.AI/Cnblogs.DashScope.AI.csproj index 4685740..9aa095e 100644 --- a/src/Cnblogs.DashScope.AI/Cnblogs.DashScope.AI.csproj +++ b/src/Cnblogs.DashScope.AI/Cnblogs.DashScope.AI.csproj @@ -12,7 +12,7 @@ - + diff --git a/src/Cnblogs.DashScope.AI/DashScopeChatClient.cs b/src/Cnblogs.DashScope.AI/DashScopeChatClient.cs index 9cef10f..89d0047 100644 --- a/src/Cnblogs.DashScope.AI/DashScopeChatClient.cs +++ b/src/Cnblogs.DashScope.AI/DashScopeChatClient.cs @@ -15,6 +15,7 @@ public sealed class DashScopeChatClient : IChatClient { private readonly IDashScopeClient _dashScopeClient; private readonly string _modelId; + private readonly bool _useVl; private static readonly JsonSchema EmptyObjectSchema = JsonSchema.FromText("{\"type\":\"object\",\"required\":[],\"properties\":{}}"); @@ -34,6 +35,10 @@ public DashScopeChatClient(IDashScopeClient dashScopeClient, string modelId) _dashScopeClient = dashScopeClient; _modelId = modelId; + _useVl = modelId.StartsWith("qwen-vl") + || modelId.StartsWith("qwen3-vl") + || modelId.StartsWith("qwen3-omni") + || modelId.StartsWith("gui-plus"); } /// @@ -50,7 +55,7 @@ public async Task GetResponseAsync( var modelId = options?.ModelId ?? _modelId; var useVlRaw = options?.AdditionalProperties?.GetValueOrDefault("useVl")?.ToString(); var useVl = string.IsNullOrEmpty(useVlRaw) - ? modelId.Contains("qwen-vl", StringComparison.OrdinalIgnoreCase) + ? _useVl : string.Equals(useVlRaw, "true", StringComparison.OrdinalIgnoreCase); if (useVl) { @@ -96,8 +101,9 @@ public async Task GetResponseAsync( { Input = new TextGenerationInput { - Messages = chatMessages.SelectMany( - c => ToTextChatMessages(c, parameters.Tools?.ToList())), + Messages = chatMessages.SelectMany(c => ToTextChatMessages( + c, + parameters.Tools?.ToList())), Tools = ToToolDefinitions(options?.Tools) }, Model = modelId, @@ -135,8 +141,9 @@ public async IAsyncEnumerable GetStreamingResponseAsync( [EnumeratorCancellation] CancellationToken cancellationToken = default) { var useVlRaw = options?.AdditionalProperties?.GetValueOrDefault("useVl")?.ToString(); - var useVl = string.Equals(useVlRaw, "true", StringComparison.OrdinalIgnoreCase) - || (options?.ModelId?.Contains("qwen-vl") ?? false); + var useVl = string.IsNullOrEmpty(useVlRaw) + ? _useVl + : string.Equals(useVlRaw, "true", StringComparison.OrdinalIgnoreCase); var modelId = options?.ModelId ?? _modelId; ChatRole? streamedRole = null; @@ -220,8 +227,9 @@ public async IAsyncEnumerable GetStreamingResponseAsync( { Input = new TextGenerationInput { - Messages = chatMessages.SelectMany( - c => ToTextChatMessages(c, parameters.Tools?.ToList())), + Messages = chatMessages.SelectMany(c => ToTextChatMessages( + c, + parameters.Tools?.ToList())), Tools = ToToolDefinitions(options?.Tools) }, Model = modelId, @@ -261,6 +269,7 @@ public async IAsyncEnumerable GetStreamingResponseAsync( { InputTokenCount = response.Usage.InputTokens, OutputTokenCount = response.Usage.OutputTokens, + TotalTokenCount = response.Usage.TotalTokens, })); } @@ -292,8 +301,9 @@ public void Dispose() : finishReason switch { "stop" => ChatFinishReason.Stop, - "length" => ChatFinishReason.ContentFilter, + "length" => ChatFinishReason.Length, "tool_calls" => ChatFinishReason.ToolCalls, + "null" => null, _ => new ChatFinishReason(finishReason), }; @@ -311,18 +321,17 @@ private static ChatMessage ToChatMessage(TextChatMessage message) if (message.ToolCalls is { Count: > 0 }) { - message.ToolCalls.ForEach( - call => - { - var arguments = string.IsNullOrEmpty(call.Function.Arguments) - ? null - : JsonSerializer.Deserialize>(call.Function.Arguments); - returnMessage.Contents.Add( - new FunctionCallContent( - call.Id ?? string.Empty, - call.Function.Name, - arguments) { RawRepresentation = call }); - }); + message.ToolCalls.ForEach(call => + { + var arguments = string.IsNullOrEmpty(call.Function.Arguments) + ? null + : JsonSerializer.Deserialize>(call.Function.Arguments); + returnMessage.Contents.Add( + new FunctionCallContent( + call.Id ?? string.Empty, + call.Function.Name, + arguments) { RawRepresentation = call }); + }); } return returnMessage; @@ -340,19 +349,26 @@ private static ChatRole ToChatRole(string role) private MultimodalParameters ToMultimodalParameters(ChatOptions? options) { - var parameters = new MultimodalParameters(); if (options is null) { - return parameters; + return new MultimodalParameters(); } - parameters.Temperature = options.Temperature; - parameters.MaxTokens = options.MaxOutputTokens; - parameters.TopP = options.TopP; - parameters.TopK = options.TopK; - parameters.RepetitionPenalty = options.FrequencyPenalty; - parameters.PresencePenalty = options.PresencePenalty; - parameters.Seed = (ulong?)options.Seed; + if (options.AdditionalProperties?.GetValueOrDefault("raw") is MultimodalParameters raw) + { + return raw; + } + + var parameters = new MultimodalParameters + { + Temperature = options.Temperature, + MaxTokens = options.MaxOutputTokens, + TopP = options.TopP, + TopK = options.TopK, + RepetitionPenalty = options.FrequencyPenalty, + PresencePenalty = options.PresencePenalty, + Seed = (ulong?)options.Seed + }; if (options.StopSequences is { Count: > 0 }) { parameters.Stop = new TextGenerationStop(options.StopSequences); @@ -391,6 +407,7 @@ private List ToMultimodalMessageContents(IList raw, TextContent text => MultimodalMessageContent.TextContent(text.Text), DataContent { Data.Length: > 0 } data when data.HasTopLevelMediaType("image") => MultimodalMessageContent.ImageContent( @@ -398,6 +415,10 @@ private List ToMultimodalMessageContents(IList MultimodalMessageContent.ImageContent(uri), + DataContent { Uri: { } uri } data when data.HasTopLevelMediaType("video") => MultimodalMessageContent + .VideoContent(uri), + UriContent uri when uri.HasTopLevelMediaType("image") => MultimodalMessageContent.ImageContent( + uri.Uri.AbsoluteUri), _ => null }; if (content is not null) @@ -420,6 +441,11 @@ private IEnumerable ToTextChatMessages( { if (from.Role == ChatRole.System || from.Role == ChatRole.User) { + if (from.RawRepresentation is TextChatMessage text) + { + yield return text; + } + yield return new TextChatMessage( from.Role.Value, from.Text, @@ -452,12 +478,11 @@ private IEnumerable ToTextChatMessages( { var functionCall = from.Contents .OfType() - .Select( - c => new ToolCall( - c.CallId, - "function", - tools?.FindIndex(f => f.Function?.Name == c.Name) ?? -1, - new FunctionCall(c.Name, JsonSerializer.Serialize(c.Arguments, ToolCallJsonSerializerOptions)))) + .Select(c => new ToolCall( + c.CallId, + "function", + tools?.FindIndex(f => f.Function?.Name == c.Name) ?? -1, + new FunctionCall(c.Name, JsonSerializer.Serialize(c.Arguments, ToolCallJsonSerializerOptions)))) .ToList(); // function all array must be null when empty @@ -479,6 +504,11 @@ private IEnumerable ToTextChatMessages( return null; } + if (options.AdditionalProperties?.GetValueOrDefault("raw") is TextGenerationParameters parameters) + { + return parameters; + } + var format = "message"; if (options.ResponseFormat is ChatResponseFormatJson) { @@ -510,13 +540,12 @@ RequiredChatToolMode required when string.IsNullOrEmpty(required.RequiredFunctio private static IEnumerable? ToToolDefinitions(IList? tools) { - return tools?.OfType().Select( - f => new ToolDefinition( - "function", - new FunctionDefinition( - f.Name, - f.Description, - GetParameterSchema(f.JsonSchema)))); + return tools?.OfType().Select(f => new ToolDefinition( + "function", + new FunctionDefinition( + f.Name, + f.Description, + GetParameterSchema(f.JsonSchema)))); } private static JsonSchema GetParameterSchema(JsonElement metadata) diff --git a/src/Cnblogs.DashScope.Core/Internals/TextChatMessageContentConvertor.cs b/src/Cnblogs.DashScope.Core/Internals/TextChatMessageContentConvertor.cs index c0fa679..11ad871 100644 --- a/src/Cnblogs.DashScope.Core/Internals/TextChatMessageContentConvertor.cs +++ b/src/Cnblogs.DashScope.Core/Internals/TextChatMessageContentConvertor.cs @@ -28,8 +28,11 @@ internal class TextChatMessageContentConvertor : JsonConverter string.IsNullOrEmpty(x.Text) == false)?.Text ?? throw new JsonException("No text found in content array"); - var docUrls = contents.FirstOrDefault(x => x.DocUrl != null)?.DocUrl; - return new TextChatMessageContent(text, docUrls); + var docUrlContent = contents.FirstOrDefault(x => x is { DocUrl: not null, FileParsingStrategy: not null }) + ?? throw new JsonException("No doc_url and file_parsing_strategy were found"); + var docUrls = docUrlContent?.DocUrl; + var strategy = docUrlContent?.FileParsingStrategy; + return new TextChatMessageContent(text, docUrls, strategy); } throw new JsonException("Unknown type for TextChatMessageContent"); @@ -49,7 +52,7 @@ public override void Write(Utf8JsonWriter writer, TextChatMessageContent value, { Type = "doc_url", DocUrl = value.DocUrls.ToList(), - FileParsingStrategy = "auto" + FileParsingStrategy = value.FileParsingStrategy } }, options); diff --git a/src/Cnblogs.DashScope.Core/TextChatMessage.cs b/src/Cnblogs.DashScope.Core/TextChatMessage.cs index 1ed4d25..9ef595d 100644 --- a/src/Cnblogs.DashScope.Core/TextChatMessage.cs +++ b/src/Cnblogs.DashScope.Core/TextChatMessage.cs @@ -110,10 +110,16 @@ public static TextChatMessage File(IEnumerable fileIds) /// /// Text input. /// The doc urls. + /// Can be one of ['auto', 'text_only', 'text_and_images']. /// - public static TextChatMessage DocUrl(string prompt, IEnumerable docUrls) + public static TextChatMessage DocUrl( + string prompt, + IEnumerable docUrls, + string fileParsingStrategy = "auto") { - return new TextChatMessage(DashScopeRoleNames.User, new TextChatMessageContent(prompt, docUrls)); + return new TextChatMessage( + DashScopeRoleNames.User, + new TextChatMessageContent(prompt, docUrls, fileParsingStrategy)); } /// diff --git a/src/Cnblogs.DashScope.Core/TextChatMessageContent.cs b/src/Cnblogs.DashScope.Core/TextChatMessageContent.cs index 0121861..9d00c48 100644 --- a/src/Cnblogs.DashScope.Core/TextChatMessageContent.cs +++ b/src/Cnblogs.DashScope.Core/TextChatMessageContent.cs @@ -19,6 +19,11 @@ public class TextChatMessageContent /// public IEnumerable? DocUrls { get; } + /// + /// Control the content that model can read. Can be one of ['auto', 'text_only', 'text_and_images']. + /// + public string? FileParsingStrategy { get; } + /// /// Creates a with text content. /// @@ -27,6 +32,7 @@ public TextChatMessageContent(string text) { Text = text; DocUrls = null; + FileParsingStrategy = null; } /// @@ -34,10 +40,12 @@ public TextChatMessageContent(string text) /// /// The text content. /// The doc urls. - public TextChatMessageContent(string text, IEnumerable? docUrls) + /// Can be one of ['auto', 'text_only', 'text_and_images']. + public TextChatMessageContent(string text, IEnumerable? docUrls, string? fileParsingStrategy) { Text = text; DocUrls = docUrls; + FileParsingStrategy = fileParsingStrategy; } /// diff --git a/test/Cnblogs.DashScope.AI.UnitTests/ChatClientTests.cs b/test/Cnblogs.DashScope.AI.UnitTests/ChatClientTests.cs index 8bd80fa..7d8307a 100644 --- a/test/Cnblogs.DashScope.AI.UnitTests/ChatClientTests.cs +++ b/test/Cnblogs.DashScope.AI.UnitTests/ChatClientTests.cs @@ -1,7 +1,6 @@ using System.Text; using Cnblogs.DashScope.Core; using Cnblogs.DashScope.Tests.Shared.Utils; - using Microsoft.Extensions.AI; using NSubstitute; using NSubstitute.Extensions; @@ -10,6 +9,43 @@ namespace Cnblogs.DashScope.AI.UnitTests; public class ChatClientTests { + [Fact] + public async Task ChatClient_TextCompletionRaw_SuccessAsync() + { + // Arrange + var testCase = Snapshots.TextGeneration.MessageFormat.ConversationMessageWithDocUrlsIncremental; + var dashScopeClient = Substitute.For(); + dashScopeClient.Configure() + .GetTextCompletionStreamAsync( + Arg.Any>(), + Arg.Any()) + .Returns(AsyncEnumerable.Repeat(testCase.ResponseModel, 1)); + var client = dashScopeClient.AsChatClient(testCase.RequestModel.Model); + + // Act + var response = client.GetStreamingResponseAsync( + testCase.RequestModel.Input.Messages!.Select(m => new ChatMessage { RawRepresentation = m }), + new ChatOptions + { + AdditionalProperties = new AdditionalPropertiesDictionary + { + { "raw", testCase.RequestModel.Parameters } + } + }); + var responseText = new StringBuilder(); + await foreach (var chatResponseUpdate in response) + { + responseText.Append(chatResponseUpdate.Text); + } + + // Assert + _ = dashScopeClient.Received().GetTextCompletionStreamAsync( + Arg.Is>(m + => m.IsEquivalent(testCase.RequestModel)), + Arg.Any()); + Assert.Equal(testCase.ResponseModel.Output.Choices![0].Message.Content, responseText.ToString()); + } + [Fact] public async Task ChatClient_TextCompletion_SuccessAsync() { @@ -43,8 +79,8 @@ public async Task ChatClient_TextCompletion_SuccessAsync() // Assert _ = dashScopeClient.Received().GetTextCompletionAsync( - Arg.Is>( - m => m.IsEquivalent(testCase.RequestModel)), + Arg.Is>(m + => m.IsEquivalent(testCase.RequestModel)), Arg.Any()); Assert.Equal(testCase.ResponseModel.Output.Choices![0].Message.Content, response.Messages[0].Text); } @@ -90,8 +126,8 @@ public async Task ChatClient_TextCompletionStream_SuccessAsync() // Assert _ = dashScopeClient.Received().GetTextCompletionStreamAsync( - Arg.Is>( - m => m.IsEquivalent(testCase.RequestModel)), + Arg.Is>(m + => m.IsEquivalent(testCase.RequestModel)), Arg.Any()); Assert.Equal(testCase.ResponseModel.Output.Choices![0].Message.Content, text.ToString()); } diff --git a/test/Cnblogs.DashScope.AI.UnitTests/Cnblogs.DashScope.AI.UnitTests.csproj b/test/Cnblogs.DashScope.AI.UnitTests/Cnblogs.DashScope.AI.UnitTests.csproj index 514c2c0..82cd87a 100644 --- a/test/Cnblogs.DashScope.AI.UnitTests/Cnblogs.DashScope.AI.UnitTests.csproj +++ b/test/Cnblogs.DashScope.AI.UnitTests/Cnblogs.DashScope.AI.UnitTests.csproj @@ -1,31 +1,32 @@  - - net8.0 - enable - enable - false - + + net8.0 + enable + enable + false + true + - - - all - runtime; build; native; contentfiles; analyzers; buildtransitive - - - - all - runtime; build; native; contentfiles; analyzers; buildtransitive - - + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + - - - + + + - - - - + + + + diff --git a/test/Cnblogs.DashScope.Sdk.UnitTests/TextChatMessageContentJsonConvertorTests.cs b/test/Cnblogs.DashScope.Sdk.UnitTests/TextChatMessageContentJsonConvertorTests.cs index 782bba6..fa4a99f 100644 --- a/test/Cnblogs.DashScope.Sdk.UnitTests/TextChatMessageContentJsonConvertorTests.cs +++ b/test/Cnblogs.DashScope.Sdk.UnitTests/TextChatMessageContentJsonConvertorTests.cs @@ -28,7 +28,7 @@ public void Serialize_Text_StringAsync() public void Serialize_DocUrl_ObjectAsync() { // Arrange - var content = new TextChatMessageContent("some content", new[] { "url1" }); + var content = new TextChatMessageContent("some content", new[] { "url1" }, "auto"); // Act var json = JsonSerializer.Serialize(content, DashScopeDefaults.SerializationOptions); From 50e0dc3b403f01b3d8e97691e71d513779b58b35 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B2=88=E6=98=9F=E7=B9=81?= Date: Wed, 3 Dec 2025 23:25:25 +0800 Subject: [PATCH 5/6] feat: support code interpreter (#157) * chore: code clean up * feat: support code interpreter --- README.md | 112 +++++ README.zh-Hans.md | 395 ++++++------------ .../Multimodal/ImageInputSample.cs | 9 +- .../Multimodal/ImageUploadSample.cs | 2 +- .../OcrAdvancedRecognitionSample.cs | 2 +- .../Multimodal/OcrDocumentToLaTeXSample.cs | 2 +- .../Multimodal/OcrFormulaRecognitionSample.cs | 2 +- .../OcrKeyInformationExtractionSample.cs | 2 +- .../Multimodal/OcrMultilanguageSample.cs | 2 +- .../Multimodal/OcrSample.cs | 2 +- .../Multimodal/OcrTableParsingSample.cs | 2 +- .../Multimodal/OcrTextRecognition.cs | 2 +- .../Multimodal/VideoInputSample.cs | 2 +- .../Text/ChatSample.cs | 2 +- .../Text/ChatStreamSample.cs | 2 +- .../Text/ChatThinkingBudgetSample.cs | 2 +- .../Text/ChatToolCallingSample.cs | 2 +- .../Text/ChatWebSearchSample.cs | 2 +- .../Text/CodeInterpreterSample.cs | 92 ++++ .../Text/DataMiningSample.cs | 2 +- .../Text/DeepResearchSample.cs | 2 +- .../Text/JsonOutputSample.cs | 2 +- .../Text/LongContextSample.cs | 2 +- .../Text/PrefixCompletionSample.cs | 2 +- .../Text/RolePlaySample.cs | 2 +- .../Text/TranslationSample.cs | 2 +- .../Cnblogs.DashScope.AI.csproj | 1 - .../ITextGenerationParameters.cs | 5 + .../TextChatMessageContentConvertor.cs | 4 +- ...extGenerationCodeInterpreterPluginUsage.cs | 21 + .../TextGenerationOutput.cs | 5 + .../TextGenerationParameters.cs | 3 + .../TextGenerationPluginUsages.cs | 25 +- .../ToolInfoCodeInterpreterOutput.cs | 12 + src/Cnblogs.DashScope.Core/ToolInfoOutput.cs | 17 + .../TextGenerationSerializationTests.cs | 3 +- ...ith-code-interpreter-sse.request.body.json | 17 + ...th-code-interpreter-sse.request.header.txt | 8 + ...ith-code-interpreter-sse.response.body.txt | 280 +++++++++++++ ...h-code-interpreter-sse.response.header.txt | 14 + .../Utils/RequestSnapshot.cs | 12 +- .../Utils/Snapshots.TextGeneration.cs | 135 ++++-- .../Utils/Sut.cs | 4 +- 43 files changed, 887 insertions(+), 331 deletions(-) create mode 100644 sample/Cnblogs.DashScope.Sample/Text/CodeInterpreterSample.cs create mode 100644 src/Cnblogs.DashScope.Core/TextGenerationCodeInterpreterPluginUsage.cs create mode 100644 src/Cnblogs.DashScope.Core/ToolInfoCodeInterpreterOutput.cs create mode 100644 src/Cnblogs.DashScope.Core/ToolInfoOutput.cs create mode 100644 test/Cnblogs.DashScope.Tests.Shared/RawHttpData/single-generation-message-with-code-interpreter-sse.request.body.json create mode 100644 test/Cnblogs.DashScope.Tests.Shared/RawHttpData/single-generation-message-with-code-interpreter-sse.request.header.txt create mode 100644 test/Cnblogs.DashScope.Tests.Shared/RawHttpData/single-generation-message-with-code-interpreter-sse.response.body.txt create mode 100644 test/Cnblogs.DashScope.Tests.Shared/RawHttpData/single-generation-message-with-code-interpreter-sse.response.header.txt diff --git a/README.md b/README.md index 76f2676..9fdcbcb 100644 --- a/README.md +++ b/README.md @@ -175,6 +175,7 @@ Console.WriteLine($"Image token usage: {raw?.Usage?.ImageTokens}"); - [Tool Calling](#tool-calling) - [Prefix Completion](#prefix-completion) - [Long Context (Qwen-Long)](#long-context-qwen-long) + - [Code Interpreter](#code-interpreter) - [Multimodal](#multimodal) - QWen-VL, QVQ, etc. Supports reasoning/visual understanding/OCR/audio understanding - [Upload file for multimodal usage](#upload-file-for-multimodal-usage) - [Image Recognition/Thinking](#image-recognition/thinking) @@ -595,7 +596,118 @@ Console.WriteLine(completion.Output.Choices[0].Message.Content); await dashScopeClient.OpenAiCompatibleDeleteFileAsync(uploadedFile.Id); ``` +### Code Interpreter + +**This capability is mutually exclusive with Function Call and cannot be used simultaneously.** + +Use the `EnableCodeInterpreter` parameter in `Parameters` to allow the model to write code and call an internal code interpreter for calculations. + +Example Request: + +```csharp +var completion = client.GetTextCompletionStreamAsync( + new ModelRequest() + { + Model = "qwen3-max-preview", + Input = new TextGenerationInput() { Messages = messages }, + Parameters = new TextGenerationParameters() + { + ResultFormat = "message", + EnableThinking = true, + EnableCodeInterpreter = true, + IncrementalOutput = true + } + }); +``` + +The code that model generated will be included in `chunk.Output.ToolInfo.CodeInterpreter`. The invocation process can be considered part of the reasoning process. + +Full example, + +```csharp +var messages = new List(); +const string input = "123的21次方是多少?"; +Console.Write($"User > {input}"); +messages.Add(TextChatMessage.User(input)); +var completion = client.GetTextCompletionStreamAsync( + new ModelRequest + { + Model = "qwen3-max-preview", + Input = new TextGenerationInput { Messages = messages }, + Parameters = new TextGenerationParameters + { + ResultFormat = "message", + EnableThinking = true, + EnableCodeInterpreter = true, + IncrementalOutput = true + } + }); +var reply = new StringBuilder(); +var codeGenerated = false; +var reasoning = false; +TextGenerationTokenUsage? usage = null; +await foreach (var chunk in completion) +{ + var choice = chunk.Output.Choices![0]; + var tool = chunk.Output.ToolInfo?.FirstOrDefault(); + if (codeGenerated == false && tool?.CodeInterpreter != null) + { + Console.WriteLine($"Code > {tool.CodeInterpreter.Code}"); + codeGenerated = true; + } + + if (string.IsNullOrEmpty(choice.Message.ReasoningContent) == false) + { + // reasoning + if (reasoning == false) + { + Console.WriteLine(); + Console.Write("Reasoning > "); + reasoning = true; + } + + Console.Write(choice.Message.ReasoningContent); + continue; + } + + if (reasoning && string.IsNullOrEmpty(choice.Message.Content.Text) == false) + { + reasoning = false; + Console.WriteLine(); + Console.Write("Assistant > "); + } + + Console.Write(choice.Message.Content); + reply.Append(choice.Message.Content); + usage = chunk.Usage; +} + +Console.WriteLine(); +messages.Add(TextChatMessage.Assistant(reply.ToString())); +if (usage != null) +{ + Console.WriteLine( + $"Usage: in({usage.InputTokens})/out({usage.OutputTokens})/reasoning({usage.OutputTokensDetails?.ReasoningTokens})/plugins({usage.Plugins?.CodeInterpreter?.Count})/total({usage.TotalTokens})"); +} + +/* +User > 123的21次方是多少? +Reasoning > 用户问的是123的21次方是多少。这是一个大数计算问题,我需要使用代码计算器来计算这个值。 + +我需要调用code_interpreter函数,传入计算123**21的Python代码。 +123**21 +用户询问123的21次方是多少,我使用代码计算器计算出了结果。结果是一个非常大的数字:77269364466549865653073473388030061522211723 + +我应该直接给出这个结果,因为这是一个精确的数学计算问题,不需要额外的解释或 +Assistant > 123的21次方是:77269364466549865653073473388030061522211723 +Usage: in(704)/out(234)/reasoning(142)/plugins(1)/total(938) +*/ +``` + + + ## Multimodal + Use `GetMultimodalGenerationAsync`/`GetMultimodalGenerationStreamAsync` [Official Documentation](https://help.aliyun.com/zh/model-studio/multimodal) diff --git a/README.zh-Hans.md b/README.zh-Hans.md index b1c2b2e..e471642 100644 --- a/README.zh-Hans.md +++ b/README.zh-Hans.md @@ -12,6 +12,16 @@ ## 快速开始 +### 使用 `Microsoft.Extensions.AI` 接口 + +安装 NuGet 包 `Cnblogs.DashScope.AI` + +```csharp +var client = new DashScopeClient("your-api-key").AsChatClient("qwen-max"); +var completion = await client.CompleteAsync("hello"); +Console.WriteLine(completion) +``` + ### 控制台应用 安装 NuGet 包 `Cnblogs.DashScope.Sdk`。 @@ -78,93 +88,6 @@ public class YourService(IDashScopeClient client) } ``` -### 使用 `Microsoft.Extensions.AI` 接口 - -安装 NuGet 包 `Cnblogs.DashScope.AI` - -```csharp -var client = new DashScopeClient("your-api-key").AsChatClient("qwen-max"); -var completion = await client.GetResponseAsync("hello"); -Console.WriteLine(completion.Text); -``` - -#### 调用原始 SDK - -如果需要使用 `Microsoft.Extensions.AI` 不支持的输入数据或参数,可以通过 `RawPresentation` 直接传入原始的 `TextChatMessage` 或者 `MultimodalMessage` 来直接调用底层 SDK。 - -类似地,当需要传入不支持的参数时,也可以通过设置 `AdditionalProperties` 里的 `raw` 直接传入原始参数。 - -示例(调用 `qwen-doc-turbo`) - -```csharp -var messages = new List() -{ - TextChatMessage.DocUrl( - "从这两份产品手册中,提取所有产品信息,并整理成一个标准的JSON数组。每个对象需要包含:model(产品的型号)、name(产品的名称)、price(价格(去除货币符号和逗号))", - [ - "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20251107/jockge/%E7%A4%BA%E4%BE%8B%E4%BA%A7%E5%93%81%E6%89%8B%E5%86%8CA.docx", - "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20251107/ztwxzr/%E7%A4%BA%E4%BE%8B%E4%BA%A7%E5%93%81%E6%89%8B%E5%86%8CB.docx" - ]) -}; -var parameters = new TextGenerationParameters() -{ - ResultFormat = "message", IncrementalOutput = true, -}; - -var response = client - .AsChatClient("qwen-doc-turbo") - .GetStreamingResponseAsync( - messages.Select(x => new ChatMessage() { RawRepresentation = x }), - new ChatOptions() - { - AdditionalProperties = new AdditionalPropertiesDictionary() { { "raw", parameters } } - }); -await foreach (var chunk in response) -{ - Console.Write(chunk.Text); -} -``` - -类似地,也可以通过模型返回消息里的 `RawPresentation` 获取原始消息。 - -示例(调用 `qwen3-vl-plus` 时获取图像消耗的 Token 数): - -```csharp -var response = client - .AsChatClient("qwen3-vl-plus") - .GetStreamingResponseAsync( - new List() - { - new( - ChatRole.User, - new List() - { - new UriContent( - "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241022/emyrja/dog_and_girl.jpeg", - MediaTypeNames.Image.Jpeg), - new UriContent( - "https://dashscope.oss-cn-beijing.aliyuncs.com/images/tiger.png", - MediaTypeNames.Image.Jpeg), - new TextContent("这些图展现了什么内容?") - }) - }, - new ChatOptions()); -var lastChunk = (ChatResponseUpdate?)null; -await foreach (var chunk in response) -{ - Console.Write(chunk.Text); - lastChunk = chunk; -} - -Console.WriteLine(); - -// 访问原始消息 -var raw = lastChunk?.RawRepresentation as ModelResponse; -Console.WriteLine($"Image token usage: {raw?.Usage?.ImageTokens}"); -``` - - - ## 支持的 API - [文本生成](#文本生成) - QWen3, DeepSeek 等,支持推理/工具调用/网络搜索/翻译等场景 @@ -172,6 +95,7 @@ Console.WriteLine($"Image token usage: {raw?.Usage?.ImageTokens}"); - [深度思考](#深度思考) - [联网搜索](#联网搜索) - [工具调用](#工具调用) + - [代码解释器](#代码解释器) - [前缀续写](#前缀续写) - [长上下文(Qwen-Long)](#长上下文(Qwen-Long)) - [翻译能力(Qwen-MT)](#翻译能力(Qwen-MT)) @@ -189,7 +113,6 @@ Console.WriteLine($"Image token usage: {raw?.Usage?.ImageTokens}"); - [通用文本识别](#通用文本识别) - [多语言识别](#多语言识别) - [界面交互](#界面交互) - - [音频理解](#音频理解) - [语音合成](#语音合成) - CosyVoice,Sambert 等,支持 TTS 等应用场景 - [图像生成](#图像生成) - wanx2.1 等,支持文生图,人像风格重绘等应用场景 - [应用调用](#应用调用) @@ -1090,6 +1013,112 @@ Usage: in(302)/out(19)/total(321) */ ``` +### 代码解释器 + +**该能力与 Function call 互斥,无法同时使用。** + +通过 `Parameters` 里的 `EnableCodeInterpreter` 允许模型编写代码并调用内部代码解释器来进行计算。 + +示例请求: + +```csharp +var completion = client.GetTextCompletionStreamAsync( + new ModelRequest() + { + Model = "qwen3-max-preview", + Input = new TextGenerationInput() { Messages = messages }, + Parameters = new TextGenerationParameters() + { + ResultFormat = "message", + EnableThinking = true, + EnableCodeInterpreter = true, + IncrementalOutput = true + } + }); +``` + +完整示例,大模型生成的代码将被包含在 `chunk.Output.ToolInfo.CodeInterpreter` 里,调用过程可以视为思考过程的一部分。 + +```csharp +var messages = new List(); +const string input = "123的21次方是多少?"; +Console.Write($"User > {input}"); +messages.Add(TextChatMessage.User(input)); +var completion = client.GetTextCompletionStreamAsync( + new ModelRequest + { + Model = "qwen3-max-preview", + Input = new TextGenerationInput { Messages = messages }, + Parameters = new TextGenerationParameters + { + ResultFormat = "message", + EnableThinking = true, + EnableCodeInterpreter = true, + IncrementalOutput = true + } + }); +var reply = new StringBuilder(); +var codeGenerated = false; +var reasoning = false; +TextGenerationTokenUsage? usage = null; +await foreach (var chunk in completion) +{ + var choice = chunk.Output.Choices![0]; + var tool = chunk.Output.ToolInfo?.FirstOrDefault(); + if (codeGenerated == false && tool?.CodeInterpreter != null) + { + Console.WriteLine($"Code > {tool.CodeInterpreter.Code}"); + codeGenerated = true; + } + + if (string.IsNullOrEmpty(choice.Message.ReasoningContent) == false) + { + // reasoning + if (reasoning == false) + { + Console.WriteLine(); + Console.Write("Reasoning > "); + reasoning = true; + } + + Console.Write(choice.Message.ReasoningContent); + continue; + } + + if (reasoning && string.IsNullOrEmpty(choice.Message.Content.Text) == false) + { + reasoning = false; + Console.WriteLine(); + Console.Write("Assistant > "); + } + + Console.Write(choice.Message.Content); + reply.Append(choice.Message.Content); + usage = chunk.Usage; +} + +Console.WriteLine(); +messages.Add(TextChatMessage.Assistant(reply.ToString())); +if (usage != null) +{ + Console.WriteLine( + $"Usage: in({usage.InputTokens})/out({usage.OutputTokens})/reasoning({usage.OutputTokensDetails?.ReasoningTokens})/plugins({usage.Plugins?.CodeInterpreter?.Count})/total({usage.TotalTokens})"); +} + +/* +User > 123的21次方是多少? +Reasoning > 用户问的是123的21次方是多少。这是一个大数计算问题,我需要使用代码计算器来计算这个值。 + +我需要调用code_interpreter函数,传入计算123**21的Python代码。 +123**21 +用户询问123的21次方是多少,我使用代码计算器计算出了结果。结果是一个非常大的数字:77269364466549865653073473388030061522211723 + +我应该直接给出这个结果,因为这是一个精确的数学计算问题,不需要额外的解释或 +Assistant > 123的21次方是:77269364466549865653073473388030061522211723 +Usage: in(704)/out(234)/reasoning(142)/plugins(1)/total(938) +*/ +``` + ### 结构化输出(JSON 输出) 设置 `Parameter` 里的 `ResponseFormat` (注意不是 `ResultFormat` )为 JSON 即可强制大模型以 JSON 格式输出。 @@ -1255,46 +1284,13 @@ Usage: in(31)/out(34)/reasoning()/total(65) 尽管 QWen-Long 支持直接传入字符串,但还是推荐先将文件上传后再通过 FileId 的形式传入 `message` 数组中。 -上传文件,使用 `OpenAiCompatibleUploadFileAsync()` 方法传入文件: - -```csharp -var file1 = await client.OpenAiCompatibleUploadFileAsync(File.OpenRead("1024-1.txt"), "file1.txt"); -``` - -如果文件比较大,服务端可能需要几秒的时间进行解析。根据返回的 `file.Status` 属性是否为 `processed` 可以判断是否解析完成。未解析完成的文件无法被模型使用,需要等待解析完成。以下是一个示例方法,自动等待文档解析完毕或超时抛出异常: - -```csharp -private static async Task EnsureFileProcessedAsync( - IDashScopeClient client, - DashScopeFileId id, - int timeoutInSeconds = 5) -{ - var timeout = Task.Delay(TimeSpan.FromSeconds(timeoutInSeconds)); - while (timeout.IsCompleted == false) - { - var file = await client.GetFileAsync(id); - if (file.Status == "processed") - { - return; - } - - await Task.Delay(1000); - } - - throw new InvalidOperationException($"File not processed within timeout, fileId: {id}"); -} -``` - -调用方式: +上传文件,使用 `UploadFileAsync()` 方法传入文件(注意不是 `UploadTemporaryFileAsync`, 后者是用于上传媒体文件的): ```csharp -if (file.Status != "processed") -{ - await EnsureFileProcessedAsync(client, file.Id, 3); // 最多等待 3 秒 -} +var file1 = await client.UploadFileAsync(File.OpenRead("1024-1.txt"), "file1.txt"); ``` -待文档解析完成后,将文件作为 `system` 消息传入消息数组中,注意第一条 `system` 消息不能省略,否则模型可能会将文件里的内容当作 `System prompt` 。 +然后将文件作为 `system` 消息传入消息数组中,注意第一条 `system` 消息不能省略,否则模型可能会将文件里的内容当作 System prompt 。 ```csharp var messages = new List(); @@ -1326,10 +1322,10 @@ var completion = client.GetTextCompletionStreamAsync( }); ``` -最后可以通过 `OpenAiCompatibleDeleteFileAsync()` 方法删除上传的文件。 +最后可以通过 `DeleteFileAsync()` 方法删除上传的文件 ```csharp -var result = await client.OpenAiCompatibleDeleteFileAsync(file1.Id); +var result = await client.DeleteFileAsync(file1.Id); Console.WriteLine(result.Deleted ? "Success" : "Failed"); ``` @@ -1337,14 +1333,11 @@ Console.WriteLine(result.Deleted ? "Success" : "Failed"); ```csharp Console.WriteLine("Uploading file1..."); -var file1 = await client.OpenAiCompatibleUploadFileAsync(File.OpenRead("1024-1.txt"), "file1.txt"); +var file1 = await client.UploadFileAsync(File.OpenRead("1024-1.txt"), "file1.txt"); Console.WriteLine("Uploading file2..."); -var file2 = await client.OpenAiCompatibleUploadFileAsync(File.OpenRead("1024-2.txt"), "file2.txt"); +var file2 = await client.UploadFileAsync(File.OpenRead("1024-2.txt"), "file2.txt"); Console.WriteLine($"Uploaded, file1 id: {file1.Id.ToUrl()}, file2 id: {file2.Id.ToUrl()}"); -await EnsureFileProcessedAsync(client, file1); -await EnsureFileProcessedAsync(client, file2); - var messages = new List(); messages.Add(TextChatMessage.System("You are a helpful assistant")); messages.Add(TextChatMessage.File(file1.Id)); @@ -1410,31 +1403,6 @@ Console.Write("Deleting file2..."); result = await client.DeleteFileAsync(file2.Id); Console.WriteLine(result.Deleted ? "Success" : "Failed"); -private static async Task EnsureFileProcessedAsync( - IDashScopeClient client, - DashScopeFile file, - int timeoutInSeconds = 5) -{ - if (file.Status == "processed") - { - return; - } - - var timeout = Task.Delay(TimeSpan.FromSeconds(timeoutInSeconds)); - while (timeout.IsCompleted == false) - { - var realtime = await client.GetFileAsync(file.Id); - if (realtime.Status == "processed") - { - return; - } - - await Task.Delay(1000); - } - - throw new InvalidOperationException($"File not processed within timeout, fileId: {file.Id}"); -} - /* Uploading file1... Uploading file2... @@ -1650,10 +1618,10 @@ Usage: in(147)/out(130)/total(277) ### 数据挖掘(Qwen-doc-turbo) -上传文件,使用 `OpenAiCompatibleUploadFileAsync()` 方法传入文件(注意不是 `UploadTemporaryFileAsync`, 后者是用于上传媒体文件的): +上传文件,使用 `UploadFileAsync()` 方法传入文件(注意不是 `UploadTemporaryFileAsync`, 后者是用于上传媒体文件的): ```csharp -var file1 = await client.OpenAiCompatibleUploadFileAsync(File.OpenRead("1024-1.txt"), "file1.txt"); +var file1 = await client.UploadFileAsync(File.OpenRead("1024-1.txt"), "file1.txt"); ``` 然后将文件作为 `system` 消息传入消息数组中,注意第一条 `system` 消息不能省略,否则模型可能会将文件里的内容当作 System prompt 。 @@ -1688,28 +1656,11 @@ var completion = client.GetTextCompletionStreamAsync( }); ``` -如果文件来自公网 URL,也可以使用 `TextChatMessage.DocUrl` 传入,此时不再需要额外添加一个 User 信息。 - -示例: - -```csharp -var messages = new List - { - TextChatMessage.System("You are a helpful assistant"), - TextChatMessage.DocUrl( - "从这两份产品手册中,提取所有产品信息,并整理成一个标准的JSON数组。每个对象需要包含:model(产品的型号)、name(产品的名称)、price(价格(去除货币符号和逗号))", - [ - "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20251107/jockge/%E7%A4%BA%E4%BE%8B%E4%BA%A7%E5%93%81%E6%89%8B%E5%86%8CA.docx", - "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20251107/ztwxzr/%E7%A4%BA%E4%BE%8B%E4%BA%A7%E5%93%81%E6%89%8B%E5%86%8CB.docx" - ]), - }; -``` - 完整示例代码: ````csharp Console.WriteLine("Uploading file1..."); -var file1 = await client.OpenAiCompatibleUploadFileAsync(File.OpenRead("1024-1.txt"), "file1.txt"); +var file1 = await client.UploadFileAsync(File.OpenRead("1024-1.txt"), "file1.txt"); var messages = new List(); messages.Add(TextChatMessage.System("You are a helpful assistant")); messages.Add(TextChatMessage.File(file1.Id)); @@ -1753,7 +1704,7 @@ if (usage != null) // Deleting files Console.Write("Deleting file1..."); -var result = await client.OpenAiCompatibleDeleteFileAsync(file1.Id); +var result = await client.DeleteFileAsync(file1.Id); Console.WriteLine(result.Deleted ? "Success" : "Failed"); /* @@ -2751,7 +2702,7 @@ var completion = client.GetMultimodalGenerationAsync( 示例: -![网页](sample/Cnblogs.DashScope.Sample/webpage.jpg) +![倾斜的图像](sample/Cnblogs.DashScope.Sample/tilted.png) ```csharp Console.WriteLine("Text:"); @@ -2771,7 +2722,7 @@ foreach (var info in completion.Output.Choices[0].Message.Content[0].OcrResult!. 输出结果: ````csharp -Text: +Text: ```json [ {"rotate_rect": [236, 254, 115, 299, 90], "text": "OpenAI 兼容"}, @@ -2781,7 +2732,7 @@ Text: {"rotate_rect": [712, 684, 115, 85, 90], "text": "curl"} ] ``` -WordsInfo: +WordsInfo: OpenAI 兼容 Location: [46,55,205,55,205,87,46,87] RotateRect: [125,71,159,32,0] @@ -3400,7 +3351,7 @@ Salam! "y": , "description": "" } - + ### TYPE - **功能**: 输入文本。 - **Parameters模板**: @@ -3408,7 +3359,7 @@ Salam! "text": "", "needs_enter": } - + ### SCROLL - **功能**: 滚动窗口。 - **Parameters模板**: @@ -3416,28 +3367,28 @@ Salam! "direction": "<'up' or 'down'>", "amount": "<'small', 'medium', or 'large'>" } - + ### KEY_PRESS - **功能**: 按下功能键。 - **Parameters模板**: { "key": "" } - + ### FINISH - **功能**: 任务成功完成。 - **Parameters模板**: { "message": "" } - + ### FAILE - **功能**: 任务无法完成。 - **Parameters模板**: { "reason": "" } - + ## 4. 思维与决策框架 在生成每一步操作前,请严格遵循以下思考-验证流程: @@ -3491,78 +3442,6 @@ var completion = client.GetMultimodalGenerationStreamAsync( 随后您需要自行实现大模型返回的操作(这里是点击屏幕上的位置),然后返回下一步的截图和意图。 -### 音频理解 - -`qwen-audio` 无法用于生产环境,这里以使用 `Qwen3-Omni-Captioner` 为例: - -示例请求: - -```csharp -// upload file -await using var audio = File.OpenRead("noise.wav"); -var ossLink = await client.UploadTemporaryFileAsync("qwen3-omni-30b-a3b-captioner", audio, "noise.wav"); -Console.WriteLine($"File uploaded: {ossLink}"); -var messages = new List -{ - MultimodalMessage.User( - [ - // 也可以直接传入公网地址 - MultimodalMessageContent.AudioContent(ossLink), - ]) -}; -var completion = client.GetMultimodalGenerationStreamAsync( - new ModelRequest() - { - Model = "qwen3-omni-30b-a3b-captioner", - Input = new MultimodalInput() { Messages = messages }, - Parameters = new MultimodalParameters() { IncrementalOutput = true, } - }); -``` - -这里开启了流式增量输出,遍历返回的 `IAsyncEnumerable` 即可获取模型回复,示例: - -```csharp -var reply = new StringBuilder(); -var first = true; -MultimodalTokenUsage? usage = null; -await foreach (var chunk in completion) -{ - var choice = chunk.Output.Choices[0]; - if (first) - { - first = false; - Console.WriteLine(); - Console.Write("Assistant > "); - } - - if (choice.Message.Content.Count == 0) - { - continue; - } - - Console.Write(choice.Message.Content[0].Text); - reply.Append(choice.Message.Content[0].Text); - usage = chunk.Usage; -} - -Console.WriteLine(); -messages.Add(MultimodalMessage.Assistant([MultimodalMessageContent.TextContent(reply.ToString())])); -``` - -示例输出: - -``` -Assistant > The audio clip opens with a rapid, percussive metallic clatter, reminiscent of a typewriter or similar mechanical device, which continues in a steady rhythm throughout the recording. This clatter is slightly left-of-center in the stereo field and is accompanied by a faint, low-frequency hum, likely from a household appliance or HVAC system. The acoustic environment is a small, enclosed room with hard surfaces, indicated by the short, bright reverberation of both the clatter and the speaker’s voice. The audio quality is moderate, with a noticeable electronic hiss and some loss of high-frequency detail, but no digital distortion or clipping. - -At the one-second mark, a male voice enters, positioned slightly right-of-center and closer to the microphone. He speaks in standard Mandarin, with a tone of weary exasperation: “哎 呀,这样我还怎么安静工作啊?” (“Aiyā, zěnyàng wǒ hái zěnme ānjìng gōngzuò a?”), which translates to “Oh, how can I possibly work quietly like this?” His speech is clear, with a slightly rising pitch on “安静” (“quietly”) and a falling pitch on “啊” (“a”), conveying a sense of complaint and fatigue. The accent is standard, with no regional inflection, and the voice is that of a young to middle-aged adult male. - -Throughout the clip, the mechanical clatter remains constant and prominent, occasionally competing with the voice for clarity. There are no other sounds, such as footsteps, additional voices, or environmental noises, and the background is otherwise quiet. The interplay between the persistent mechanical noise and the speaker’s complaint creates a vivid sense of disruption and frustration, suggesting an environment where work is being impeded by an external, uncontrolled sound source. - -Culturally, the use of Mandarin, standard pronunciation, and modern recording quality indicate a contemporary, urban Chinese setting. The language and tone are universally relatable, reflecting a common experience of being disturbed during work. The lack of regional markers or distinctive background noises suggests a generic, possibly domestic or office-like space, but with no clear indicators of a specific location or social context. - -In summary, the audio portrays a modern Mandarin-speaking man, exasperated by a constant, distracting mechanical noise (likely a typewriter or similar device), attempting to work in a small, reverberant room. The recording’s technical and acoustic features reinforce the sense of disruption and frustration, while the language and setting suggest a contemporary, urban Chinese context. -``` - ## 语音合成 通过 `dashScopeClient.CreateSpeechSynthesizerSocketSessionAsync()` 来创建一个语音合成会话。 diff --git a/sample/Cnblogs.DashScope.Sample/Multimodal/ImageInputSample.cs b/sample/Cnblogs.DashScope.Sample/Multimodal/ImageInputSample.cs index 85ed8d0..f223d17 100644 --- a/sample/Cnblogs.DashScope.Sample/Multimodal/ImageInputSample.cs +++ b/sample/Cnblogs.DashScope.Sample/Multimodal/ImageInputSample.cs @@ -3,7 +3,7 @@ namespace Cnblogs.DashScope.Sample.Multimodal; -public class ImageInputSample: MultimodalSample +public class ImageInputSample : MultimodalSample { /// public override string Description => "Chat with image input"; @@ -11,15 +11,16 @@ public class ImageInputSample: MultimodalSample /// public override async Task RunAsync(IDashScopeClient client) { - var messages = new List(); - messages.Add( + var messages = new List + { MultimodalMessage.User( [ MultimodalMessageContent.ImageContent( "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241022/emyrja/dog_and_girl.jpeg"), MultimodalMessageContent.ImageContent("https://dashscope.oss-cn-beijing.aliyuncs.com/images/tiger.png"), MultimodalMessageContent.TextContent("这些图展现了什么内容?") - ])); + ]) + }; var completion = client.GetMultimodalGenerationStreamAsync( new ModelRequest() { diff --git a/sample/Cnblogs.DashScope.Sample/Multimodal/ImageUploadSample.cs b/sample/Cnblogs.DashScope.Sample/Multimodal/ImageUploadSample.cs index 4104cef..a98d260 100644 --- a/sample/Cnblogs.DashScope.Sample/Multimodal/ImageUploadSample.cs +++ b/sample/Cnblogs.DashScope.Sample/Multimodal/ImageUploadSample.cs @@ -3,7 +3,7 @@ namespace Cnblogs.DashScope.Sample.Multimodal; -public class ImageUploadSample: MultimodalSample +public class ImageUploadSample : MultimodalSample { /// public override string Description => "Upload image from file system"; diff --git a/sample/Cnblogs.DashScope.Sample/Multimodal/OcrAdvancedRecognitionSample.cs b/sample/Cnblogs.DashScope.Sample/Multimodal/OcrAdvancedRecognitionSample.cs index 611128b..42bd1ab 100644 --- a/sample/Cnblogs.DashScope.Sample/Multimodal/OcrAdvancedRecognitionSample.cs +++ b/sample/Cnblogs.DashScope.Sample/Multimodal/OcrAdvancedRecognitionSample.cs @@ -2,7 +2,7 @@ namespace Cnblogs.DashScope.Sample.Multimodal; -public class OcrAdvancedRecognitionSample: MultimodalSample +public class OcrAdvancedRecognitionSample : MultimodalSample { /// public override string Description => "OCR Advanced Recognition Task Sample"; diff --git a/sample/Cnblogs.DashScope.Sample/Multimodal/OcrDocumentToLaTeXSample.cs b/sample/Cnblogs.DashScope.Sample/Multimodal/OcrDocumentToLaTeXSample.cs index 84986ec..105ac03 100644 --- a/sample/Cnblogs.DashScope.Sample/Multimodal/OcrDocumentToLaTeXSample.cs +++ b/sample/Cnblogs.DashScope.Sample/Multimodal/OcrDocumentToLaTeXSample.cs @@ -2,7 +2,7 @@ namespace Cnblogs.DashScope.Sample.Multimodal; -public class OcrDocumentToLaTeXSample: MultimodalSample +public class OcrDocumentToLaTeXSample : MultimodalSample { /// public override string Description => "OCR parsing scanned document to LaTeX sample"; diff --git a/sample/Cnblogs.DashScope.Sample/Multimodal/OcrFormulaRecognitionSample.cs b/sample/Cnblogs.DashScope.Sample/Multimodal/OcrFormulaRecognitionSample.cs index f15a989..8cb86a0 100644 --- a/sample/Cnblogs.DashScope.Sample/Multimodal/OcrFormulaRecognitionSample.cs +++ b/sample/Cnblogs.DashScope.Sample/Multimodal/OcrFormulaRecognitionSample.cs @@ -2,7 +2,7 @@ namespace Cnblogs.DashScope.Sample.Multimodal; -public class OcrFormulaRecognitionSample: MultimodalSample +public class OcrFormulaRecognitionSample : MultimodalSample { /// public override string Description => "OCR Math Formula Recognition Sample"; diff --git a/sample/Cnblogs.DashScope.Sample/Multimodal/OcrKeyInformationExtractionSample.cs b/sample/Cnblogs.DashScope.Sample/Multimodal/OcrKeyInformationExtractionSample.cs index 9abf9a3..ff2e408 100644 --- a/sample/Cnblogs.DashScope.Sample/Multimodal/OcrKeyInformationExtractionSample.cs +++ b/sample/Cnblogs.DashScope.Sample/Multimodal/OcrKeyInformationExtractionSample.cs @@ -4,7 +4,7 @@ namespace Cnblogs.DashScope.Sample.Multimodal; -public class OcrKeyInformationExtractionSample: MultimodalSample +public class OcrKeyInformationExtractionSample : MultimodalSample { /// public override string Description => "OCR Key Information Extraction Sample"; diff --git a/sample/Cnblogs.DashScope.Sample/Multimodal/OcrMultilanguageSample.cs b/sample/Cnblogs.DashScope.Sample/Multimodal/OcrMultilanguageSample.cs index dd4c5c9..c3ebe05 100644 --- a/sample/Cnblogs.DashScope.Sample/Multimodal/OcrMultilanguageSample.cs +++ b/sample/Cnblogs.DashScope.Sample/Multimodal/OcrMultilanguageSample.cs @@ -2,7 +2,7 @@ namespace Cnblogs.DashScope.Sample.Multimodal; -public class OcrMultilanguageSample: MultimodalSample +public class OcrMultilanguageSample : MultimodalSample { /// public override string Description => "OCR Text Recognition(Multilanguage) Sample"; diff --git a/sample/Cnblogs.DashScope.Sample/Multimodal/OcrSample.cs b/sample/Cnblogs.DashScope.Sample/Multimodal/OcrSample.cs index c4b1924..921f885 100644 --- a/sample/Cnblogs.DashScope.Sample/Multimodal/OcrSample.cs +++ b/sample/Cnblogs.DashScope.Sample/Multimodal/OcrSample.cs @@ -3,7 +3,7 @@ namespace Cnblogs.DashScope.Sample.Multimodal; -public class OcrSample: MultimodalSample +public class OcrSample : MultimodalSample { /// public override string Description => "OCR Sample with rotate enabled"; diff --git a/sample/Cnblogs.DashScope.Sample/Multimodal/OcrTableParsingSample.cs b/sample/Cnblogs.DashScope.Sample/Multimodal/OcrTableParsingSample.cs index 31403b8..4b22199 100644 --- a/sample/Cnblogs.DashScope.Sample/Multimodal/OcrTableParsingSample.cs +++ b/sample/Cnblogs.DashScope.Sample/Multimodal/OcrTableParsingSample.cs @@ -2,7 +2,7 @@ namespace Cnblogs.DashScope.Sample.Multimodal; -public class OcrTableParsingSample: MultimodalSample +public class OcrTableParsingSample : MultimodalSample { /// public override string Description => "OCR Table Parsing Sample"; diff --git a/sample/Cnblogs.DashScope.Sample/Multimodal/OcrTextRecognition.cs b/sample/Cnblogs.DashScope.Sample/Multimodal/OcrTextRecognition.cs index 5ab9329..ed8052f 100644 --- a/sample/Cnblogs.DashScope.Sample/Multimodal/OcrTextRecognition.cs +++ b/sample/Cnblogs.DashScope.Sample/Multimodal/OcrTextRecognition.cs @@ -2,7 +2,7 @@ namespace Cnblogs.DashScope.Sample.Multimodal; -public class OcrTextRecognition: MultimodalSample +public class OcrTextRecognition : MultimodalSample { /// public override string Description => "OCR Text Recognition(Chinese and English) Sample"; diff --git a/sample/Cnblogs.DashScope.Sample/Multimodal/VideoInputSample.cs b/sample/Cnblogs.DashScope.Sample/Multimodal/VideoInputSample.cs index bd2af6d..02b3557 100644 --- a/sample/Cnblogs.DashScope.Sample/Multimodal/VideoInputSample.cs +++ b/sample/Cnblogs.DashScope.Sample/Multimodal/VideoInputSample.cs @@ -3,7 +3,7 @@ namespace Cnblogs.DashScope.Sample.Multimodal; -public class VideoInputSample: MultimodalSample +public class VideoInputSample : MultimodalSample { /// public override string Description => "Video input sample"; diff --git a/sample/Cnblogs.DashScope.Sample/Text/ChatSample.cs b/sample/Cnblogs.DashScope.Sample/Text/ChatSample.cs index 74c309b..b46b84e 100644 --- a/sample/Cnblogs.DashScope.Sample/Text/ChatSample.cs +++ b/sample/Cnblogs.DashScope.Sample/Text/ChatSample.cs @@ -2,7 +2,7 @@ namespace Cnblogs.DashScope.Sample.Text; -public class ChatSample: TextSample +public class ChatSample : TextSample { /// public override string Description => "Basic chat completion"; diff --git a/sample/Cnblogs.DashScope.Sample/Text/ChatStreamSample.cs b/sample/Cnblogs.DashScope.Sample/Text/ChatStreamSample.cs index 0ecce02..704cfef 100644 --- a/sample/Cnblogs.DashScope.Sample/Text/ChatStreamSample.cs +++ b/sample/Cnblogs.DashScope.Sample/Text/ChatStreamSample.cs @@ -3,7 +3,7 @@ namespace Cnblogs.DashScope.Sample.Text; -public class ChatStreamSample: TextSample +public class ChatStreamSample : TextSample { /// public override string Description => "Chat completion with stream output"; diff --git a/sample/Cnblogs.DashScope.Sample/Text/ChatThinkingBudgetSample.cs b/sample/Cnblogs.DashScope.Sample/Text/ChatThinkingBudgetSample.cs index cb7e789..c1663f4 100644 --- a/sample/Cnblogs.DashScope.Sample/Text/ChatThinkingBudgetSample.cs +++ b/sample/Cnblogs.DashScope.Sample/Text/ChatThinkingBudgetSample.cs @@ -3,7 +3,7 @@ namespace Cnblogs.DashScope.Sample.Text; -public class ChatThinkingBudgetSample: TextSample +public class ChatThinkingBudgetSample : TextSample { /// public override string Description => "Chat completion with thinking budget"; diff --git a/sample/Cnblogs.DashScope.Sample/Text/ChatToolCallingSample.cs b/sample/Cnblogs.DashScope.Sample/Text/ChatToolCallingSample.cs index 1789a60..434f60b 100644 --- a/sample/Cnblogs.DashScope.Sample/Text/ChatToolCallingSample.cs +++ b/sample/Cnblogs.DashScope.Sample/Text/ChatToolCallingSample.cs @@ -7,7 +7,7 @@ namespace Cnblogs.DashScope.Sample.Text; -public class ChatToolCallingSample: TextSample +public class ChatToolCallingSample : TextSample { /// public override string Description => "Chat with tool calling"; diff --git a/sample/Cnblogs.DashScope.Sample/Text/ChatWebSearchSample.cs b/sample/Cnblogs.DashScope.Sample/Text/ChatWebSearchSample.cs index c8b5302..8587625 100644 --- a/sample/Cnblogs.DashScope.Sample/Text/ChatWebSearchSample.cs +++ b/sample/Cnblogs.DashScope.Sample/Text/ChatWebSearchSample.cs @@ -3,7 +3,7 @@ namespace Cnblogs.DashScope.Sample.Text; -public class ChatWebSearchSample: TextSample +public class ChatWebSearchSample : TextSample { /// public override string Description => "Chat with web search enabled"; diff --git a/sample/Cnblogs.DashScope.Sample/Text/CodeInterpreterSample.cs b/sample/Cnblogs.DashScope.Sample/Text/CodeInterpreterSample.cs new file mode 100644 index 0000000..63b0f46 --- /dev/null +++ b/sample/Cnblogs.DashScope.Sample/Text/CodeInterpreterSample.cs @@ -0,0 +1,92 @@ +using System.Text; +using Cnblogs.DashScope.Core; + +namespace Cnblogs.DashScope.Sample.Text; + +public class CodeInterpreterSample : TextSample +{ + /// + public override string Description => "Chat with code interpreter"; + + /// + public async override Task RunAsync(IDashScopeClient client) + { + var messages = new List(); + const string input = "123的21次方是多少?"; + Console.Write($"User > {input}"); + messages.Add(TextChatMessage.User(input)); + var completion = client.GetTextCompletionStreamAsync( + new ModelRequest + { + Model = "qwen3-max-preview", + Input = new TextGenerationInput { Messages = messages }, + Parameters = new TextGenerationParameters + { + ResultFormat = "message", + EnableThinking = true, + EnableCodeInterpreter = true, + IncrementalOutput = true + } + }); + var reply = new StringBuilder(); + var codeGenerated = false; + var reasoning = false; + TextGenerationTokenUsage? usage = null; + await foreach (var chunk in completion) + { + var choice = chunk.Output.Choices![0]; + var tool = chunk.Output.ToolInfo?.FirstOrDefault(); + if (codeGenerated == false && tool?.CodeInterpreter != null) + { + Console.WriteLine(tool.CodeInterpreter.Code); + codeGenerated = true; + } + + if (string.IsNullOrEmpty(choice.Message.ReasoningContent) == false) + { + // reasoning + if (reasoning == false) + { + Console.WriteLine(); + Console.Write("Reasoning > "); + reasoning = true; + } + + Console.Write(choice.Message.ReasoningContent); + continue; + } + + if (reasoning && string.IsNullOrEmpty(choice.Message.Content.Text) == false) + { + reasoning = false; + Console.WriteLine(); + Console.Write("Assistant > "); + } + + Console.Write(choice.Message.Content); + reply.Append(choice.Message.Content); + usage = chunk.Usage; + } + + Console.WriteLine(); + messages.Add(TextChatMessage.Assistant(reply.ToString())); + if (usage != null) + { + Console.WriteLine( + $"Usage: in({usage.InputTokens})/out({usage.OutputTokens})/reasoning({usage.OutputTokensDetails?.ReasoningTokens})/plugins({usage.Plugins?.CodeInterpreter?.Count})/total({usage.TotalTokens})"); + } + } +} + +/* +User > 123的21次方是多少? +Reasoning > 用户问的是123的21次方是多少。这是一个大数计算问题,我需要使用代码计算器来计算这个值。 + +我需要调用code_interpreter函数,传入计算123**21的Python代码。 +Code > 123**21 +用户询问123的21次方是多少,我使用代码计算器计算出了结果。结果是一个非常大的数字:77269364466549865653073473388030061522211723 + +我应该直接给出这个结果,因为这是一个精确的数学计算问题,不需要额外的解释或 +Assistant > 123的21次方是:77269364466549865653073473388030061522211723 +Usage: in(704)/out(234)/reasoning(142)/plugins(1)/total(938) + */ diff --git a/sample/Cnblogs.DashScope.Sample/Text/DataMiningSample.cs b/sample/Cnblogs.DashScope.Sample/Text/DataMiningSample.cs index 44c5085..eb846a2 100644 --- a/sample/Cnblogs.DashScope.Sample/Text/DataMiningSample.cs +++ b/sample/Cnblogs.DashScope.Sample/Text/DataMiningSample.cs @@ -3,7 +3,7 @@ namespace Cnblogs.DashScope.Sample.Text; -public class DataMiningSample: TextSample +public class DataMiningSample : TextSample { /// public override string Description => "Data Mining with Qwen-Doc-Turbo"; diff --git a/sample/Cnblogs.DashScope.Sample/Text/DeepResearchSample.cs b/sample/Cnblogs.DashScope.Sample/Text/DeepResearchSample.cs index 5949928..ad471a0 100644 --- a/sample/Cnblogs.DashScope.Sample/Text/DeepResearchSample.cs +++ b/sample/Cnblogs.DashScope.Sample/Text/DeepResearchSample.cs @@ -3,7 +3,7 @@ namespace Cnblogs.DashScope.Sample.Text; -public class DeepResearchSample: TextSample +public class DeepResearchSample : TextSample { /// public override string Description => "Deep research sample"; diff --git a/sample/Cnblogs.DashScope.Sample/Text/JsonOutputSample.cs b/sample/Cnblogs.DashScope.Sample/Text/JsonOutputSample.cs index e6477a7..335d01e 100644 --- a/sample/Cnblogs.DashScope.Sample/Text/JsonOutputSample.cs +++ b/sample/Cnblogs.DashScope.Sample/Text/JsonOutputSample.cs @@ -3,7 +3,7 @@ namespace Cnblogs.DashScope.Sample.Text; -public class JsonOutputSample: TextSample +public class JsonOutputSample : TextSample { /// public override string Description => "JSON output text sample"; diff --git a/sample/Cnblogs.DashScope.Sample/Text/LongContextSample.cs b/sample/Cnblogs.DashScope.Sample/Text/LongContextSample.cs index 0598d18..777de16 100644 --- a/sample/Cnblogs.DashScope.Sample/Text/LongContextSample.cs +++ b/sample/Cnblogs.DashScope.Sample/Text/LongContextSample.cs @@ -3,7 +3,7 @@ namespace Cnblogs.DashScope.Sample.Text; -public class LongContextSample: TextSample +public class LongContextSample : TextSample { /// public override string Description => "File upload and long context model sample"; diff --git a/sample/Cnblogs.DashScope.Sample/Text/PrefixCompletionSample.cs b/sample/Cnblogs.DashScope.Sample/Text/PrefixCompletionSample.cs index bead37a..f903b8a 100644 --- a/sample/Cnblogs.DashScope.Sample/Text/PrefixCompletionSample.cs +++ b/sample/Cnblogs.DashScope.Sample/Text/PrefixCompletionSample.cs @@ -3,7 +3,7 @@ namespace Cnblogs.DashScope.Sample.Text; -public class PrefixCompletionSample: TextSample +public class PrefixCompletionSample : TextSample { /// public override string Description => "Prefix completion sample"; diff --git a/sample/Cnblogs.DashScope.Sample/Text/RolePlaySample.cs b/sample/Cnblogs.DashScope.Sample/Text/RolePlaySample.cs index 3ce6cff..bd9e010 100644 --- a/sample/Cnblogs.DashScope.Sample/Text/RolePlaySample.cs +++ b/sample/Cnblogs.DashScope.Sample/Text/RolePlaySample.cs @@ -2,7 +2,7 @@ namespace Cnblogs.DashScope.Sample.Text; -public class RolePlaySample: TextSample +public class RolePlaySample : TextSample { /// public override string Description => "Role play with qwen-character"; diff --git a/sample/Cnblogs.DashScope.Sample/Text/TranslationSample.cs b/sample/Cnblogs.DashScope.Sample/Text/TranslationSample.cs index 28868e3..8e24873 100644 --- a/sample/Cnblogs.DashScope.Sample/Text/TranslationSample.cs +++ b/sample/Cnblogs.DashScope.Sample/Text/TranslationSample.cs @@ -2,7 +2,7 @@ namespace Cnblogs.DashScope.Sample.Text; -public class TranslationSample: TextSample +public class TranslationSample : TextSample { /// public override string Description => "Translate with Qwen-MT models"; diff --git a/src/Cnblogs.DashScope.AI/Cnblogs.DashScope.AI.csproj b/src/Cnblogs.DashScope.AI/Cnblogs.DashScope.AI.csproj index 9aa095e..d75ae37 100644 --- a/src/Cnblogs.DashScope.AI/Cnblogs.DashScope.AI.csproj +++ b/src/Cnblogs.DashScope.AI/Cnblogs.DashScope.AI.csproj @@ -1,6 +1,5 @@  - net8.0 Cnblogs.DashScope.AI true Cnblogs;Dashscope;Microsoft.Extensions.AI;Sdk;Embedding; diff --git a/src/Cnblogs.DashScope.Core/ITextGenerationParameters.cs b/src/Cnblogs.DashScope.Core/ITextGenerationParameters.cs index 46566e1..f904ea4 100644 --- a/src/Cnblogs.DashScope.Core/ITextGenerationParameters.cs +++ b/src/Cnblogs.DashScope.Core/ITextGenerationParameters.cs @@ -99,4 +99,9 @@ public interface ITextGenerationParameters /// or visit the official doc for more information: https://help.aliyun.com/zh/model-studio/role-play /// Dictionary? LogitBias { get; set; } + + /// + /// Allow model to call internal Python interpreter. Can not use with tools. + /// + bool? EnableCodeInterpreter { get; set; } } diff --git a/src/Cnblogs.DashScope.Core/Internals/TextChatMessageContentConvertor.cs b/src/Cnblogs.DashScope.Core/Internals/TextChatMessageContentConvertor.cs index 11ad871..104a10e 100644 --- a/src/Cnblogs.DashScope.Core/Internals/TextChatMessageContentConvertor.cs +++ b/src/Cnblogs.DashScope.Core/Internals/TextChatMessageContentConvertor.cs @@ -30,8 +30,8 @@ internal class TextChatMessageContentConvertor : JsonConverter x is { DocUrl: not null, FileParsingStrategy: not null }) ?? throw new JsonException("No doc_url and file_parsing_strategy were found"); - var docUrls = docUrlContent?.DocUrl; - var strategy = docUrlContent?.FileParsingStrategy; + var docUrls = docUrlContent.DocUrl; + var strategy = docUrlContent.FileParsingStrategy; return new TextChatMessageContent(text, docUrls, strategy); } diff --git a/src/Cnblogs.DashScope.Core/TextGenerationCodeInterpreterPluginUsage.cs b/src/Cnblogs.DashScope.Core/TextGenerationCodeInterpreterPluginUsage.cs new file mode 100644 index 0000000..0b641b7 --- /dev/null +++ b/src/Cnblogs.DashScope.Core/TextGenerationCodeInterpreterPluginUsage.cs @@ -0,0 +1,21 @@ +namespace Cnblogs.DashScope.Core; + +/// +/// Token usages of code interpreter plugin. +/// +public class TextGenerationCodeInterpreterPluginUsage +{ + /// + /// Initialize a with count. + /// + /// Usage count. + public TextGenerationCodeInterpreterPluginUsage(int count) + { + Count = count; + } + + /// + /// Token usage count. + /// + public int Count { get; set; } +} diff --git a/src/Cnblogs.DashScope.Core/TextGenerationOutput.cs b/src/Cnblogs.DashScope.Core/TextGenerationOutput.cs index f379ac7..1f3dbf1 100644 --- a/src/Cnblogs.DashScope.Core/TextGenerationOutput.cs +++ b/src/Cnblogs.DashScope.Core/TextGenerationOutput.cs @@ -29,4 +29,9 @@ public class TextGenerationOutput /// Not null when . configured to show source. /// public TextGenerationWebSearchInfo? SearchInfo { get; set; } + + /// + /// Outputs from the tool being called by model. + /// + public List? ToolInfo { get; set; } } diff --git a/src/Cnblogs.DashScope.Core/TextGenerationParameters.cs b/src/Cnblogs.DashScope.Core/TextGenerationParameters.cs index 84578ba..f87d0d9 100644 --- a/src/Cnblogs.DashScope.Core/TextGenerationParameters.cs +++ b/src/Cnblogs.DashScope.Core/TextGenerationParameters.cs @@ -74,6 +74,9 @@ public class TextGenerationParameters : ITextGenerationParameters /// public Dictionary? LogitBias { get; set; } + /// + public bool? EnableCodeInterpreter { get; set; } + /// public bool? IncrementalOutput { get; set; } } diff --git a/src/Cnblogs.DashScope.Core/TextGenerationPluginUsages.cs b/src/Cnblogs.DashScope.Core/TextGenerationPluginUsages.cs index 40b5d9a..76588af 100644 --- a/src/Cnblogs.DashScope.Core/TextGenerationPluginUsages.cs +++ b/src/Cnblogs.DashScope.Core/TextGenerationPluginUsages.cs @@ -3,5 +3,26 @@ /// /// Plugin usages. /// -/// Usage of search plugin. -public record TextGenerationPluginUsages(TextGenerationSearchPluginUsage? Search); +public class TextGenerationPluginUsages +{ + /// + /// Plugin usages. + /// + /// Usage of search plugin. + /// Usage of code interpreter plugin. + public TextGenerationPluginUsages( + TextGenerationSearchPluginUsage? search = null, + TextGenerationCodeInterpreterPluginUsage? codeInterpreter = null) + { + Search = search; + CodeInterpreter = codeInterpreter; + } + + /// Usage of search plugin. + public TextGenerationSearchPluginUsage? Search { get; set; } + + /// + /// Usage of code interpreter plugin. + /// + public TextGenerationCodeInterpreterPluginUsage? CodeInterpreter { get; set; } +} diff --git a/src/Cnblogs.DashScope.Core/ToolInfoCodeInterpreterOutput.cs b/src/Cnblogs.DashScope.Core/ToolInfoCodeInterpreterOutput.cs new file mode 100644 index 0000000..62f055a --- /dev/null +++ b/src/Cnblogs.DashScope.Core/ToolInfoCodeInterpreterOutput.cs @@ -0,0 +1,12 @@ +namespace Cnblogs.DashScope.Core; + +/// +/// Output from the code interpreter tool. +/// +public class ToolInfoCodeInterpreterOutput +{ + /// + /// Code that being executed. + /// + public string Code { get; set; } = string.Empty; +} diff --git a/src/Cnblogs.DashScope.Core/ToolInfoOutput.cs b/src/Cnblogs.DashScope.Core/ToolInfoOutput.cs new file mode 100644 index 0000000..4c1b2e6 --- /dev/null +++ b/src/Cnblogs.DashScope.Core/ToolInfoOutput.cs @@ -0,0 +1,17 @@ +namespace Cnblogs.DashScope.Core; + +/// +/// Outputs from the tools. +/// +public class ToolInfoOutput +{ + /// + /// Output from the code interpreter. + /// + public ToolInfoCodeInterpreterOutput? CodeInterpreter { get; set; } + + /// + /// Type of the tool. + /// + public string Type { get; set; } = string.Empty; +} diff --git a/test/Cnblogs.DashScope.Sdk.UnitTests/TextGenerationSerializationTests.cs b/test/Cnblogs.DashScope.Sdk.UnitTests/TextGenerationSerializationTests.cs index 8bfc404..87f9c7a 100644 --- a/test/Cnblogs.DashScope.Sdk.UnitTests/TextGenerationSerializationTests.cs +++ b/test/Cnblogs.DashScope.Sdk.UnitTests/TextGenerationSerializationTests.cs @@ -220,7 +220,8 @@ public async Task ConversationCompletion_DeepResearchSse_SuccessAsync( Snapshots.TextGeneration.MessageFormat.SingleMessageIncremental, Snapshots.TextGeneration.MessageFormat.SingleMessageReasoningIncremental, Snapshots.TextGeneration.MessageFormat.SingleMessageWebSearchIncremental, - Snapshots.TextGeneration.MessageFormat.SingleMessageWithToolsIncremental); + Snapshots.TextGeneration.MessageFormat.SingleMessageWithToolsIncremental, + Snapshots.TextGeneration.MessageFormat.SingleMessageWithCodeInterpreterIncremental); public static readonly TheoryData, ModelResponse>> ConversationMessageFormatSseData = new( diff --git a/test/Cnblogs.DashScope.Tests.Shared/RawHttpData/single-generation-message-with-code-interpreter-sse.request.body.json b/test/Cnblogs.DashScope.Tests.Shared/RawHttpData/single-generation-message-with-code-interpreter-sse.request.body.json new file mode 100644 index 0000000..099f90c --- /dev/null +++ b/test/Cnblogs.DashScope.Tests.Shared/RawHttpData/single-generation-message-with-code-interpreter-sse.request.body.json @@ -0,0 +1,17 @@ +{ + "model": "qwen3-max-preview", + "input": { + "messages": [ + { + "role": "user", + "content": "123的21次方是多少?" + } + ] + }, + "parameters": { + "result_format": "message", + "enable_thinking": true, + "enable_code_interpreter": true, + "incremental_output": true + } +} diff --git a/test/Cnblogs.DashScope.Tests.Shared/RawHttpData/single-generation-message-with-code-interpreter-sse.request.header.txt b/test/Cnblogs.DashScope.Tests.Shared/RawHttpData/single-generation-message-with-code-interpreter-sse.request.header.txt new file mode 100644 index 0000000..52b0b00 --- /dev/null +++ b/test/Cnblogs.DashScope.Tests.Shared/RawHttpData/single-generation-message-with-code-interpreter-sse.request.header.txt @@ -0,0 +1,8 @@ +POST /api/v1/services/aigc/text-generation/generation HTTP/1.1 +Accept: text/event-stream +Content-Type: application/json +Cache-Control: no-cache +Host: dashscope.aliyuncs.com +Accept-Encoding: gzip, deflate, br +Connection: keep-alive +Content-Length: 394 diff --git a/test/Cnblogs.DashScope.Tests.Shared/RawHttpData/single-generation-message-with-code-interpreter-sse.response.body.txt b/test/Cnblogs.DashScope.Tests.Shared/RawHttpData/single-generation-message-with-code-interpreter-sse.response.body.txt new file mode 100644 index 0000000..58959c2 --- /dev/null +++ b/test/Cnblogs.DashScope.Tests.Shared/RawHttpData/single-generation-message-with-code-interpreter-sse.response.body.txt @@ -0,0 +1,280 @@ +id:1 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":"","reasoning_content":"用户","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":284,"output_tokens":3,"input_tokens":281,"output_tokens_details":{"reasoning_tokens":1},"prompt_tokens_details":{"cached_tokens":0}},"request_id":"752a7de3-d3aa-4aeb-82ab-a8b08b41524b"} + +id:2 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":"","reasoning_content":"问","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":285,"output_tokens":4,"input_tokens":281,"output_tokens_details":{"reasoning_tokens":2},"prompt_tokens_details":{"cached_tokens":0}},"request_id":"752a7de3-d3aa-4aeb-82ab-a8b08b41524b"} + +id:3 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":"","reasoning_content":"的是","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":286,"output_tokens":5,"input_tokens":281,"output_tokens_details":{"reasoning_tokens":3},"prompt_tokens_details":{"cached_tokens":0}},"request_id":"752a7de3-d3aa-4aeb-82ab-a8b08b41524b"} + +id:4 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":"","reasoning_content":"123","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":289,"output_tokens":8,"input_tokens":281,"output_tokens_details":{"reasoning_tokens":6},"prompt_tokens_details":{"cached_tokens":0}},"request_id":"752a7de3-d3aa-4aeb-82ab-a8b08b41524b"} + +id:5 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":"","reasoning_content":"的21次方是多少","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":295,"output_tokens":14,"input_tokens":281,"output_tokens_details":{"reasoning_tokens":12},"prompt_tokens_details":{"cached_tokens":0}},"request_id":"752a7de3-d3aa-4aeb-82ab-a8b08b41524b"} + +id:6 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":"","reasoning_content":"。这是一个数学计算问题,","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":301,"output_tokens":20,"input_tokens":281,"output_tokens_details":{"reasoning_tokens":18},"prompt_tokens_details":{"cached_tokens":0}},"request_id":"752a7de3-d3aa-4aeb-82ab-a8b08b41524b"} + +id:7 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":"","reasoning_content":"我需要计算123","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":307,"output_tokens":26,"input_tokens":281,"output_tokens_details":{"reasoning_tokens":24},"prompt_tokens_details":{"cached_tokens":0}},"request_id":"752a7de3-d3aa-4aeb-82ab-a8b08b41524b"} + +id:8 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":"","reasoning_content":"^21的","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":311,"output_tokens":30,"input_tokens":281,"output_tokens_details":{"reasoning_tokens":28},"prompt_tokens_details":{"cached_tokens":0}},"request_id":"752a7de3-d3aa-4aeb-82ab-a8b08b41524b"} + +id:9 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":"","reasoning_content":"值。\n\n我可以使用代码计算器","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":317,"output_tokens":36,"input_tokens":281,"output_tokens_details":{"reasoning_tokens":34},"prompt_tokens_details":{"cached_tokens":0}},"request_id":"752a7de3-d3aa-4aeb-82ab-a8b08b41524b"} + +id:10 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":"","reasoning_content":"工具来计算这个","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":321,"output_tokens":40,"input_tokens":281,"output_tokens_details":{"reasoning_tokens":38},"prompt_tokens_details":{"cached_tokens":0}},"request_id":"752a7de3-d3aa-4aeb-82ab-a8b08b41524b"} + +id:11 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":"","reasoning_content":"大数。我需要","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":326,"output_tokens":45,"input_tokens":281,"output_tokens_details":{"reasoning_tokens":43},"prompt_tokens_details":{"cached_tokens":0}},"request_id":"752a7de3-d3aa-4aeb-82ab-a8b08b41524b"} + +id:12 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":"","reasoning_content":"调用code_interpreter函数","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":332,"output_tokens":51,"input_tokens":281,"output_tokens_details":{"reasoning_tokens":49},"prompt_tokens_details":{"cached_tokens":0}},"request_id":"752a7de3-d3aa-4aeb-82ab-a8b08b41524b"} + +id:13 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":"","reasoning_content":",传入计算","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":336,"output_tokens":55,"input_tokens":281,"output_tokens_details":{"reasoning_tokens":53},"prompt_tokens_details":{"cached_tokens":0}},"request_id":"752a7de3-d3aa-4aeb-82ab-a8b08b41524b"} + +id:14 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":"","reasoning_content":"123**","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":340,"output_tokens":59,"input_tokens":281,"output_tokens_details":{"reasoning_tokens":57},"prompt_tokens_details":{"cached_tokens":0}},"request_id":"752a7de3-d3aa-4aeb-82ab-a8b08b41524b"} + +id:15 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":"","reasoning_content":"21的Python代码。\n\n","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":346,"output_tokens":65,"input_tokens":281,"output_tokens_details":{"reasoning_tokens":63},"prompt_tokens_details":{"cached_tokens":0}},"request_id":"752a7de3-d3aa-4aeb-82ab-a8b08b41524b"} + +id:16 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":"","reasoning_content":"让我准备这个函数调","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":351,"output_tokens":70,"input_tokens":281,"output_tokens_details":{"reasoning_tokens":68},"prompt_tokens_details":{"cached_tokens":0}},"request_id":"752a7de3-d3aa-4aeb-82ab-a8b08b41524b"} + +id:17 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":"","reasoning_content":"用。","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":355,"output_tokens":74,"input_tokens":281,"output_tokens_details":{"reasoning_tokens":69},"prompt_tokens_details":{"cached_tokens":0}},"request_id":"752a7de3-d3aa-4aeb-82ab-a8b08b41524b"} + +id:18 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":"","reasoning_content":"","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":364,"output_tokens":83,"input_tokens":281,"output_tokens_details":{"reasoning_tokens":69},"prompt_tokens_details":{"cached_tokens":0}},"request_id":"752a7de3-d3aa-4aeb-82ab-a8b08b41524b"} + +id:19 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":"","reasoning_content":"","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":369,"output_tokens":88,"input_tokens":281,"output_tokens_details":{"reasoning_tokens":69},"prompt_tokens_details":{"cached_tokens":0}},"request_id":"752a7de3-d3aa-4aeb-82ab-a8b08b41524b"} + +id:20 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":"","reasoning_content":"","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":373,"output_tokens":92,"input_tokens":281,"output_tokens_details":{"reasoning_tokens":69},"prompt_tokens_details":{"cached_tokens":0}},"request_id":"752a7de3-d3aa-4aeb-82ab-a8b08b41524b"} + +id:21 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":"","reasoning_content":"","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":379,"output_tokens":98,"input_tokens":281,"output_tokens_details":{"reasoning_tokens":69},"prompt_tokens_details":{"cached_tokens":0}},"request_id":"752a7de3-d3aa-4aeb-82ab-a8b08b41524b"} + +id:22 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":"","reasoning_content":"","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":383,"output_tokens":102,"input_tokens":281,"output_tokens_details":{"reasoning_tokens":69},"prompt_tokens_details":{"cached_tokens":0}},"request_id":"752a7de3-d3aa-4aeb-82ab-a8b08b41524b"} + +id:23 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":"","reasoning_content":"","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":383,"output_tokens":102,"input_tokens":281,"output_tokens_details":{"reasoning_tokens":69},"prompt_tokens_details":{"cached_tokens":0}},"request_id":"752a7de3-d3aa-4aeb-82ab-a8b08b41524b"} + +id:24 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":"","reasoning_content":"","role":"assistant"},"finish_reason":"null"}],"tool_info":[{"code_interpreter":{"code":"123**21"},"type":"code_interpreter"}]},"usage":{"total_tokens":383,"output_tokens":102,"input_tokens":281,"output_tokens_details":{"reasoning_tokens":69},"plugins":{"code_interpreter":{"count":1}},"prompt_tokens_details":{"cached_tokens":0}},"request_id":"752a7de3-d3aa-4aeb-82ab-a8b08b41524b"} + +id:25 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":"","reasoning_content":"用户","role":"assistant"},"finish_reason":"null"}],"tool_info":[{"code_interpreter":{"code":"123**21"},"type":"code_interpreter"}]},"usage":{"total_tokens":828,"output_tokens":105,"input_tokens":723,"output_tokens_details":{"reasoning_tokens":70},"plugins":{"code_interpreter":{"count":1}},"prompt_tokens_details":{"cached_tokens":0}},"request_id":"752a7de3-d3aa-4aeb-82ab-a8b08b41524b"} + +id:26 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":"","reasoning_content":"询问","role":"assistant"},"finish_reason":"null"}],"tool_info":[{"code_interpreter":{"code":"123**21"},"type":"code_interpreter"}]},"usage":{"total_tokens":829,"output_tokens":106,"input_tokens":723,"output_tokens_details":{"reasoning_tokens":71},"plugins":{"code_interpreter":{"count":1}},"prompt_tokens_details":{"cached_tokens":0}},"request_id":"752a7de3-d3aa-4aeb-82ab-a8b08b41524b"} + +id:27 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":"","reasoning_content":"1","role":"assistant"},"finish_reason":"null"}],"tool_info":[{"code_interpreter":{"code":"123**21"},"type":"code_interpreter"}]},"usage":{"total_tokens":830,"output_tokens":107,"input_tokens":723,"output_tokens_details":{"reasoning_tokens":72},"plugins":{"code_interpreter":{"count":1}},"prompt_tokens_details":{"cached_tokens":0}},"request_id":"752a7de3-d3aa-4aeb-82ab-a8b08b41524b"} + +id:28 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":"","reasoning_content":"23的","role":"assistant"},"finish_reason":"null"}],"tool_info":[{"code_interpreter":{"code":"123**21"},"type":"code_interpreter"}]},"usage":{"total_tokens":833,"output_tokens":110,"input_tokens":723,"output_tokens_details":{"reasoning_tokens":75},"plugins":{"code_interpreter":{"count":1}},"prompt_tokens_details":{"cached_tokens":0}},"request_id":"752a7de3-d3aa-4aeb-82ab-a8b08b41524b"} + +id:29 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":"","reasoning_content":"21次方是多少","role":"assistant"},"finish_reason":"null"}],"tool_info":[{"code_interpreter":{"code":"123**21"},"type":"code_interpreter"}]},"usage":{"total_tokens":838,"output_tokens":115,"input_tokens":723,"output_tokens_details":{"reasoning_tokens":80},"plugins":{"code_interpreter":{"count":1}},"prompt_tokens_details":{"cached_tokens":0}},"request_id":"752a7de3-d3aa-4aeb-82ab-a8b08b41524b"} + +id:30 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":"","reasoning_content":",我使用代码","role":"assistant"},"finish_reason":"null"}],"tool_info":[{"code_interpreter":{"code":"123**21"},"type":"code_interpreter"}]},"usage":{"total_tokens":842,"output_tokens":119,"input_tokens":723,"output_tokens_details":{"reasoning_tokens":84},"plugins":{"code_interpreter":{"count":1}},"prompt_tokens_details":{"cached_tokens":0}},"request_id":"752a7de3-d3aa-4aeb-82ab-a8b08b41524b"} + +id:31 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":"","reasoning_content":"计算器计算出了结果。结果","role":"assistant"},"finish_reason":"null"}],"tool_info":[{"code_interpreter":{"code":"123**21"},"type":"code_interpreter"}]},"usage":{"total_tokens":848,"output_tokens":125,"input_tokens":723,"output_tokens_details":{"reasoning_tokens":90},"plugins":{"code_interpreter":{"count":1}},"prompt_tokens_details":{"cached_tokens":0}},"request_id":"752a7de3-d3aa-4aeb-82ab-a8b08b41524b"} + +id:32 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":"","reasoning_content":"是一个非常大的数字","role":"assistant"},"finish_reason":"null"}],"tool_info":[{"code_interpreter":{"code":"123**21"},"type":"code_interpreter"}]},"usage":{"total_tokens":852,"output_tokens":129,"input_tokens":723,"output_tokens_details":{"reasoning_tokens":94},"plugins":{"code_interpreter":{"count":1}},"prompt_tokens_details":{"cached_tokens":0}},"request_id":"752a7de3-d3aa-4aeb-82ab-a8b08b41524b"} + +id:33 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":"","reasoning_content":":7726","role":"assistant"},"finish_reason":"null"}],"tool_info":[{"code_interpreter":{"code":"123**21"},"type":"code_interpreter"}]},"usage":{"total_tokens":857,"output_tokens":134,"input_tokens":723,"output_tokens_details":{"reasoning_tokens":99},"plugins":{"code_interpreter":{"count":1}},"prompt_tokens_details":{"cached_tokens":0}},"request_id":"752a7de3-d3aa-4aeb-82ab-a8b08b41524b"} + +id:34 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":"","reasoning_content":"936446","role":"assistant"},"finish_reason":"null"}],"tool_info":[{"code_interpreter":{"code":"123**21"},"type":"code_interpreter"}]},"usage":{"total_tokens":863,"output_tokens":140,"input_tokens":723,"output_tokens_details":{"reasoning_tokens":105},"plugins":{"code_interpreter":{"count":1}},"prompt_tokens_details":{"cached_tokens":0}},"request_id":"752a7de3-d3aa-4aeb-82ab-a8b08b41524b"} + +id:35 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":"","reasoning_content":"654986","role":"assistant"},"finish_reason":"null"}],"tool_info":[{"code_interpreter":{"code":"123**21"},"type":"code_interpreter"}]},"usage":{"total_tokens":869,"output_tokens":146,"input_tokens":723,"output_tokens_details":{"reasoning_tokens":111},"plugins":{"code_interpreter":{"count":1}},"prompt_tokens_details":{"cached_tokens":0}},"request_id":"752a7de3-d3aa-4aeb-82ab-a8b08b41524b"} + +id:36 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":"","reasoning_content":"565307","role":"assistant"},"finish_reason":"null"}],"tool_info":[{"code_interpreter":{"code":"123**21"},"type":"code_interpreter"}]},"usage":{"total_tokens":875,"output_tokens":152,"input_tokens":723,"output_tokens_details":{"reasoning_tokens":117},"plugins":{"code_interpreter":{"count":1}},"prompt_tokens_details":{"cached_tokens":0}},"request_id":"752a7de3-d3aa-4aeb-82ab-a8b08b41524b"} + +id:37 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":"","reasoning_content":"347338","role":"assistant"},"finish_reason":"null"}],"tool_info":[{"code_interpreter":{"code":"123**21"},"type":"code_interpreter"}]},"usage":{"total_tokens":881,"output_tokens":158,"input_tokens":723,"output_tokens_details":{"reasoning_tokens":123},"plugins":{"code_interpreter":{"count":1}},"prompt_tokens_details":{"cached_tokens":0}},"request_id":"752a7de3-d3aa-4aeb-82ab-a8b08b41524b"} + +id:38 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":"","reasoning_content":"803006","role":"assistant"},"finish_reason":"null"}],"tool_info":[{"code_interpreter":{"code":"123**21"},"type":"code_interpreter"}]},"usage":{"total_tokens":887,"output_tokens":164,"input_tokens":723,"output_tokens_details":{"reasoning_tokens":129},"plugins":{"code_interpreter":{"count":1}},"prompt_tokens_details":{"cached_tokens":0}},"request_id":"752a7de3-d3aa-4aeb-82ab-a8b08b41524b"} + +id:39 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":"","reasoning_content":"152221","role":"assistant"},"finish_reason":"null"}],"tool_info":[{"code_interpreter":{"code":"123**21"},"type":"code_interpreter"}]},"usage":{"total_tokens":893,"output_tokens":170,"input_tokens":723,"output_tokens_details":{"reasoning_tokens":135},"plugins":{"code_interpreter":{"count":1}},"prompt_tokens_details":{"cached_tokens":0}},"request_id":"752a7de3-d3aa-4aeb-82ab-a8b08b41524b"} + +id:40 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":"","reasoning_content":"1723\n\n","role":"assistant"},"finish_reason":"null"}],"tool_info":[{"code_interpreter":{"code":"123**21"},"type":"code_interpreter"}]},"usage":{"total_tokens":898,"output_tokens":175,"input_tokens":723,"output_tokens_details":{"reasoning_tokens":140},"plugins":{"code_interpreter":{"count":1}},"prompt_tokens_details":{"cached_tokens":0}},"request_id":"752a7de3-d3aa-4aeb-82ab-a8b08b41524b"} + +id:41 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":"","reasoning_content":"我需要将这个","role":"assistant"},"finish_reason":"null"}],"tool_info":[{"code_interpreter":{"code":"123**21"},"type":"code_interpreter"}]},"usage":{"total_tokens":902,"output_tokens":179,"input_tokens":723,"output_tokens_details":{"reasoning_tokens":144},"plugins":{"code_interpreter":{"count":1}},"prompt_tokens_details":{"cached_tokens":0}},"request_id":"752a7de3-d3aa-4aeb-82ab-a8b08b41524b"} + +id:42 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":"","reasoning_content":"结果清晰地呈现给","role":"assistant"},"finish_reason":"null"}],"tool_info":[{"code_interpreter":{"code":"123**21"},"type":"code_interpreter"}]},"usage":{"total_tokens":907,"output_tokens":184,"input_tokens":723,"output_tokens_details":{"reasoning_tokens":149},"plugins":{"code_interpreter":{"count":1}},"prompt_tokens_details":{"cached_tokens":0}},"request_id":"752a7de3-d3aa-4aeb-82ab-a8b08b41524b"} + +id:43 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":"12","reasoning_content":"","role":"assistant"},"finish_reason":"null"}],"tool_info":[{"code_interpreter":{"code":"123**21"},"type":"code_interpreter"}]},"usage":{"total_tokens":913,"output_tokens":190,"input_tokens":723,"output_tokens_details":{"reasoning_tokens":150},"plugins":{"code_interpreter":{"count":1}},"prompt_tokens_details":{"cached_tokens":0}},"request_id":"752a7de3-d3aa-4aeb-82ab-a8b08b41524b"} + +id:44 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":"3的21次方","reasoning_content":"","role":"assistant"},"finish_reason":"null"}],"tool_info":[{"code_interpreter":{"code":"123**21"},"type":"code_interpreter"}]},"usage":{"total_tokens":919,"output_tokens":196,"input_tokens":723,"output_tokens_details":{"reasoning_tokens":150},"plugins":{"code_interpreter":{"count":1}},"prompt_tokens_details":{"cached_tokens":0}},"request_id":"752a7de3-d3aa-4aeb-82ab-a8b08b41524b"} + +id:45 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":"是:\n\n772","reasoning_content":"","role":"assistant"},"finish_reason":"null"}],"tool_info":[{"code_interpreter":{"code":"123**21"},"type":"code_interpreter"}]},"usage":{"total_tokens":924,"output_tokens":201,"input_tokens":723,"output_tokens_details":{"reasoning_tokens":150},"plugins":{"code_interpreter":{"count":1}},"prompt_tokens_details":{"cached_tokens":0}},"request_id":"752a7de3-d3aa-4aeb-82ab-a8b08b41524b"} + +id:46 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":"693644","reasoning_content":"","role":"assistant"},"finish_reason":"null"}],"tool_info":[{"code_interpreter":{"code":"123**21"},"type":"code_interpreter"}]},"usage":{"total_tokens":930,"output_tokens":207,"input_tokens":723,"output_tokens_details":{"reasoning_tokens":150},"plugins":{"code_interpreter":{"count":1}},"prompt_tokens_details":{"cached_tokens":0}},"request_id":"752a7de3-d3aa-4aeb-82ab-a8b08b41524b"} + +id:47 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":"665498","reasoning_content":"","role":"assistant"},"finish_reason":"null"}],"tool_info":[{"code_interpreter":{"code":"123**21"},"type":"code_interpreter"}]},"usage":{"total_tokens":936,"output_tokens":213,"input_tokens":723,"output_tokens_details":{"reasoning_tokens":150},"plugins":{"code_interpreter":{"count":1}},"prompt_tokens_details":{"cached_tokens":0}},"request_id":"752a7de3-d3aa-4aeb-82ab-a8b08b41524b"} + +id:48 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":"656530","reasoning_content":"","role":"assistant"},"finish_reason":"null"}],"tool_info":[{"code_interpreter":{"code":"123**21"},"type":"code_interpreter"}]},"usage":{"total_tokens":942,"output_tokens":219,"input_tokens":723,"output_tokens_details":{"reasoning_tokens":150},"plugins":{"code_interpreter":{"count":1}},"prompt_tokens_details":{"cached_tokens":0}},"request_id":"752a7de3-d3aa-4aeb-82ab-a8b08b41524b"} + +id:49 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":"734733","reasoning_content":"","role":"assistant"},"finish_reason":"null"}],"tool_info":[{"code_interpreter":{"code":"123**21"},"type":"code_interpreter"}]},"usage":{"total_tokens":948,"output_tokens":225,"input_tokens":723,"output_tokens_details":{"reasoning_tokens":150},"plugins":{"code_interpreter":{"count":1}},"prompt_tokens_details":{"cached_tokens":0}},"request_id":"752a7de3-d3aa-4aeb-82ab-a8b08b41524b"} + +id:50 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":"880300","reasoning_content":"","role":"assistant"},"finish_reason":"null"}],"tool_info":[{"code_interpreter":{"code":"123**21"},"type":"code_interpreter"}]},"usage":{"total_tokens":954,"output_tokens":231,"input_tokens":723,"output_tokens_details":{"reasoning_tokens":150},"plugins":{"code_interpreter":{"count":1}},"prompt_tokens_details":{"cached_tokens":0}},"request_id":"752a7de3-d3aa-4aeb-82ab-a8b08b41524b"} + +id:51 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":"615222","reasoning_content":"","role":"assistant"},"finish_reason":"null"}],"tool_info":[{"code_interpreter":{"code":"123**21"},"type":"code_interpreter"}]},"usage":{"total_tokens":960,"output_tokens":237,"input_tokens":723,"output_tokens_details":{"reasoning_tokens":150},"plugins":{"code_interpreter":{"count":1}},"prompt_tokens_details":{"cached_tokens":0}},"request_id":"752a7de3-d3aa-4aeb-82ab-a8b08b41524b"} + +id:52 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":"11723\n\n","reasoning_content":"","role":"assistant"},"finish_reason":"null"}],"tool_info":[{"code_interpreter":{"code":"123**21"},"type":"code_interpreter"}]},"usage":{"total_tokens":966,"output_tokens":243,"input_tokens":723,"output_tokens_details":{"reasoning_tokens":150},"plugins":{"code_interpreter":{"count":1}},"prompt_tokens_details":{"cached_tokens":0}},"request_id":"752a7de3-d3aa-4aeb-82ab-a8b08b41524b"} + +id:53 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":"这是一个非常大的数字","reasoning_content":"","role":"assistant"},"finish_reason":"null"}],"tool_info":[{"code_interpreter":{"code":"123**21"},"type":"code_interpreter"}]},"usage":{"total_tokens":970,"output_tokens":247,"input_tokens":723,"output_tokens_details":{"reasoning_tokens":150},"plugins":{"code_interpreter":{"count":1}},"prompt_tokens_details":{"cached_tokens":0}},"request_id":"752a7de3-d3aa-4aeb-82ab-a8b08b41524b"} + +id:54 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":",共有42位数","reasoning_content":"","role":"assistant"},"finish_reason":"null"}],"tool_info":[{"code_interpreter":{"code":"123**21"},"type":"code_interpreter"}]},"usage":{"total_tokens":976,"output_tokens":253,"input_tokens":723,"output_tokens_details":{"reasoning_tokens":150},"plugins":{"code_interpreter":{"count":1}},"prompt_tokens_details":{"cached_tokens":0}},"request_id":"752a7de3-d3aa-4aeb-82ab-a8b08b41524b"} + +id:55 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":"。","reasoning_content":"","role":"assistant"},"finish_reason":"null"}],"tool_info":[{"code_interpreter":{"code":"123**21"},"type":"code_interpreter"}]},"usage":{"total_tokens":977,"output_tokens":254,"input_tokens":723,"output_tokens_details":{"reasoning_tokens":150},"plugins":{"code_interpreter":{"count":1}},"prompt_tokens_details":{"cached_tokens":0}},"request_id":"752a7de3-d3aa-4aeb-82ab-a8b08b41524b"} + +id:56 +event:result +:HTTP_STATUS/200 +data:{"output":{"choices":[{"message":{"content":"","reasoning_content":"","role":"assistant"},"finish_reason":"stop"}],"tool_info":[{"code_interpreter":{"code":"123**21"},"type":"code_interpreter"}]},"usage":{"total_tokens":977,"output_tokens":254,"input_tokens":723,"output_tokens_details":{"reasoning_tokens":150},"plugins":{"code_interpreter":{"count":1}},"prompt_tokens_details":{"cached_tokens":0}},"request_id":"752a7de3-d3aa-4aeb-82ab-a8b08b41524b"} + diff --git a/test/Cnblogs.DashScope.Tests.Shared/RawHttpData/single-generation-message-with-code-interpreter-sse.response.header.txt b/test/Cnblogs.DashScope.Tests.Shared/RawHttpData/single-generation-message-with-code-interpreter-sse.response.header.txt new file mode 100644 index 0000000..4a62628 --- /dev/null +++ b/test/Cnblogs.DashScope.Tests.Shared/RawHttpData/single-generation-message-with-code-interpreter-sse.response.header.txt @@ -0,0 +1,14 @@ +HTTP/1.1 200 OK +vary: Origin,Access-Control-Request-Method,Access-Control-Request-Headers +x-request-id: 752a7de3-d3aa-4aeb-82ab-a8b08b41524b +content-type: text/event-stream;charset=UTF-8 +x-dashscope-call-gateway: true +x-dashscope-timeout: 298 +x-dashscope-finished: false +req-cost-time: 901 +req-arrive-time: 1764771416660 +resp-start-time: 1764771417561 +x-envoy-upstream-service-time: 893 +date: Wed, 03 Dec 2025 14:16:57 GMT +server: istio-envoy +transfer-encoding: chunked diff --git a/test/Cnblogs.DashScope.Tests.Shared/Utils/RequestSnapshot.cs b/test/Cnblogs.DashScope.Tests.Shared/Utils/RequestSnapshot.cs index 63cbf5e..19ef073 100644 --- a/test/Cnblogs.DashScope.Tests.Shared/Utils/RequestSnapshot.cs +++ b/test/Cnblogs.DashScope.Tests.Shared/Utils/RequestSnapshot.cs @@ -17,6 +17,12 @@ public string GetRequestJson(bool sse) public List GetRequestForm(bool sse) { var body = GetRequestBody(sse); + if (body.Contains("\r\n") == false) + { + // update CRLF + body = body.Replace("\n", "\r\n"); + } + var blocks = body .Split($"--{Boundary}", StringSplitOptions.TrimEntries | StringSplitOptions.RemoveEmptyEntries) .SkipLast(1) @@ -57,13 +63,15 @@ public string GetRequestBody(bool sse, string ext = "txt") public HttpMethod GetRequestMethod(bool sse) { - var firstLine = File.ReadAllLines(Path.Combine("RawHttpData", $"{GetSnapshotCaseName(sse)}.request.header.txt"))[0]; + var firstLine = + File.ReadAllLines(Path.Combine("RawHttpData", $"{GetSnapshotCaseName(sse)}.request.header.txt"))[0]; return new HttpMethod(firstLine.Split(' ')[0]); } public string GetRequestPathAndQuery(bool sse) { - var firstLine = File.ReadAllLines(Path.Combine("RawHttpData", $"{GetSnapshotCaseName(sse)}.request.header.txt"))[0]; + var firstLine = + File.ReadAllLines(Path.Combine("RawHttpData", $"{GetSnapshotCaseName(sse)}.request.header.txt"))[0]; return firstLine.Split(' ')[1]; } } diff --git a/test/Cnblogs.DashScope.Tests.Shared/Utils/Snapshots.TextGeneration.cs b/test/Cnblogs.DashScope.Tests.Shared/Utils/Snapshots.TextGeneration.cs index af7698d..cdafc36 100644 --- a/test/Cnblogs.DashScope.Tests.Shared/Utils/Snapshots.TextGeneration.cs +++ b/test/Cnblogs.DashScope.Tests.Shared/Utils/Snapshots.TextGeneration.cs @@ -268,13 +268,13 @@ public static partial class MessageFormat FinishReason = "stop", Message = TextChatMessage.Assistant("2"), Logprobs = new TextGenerationLogprobs( - new List() + new List { new( "2", new byte[] { 50 }, 0.0f, - new List() + new List { new("2", new byte[] { 50 }, 0.0f) }), @@ -297,12 +297,12 @@ public static readonly ModelResponse> SingleMessageRolePlay = new( "single-generation-message-roleplay", - new ModelRequest() + new ModelRequest { Model = "qwen-plus-character", - Input = new TextGenerationInput() + Input = new TextGenerationInput { - Messages = new List() + Messages = new List { TextChatMessage.System( "你是江让,男性,从 3 岁起你就入门编程,小学就开始研习算法,初一时就已经在算法竞赛斩获全国金牌。目前你在初二年级,作为老师的助教帮忙辅导初一的竞赛生。\n你的性格特点:聪明,早慧,一路畅通的你有时很难理解其他人为什么连这么简单的问题都不会做,但除开编程范围之外,你还是一个普通的初二学生。\n你的行事风格:在编程方面乐于助人,会将自己的知识的倾囊相授,虽然问的人并不一定能跟上你的思路。\n你可以将动作、神情语气、心理活动、故事背景放在()中来表示,为对话提供补充信息。"), @@ -310,7 +310,7 @@ public static readonly TextChatMessage.User("我是蒟蒻,还在准备模拟赛。你能教我 splay 树怎么写吗?") }, }, - Parameters = new TextGenerationParameters() + Parameters = new TextGenerationParameters { ResultFormat = "message", N = 2, @@ -323,11 +323,11 @@ public static readonly } } }, - new ModelResponse() + new ModelResponse { - Output = new TextGenerationOutput() + Output = new TextGenerationOutput { - Choices = new List() + Choices = new List { new() { @@ -347,7 +347,7 @@ public static readonly } } }, - Usage = new TextGenerationTokenUsage() + Usage = new TextGenerationTokenUsage { InputTokens = 186, OutputTokens = 83, @@ -374,13 +374,13 @@ public static readonly { ResultFormat = "message", IncrementalOutput = false, - TranslationOptions = new TextGenerationTranslationOptions() + TranslationOptions = new TextGenerationTranslationOptions { SourceLang = "Chinese", TargetLang = "English", Domains = "This text is a promotion.", - Terms = new List() { new("博客园", "cnblogs") }, - TmList = new List() { new("代码改变世界", "Coding changes world") } + Terms = new List { new("博客园", "cnblogs") }, + TmList = new List { new("代码改变世界", "Coding changes world") } } } }, @@ -426,7 +426,7 @@ public static readonly { ResultFormat = "message", EnableSearch = true, - SearchOptions = new TextGenerationSearchOptions() + SearchOptions = new TextGenerationSearchOptions { EnableSource = true, EnableCitation = true, @@ -452,7 +452,7 @@ public static readonly } }, SearchInfo = new TextGenerationWebSearchInfo( - new List() + new List { new( "无", @@ -485,7 +485,7 @@ public static readonly "阿里巴巴投資者關係-阿里巴巴集團", "https://www.alibabagroup.com/zh-HK/investor-relations") }, - new List() + new List { new( "阿里巴巴美股:\n实时价格167.05USD\n上个交易日收盘价165.09USD\n日环比%1.19%\n月环比%-6.53\n日同比%66.33\n月同比%74.05\n历史价格列表[{\"date\":\"2025-10-17\",\"endPri\":\"167.050\"},{\"date\":\"2025-10-16\",\"endPri\":\"165.090\"},{\"date\":\"2025-10-15\",\"endPri\":\"165.910\"},{\"date\":\"2025-10-14\",\"endPri\":\"162.860\"},{\"date\":\"2025-10-13\",\"endPri\":\"166.810\"},{\"date\":\"2025-10-10\",\"endPri\":\"159.010\"},{\"date\":\"2025-10-09\",\"endPri\":\"173.680\"},{\"date\":\"2025-10-08\",\"endPri\":\"181.120\"},{\"date\":\"2025-10-07\",\"endPri\":\"181.330\"},{\"date\":\"2025-10-06\",\"endPri\":\"187.220\"},{\"date\":\"2025-10-03\",\"endPri\":\"188.030\"},{\"date\":\"2025-10-02\",\"endPri\":\"189.340\"},{\"date\":\"2025-10-01\",\"endPri\":\"182.780\"},{\"date\":\"2025-09-30\",\"endPri\":\"178.730\"},{\"date\":\"2025-09-29\",\"endPri\":\"179.900\"},{\"date\":\"2025-09-26\",\"endPri\":\"171.910\"},{\"date\":\"2025-09-25\",\"endPri\":\"175.470\"},{\"date\":\"2025-09-24\",\"endPri\":\"176.440\"},{\"date\":\"2025-09-23\",\"endPri\":\"163.080\"},{\"date\":\"2025-09-22\",\"endPri\":\"164.250\"},{\"date\":\"2025-09-19\",\"endPri\":\"162.810\"},{\"date\":\"2025-09-18\",\"endPri\":\"162.480\"},{\"date\":\"2025-09-17\",\"endPri\":\"166.170\"},{\"date\":\"2025-09-16\",\"endPri\":\"162.210\"},{\"date\":\"2025-09-15\",\"endPri\":\"158.040\"},{\"date\":\"2025-09-12\",\"endPri\":\"155.060\"},{\"date\":\"2025-09-11\",\"endPri\":\"155.440\"},{\"date\":\"2025-09-10\",\"endPri\":\"143.930\"},{\"date\":\"2025-09-09\",\"endPri\":\"147.100\"},{\"date\":\"2025-09-08\",\"endPri\":\"141.200\"}]\n\n", @@ -507,19 +507,19 @@ public static readonly ModelResponse> SingleMessageWebSearchIncremental = new( "single-generation-message-search", - new ModelRequest() + new ModelRequest { Model = "qwen-plus", - Input = new TextGenerationInput() + Input = new TextGenerationInput { - Messages = new List() { TextChatMessage.User("杭州明天的天气") } + Messages = new List { TextChatMessage.User("杭州明天的天气") } }, - Parameters = new TextGenerationParameters() + Parameters = new TextGenerationParameters { ResultFormat = "message", EnableSearch = true, IncrementalOutput = true, - SearchOptions = new TextGenerationSearchOptions() + SearchOptions = new TextGenerationSearchOptions { ForcedSearch = true, EnableSource = true, @@ -528,12 +528,12 @@ public static readonly } } }, - new ModelResponse() + new ModelResponse { - Output = new TextGenerationOutput() + Output = new TextGenerationOutput { SearchInfo = new TextGenerationWebSearchInfo( - new List() + new List { new( "厦门时空科技有限公司", @@ -567,7 +567,7 @@ public static readonly "https://tianqi.eastday.com/lishi/hangzhou.html"), }, null), - Choices = new List() + Choices = new List { new() { @@ -577,7 +577,7 @@ public static readonly } } }, - Usage = new TextGenerationTokenUsage() + Usage = new TextGenerationTokenUsage { TotalTokens = 810, InputTokens = 709, @@ -870,6 +870,70 @@ public static readonly } }); + public static readonly + RequestSnapshot, + ModelResponse> + SingleMessageWithCodeInterpreterIncremental = + new( + "single-generation-message-with-code-interpreter", + new ModelRequest + { + Model = "qwen3-max-preview", + Input = new TextGenerationInput + { + Messages = + new List { TextChatMessage.User("123的21次方是多少?"), } + }, + Parameters = new TextGenerationParameters + { + ResultFormat = "message", + IncrementalOutput = true, + EnableThinking = true, + EnableCodeInterpreter = true + } + }, + new ModelResponse + { + Output = new TextGenerationOutput + { + Choices = + new List + { + new() + { + FinishReason = "stop", + Message = + TextChatMessage.Assistant( + "123的21次方是:\n\n77269364466549865653073473388030061522211723\n\n这是一个非常大的数字,共有42位数。", + null, + null, + "用户问的是123的21次方是多少。这是一个数学计算问题,我需要计算123^21的值。\n\n我可以使用代码计算器工具来计算这个大数。我需要调用code_interpreter函数,传入计算123**21的Python代码。\n\n让我准备这个函数调用。用户询问123的21次方是多少,我使用代码计算器计算出了结果。结果是一个非常大的数字:77269364466549865653073473388030061522211723\n\n我需要将这个结果清晰地呈现给") + } + }, + ToolInfo = + new List + { + new() + { + Type = "code_interpreter", + CodeInterpreter = + new ToolInfoCodeInterpreterOutput { Code = "123**21" } + } + } + }, + RequestId = "752a7de3-d3aa-4aeb-82ab-a8b08b41524b", + Usage = new TextGenerationTokenUsage + { + InputTokens = 723, + OutputTokens = 254, + TotalTokens = 977, + OutputTokensDetails = new TextGenerationOutputTokenDetails(150), + Plugins = new TextGenerationPluginUsages( + codeInterpreter: new TextGenerationCodeInterpreterPluginUsage(1)), + PromptTokensDetails = new TextGenerationPromptTokenDetails(0) + } + }); + public static readonly RequestSnapshot, ModelResponse> SingleMessageWithToolsIncremental = @@ -1129,12 +1193,12 @@ public static readonly ModelResponse> ConversationMessageWithDocUrlsIncremental = new( "conversation-generation-message-with-doc-url", - new ModelRequest() + new ModelRequest { Model = "qwen-doc-turbo", - Input = new TextGenerationInput() + Input = new TextGenerationInput { - Messages = new List() + Messages = new List { TextChatMessage.System("You are a helpful assistant."), TextChatMessage.DocUrl( @@ -1146,17 +1210,14 @@ public static readonly }) } }, - Parameters = new TextGenerationParameters() - { - ResultFormat = "message", IncrementalOutput = true - } + Parameters = new TextGenerationParameters { ResultFormat = "message", IncrementalOutput = true } }, - new ModelResponse() + new ModelResponse { RequestId = "ee1a01a9-4c9e-4729-ae35-f5948124b302", - Output = new TextGenerationOutput() + Output = new TextGenerationOutput { - Choices = new List() + Choices = new List { new() { @@ -1166,7 +1227,7 @@ public static readonly } } }, - Usage = new TextGenerationTokenUsage() + Usage = new TextGenerationTokenUsage { TotalTokens = 2180, OutputTokens = 354, diff --git a/test/Cnblogs.DashScope.Tests.Shared/Utils/Sut.cs b/test/Cnblogs.DashScope.Tests.Shared/Utils/Sut.cs index a24149e..c390bcf 100644 --- a/test/Cnblogs.DashScope.Tests.Shared/Utils/Sut.cs +++ b/test/Cnblogs.DashScope.Tests.Shared/Utils/Sut.cs @@ -7,13 +7,13 @@ namespace Cnblogs.DashScope.Tests.Shared.Utils; public static class Sut { - public static async Task<(IDashScopeClient Client, MockHttpMessageHandler Handler)> GetTestClientAsync( + public static Task<(IDashScopeClient Client, MockHttpMessageHandler Handler)> GetTestClientAsync( HttpResponseMessage response) { var pair = GetTestClient(); pair.Handler.Configure().MockSend(Arg.Any(), Arg.Any()) .Returns(response); - return pair; + return Task.FromResult<(IDashScopeClient Client, MockHttpMessageHandler Handler)>(pair); } public static async Task<(IDashScopeClient Client, MockHttpMessageHandler Handler)> GetTestClientAsync( From 3674a3bb3a4831a62928db9445ab71a87580d23a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B2=88=E6=98=9F=E7=B9=81?= Date: Thu, 4 Dec 2025 15:46:58 +0800 Subject: [PATCH 6/6] chore: remove json ref on net8.0 (#158) * feat: add net8.0 into target frameworks * fix: run full tests on net8.0 * fix: update test command * fix: remove net6 framework settings --- .github/workflows/ci.yml | 8 ++--- Directory.Build.props | 2 +- .../Cnblogs.DashScope.Sample.csproj | 2 +- .../Cnblogs.DashScope.AI.csproj | 1 + .../Cnblogs.DashScope.Core.csproj | 3 ++ .../DashScopeClientCore.cs | 35 ++++++++++--------- .../Cnblogs.DashScope.AI.UnitTests.csproj | 2 +- .../Cnblogs.DashScope.Sdk.UnitTests.csproj | 3 +- .../Cnblogs.DashScope.Tests.Shared.csproj | 3 +- 9 files changed, 32 insertions(+), 27 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 681349e..6ec5b94 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -14,9 +14,9 @@ jobs: - name: Checkout uses: actions/checkout@v4 - name: Build - run: dotnet build src/Cnblogs.DashScope.AspNetCore -c Release + run: dotnet build src/Cnblogs.DashScope.AspNetCore -c Release -p:TargetFrameworks=net6.0 - name: Test - run: dotnet test test/Cnblogs.DashScope.Sdk.UnitTests -c Release + run: dotnet test test/Cnblogs.DashScope.Sdk.UnitTests -c Release -p:TargetFrameworks=net6.0 test-net8: runs-on: ubuntu-latest container: mcr.microsoft.com/dotnet/sdk:8.0 @@ -24,7 +24,7 @@ jobs: - name: Checkout uses: actions/checkout@v4 - name: Build - run: dotnet build src/Cnblogs.DashScope.AI -c Release + run: dotnet build src/Cnblogs.DashScope.AI -c Release -p:TargetFrameworks=net8.0 - name: Test - run: dotnet test test/Cnblogs.DashScope.AI.UnitTests -c Release + run: dotnet test test/Cnblogs.DashScope.AI.UnitTests -c Release -p:TargetFrameworks=net8.0 && dotnet test test/Cnblogs.DashScope.Sdk.UnitTests -c Release -p:TargetFrameworks=net8.0 diff --git a/Directory.Build.props b/Directory.Build.props index 3eaabd9..c98ba0c 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -1,6 +1,6 @@ - net6.0 + net6.0;net8.0 enable enable Cnblogs diff --git a/sample/Cnblogs.DashScope.Sample/Cnblogs.DashScope.Sample.csproj b/sample/Cnblogs.DashScope.Sample/Cnblogs.DashScope.Sample.csproj index 00a1318..1929eb1 100644 --- a/sample/Cnblogs.DashScope.Sample/Cnblogs.DashScope.Sample.csproj +++ b/sample/Cnblogs.DashScope.Sample/Cnblogs.DashScope.Sample.csproj @@ -2,7 +2,7 @@ Exe - net8.0 + net8.0 enable enable false diff --git a/src/Cnblogs.DashScope.AI/Cnblogs.DashScope.AI.csproj b/src/Cnblogs.DashScope.AI/Cnblogs.DashScope.AI.csproj index d75ae37..039cbfe 100644 --- a/src/Cnblogs.DashScope.AI/Cnblogs.DashScope.AI.csproj +++ b/src/Cnblogs.DashScope.AI/Cnblogs.DashScope.AI.csproj @@ -1,5 +1,6 @@  + net8.0 Cnblogs.DashScope.AI true Cnblogs;Dashscope;Microsoft.Extensions.AI;Sdk;Embedding; diff --git a/src/Cnblogs.DashScope.Core/Cnblogs.DashScope.Core.csproj b/src/Cnblogs.DashScope.Core/Cnblogs.DashScope.Core.csproj index 7dd23dd..c5fab03 100644 --- a/src/Cnblogs.DashScope.Core/Cnblogs.DashScope.Core.csproj +++ b/src/Cnblogs.DashScope.Core/Cnblogs.DashScope.Core.csproj @@ -13,6 +13,9 @@ + + + diff --git a/src/Cnblogs.DashScope.Core/DashScopeClientCore.cs b/src/Cnblogs.DashScope.Core/DashScopeClientCore.cs index 72c8c69..5041955 100644 --- a/src/Cnblogs.DashScope.Core/DashScopeClientCore.cs +++ b/src/Cnblogs.DashScope.Core/DashScopeClientCore.cs @@ -552,28 +552,31 @@ private async IAsyncEnumerable StreamAsync( HttpCompletionOption.ResponseHeadersRead, cancellationToken); using StreamReader reader = new(await response.Content.ReadAsStreamAsync(cancellationToken), Encoding.UTF8); - while (!reader.EndOfStream) + while (await reader.ReadLineAsync() is { } line) { if (cancellationToken.IsCancellationRequested) + { throw new TaskCanceledException(); + } + + if (line.StartsWith("data:") == false) + { + continue; + } - var line = await reader.ReadLineAsync(); - if (line != null && line.StartsWith("data:")) + var data = line["data:".Length..]; + if (data.StartsWith("{\"code\":")) { - var data = line["data:".Length..]; - if (data.StartsWith("{\"code\":")) - { - var error = - JsonSerializer.Deserialize(data, DashScopeDefaults.SerializationOptions)!; - throw new DashScopeException( - message.RequestUri?.ToString(), - (int)response.StatusCode, - error, - error.Message); - } - - yield return JsonSerializer.Deserialize(data, DashScopeDefaults.SerializationOptions)!; + var error = + JsonSerializer.Deserialize(data, DashScopeDefaults.SerializationOptions)!; + throw new DashScopeException( + message.RequestUri?.ToString(), + (int)response.StatusCode, + error, + error.Message); } + + yield return JsonSerializer.Deserialize(data, DashScopeDefaults.SerializationOptions)!; } } diff --git a/test/Cnblogs.DashScope.AI.UnitTests/Cnblogs.DashScope.AI.UnitTests.csproj b/test/Cnblogs.DashScope.AI.UnitTests/Cnblogs.DashScope.AI.UnitTests.csproj index 82cd87a..063acd8 100644 --- a/test/Cnblogs.DashScope.AI.UnitTests/Cnblogs.DashScope.AI.UnitTests.csproj +++ b/test/Cnblogs.DashScope.AI.UnitTests/Cnblogs.DashScope.AI.UnitTests.csproj @@ -1,7 +1,7 @@  - net8.0 + net8.0 enable enable false diff --git a/test/Cnblogs.DashScope.Sdk.UnitTests/Cnblogs.DashScope.Sdk.UnitTests.csproj b/test/Cnblogs.DashScope.Sdk.UnitTests/Cnblogs.DashScope.Sdk.UnitTests.csproj index 11240e0..cd35c5f 100644 --- a/test/Cnblogs.DashScope.Sdk.UnitTests/Cnblogs.DashScope.Sdk.UnitTests.csproj +++ b/test/Cnblogs.DashScope.Sdk.UnitTests/Cnblogs.DashScope.Sdk.UnitTests.csproj @@ -1,7 +1,6 @@ - net6.0 false true @@ -13,7 +12,7 @@ - + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/test/Cnblogs.DashScope.Tests.Shared/Cnblogs.DashScope.Tests.Shared.csproj b/test/Cnblogs.DashScope.Tests.Shared/Cnblogs.DashScope.Tests.Shared.csproj index f4a861c..62e5330 100644 --- a/test/Cnblogs.DashScope.Tests.Shared/Cnblogs.DashScope.Tests.Shared.csproj +++ b/test/Cnblogs.DashScope.Tests.Shared/Cnblogs.DashScope.Tests.Shared.csproj @@ -1,7 +1,6 @@ - net6.0 enable enable false @@ -9,7 +8,7 @@ - +