|
5 | 5 |
|
6 | 6 | from pydantic import BaseModel, model_validator |
7 | 7 |
|
| 8 | +from codemodder.llm import TokenUsage |
8 | 9 | from codemodder.logging import logger |
9 | 10 |
|
10 | 11 | from ..common import Change, CodeTFWriter, Finding, FixQuality |
@@ -119,6 +120,27 @@ def validate_fixMetadata(self): |
119 | 120 | raise ValueError("fixMetadata must be provided for fixed results") |
120 | 121 | return self |
121 | 122 |
|
| 123 | + def store_token_data(self, token_usage: TokenUsage): |
| 124 | + if token_usage == TokenUsage() or not self.fixMetadata: |
| 125 | + return |
| 126 | + |
| 127 | + if not self.fixMetadata.generation.ai: |
| 128 | + self.fixMetadata.generation.ai = AIMetadata( |
| 129 | + total_tokens=token_usage.total, |
| 130 | + completion_tokens=token_usage.completion_tokens, |
| 131 | + prompt_tokens=token_usage.prompt_tokens, |
| 132 | + ) |
| 133 | + else: |
| 134 | + self.fixMetadata.generation.ai.completion_tokens = ( |
| 135 | + self.fixMetadata.generation.ai.completion_tokens or 0 |
| 136 | + ) + token_usage.completion_tokens |
| 137 | + self.fixMetadata.generation.ai.prompt_tokens = ( |
| 138 | + self.fixMetadata.generation.ai.prompt_tokens or 0 |
| 139 | + ) + token_usage.prompt_tokens |
| 140 | + self.fixMetadata.generation.ai.total_tokens = ( |
| 141 | + self.fixMetadata.generation.ai.total_tokens or 0 |
| 142 | + ) + token_usage.total |
| 143 | + |
122 | 144 |
|
123 | 145 | class CodeTF(CodeTFWriter, BaseModel): |
124 | 146 | run: Run |
|
0 commit comments