INNER CODE UNIT · Python

reduce_tokens

adamyodinsky/TerminalGPT · terminalgpt/chat.py:155

    def reduce_tokens(self) -> int:
        """Reduce tokens in messages context."""
        total_reduced_amount = self.__total_usage - self.__token_limit
        reduce_amount = self.__total_usage - self.__token_limit
        tokenized_message = []

        while self.exceeding_token_limit():
            message = self.__messages.pop(1)
            tokenized_message = self.__tiktoken_encoder.encode(message["content"])
            while reduce_amount > 0 and len(tokenized_message) > 0:
                self.__total_usage -= 1
                reduce_amount -= 1
                tokenized_message.pop(0)
            if len(tokenized_message) == 0 and self.exceeding_token_limit():
                reduce_amount -= 4  # every message follows <im_start>{role/name}\n{content}<im_end>\n
                self.__total_usage -= 4
                for key, _ in message.items():
                    if key == "name":  # if there's a name, the role is omitted

View source record →

📰 Research Paper
Loading…
⏳ Fetching content…