diff --git a/Cnblogs.DashScope.Sdk.sln b/Cnblogs.DashScope.Sdk.sln
index 7f4e6a5..106b3de 100644
--- a/Cnblogs.DashScope.Sdk.sln
+++ b/Cnblogs.DashScope.Sdk.sln
@@ -16,6 +16,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Cnblogs.DashScope.AspNetCor
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Cnblogs.DashScope.Core", "src\Cnblogs.DashScope.Core\Cnblogs.DashScope.Core.csproj", "{CC389455-A3EA-4F09-B524-4DC351A1E1AA}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Cnblogs.DashScope.Sdk.SnapshotGenerator", "test\Cnblogs.DashScope.Sdk.SnapshotGenerator\Cnblogs.DashScope.Sdk.SnapshotGenerator.csproj", "{5088DE77-1CE3-46FB-B9D0-27A6C9A5EED1}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -27,6 +29,7 @@ Global
{8885149A-78F0-4C8E-B9AA-87A46EA69219} = {2E15D1EC-4A07-416E-8BE6-D907F509FD35}
{C910495B-87AB-4AC1-989C-B6720695A139} = {008988ED-0A3B-4272-BCC3-7B4110699345}
{CC389455-A3EA-4F09-B524-4DC351A1E1AA} = {008988ED-0A3B-4272-BCC3-7B4110699345}
+ {5088DE77-1CE3-46FB-B9D0-27A6C9A5EED1} = {CFC8ECB3-5248-46CD-A56C-EC088F2A3804}
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{FA6A118A-8D26-4B7A-9952-8504B8A0025B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
@@ -49,5 +52,9 @@ Global
{CC389455-A3EA-4F09-B524-4DC351A1E1AA}.Debug|Any CPU.Build.0 = Debug|Any CPU
{CC389455-A3EA-4F09-B524-4DC351A1E1AA}.Release|Any CPU.ActiveCfg = Release|Any CPU
{CC389455-A3EA-4F09-B524-4DC351A1E1AA}.Release|Any CPU.Build.0 = Release|Any CPU
+ {5088DE77-1CE3-46FB-B9D0-27A6C9A5EED1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {5088DE77-1CE3-46FB-B9D0-27A6C9A5EED1}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {5088DE77-1CE3-46FB-B9D0-27A6C9A5EED1}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {5088DE77-1CE3-46FB-B9D0-27A6C9A5EED1}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
EndGlobal
diff --git a/Cnblogs.DashScope.Sdk.sln.DotSettings b/Cnblogs.DashScope.Sdk.sln.DotSettings
index 79d3fc2..3ad7f9e 100644
--- a/Cnblogs.DashScope.Sdk.sln.DotSettings
+++ b/Cnblogs.DashScope.Sdk.sln.DotSettings
@@ -1,3 +1,4 @@
True
+ True
True
\ No newline at end of file
diff --git a/test/Cnblogs.DashScope.Sdk.SnapshotGenerator/Cnblogs.DashScope.Sdk.SnapshotGenerator.csproj b/test/Cnblogs.DashScope.Sdk.SnapshotGenerator/Cnblogs.DashScope.Sdk.SnapshotGenerator.csproj
new file mode 100644
index 0000000..8de488e
--- /dev/null
+++ b/test/Cnblogs.DashScope.Sdk.SnapshotGenerator/Cnblogs.DashScope.Sdk.SnapshotGenerator.csproj
@@ -0,0 +1,11 @@
+
+
+
+ Exe
+
+
+
+
+
+
+
diff --git a/test/Cnblogs.DashScope.Sdk.SnapshotGenerator/Program.cs b/test/Cnblogs.DashScope.Sdk.SnapshotGenerator/Program.cs
new file mode 100644
index 0000000..32cb00f
--- /dev/null
+++ b/test/Cnblogs.DashScope.Sdk.SnapshotGenerator/Program.cs
@@ -0,0 +1,83 @@
+using System.Net;
+using System.Text;
+
+const string basePath = "../../../../Cnblogs.DashScope.Sdk.UnitTests/RawHttpData";
+var snapshots = new DirectoryInfo(basePath);
+Console.Write("ApiKey > ");
+var apiKey = Console.ReadLine();
+var handler = new SocketsHttpHandler()
+{
+ AutomaticDecompression = DecompressionMethods.All,
+};
+var client = new HttpClient(handler) { BaseAddress = new Uri("https://dashscope.aliyuncs.com/api/v1/") };
+client.DefaultRequestHeaders.Add("Authorization", $"Bearer {apiKey}");
+
+while (true)
+{
+ Console.Write("Snapshot Name > ");
+ var snapshotName = Console.ReadLine()?.Trim();
+ if (string.IsNullOrEmpty(snapshotName))
+ {
+ continue;
+ }
+
+ var snapshot = snapshots.EnumerateFiles().Where(s => s.Name.StartsWith(snapshotName))
+ .Select(s => s.Name.Split('.').First()).Distinct()
+ .ToList();
+ if (snapshot.Count == 0)
+ {
+ Console.WriteLine($"No snapshot was found with name: {snapshotName}");
+ }
+
+ Console.WriteLine($"Updating {snapshot.Count} snapshots ...");
+ foreach (var name in snapshot)
+ {
+ Console.WriteLine($"Updating {name}");
+ await UpdateSnapshotsAsync(client, name);
+ Console.WriteLine($"{name} updated");
+ }
+}
+
+static async Task UpdateSnapshotsAsync(HttpClient client, string name)
+{
+ var requestHeader = await File.ReadAllLinesAsync(Path.Combine(basePath, $"{name}.request.header.txt"));
+ var requestBodyFile = Path.Combine(basePath, $"{name}.request.body.json");
+ var requestBody = File.Exists(requestBodyFile)
+ ? await File.ReadAllTextAsync(Path.Combine(basePath, $"{name}.request.body.json"))
+ : string.Empty;
+ var firstLine = requestHeader[0].Split(' ');
+ var method = HttpMethod.Parse(firstLine[0]);
+ var request = new HttpRequestMessage(method, firstLine[1]);
+ var contentType = "application/json";
+ foreach (var header in requestHeader.Skip(1))
+ {
+ var values = header.Split(':', StringSplitOptions.TrimEntries);
+ if (values[0] == "Content-Type")
+ {
+ contentType = values[1];
+ continue;
+ }
+
+ if (values[0] == "Content-Length")
+ {
+ continue;
+ }
+
+ request.Headers.Add(values[0], values[1]);
+ }
+
+ if (string.IsNullOrWhiteSpace(requestBodyFile) == false)
+ {
+ request.Content = new StringContent(requestBody, Encoding.Default, contentType);
+ }
+
+ var response = await client.SendAsync(request);
+ var responseBody = await response.Content.ReadAsStringAsync();
+ var responseHeaderFile = new StringBuilder();
+ responseHeaderFile.AppendLine($"HTTP/1.1 {(int)response.StatusCode} {response.StatusCode}");
+ responseHeaderFile = response.Headers.Aggregate(
+ responseHeaderFile,
+ (sb, pair) => sb.AppendLine($"{pair.Key}: {string.Join(',', pair.Value)}"));
+ await File.WriteAllTextAsync(Path.Combine(basePath, $"{name}.response.header.txt"), responseHeaderFile.ToString());
+ await File.WriteAllTextAsync(Path.Combine(basePath, $"{name}.response.body.txt"), responseBody);
+}
diff --git a/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/auth-error-nosse.request.json b/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/auth-error-nosse.request.body.json
similarity index 100%
rename from test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/auth-error-nosse.request.json
rename to test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/auth-error-nosse.request.body.json
diff --git a/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/auth-error-nosse.request.header.txt b/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/auth-error-nosse.request.header.txt
new file mode 100644
index 0000000..b8c87ad
--- /dev/null
+++ b/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/auth-error-nosse.request.header.txt
@@ -0,0 +1,8 @@
+POST /api/v1/services/aigc/text-generation/generation HTTP/1.1
+Content-Type: application/json
+Accept: */*
+Cache-Control: no-cache
+Host: dashscope.aliyuncs.com
+Accept-Encoding: gzip, deflate, br
+Connection: keep-alive
+Content-Length: 429
diff --git a/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/auth-error-nosse.response.body.txt b/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/auth-error-nosse.response.body.txt
index 84594d8..d86b36a 100644
--- a/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/auth-error-nosse.response.body.txt
+++ b/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/auth-error-nosse.response.body.txt
@@ -1 +1 @@
-{"code":"InvalidApiKey","message":"No API-key provided.","request_id":"862e8e7a-1fb8-9a50-aa7b-a808c2a988ee"}
+{"code":"InvalidApiKey","message":"Invalid API-key provided.","request_id":"a1c0561c-1dfe-98a6-a62f-983577b8bc5e"}
\ No newline at end of file
diff --git a/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/auth-error-nosse.response.header.txt b/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/auth-error-nosse.response.header.txt
index 19e2ad9..804fd0d 100644
--- a/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/auth-error-nosse.response.header.txt
+++ b/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/auth-error-nosse.response.header.txt
@@ -1,10 +1,10 @@
-HTTP/1.1 401 Unauthorized
-content-type: application/json;charset=UTF-8
-date: Mon, 26 Feb 2024 13:24:14 GMT
-x-envoy-upstream-service-time: 3
-server: istio-envoy
-req-cost-time: 3
-req-arrive-time: 1708953854889
-resp-start-time: 1708953854892
-content-length: 109
-vary: Accept-Encoding
+HTTP/1.1 401 Unauthorized
+eagleeye-traceid: cf50104d0a2a79fb416deb06c226876d
+X-Request-ID: a1c0561c-1dfe-98a6-a62f-983577b8bc5e
+x-envoy-upstream-service-time: 4
+Date: Mon, 25 Nov 2024 05:42:37 GMT
+Server: istio-envoy
+req-cost-time: 4
+req-arrive-time: 1732513357578
+resp-start-time: 1732513357583
+Vary: Accept-Encoding
diff --git a/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/background-generation-nosse.request.json b/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/background-generation-nosse.request.body.json
similarity index 100%
rename from test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/background-generation-nosse.request.json
rename to test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/background-generation-nosse.request.body.json
diff --git a/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/background-generation-nosse.request.header.txt b/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/background-generation-nosse.request.header.txt
new file mode 100644
index 0000000..cf180a8
--- /dev/null
+++ b/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/background-generation-nosse.request.header.txt
@@ -0,0 +1,9 @@
+POST /api/v1/services/aigc/background-generation/generation/ HTTP/1.1
+X-DashScope-Async: enable
+Content-Type: application/json
+Accept: */*
+Cache-Control: no-cache
+Host: dashscope.aliyuncs.com
+Accept-Encoding: gzip, deflate, br
+Connection: keep-alive
+Content-Length: 727
diff --git a/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/batch-text-embedding-nosse.request.json b/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/batch-text-embedding-nosse.request.body.json
similarity index 100%
rename from test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/batch-text-embedding-nosse.request.json
rename to test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/batch-text-embedding-nosse.request.body.json
diff --git a/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/batch-text-embedding-nosse.request.header.txt b/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/batch-text-embedding-nosse.request.header.txt
new file mode 100644
index 0000000..5a85839
--- /dev/null
+++ b/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/batch-text-embedding-nosse.request.header.txt
@@ -0,0 +1,9 @@
+POST /api/v1/services/embeddings/text-embedding/text-embedding HTTP/1.1
+X-DashScope-Async: enable
+Content-Type: application/json
+Accept: */*
+Cache-Control: no-cache
+Host: dashscope.aliyuncs.com
+Accept-Encoding: gzip, deflate, br
+Connection: keep-alive
+Content-Length: 225
diff --git a/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/cancel-completed-task-nosse.request.header.txt b/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/cancel-completed-task-nosse.request.header.txt
new file mode 100644
index 0000000..6cfc405
--- /dev/null
+++ b/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/cancel-completed-task-nosse.request.header.txt
@@ -0,0 +1,7 @@
+POST /api/v1/tasks/6075262c-b56d-4968-9abf-2a9784a90f3e/cancel HTTP/1.1
+Accept: */*
+Cache-Control: no-cache
+Host: dashscope.aliyuncs.com
+Accept-Encoding: gzip, deflate, br
+Connection: keep-alive
+Content-Length: 0
diff --git a/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/conversation-generation-message-sse.request.json b/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/conversation-generation-message-sse.request.body.json
similarity index 100%
rename from test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/conversation-generation-message-sse.request.json
rename to test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/conversation-generation-message-sse.request.body.json
diff --git a/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/conversation-generation-message-sse.request.header.txt b/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/conversation-generation-message-sse.request.header.txt
new file mode 100644
index 0000000..070359a
--- /dev/null
+++ b/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/conversation-generation-message-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: 829
diff --git a/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/conversation-generation-message-with-files-sse.request.json b/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/conversation-generation-message-with-files-sse.request.body.json
similarity index 100%
rename from test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/conversation-generation-message-with-files-sse.request.json
rename to test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/conversation-generation-message-with-files-sse.request.body.json
diff --git a/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/conversation-generation-message-with-files-sse.request.header.txt b/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/conversation-generation-message-with-files-sse.request.header.txt
new file mode 100644
index 0000000..80ce50b
--- /dev/null
+++ b/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/conversation-generation-message-with-files-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: 729
diff --git a/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/delete-file-nosse.request.header.txt b/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/delete-file-nosse.request.header.txt
new file mode 100644
index 0000000..4f671b2
--- /dev/null
+++ b/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/delete-file-nosse.request.header.txt
@@ -0,0 +1,6 @@
+DELETE /api/v1/files/a4f34423-d413-4530-b167-b5180394f2ce 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.Sdk.UnitTests/RawHttpData/get-file-nosse.request.header.txt b/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/get-file-nosse.request.header.txt
new file mode 100644
index 0000000..88f0217
--- /dev/null
+++ b/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/get-file-nosse.request.header.txt
@@ -0,0 +1,6 @@
+GET /api/v1/files/6f87e744-aaff-409c-b596-1b851554bd6d 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.Sdk.UnitTests/RawHttpData/get-task-background-generation-success-nosse.request.header.txt b/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/get-task-background-generation-success-nosse.request.header.txt
new file mode 100644
index 0000000..c41e7f8
--- /dev/null
+++ b/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/get-task-background-generation-success-nosse.request.header.txt
@@ -0,0 +1,6 @@
+GET /api/v1/tasks/b2e98d78-c79b-431c-b2d7-c7bcd54465da 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.Sdk.UnitTests/RawHttpData/get-task-batch-text-embedding-success-nosse.request.header.txt b/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/get-task-batch-text-embedding-success-nosse.request.header.txt
new file mode 100644
index 0000000..9b746b9
--- /dev/null
+++ b/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/get-task-batch-text-embedding-success-nosse.request.header.txt
@@ -0,0 +1,6 @@
+GET /api/v1/tasks/7408ef3d-a0be-4379-9e72-a6e95a569483 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.Sdk.UnitTests/RawHttpData/get-task-batch-text-embedding-success-nosse.response.body.txt b/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/get-task-batch-text-embedding-success-nosse.response.body.txt
index da243ee..653653a 100644
--- a/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/get-task-batch-text-embedding-success-nosse.response.body.txt
+++ b/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/get-task-batch-text-embedding-success-nosse.response.body.txt
@@ -1 +1 @@
-{"request_id":"b41afd70-251a-9625-97fd-63caf63edb44","output":{"task_id":"6075262c-b56d-4968-9abf-2a9784a90f3e","task_status":"SUCCEEDED","submit_time":"2024-03-01 10:38:04.485","scheduled_time":"2024-03-01 10:38:04.527","end_time":"2024-03-01 10:38:05.184","url":"https://dashscope-result-bj.oss-cn-beijing.aliyuncs.com/5fc5c860/2024-03-01/78a8c5e1-cc44-497e-b8c8-1a46e7e57d03_output_1709260685020.txt.gz?Expires=1709519885&OSSAccessKeyId=LTAI5tQZd8AEcZX6KZV4G8qL&Signature=lUaHmlf5XkjBBb8Yj3Y%2FZMb%2BhA4%3D"},"usage":{"total_tokens":28}}
+{"request_id":"0b2ebeda-a91b-948f-986a-d395cbf1d0e1","output":{"task_id":"7408ef3d-a0be-4379-9e72-a6e95a569483","task_status":"SUCCEEDED","submit_time":"2024-11-25 13:55:46.536","scheduled_time":"2024-11-25 13:55:46.557","end_time":"2024-11-25 13:55:47.446","url":"https://dashscope-result-bj.oss-cn-beijing.aliyuncs.com/5fc5c860/2024-11-25/c6c4456e-3c66-42ba-a52a-a16c58dda4d6_output_1732514147173.txt.gz?Expires=1732773347&OSSAccessKeyId=LTAI5tQZd8AEcZX6KZV4G8qL&Signature=perMNS1RdHHroUn2YnXxzTmOZtg%3D"},"usage":{"total_tokens":28}}
\ No newline at end of file
diff --git a/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/get-task-batch-text-embedding-success-nosse.response.header.txt b/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/get-task-batch-text-embedding-success-nosse.response.header.txt
index 941e7eb..a6dc511 100644
--- a/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/get-task-batch-text-embedding-success-nosse.response.header.txt
+++ b/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/get-task-batch-text-embedding-success-nosse.response.header.txt
@@ -1,11 +1,10 @@
-HTTP/1.1 200 OK
-server: istio-envoy
-date: Fri, 01 Mar 2024 02:38:15 GMT
-content-type: application/json;charset=UTF-8
-vary: Accept-Encoding
-content-encoding: gzip
-req-cost-time: 19
-req-arrive-time: 1709260695190
-resp-start-time: 1709260695210
-x-envoy-upstream-service-time: 14
-transfer-encoding: chunked
+HTTP/1.1 200 OK
+Server: istio-envoy
+Date: Mon, 25 Nov 2024 06:22:54 GMT
+Vary: Accept-Encoding
+req-cost-time: 53
+req-arrive-time: 1732515774352
+resp-start-time: 1732515774405
+x-envoy-upstream-service-time: 45
+Set-Cookie: acw_tc=0b2ebeda-a91b-948f-986a-d395cbf1d0e1c3946b1bf06c56f595663a7f43f68254;path=/;HttpOnly;Max-Age=1800
+Transfer-Encoding: chunked
diff --git a/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/get-task-image-generation-success-nosse.request.header.txt b/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/get-task-image-generation-success-nosse.request.header.txt
new file mode 100644
index 0000000..1fafaa3
--- /dev/null
+++ b/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/get-task-image-generation-success-nosse.request.header.txt
@@ -0,0 +1,6 @@
+GET /api/v1/tasks/c4f94e00-5899-431b-9579-eb1ebe686379 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.Sdk.UnitTests/RawHttpData/get-task-image-synthesis-success-nosse.request.header.txt b/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/get-task-image-synthesis-success-nosse.request.header.txt
new file mode 100644
index 0000000..4f43b9c
--- /dev/null
+++ b/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/get-task-image-synthesis-success-nosse.request.header.txt
@@ -0,0 +1,6 @@
+GET /api/v1/tasks/9e2b6ef6-285d-4efa-8651-4dbda7d571fa 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.Sdk.UnitTests/RawHttpData/get-task-running-nosse.request.header.txt b/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/get-task-running-nosse.request.header.txt
new file mode 100644
index 0000000..2df82a2
--- /dev/null
+++ b/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/get-task-running-nosse.request.header.txt
@@ -0,0 +1,6 @@
+GET /api/v1/tasks/1111 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.Sdk.UnitTests/RawHttpData/get-task-unknown-nosse.request.header.txt b/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/get-task-unknown-nosse.request.header.txt
new file mode 100644
index 0000000..520f0d8
--- /dev/null
+++ b/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/get-task-unknown-nosse.request.header.txt
@@ -0,0 +1,6 @@
+GET /api/v1/tasks/edbd4e81-d37b-97f1-9857-d7394829dd0f 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.Sdk.UnitTests/RawHttpData/image-generation-nosse.request.json b/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/image-generation-nosse.request.body.json
similarity index 100%
rename from test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/image-generation-nosse.request.json
rename to test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/image-generation-nosse.request.body.json
diff --git a/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/image-generation-nosse.request.header.txt b/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/image-generation-nosse.request.header.txt
new file mode 100644
index 0000000..5da6cc5
--- /dev/null
+++ b/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/image-generation-nosse.request.header.txt
@@ -0,0 +1,9 @@
+POST /api/v1/services/aigc/image-generation/generation HTTP/1.1
+X-DashScope-Async: enable
+Content-Type: application/json
+Accept: */*
+Cache-Control: no-cache
+Host: dashscope.aliyuncs.com
+Accept-Encoding: gzip, deflate, br
+Connection: keep-alive
+Content-Length: 199
diff --git a/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/image-synthesis-nosse.request.json b/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/image-synthesis-nosse.request.body.json
similarity index 100%
rename from test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/image-synthesis-nosse.request.json
rename to test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/image-synthesis-nosse.request.body.json
diff --git a/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/image-synthesis-nosse.request.header.txt b/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/image-synthesis-nosse.request.header.txt
new file mode 100644
index 0000000..aac1724
--- /dev/null
+++ b/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/image-synthesis-nosse.request.header.txt
@@ -0,0 +1,9 @@
+POST /api/v1/services/aigc/text2image/image-synthesis HTTP/1.1
+X-DashScope-Async: enable
+Content-Type: application/json
+Accept: */*
+Cache-Control: no-cache
+Host: dashscope.aliyuncs.com
+Accept-Encoding: gzip, deflate, br
+Connection: keep-alive
+Content-Length: 218
diff --git a/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/list-files-nosse.request.header.txt b/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/list-files-nosse.request.header.txt
new file mode 100644
index 0000000..83d65b4
--- /dev/null
+++ b/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/list-files-nosse.request.header.txt
@@ -0,0 +1,6 @@
+GET /api/v1/files?page_no=1&page_size=1 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.Sdk.UnitTests/RawHttpData/list-task-nosse.request.header.txt b/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/list-task-nosse.request.header.txt
new file mode 100644
index 0000000..a3e3c03
--- /dev/null
+++ b/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/list-task-nosse.request.header.txt
@@ -0,0 +1,6 @@
+GET /api/v1/tasks 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.Sdk.UnitTests/RawHttpData/multimodal-generation-audio-nosse.request.json b/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/multimodal-generation-audio-nosse.request.body.json
similarity index 100%
rename from test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/multimodal-generation-audio-nosse.request.json
rename to test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/multimodal-generation-audio-nosse.request.body.json
diff --git a/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/multimodal-generation-audio-nosse.request.header.txt b/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/multimodal-generation-audio-nosse.request.header.txt
new file mode 100644
index 0000000..8c88463
--- /dev/null
+++ b/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/multimodal-generation-audio-nosse.request.header.txt
@@ -0,0 +1,8 @@
+POST /api/v1/services/aigc/multimodal-generation/generation HTTP/1.1
+Content-Type: application/json
+Accept: */*
+Cache-Control: no-cache
+Host: dashscope.aliyuncs.com
+Accept-Encoding: gzip, deflate, br
+Connection: keep-alive
+Content-Length: 673
diff --git a/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/multimodal-generation-audio-sse.request.json b/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/multimodal-generation-audio-sse.request.body.json
similarity index 100%
rename from test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/multimodal-generation-audio-sse.request.json
rename to test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/multimodal-generation-audio-sse.request.body.json
diff --git a/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/multimodal-generation-audio-sse.request.header.txt b/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/multimodal-generation-audio-sse.request.header.txt
new file mode 100644
index 0000000..2c98ddf
--- /dev/null
+++ b/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/multimodal-generation-audio-sse.request.header.txt
@@ -0,0 +1,8 @@
+POST /api/v1/services/aigc/multimodal-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: 698
diff --git a/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/multimodal-generation-vl-nosse.request.json b/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/multimodal-generation-vl-nosse.request.body.json
similarity index 100%
rename from test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/multimodal-generation-vl-nosse.request.json
rename to test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/multimodal-generation-vl-nosse.request.body.json
diff --git a/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/multimodal-generation-vl-nosse.request.header.txt b/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/multimodal-generation-vl-nosse.request.header.txt
new file mode 100644
index 0000000..3c6f6b1
--- /dev/null
+++ b/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/multimodal-generation-vl-nosse.request.header.txt
@@ -0,0 +1,8 @@
+POST /api/v1/services/aigc/multimodal-generation/generation HTTP/1.1
+Content-Type: application/json
+Accept: */*
+Cache-Control: no-cache
+Host: dashscope.aliyuncs.com
+Accept-Encoding: gzip, deflate, br
+Connection: keep-alive
+Content-Length: 376
diff --git a/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/multimodal-generation-vl-sse.request.json b/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/multimodal-generation-vl-sse.request.body.json
similarity index 100%
rename from test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/multimodal-generation-vl-sse.request.json
rename to test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/multimodal-generation-vl-sse.request.body.json
diff --git a/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/multimodal-generation-vl-sse.request.header.txt b/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/multimodal-generation-vl-sse.request.header.txt
new file mode 100644
index 0000000..921558b
--- /dev/null
+++ b/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/multimodal-generation-vl-sse.request.header.txt
@@ -0,0 +1,8 @@
+POST /api/v1/services/aigc/multimodal-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: 704
diff --git a/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/parameter-error-nosse.request.json b/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/parameter-error-nosse.request.body.json
similarity index 100%
rename from test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/parameter-error-nosse.request.json
rename to test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/parameter-error-nosse.request.body.json
diff --git a/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/parameter-error-nosse.request.header.txt b/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/parameter-error-nosse.request.header.txt
new file mode 100644
index 0000000..98f3ece
--- /dev/null
+++ b/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/parameter-error-nosse.request.header.txt
@@ -0,0 +1,8 @@
+POST /api/v1/services/aigc/text-generation/generation HTTP/1.1
+Content-Type: application/json
+Accept: */*
+Cache-Control: no-cache
+Host: dashscope.aliyuncs.com
+Accept-Encoding: gzip, deflate, br
+Connection: keep-alive
+Content-Length: 453
diff --git a/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/parameter-error-sse.request.json b/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/parameter-error-sse.request.body.json
similarity index 100%
rename from test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/parameter-error-sse.request.json
rename to test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/parameter-error-sse.request.body.json
diff --git a/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/parameter-error-sse.request.header.txt b/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/parameter-error-sse.request.header.txt
new file mode 100644
index 0000000..98f3ece
--- /dev/null
+++ b/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/parameter-error-sse.request.header.txt
@@ -0,0 +1,8 @@
+POST /api/v1/services/aigc/text-generation/generation HTTP/1.1
+Content-Type: application/json
+Accept: */*
+Cache-Control: no-cache
+Host: dashscope.aliyuncs.com
+Accept-Encoding: gzip, deflate, br
+Connection: keep-alive
+Content-Length: 453
diff --git a/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/single-generation-message-nosse.request.json b/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/single-generation-message-nosse.request.body.json
similarity index 100%
rename from test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/single-generation-message-nosse.request.json
rename to test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/single-generation-message-nosse.request.body.json
diff --git a/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/single-generation-message-nosse.request.header.txt b/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/single-generation-message-nosse.request.header.txt
new file mode 100644
index 0000000..99d2294
--- /dev/null
+++ b/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/single-generation-message-nosse.request.header.txt
@@ -0,0 +1,8 @@
+POST /api/v1/services/aigc/text-generation/generation HTTP/1.1
+Content-Type: application/json
+Accept: */*
+Cache-Control: no-cache
+Host: dashscope.aliyuncs.com
+Accept-Encoding: gzip, deflate, br
+Connection: keep-alive
+Content-Length: 537
diff --git a/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/single-generation-message-sse.request.json b/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/single-generation-message-sse.request.body.json
similarity index 100%
rename from test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/single-generation-message-sse.request.json
rename to test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/single-generation-message-sse.request.body.json
diff --git a/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/single-generation-message-sse.request.header.txt b/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/single-generation-message-sse.request.header.txt
new file mode 100644
index 0000000..711ab9b
--- /dev/null
+++ b/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/single-generation-message-sse.request.header.txt
@@ -0,0 +1,9 @@
+POST /api/v1/services/aigc/text-generation/generation HTTP/1.1
+Accept: text/event-stream
+Content-Type: application/json
+Cache-Control: no-cache
+Postman-Token: ab9653b6-26e2-4aeb-99f0-34235457fb17
+Host: dashscope.aliyuncs.com
+Accept-Encoding: gzip, deflate, br
+Connection: keep-alive
+Content-Length: 536
diff --git a/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/single-generation-message-with-tools-nosse.request.json b/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/single-generation-message-with-tools-nosse.request.body.json
similarity index 100%
rename from test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/single-generation-message-with-tools-nosse.request.json
rename to test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/single-generation-message-with-tools-nosse.request.body.json
diff --git a/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/single-generation-message-with-tools-nosse.request.header.txt b/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/single-generation-message-with-tools-nosse.request.header.txt
new file mode 100644
index 0000000..bbab4fc
--- /dev/null
+++ b/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/single-generation-message-with-tools-nosse.request.header.txt
@@ -0,0 +1,8 @@
+POST /api/v1/services/aigc/text-generation/generation HTTP/1.1
+Content-Type: application/json
+Accept: */*
+Cache-Control: no-cache
+Host: dashscope.aliyuncs.com
+Accept-Encoding: gzip, deflate, br
+Connection: keep-alive
+Content-Length: 1628
diff --git a/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/single-generation-text-nosse.request.json b/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/single-generation-text-nosse.request.body.json
similarity index 100%
rename from test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/single-generation-text-nosse.request.json
rename to test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/single-generation-text-nosse.request.body.json
diff --git a/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/single-generation-text-nosse.request.header.txt b/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/single-generation-text-nosse.request.header.txt
new file mode 100644
index 0000000..cc45d94
--- /dev/null
+++ b/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/single-generation-text-nosse.request.header.txt
@@ -0,0 +1,8 @@
+POST /api/v1/services/aigc/text-generation/generation HTTP/1.1
+Content-Type: application/json
+Accept: */*
+Cache-Control: no-cache
+Host: dashscope.aliyuncs.com
+Accept-Encoding: gzip, deflate, br
+Connection: keep-alive
+Content-Length: 428
diff --git a/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/single-generation-text-sse.request.json b/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/single-generation-text-sse.request.body.json
similarity index 100%
rename from test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/single-generation-text-sse.request.json
rename to test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/single-generation-text-sse.request.body.json
diff --git a/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/single-generation-text-sse.request.header.txt b/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/single-generation-text-sse.request.header.txt
new file mode 100644
index 0000000..08d3c0c
--- /dev/null
+++ b/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/single-generation-text-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: 536
diff --git a/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/single-generation-text-sse.response.body.txt b/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/single-generation-text-sse.response.body.txt
index 21ec87d..4a9d353 100644
--- a/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/single-generation-text-sse.response.body.txt
+++ b/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/single-generation-text-sse.response.body.txt
@@ -1,44 +1,25 @@
-id:1
+id:1
event:result
:HTTP_STATUS/200
-data:{"output":{"finish_reason":"null","text":"1"},"usage":{"total_tokens":9,"input_tokens":8,"output_tokens":1},"request_id":"893a2304-f032-9c7f-bde8-da5e3c1288fc"}
+data:{"output":{"finish_reason":"null","text":"1+"},"usage":{"total_tokens":18,"input_tokens":16,"output_tokens":2},"request_id":"5b441aa7-0b9c-9fbc-ae0a-e2b212b71eac"}
id:2
event:result
:HTTP_STATUS/200
-data:{"output":{"finish_reason":"null","text":"+"},"usage":{"total_tokens":10,"input_tokens":8,"output_tokens":2},"request_id":"893a2304-f032-9c7f-bde8-da5e3c1288fc"}
+data:{"output":{"finish_reason":"null","text":"1"},"usage":{"total_tokens":19,"input_tokens":16,"output_tokens":3},"request_id":"5b441aa7-0b9c-9fbc-ae0a-e2b212b71eac"}
id:3
event:result
:HTTP_STATUS/200
-data:{"output":{"finish_reason":"null","text":"1"},"usage":{"total_tokens":11,"input_tokens":8,"output_tokens":3},"request_id":"893a2304-f032-9c7f-bde8-da5e3c1288fc"}
+data:{"output":{"finish_reason":"null","text":"等于"},"usage":{"total_tokens":20,"input_tokens":16,"output_tokens":4},"request_id":"5b441aa7-0b9c-9fbc-ae0a-e2b212b71eac"}
id:4
event:result
:HTTP_STATUS/200
-data:{"output":{"finish_reason":"null","text":" 等于 "},"usage":{"total_tokens":16,"input_tokens":8,"output_tokens":8},"request_id":"893a2304-f032-9c7f-bde8-da5e3c1288fc"}
+data:{"output":{"finish_reason":"null","text":"2。"},"usage":{"total_tokens":22,"input_tokens":16,"output_tokens":6},"request_id":"5b441aa7-0b9c-9fbc-ae0a-e2b212b71eac"}
id:5
event:result
:HTTP_STATUS/200
-data:{"output":{"finish_reason":"null","text":"2。这是最基本的数学加法原则"},"usage":{"total_tokens":24,"input_tokens":8,"output_tokens":16},"request_id":"893a2304-f032-9c7f-bde8-da5e3c1288fc"}
+data:{"output":{"finish_reason":"stop","text":""},"usage":{"total_tokens":22,"input_tokens":16,"output_tokens":6},"request_id":"5b441aa7-0b9c-9fbc-ae0a-e2b212b71eac"}
-id:6
-event:result
-:HTTP_STATUS/200
-data:{"output":{"finish_reason":"null","text":",在十进制数系统中,"},"usage":{"total_tokens":32,"input_tokens":8,"output_tokens":24},"request_id":"893a2304-f032-9c7f-bde8-da5e3c1288fc"}
-
-id:7
-event:result
-:HTTP_STATUS/200
-data:{"output":{"finish_reason":"null","text":"任何两个相同的数字相加都等于"},"usage":{"total_tokens":40,"input_tokens":8,"output_tokens":32},"request_id":"893a2304-f032-9c7f-bde8-da5e3c1288fc"}
-
-id:8
-event:result
-:HTTP_STATUS/200
-data:{"output":{"finish_reason":"null","text":"该数字的两倍。"},"usage":{"total_tokens":46,"input_tokens":8,"output_tokens":38},"request_id":"893a2304-f032-9c7f-bde8-da5e3c1288fc"}
-
-id:9
-event:result
-:HTTP_STATUS/200
-data:{"output":{"finish_reason":"stop","text":""},"usage":{"total_tokens":46,"input_tokens":8,"output_tokens":38},"request_id":"893a2304-f032-9c7f-bde8-da5e3c1288fc"}
diff --git a/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/single-generation-text-sse.response.header.txt b/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/single-generation-text-sse.response.header.txt
index 55b44ac..b073cc9 100644
--- a/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/single-generation-text-sse.response.header.txt
+++ b/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/single-generation-text-sse.response.header.txt
@@ -1,13 +1,15 @@
-HTTP/1.1 200 OK
-eagleeye-traceid: 446447911b8df6bf8a2f9c579d66cf80
-x-request-id: 2e6db096-f167-932b-98bb-17657228b8b6
-content-type: text/event-stream;charset=UTF-8
+HTTP/1.1 200 OK
+eagleeye-traceid: 062490f5e508fdde8f51b7705ed50949
+Vary: Origin,Access-Control-Request-Method,Access-Control-Request-Headers
+X-Request-ID: 5b441aa7-0b9c-9fbc-ae0a-e2b212b71eac
x-dashscope-call-gateway: true
-content-encoding: gzip
+x-dashscope-timeout: 180
+x-dashscope-finished: false
req-cost-time: 361
-req-arrive-time: 1708924642454
-resp-start-time: 1708924642816
+req-arrive-time: 1732513944833
+resp-start-time: 1732513945194
x-envoy-upstream-service-time: 355
-date: Mon, 26 Feb 2024 05:17:22 GMT
-server: istio-envoy
-transfer-encoding: chunked
+Set-Cookie: acw_tc=5b441aa7-0b9c-9fbc-ae0a-e2b212b71eacb8d26e65ea28dbea029207c861060ea5;path=/;HttpOnly;Max-Age=1800
+Date: Mon, 25 Nov 2024 05:52:24 GMT
+Server: istio-envoy
+Transfer-Encoding: chunked
diff --git a/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/text-embedding-nosse.request.json b/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/text-embedding-nosse.request.body.json
similarity index 100%
rename from test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/text-embedding-nosse.request.json
rename to test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/text-embedding-nosse.request.body.json
diff --git a/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/text-embedding-nosse.request.header.txt b/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/text-embedding-nosse.request.header.txt
new file mode 100644
index 0000000..f6d4fea
--- /dev/null
+++ b/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/text-embedding-nosse.request.header.txt
@@ -0,0 +1,8 @@
+POST /api/v1/services/embeddings/text-embedding/text-embedding HTTP/1.1
+Content-Type: application/json
+Accept: */*
+Cache-Control: no-cache
+Host: dashscope.aliyuncs.com
+Accept-Encoding: gzip, deflate, br
+Connection: keep-alive
+Content-Length: 162
diff --git a/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/tokenization-nosse.request.json b/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/tokenization-nosse.request.body.json
similarity index 100%
rename from test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/tokenization-nosse.request.json
rename to test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/tokenization-nosse.request.body.json
diff --git a/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/tokenization-nosse.request.header.txt b/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/tokenization-nosse.request.header.txt
new file mode 100644
index 0000000..37d1fed
--- /dev/null
+++ b/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/tokenization-nosse.request.header.txt
@@ -0,0 +1,8 @@
+POST /api/v1/tokenizer HTTP/1.1
+Content-Type: application/json
+Accept: */*
+Cache-Control: no-cache
+Host: dashscope.aliyuncs.com
+Accept-Encoding: gzip, deflate, br
+Connection: keep-alive
+Content-Length: 248
diff --git a/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/upload-file-error-nosse.request.header.txt b/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/upload-file-error-nosse.request.header.txt
new file mode 100644
index 0000000..40d8b49
--- /dev/null
+++ b/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/upload-file-error-nosse.request.header.txt
@@ -0,0 +1,7 @@
+POST /api/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;
diff --git a/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/upload-file-nosse.request.header.txt b/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/upload-file-nosse.request.header.txt
new file mode 100644
index 0000000..40d8b49
--- /dev/null
+++ b/test/Cnblogs.DashScope.Sdk.UnitTests/RawHttpData/upload-file-nosse.request.header.txt
@@ -0,0 +1,7 @@
+POST /api/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;
diff --git a/test/Cnblogs.DashScope.Sdk.UnitTests/Utils/RequestSnapshot.cs b/test/Cnblogs.DashScope.Sdk.UnitTests/Utils/RequestSnapshot.cs
index c91de96..17596ff 100644
--- a/test/Cnblogs.DashScope.Sdk.UnitTests/Utils/RequestSnapshot.cs
+++ b/test/Cnblogs.DashScope.Sdk.UnitTests/Utils/RequestSnapshot.cs
@@ -35,6 +35,6 @@ public record RequestSnapshot(
{
public string GetRequestJson(bool sse)
{
- return File.ReadAllText(Path.Combine("RawHttpData", $"{GetSnapshotCaseName(sse)}.request.json"));
+ return File.ReadAllText(Path.Combine("RawHttpData", $"{GetSnapshotCaseName(sse)}.request.body.json"));
}
}
diff --git a/test/Cnblogs.DashScope.Sdk.UnitTests/Utils/Snapshots.cs b/test/Cnblogs.DashScope.Sdk.UnitTests/Utils/Snapshots.cs
index db846cf..89d0e5c 100644
--- a/test/Cnblogs.DashScope.Sdk.UnitTests/Utils/Snapshots.cs
+++ b/test/Cnblogs.DashScope.Sdk.UnitTests/Utils/Snapshots.cs
@@ -33,8 +33,8 @@ public static readonly
new()
{
Code = "InvalidApiKey",
- Message = "No API-key provided.",
- RequestId = "862e8e7a-1fb8-9a50-aa7b-a808c2a988ee"
+ Message = "Invalid API-key provided.",
+ RequestId = "a1c0561c-1dfe-98a6-a62f-983577b8bc5e"
});
public static readonly
@@ -172,14 +172,14 @@ public static class TextFormat
{
Output = new()
{
- FinishReason = "stop", Text = "1+1 等于 2。这是最基本的数学加法原则,在十进制数系统中,任何两个相同的数字相加都等于该数字的两倍。"
+ FinishReason = "stop", Text = "1+1等于2。"
},
- RequestId = "893a2304-f032-9c7f-bde8-da5e3c1288fc",
+ RequestId = "5b441aa7-0b9c-9fbc-ae0a-e2b212b71eac",
Usage = new()
{
- InputTokens = 8,
- OutputTokens = 38,
- TotalTokens = 46
+ InputTokens = 16,
+ OutputTokens = 6,
+ TotalTokens = 22
}
});
}
@@ -742,16 +742,16 @@ public static readonly RequestSnapshot