| 87 | } |
| 88 | |
| 89 | function extractUsage(payload: OpenAIChatCompletionResponse): TokenUsageStats { |
| 90 | const promptTokens = payload.usage?.prompt_tokens ?? 0; |
| 91 | const completionTokens = payload.usage?.completion_tokens ?? 0; |
| 92 | const reasoningTokens = payload.usage?.completion_tokens_details?.reasoning_tokens ?? 0; |
| 93 | const cacheReadTokens = payload.usage?.prompt_tokens_details?.cached_tokens ?? 0; |
| 94 | const totalTokens = payload.usage?.total_tokens ?? promptTokens + completionTokens; |
| 95 | |
| 96 | return { |
| 97 | inputTokens: promptTokens, |
| 98 | outputTokens: completionTokens, |
| 99 | reasoningTokens, |
| 100 | totalTokens, |
| 101 | cacheReadTokens, |
| 102 | cacheWriteTokens: 0, |
| 103 | }; |
| 104 | } |
| 105 | |
| 106 | export async function judgeAnswer(args: { |
| 107 | config: JudgeConfig; |