From 95474155de1e676eb04b24bd2c609539a59bb6ff Mon Sep 17 00:00:00 2001 From: Migatu Date: Fri, 20 Oct 2023 19:17:53 +0200 Subject: [PATCH] Fix --- bot.py | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/bot.py b/bot.py index b0d208c..c2e9ccf 100644 --- a/bot.py +++ b/bot.py @@ -343,8 +343,18 @@ def num_tokens_from_string(string, model): tokens for :return: the number of tokens in the given string. """ + tokens_per_message = 3 + tokens_per_name = 1 chat_gpt_encoding = tiktoken.encoding_for_model(model) + num_tokens = len(chat_gpt_encoding.encode(string)) + num_tokens = 0 + num_tokens += tokens_per_message + for keys, values in string.items(): + num_tokens += len(chat_gpt_encoding.encode(values)) + if keys == "role": + num_tokens += tokens_per_name + num_tokens += 3 # every reply is primed with <|start|>assistant<|message|> return num_tokens @@ -593,12 +603,13 @@ async def handle_response(prompt, vykidailo, bartender, history, username, music json.dump(file_data, file_memory, indent=4) history = [] history.append(GPT_SETTINGS[0]) - tokens = num_tokens_from_string(GPT_SETTINGS[0]["content"], "gpt-4") + tokens = num_tokens_from_string(GPT_SETTINGS[0]["content"], "gpt-4") + num_tokens_from_string(GPT_SETTINGS[0]["role"], "gpt-4") + for (slowo, reakcja) in word_reactions.items(): if not reakcja[3]: content = "Kiedy słyszysz " + slowo + " to reagujesz lub dzieje się to " + reakcja[0] temp = {"role": "system", "content": content} - tokens += num_tokens_from_string(content, "gpt-4") + tokens += num_tokens_from_string(temp, "gpt-4") history.append(temp) final_prompt = username + ":" + prompt @@ -612,12 +623,12 @@ async def handle_response(prompt, vykidailo, bartender, history, username, music algorithm = "gpt-4" token_amount = 8192 - prompt_tokens = num_tokens_from_string(final_prompt, "gpt-4") + prompt_tokens = num_tokens_from_string({"role": "user", "content": final_prompt}, "gpt-4") for i in reversed(table): - temp_token = num_tokens_from_string(i["content"], "gpt-4") + temp_token = num_tokens_from_string(i, "gpt-4") logger.error("Liczba tokenow %s prompt token %s temp token %s", tokens, prompt_tokens, temp_token) if tokens < token_amount + prompt_tokens + temp_token: - #history.append(i) + history.append(i) tokens += temp_token temp = {"role": "user", "content": final_prompt}