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; }