Add pricing structure for token usage in CLI and enhance token handling in ModelDialog. Implement cost breakdown per model based on input, cached, and output tokens, and ensure proper initialization of token counts in usage handling.
This commit is contained in:
@@ -56,9 +56,12 @@ class ModelDialog {
|
||||
};
|
||||
|
||||
handleUsage = (usage, model) => {
|
||||
this.inputTokens[model] = usage.input_tokens-usage.input_tokens_details.cached_tokens;
|
||||
this.outputTokens[model] = usage.output_tokens;
|
||||
this.cachedTokens[model] = usage.input_tokens_details.cached_tokens;
|
||||
if (typeof this.inputTokens[model] !== 'number') this.inputTokens[model] = 0;
|
||||
if (typeof this.outputTokens[model] !== 'number') this.outputTokens[model] = 0;
|
||||
if (typeof this.cachedTokens[model] !== 'number') this.cachedTokens[model] = 0;
|
||||
this.inputTokens[model] += usage.input_tokens - usage.input_tokens_details.cached_tokens;
|
||||
this.outputTokens[model] += usage.output_tokens;
|
||||
this.cachedTokens[model] += usage.input_tokens_details.cached_tokens;
|
||||
}
|
||||
|
||||
on = (event, callback) => {
|
||||
@@ -89,16 +92,22 @@ class ModelDialog {
|
||||
//console.log(chalk.blue('messages:'),JSON.stringify(messagesToSend,null,2));
|
||||
this.messagesSent.push(...messagesToSend);
|
||||
|
||||
const model = 'gpt-5-mini';
|
||||
|
||||
const call = {
|
||||
model: 'gpt-5',
|
||||
model: model,
|
||||
input: messagesToSend,
|
||||
text: { format: { type: 'text' }, verbosity: 'low' },
|
||||
reasoning: { effort: 'low', summary: 'detailed' },
|
||||
text: { format: { type: 'text' } },
|
||||
tools: Object.values(toolsByFile).map(t => t.def),
|
||||
store: true,
|
||||
previous_response_id: this.previousResponseId,
|
||||
parallel_tool_calls: true
|
||||
}
|
||||
if(model.startsWith('gpt-5')){
|
||||
call.reasoning = { effort: 'low', summary: 'detailed' };
|
||||
//call.text.format.verbosity = 'low';
|
||||
}
|
||||
|
||||
|
||||
this.currentStream = openai.responses.stream(call);
|
||||
this.currentStream.on('response.created', (event) => {
|
||||
@@ -130,6 +139,7 @@ class ModelDialog {
|
||||
|
||||
|
||||
this.currentStream.on('response.completed', async (event) => {
|
||||
//console.log(chalk.blue('response completed:'),event.response.usage);
|
||||
this.handleUsage(event.response.usage, event.response.model);
|
||||
outputs.push(...event.response.output);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user