Advise the user when chat history is being summarized

This commit is contained in:
Paul Gauthier 2023-07-24 19:05:57 -03:00
parent 844194c268
commit 0db9d210d7
2 changed files with 18 additions and 9 deletions

View file

@ -360,6 +360,8 @@ class Coder:
def move_back_cur_messages(self, message):
self.done_messages += self.cur_messages
if self.summarizer.too_big(self.done_messages):
self.io.tool_output("Summarizing chat history...")
self.done_messages = self.summarizer.summarize(self.done_messages)
if message:

View file

@ -13,20 +13,27 @@ class ChatSummary:
self.tokenizer = tiktoken.encoding_for_model(model)
self.max_tokens = max_tokens
def too_big(self, messages):
sized = self.tokenize(messages)
total = sum(tokens for tokens, _msg in sized)
dump(total, self.max_tokens)
return total > self.max_tokens
def tokenize(self, messages):
sized = []
for msg in messages:
tokens = len(self.tokenizer.encode(json.dumps(msg)))
sized.append((tokens, msg))
return sized
def summarize(self, messages):
num = len(messages)
dump(num)
if num < 2:
return messages
total = 0
sized = []
for msg in messages:
tokens = len(self.tokenizer.encode(json.dumps(msg)))
sized.append((tokens, msg))
total += tokens
dump(total, self.max_tokens)
sized = self.tokenize(messages)
total = sum(tokens for tokens, _msg in sized)
if total <= self.max_tokens:
return messages