mirror of
https://github.com/CJackHwang/ds2api.git
synced 2026-05-05 08:55:28 +08:00
Track byte sizes of inline-uploaded files during PreprocessInlineFileInputs and convert them to conservative token estimates (bytes/3). RefFileTokens is threaded through StandardRequest into all OpenAI chat/responses usage builders so returned prompt_tokens/input_tokens reflect the full upstream context cost including attached files.
37 lines
1.5 KiB
Go
37 lines
1.5 KiB
Go
package openai
|
|
|
|
import "ds2api/internal/util"
|
|
|
|
func BuildChatUsageForModel(model, finalPrompt, finalThinking, finalText string, refFileTokens int) map[string]any {
|
|
promptTokens := util.CountPromptTokens(finalPrompt, model) + refFileTokens
|
|
reasoningTokens := util.CountOutputTokens(finalThinking, model)
|
|
completionTokens := util.CountOutputTokens(finalText, model)
|
|
return map[string]any{
|
|
"prompt_tokens": promptTokens,
|
|
"completion_tokens": reasoningTokens + completionTokens,
|
|
"total_tokens": promptTokens + reasoningTokens + completionTokens,
|
|
"completion_tokens_details": map[string]any{
|
|
"reasoning_tokens": reasoningTokens,
|
|
},
|
|
}
|
|
}
|
|
|
|
func BuildChatUsage(finalPrompt, finalThinking, finalText string) map[string]any {
|
|
return BuildChatUsageForModel("", finalPrompt, finalThinking, finalText, 0)
|
|
}
|
|
|
|
func BuildResponsesUsageForModel(model, finalPrompt, finalThinking, finalText string, refFileTokens int) map[string]any {
|
|
promptTokens := util.CountPromptTokens(finalPrompt, model) + refFileTokens
|
|
reasoningTokens := util.CountOutputTokens(finalThinking, model)
|
|
completionTokens := util.CountOutputTokens(finalText, model)
|
|
return map[string]any{
|
|
"input_tokens": promptTokens,
|
|
"output_tokens": reasoningTokens + completionTokens,
|
|
"total_tokens": promptTokens + reasoningTokens + completionTokens,
|
|
}
|
|
}
|
|
|
|
func BuildResponsesUsage(finalPrompt, finalThinking, finalText string) map[string]any {
|
|
return BuildResponsesUsageForModel("", finalPrompt, finalThinking, finalText, 0)
|
|
}
|