From 867a2dc86118d4699e56716b298597922e4c72c4 Mon Sep 17 00:00:00 2001 From: ccnetcore Date: Thu, 16 Oct 2025 22:11:09 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E6=AD=A3Claude=E8=81=8A?= =?UTF-8?q?=E5=A4=A9=E5=93=8D=E5=BA=94=E7=9A=84Token=E7=BB=9F=E8=AE=A1?= =?UTF-8?q?=E9=80=BB=E8=BE=91=E5=B9=B6=E4=BC=98=E5=8C=96AiGateWayManager?= =?UTF-8?q?=E4=BD=BF=E7=94=A8=E6=9D=A1=E4=BB=B6=EF=BC=8C=E5=90=8C=E6=97=B6?= =?UTF-8?q?=E7=A7=BB=E9=99=A4=E5=89=8D=E7=AB=AF=E6=97=A0=E7=94=A8=E7=8E=AF?= =?UTF-8?q?=E5=A2=83=E5=8F=98=E9=87=8F=E5=AE=9A=E4=B9=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Chats/ClaudiaChatCompletionsService.cs | 28 +++++++++++++------ .../Managers/AiGateWayManager.cs | 2 +- Yi.Abp.Net8/src/Yi.Abp.Web/Program.cs | 1 + Yi.Ai.Vue3/types/import_meta.d.ts | 1 - 4 files changed, 21 insertions(+), 11 deletions(-) diff --git a/Yi.Abp.Net8/module/ai-hub/Yi.Framework.AiHub.Domain/AiGateWay/Impl/ThorClaude/Chats/ClaudiaChatCompletionsService.cs b/Yi.Abp.Net8/module/ai-hub/Yi.Framework.AiHub.Domain/AiGateWay/Impl/ThorClaude/Chats/ClaudiaChatCompletionsService.cs index e868e93a..18fb1a46 100644 --- a/Yi.Abp.Net8/module/ai-hub/Yi.Framework.AiHub.Domain/AiGateWay/Impl/ThorClaude/Chats/ClaudiaChatCompletionsService.cs +++ b/Yi.Abp.Net8/module/ai-hub/Yi.Framework.AiHub.Domain/AiGateWay/Impl/ThorClaude/Chats/ClaudiaChatCompletionsService.cs @@ -590,7 +590,7 @@ public sealed class ClaudiaChatCompletionsService( Model = input.Model, Usage = new ThorUsageResponse() { - PromptTokens = result?.Message?.Usage?.InputTokens, + PromptTokens = result?.Message?.Usage?.InputTokens } }; continue; @@ -623,7 +623,7 @@ public sealed class ClaudiaChatCompletionsService( if (result.Type == "message_delta") { - yield return new ThorChatCompletionsResponse() + var deltaOutput = new ThorChatCompletionsResponse() { Choices = [ @@ -637,13 +637,22 @@ public sealed class ClaudiaChatCompletionsService( } ], Model = input.Model, - Usage = new ThorUsageResponse() + Usage = new ThorUsageResponse { - CompletionTokens = result.Usage?.OutputTokens, - InputTokens = result.Usage?.InputTokens + InputTokens = result.Usage?.InputTokens + result.Usage?.CacheCreationInputTokens + + result.Usage?.CacheReadInputTokens, + OutputTokens = result.Usage?.OutputTokens, } }; + + deltaOutput.Usage.PromptTokens = deltaOutput.Usage.InputTokens; + deltaOutput.Usage.CompletionTokens = deltaOutput.Usage.OutputTokens; + + deltaOutput.Usage.TotalTokens = deltaOutput.Usage.InputTokens + deltaOutput.Usage.OutputTokens; + + yield return deltaOutput; + continue; } @@ -694,13 +703,14 @@ public sealed class ClaudiaChatCompletionsService( Id = result.Message.id, Usage = new ThorUsageResponse() { - CompletionTokens = result.Message.Usage?.OutputTokens, - PromptTokens = result.Message.Usage?.InputTokens, - InputTokens = result.Message.Usage?.InputTokens, + InputTokens = result.Message.Usage?.InputTokens + result.Message.Usage?.CacheCreationInputTokens + + result.Message.Usage?.CacheReadInputTokens, OutputTokens = result.Message.Usage?.OutputTokens, - TotalTokens = result.Message.Usage?.InputTokens + result.Message.Usage?.OutputTokens } }; + output.Usage.PromptTokens = output.Usage.InputTokens; + output.Usage.CompletionTokens = output.Usage.OutputTokens; + output.Usage.TotalTokens = output.Usage.InputTokens + output.Usage.OutputTokens; output.SupplementalMultiplier(AnthropicChatCompletionsService.ClaudeMultiplier); yield return output; } diff --git a/Yi.Abp.Net8/module/ai-hub/Yi.Framework.AiHub.Domain/Managers/AiGateWayManager.cs b/Yi.Abp.Net8/module/ai-hub/Yi.Framework.AiHub.Domain/Managers/AiGateWayManager.cs index e7e4216e..cabdd9a4 100644 --- a/Yi.Abp.Net8/module/ai-hub/Yi.Framework.AiHub.Domain/Managers/AiGateWayManager.cs +++ b/Yi.Abp.Net8/module/ai-hub/Yi.Framework.AiHub.Domain/Managers/AiGateWayManager.cs @@ -225,7 +225,7 @@ public class AiGateWayManager : DomainService { await foreach (var data in completeChatResponse) { - if (data.Usage is not null) + if (data.Usage is not null&&(data.Usage.CompletionTokens>0||data.Usage.OutputTokens>0)) { tokenUsage = data.Usage; } diff --git a/Yi.Abp.Net8/src/Yi.Abp.Web/Program.cs b/Yi.Abp.Net8/src/Yi.Abp.Web/Program.cs index 6f9459f5..ce6fdea8 100644 --- a/Yi.Abp.Net8/src/Yi.Abp.Web/Program.cs +++ b/Yi.Abp.Net8/src/Yi.Abp.Web/Program.cs @@ -1,3 +1,4 @@ +using System.Text.Json; using Serilog; using Serilog.Events; using Yi.Abp.Web; diff --git a/Yi.Ai.Vue3/types/import_meta.d.ts b/Yi.Ai.Vue3/types/import_meta.d.ts index d8a60d41..b3e9d275 100644 --- a/Yi.Ai.Vue3/types/import_meta.d.ts +++ b/Yi.Ai.Vue3/types/import_meta.d.ts @@ -6,7 +6,6 @@ interface ImportMetaEnv { readonly VITE_WEB_ENV: string; readonly VITE_WEB_BASE_API: string; readonly VITE_API_URL: string; - readonly VITE_BUILD_COMPRESS: string; readonly VITE_SSO_SEVER_URL: string; readonly VITE_APP_VERSION: string; }