fix: 修正Claude聊天响应的Token统计逻辑并优化AiGateWayManager使用条件,同时移除前端无用环境变量定义

This commit is contained in:
ccnetcore
2025-10-16 22:11:09 +08:00
parent c5c22224cf
commit 867a2dc861
4 changed files with 21 additions and 11 deletions

View File

@@ -590,7 +590,7 @@ public sealed class ClaudiaChatCompletionsService(
Model = input.Model, Model = input.Model,
Usage = new ThorUsageResponse() Usage = new ThorUsageResponse()
{ {
PromptTokens = result?.Message?.Usage?.InputTokens, PromptTokens = result?.Message?.Usage?.InputTokens
} }
}; };
continue; continue;
@@ -623,7 +623,7 @@ public sealed class ClaudiaChatCompletionsService(
if (result.Type == "message_delta") if (result.Type == "message_delta")
{ {
yield return new ThorChatCompletionsResponse() var deltaOutput = new ThorChatCompletionsResponse()
{ {
Choices = Choices =
[ [
@@ -637,13 +637,22 @@ public sealed class ClaudiaChatCompletionsService(
} }
], ],
Model = input.Model, Model = input.Model,
Usage = new ThorUsageResponse() Usage = new ThorUsageResponse
{ {
CompletionTokens = result.Usage?.OutputTokens, InputTokens = result.Usage?.InputTokens + result.Usage?.CacheCreationInputTokens +
InputTokens = result.Usage?.InputTokens 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; continue;
} }
@@ -694,13 +703,14 @@ public sealed class ClaudiaChatCompletionsService(
Id = result.Message.id, Id = result.Message.id,
Usage = new ThorUsageResponse() Usage = new ThorUsageResponse()
{ {
CompletionTokens = result.Message.Usage?.OutputTokens, InputTokens = result.Message.Usage?.InputTokens + result.Message.Usage?.CacheCreationInputTokens +
PromptTokens = result.Message.Usage?.InputTokens, result.Message.Usage?.CacheReadInputTokens,
InputTokens = result.Message.Usage?.InputTokens,
OutputTokens = result.Message.Usage?.OutputTokens, 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); output.SupplementalMultiplier(AnthropicChatCompletionsService.ClaudeMultiplier);
yield return output; yield return output;
} }

View File

@@ -225,7 +225,7 @@ public class AiGateWayManager : DomainService
{ {
await foreach (var data in completeChatResponse) 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; tokenUsage = data.Usage;
} }

View File

@@ -1,3 +1,4 @@
using System.Text.Json;
using Serilog; using Serilog;
using Serilog.Events; using Serilog.Events;
using Yi.Abp.Web; using Yi.Abp.Web;

View File

@@ -6,7 +6,6 @@ interface ImportMetaEnv {
readonly VITE_WEB_ENV: string; readonly VITE_WEB_ENV: string;
readonly VITE_WEB_BASE_API: string; readonly VITE_WEB_BASE_API: string;
readonly VITE_API_URL: string; readonly VITE_API_URL: string;
readonly VITE_BUILD_COMPRESS: string;
readonly VITE_SSO_SEVER_URL: string; readonly VITE_SSO_SEVER_URL: string;
readonly VITE_APP_VERSION: string; readonly VITE_APP_VERSION: string;
} }