compute cost

This commit is contained in:
Paul Gauthier 2023-06-23 13:40:32 -07:00
parent d2b9cb9e98
commit 5c432592cd
2 changed files with 34 additions and 4 deletions

View file

@ -38,6 +38,7 @@ class Coder:
last_asked_for_commit_time = 0
repo_map = None
functions = None
total_cost = 0.0
@classmethod
def create(
@ -526,12 +527,22 @@ class Coder:
except AttributeError:
pass
prompt_tokens = completion.usage.prompt_tokens
completion_tokens = completion.usage.completion_tokens
tokens = f"{prompt_tokens} prompt tokens, {completion_tokens} completion tokens"
if self.main_model.prompt_price:
cost = prompt_tokens * self.main_model.prompt_price / 1000
cost += completion_tokens * self.main_model.completion_price / 1000
tokens += f", ${cost:.6f} cost"
self.total_cost += cost
show_resp = self.render_incremental_response(True)
if self.pretty:
md = Markdown(show_resp, style=self.assistant_output_color, code_theme="default")
self.io.console.print(md)
else:
print(show_resp)
show_resp = Markdown(show_resp, style=self.assistant_output_color, code_theme="default")
self.io.console.print(show_resp)
self.io.console.print(tokens)
def show_send_output_stream(self, completion, silent):
live = None

View file

@ -11,6 +11,9 @@ class Model:
use_repo_map = False
send_undo_reply = False
prompt_price = None
completion_price = None
def __init__(self, name):
self.name = name
@ -33,11 +36,27 @@ class Model:
self.edit_format = "diff"
self.use_repo_map = True
self.send_undo_reply = True
if tokens == 8:
self.prompt_price = 0.03
self.completion_price = 0.06
elif tokens == 32:
self.prompt_price = 0.06
self.completion_price = 0.12
return
if self.is_gpt35():
self.edit_format = "whole-func"
self.always_available = True
if tokens == 4:
self.prompt_price = 0.0015
self.completion_price = 0.002
elif tokens == 16:
self.prompt_price = 0.003
self.completion_price = 0.004
return
raise ValueError(f"Unsupported model: {name}")