🎨 优化上游ai兼容性,修复newapi返回token为空的问题
This commit is contained in:
@@ -10,6 +10,8 @@ type ClaudeMessageResponse struct {
|
|||||||
StopReason string `json:"stop_reason,omitempty"` // end_turn, max_tokens, stop_sequence
|
StopReason string `json:"stop_reason,omitempty"` // end_turn, max_tokens, stop_sequence
|
||||||
StopSequence string `json:"stop_sequence,omitempty"`
|
StopSequence string `json:"stop_sequence,omitempty"`
|
||||||
Usage ClaudeUsage `json:"usage"`
|
Usage ClaudeUsage `json:"usage"`
|
||||||
|
// 统一格式的用量统计(与 OpenAI chat.completions 对齐)
|
||||||
|
StandardUsage *ChatCompletionUsage `json:"standard_usage,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type ClaudeContentBlock struct {
|
type ClaudeContentBlock struct {
|
||||||
|
|||||||
@@ -8,6 +8,8 @@ type ChatCompletionResponse struct {
|
|||||||
Model string `json:"model"`
|
Model string `json:"model"`
|
||||||
Choices []ChatCompletionChoice `json:"choices"`
|
Choices []ChatCompletionChoice `json:"choices"`
|
||||||
Usage ChatCompletionUsage `json:"usage"`
|
Usage ChatCompletionUsage `json:"usage"`
|
||||||
|
// 统一格式的用量统计(用于各种上游的标准化)
|
||||||
|
StandardUsage *ChatCompletionUsage `json:"standard_usage,omitempty"`
|
||||||
// 扩展字段:正则脚本执行日志
|
// 扩展字段:正则脚本执行日志
|
||||||
RegexLogs *RegexExecutionLogs `json:"regex_logs,omitempty"`
|
RegexLogs *RegexExecutionLogs `json:"regex_logs,omitempty"`
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -49,6 +49,13 @@ func (s *AiProxyService) ProcessClaudeMessage(ctx context.Context, req *request.
|
|||||||
resp.Content[0].Text = injector.ProcessResponse(resp.Content[0].Text)
|
resp.Content[0].Text = injector.ProcessResponse(resp.Content[0].Text)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 5. 统一填充 standard_usage,转换为 OpenAI 风格的用量统计
|
||||||
|
resp.StandardUsage = &response.ChatCompletionUsage{
|
||||||
|
PromptTokens: resp.Usage.InputTokens,
|
||||||
|
CompletionTokens: resp.Usage.OutputTokens,
|
||||||
|
TotalTokens: resp.Usage.InputTokens + resp.Usage.OutputTokens,
|
||||||
|
}
|
||||||
|
|
||||||
return resp, nil
|
return resp, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -48,6 +48,15 @@ func (s *AiProxyService) ProcessChatCompletion(ctx context.Context, req *request
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 4. 处理响应并收集正则日志
|
// 4. 处理响应并收集正则日志
|
||||||
|
if resp != nil {
|
||||||
|
// 统一填充 standard_usage,方便上游使用统一格式解析
|
||||||
|
resp.StandardUsage = &response.ChatCompletionUsage{
|
||||||
|
PromptTokens: resp.Usage.PromptTokens,
|
||||||
|
CompletionTokens: resp.Usage.CompletionTokens,
|
||||||
|
TotalTokens: resp.Usage.TotalTokens,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if preset != nil && injector != nil && len(resp.Choices) > 0 {
|
if preset != nil && injector != nil && len(resp.Choices) > 0 {
|
||||||
resp.Choices[0].Message.Content = injector.ProcessResponse(resp.Choices[0].Message.Content)
|
resp.Choices[0].Message.Content = injector.ProcessResponse(resp.Choices[0].Message.Content)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user