mirror of
https://github.com/vxcontrol/langchaingo.git
synced 2026-07-19 13:45:47 -04:00
Merge pull request #1278 from rainu/openai-expose-token-details
openai: expose all available token usage details
This commit is contained in:
@@ -356,11 +356,18 @@ type ChatCompletionChoice struct {
|
||||
|
||||
// ChatUsage is the usage of a chat completion request.
|
||||
type ChatUsage struct {
|
||||
PromptTokens int `json:"prompt_tokens"`
|
||||
CompletionTokens int `json:"completion_tokens"`
|
||||
TotalTokens int `json:"total_tokens"`
|
||||
PromptTokens int `json:"prompt_tokens"`
|
||||
CompletionTokens int `json:"completion_tokens"`
|
||||
TotalTokens int `json:"total_tokens"`
|
||||
PromptTokensDetails struct {
|
||||
CachedTokens int `json:"cached_tokens"`
|
||||
AudioTokens int `json:"audio_tokens"`
|
||||
} `json:"prompt_tokens_details"`
|
||||
CompletionTokensDetails struct {
|
||||
ReasoningTokens int `json:"reasoning_tokens"`
|
||||
ReasoningTokens int `json:"reasoning_tokens"`
|
||||
AudioTokens int `json:"audio_tokens"`
|
||||
AcceptedPredictionTokens int `json:"accepted_prediction_tokens"`
|
||||
RejectedPredictionTokens int `json:"rejected_prediction_tokens"`
|
||||
} `json:"completion_tokens_details"`
|
||||
}
|
||||
|
||||
@@ -376,11 +383,18 @@ type ChatCompletionResponse struct {
|
||||
}
|
||||
|
||||
type Usage struct {
|
||||
PromptTokens int `json:"prompt_tokens"`
|
||||
CompletionTokens int `json:"completion_tokens"`
|
||||
TotalTokens int `json:"total_tokens"`
|
||||
PromptTokens int `json:"prompt_tokens"`
|
||||
CompletionTokens int `json:"completion_tokens"`
|
||||
TotalTokens int `json:"total_tokens"`
|
||||
PromptTokensDetails struct {
|
||||
CachedTokens int `json:"cached_tokens"`
|
||||
AudioTokens int `json:"audio_tokens"`
|
||||
} `json:"prompt_tokens_details"`
|
||||
CompletionTokensDetails struct {
|
||||
ReasoningTokens int `json:"reasoning_tokens"`
|
||||
ReasoningTokens int `json:"reasoning_tokens"`
|
||||
AudioTokens int `json:"audio_tokens"`
|
||||
AcceptedPredictionTokens int `json:"accepted_prediction_tokens"`
|
||||
RejectedPredictionTokens int `json:"rejected_prediction_tokens"`
|
||||
} `json:"completion_tokens_details"`
|
||||
}
|
||||
|
||||
@@ -584,6 +598,11 @@ func combineStreamingChatResponse(
|
||||
response.Usage.CompletionTokens = streamResponse.Usage.CompletionTokens
|
||||
response.Usage.PromptTokens = streamResponse.Usage.PromptTokens
|
||||
response.Usage.TotalTokens = streamResponse.Usage.TotalTokens
|
||||
response.Usage.PromptTokensDetails.AudioTokens = streamResponse.Usage.PromptTokensDetails.AudioTokens
|
||||
response.Usage.PromptTokensDetails.CachedTokens = streamResponse.Usage.PromptTokensDetails.CachedTokens
|
||||
response.Usage.CompletionTokensDetails.AudioTokens = streamResponse.Usage.CompletionTokensDetails.AudioTokens
|
||||
response.Usage.CompletionTokensDetails.AcceptedPredictionTokens = streamResponse.Usage.CompletionTokensDetails.AcceptedPredictionTokens
|
||||
response.Usage.CompletionTokensDetails.RejectedPredictionTokens = streamResponse.Usage.CompletionTokensDetails.RejectedPredictionTokens
|
||||
response.Usage.CompletionTokensDetails.ReasoningTokens = streamResponse.Usage.CompletionTokensDetails.ReasoningTokens
|
||||
}
|
||||
|
||||
|
||||
@@ -187,10 +187,16 @@ func (o *LLM) GenerateContent(ctx context.Context, messages []llms.MessageConten
|
||||
ReasoningContent: c.Message.ReasoningContent,
|
||||
StopReason: fmt.Sprint(c.FinishReason),
|
||||
GenerationInfo: map[string]any{
|
||||
"CompletionTokens": result.Usage.CompletionTokens,
|
||||
"PromptTokens": result.Usage.PromptTokens,
|
||||
"TotalTokens": result.Usage.TotalTokens,
|
||||
"ReasoningTokens": result.Usage.CompletionTokensDetails.ReasoningTokens,
|
||||
"CompletionTokens": result.Usage.CompletionTokens,
|
||||
"PromptTokens": result.Usage.PromptTokens,
|
||||
"TotalTokens": result.Usage.TotalTokens,
|
||||
"ReasoningTokens": result.Usage.CompletionTokensDetails.ReasoningTokens,
|
||||
"PromptAudioTokens": result.Usage.PromptTokensDetails.AudioTokens,
|
||||
"PromptCachedTokens": result.Usage.PromptTokensDetails.CachedTokens,
|
||||
"CompletionAudioTokens": result.Usage.CompletionTokensDetails.AudioTokens,
|
||||
"CompletionReasoningTokens": result.Usage.CompletionTokensDetails.ReasoningTokens,
|
||||
"CompletionAcceptedPredictionTokens": result.Usage.CompletionTokensDetails.AcceptedPredictionTokens,
|
||||
"CompletionRejectedPredictionTokens": result.Usage.CompletionTokensDetails.RejectedPredictionTokens,
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user