in aidial_adapter_bedrock/llm/model/cohere.py [0:0]
def usage_by_tokens(self) -> TokenUsage:
special_tokens = 7
total_tokens = len(self.tokens) - special_tokens
# The structure for the response:
# ["<BOS_TOKEN>", "User", ":", *<prompt>, "\n", "Chat", "bot", ":", "<EOP_TOKEN>", *<completion>]
# prompt_tokens = len(<prompt>)
# completion_tokens = len(["<EOP_TOKEN>"] + <completion>)
separator = "<EOP_TOKEN>"
if separator in self.tokens:
prompt_tokens = self.tokens.index(separator) - special_tokens
else:
log.error(f"Separator '{separator}' not found in tokens")
prompt_tokens = total_tokens // 2
return TokenUsage(
prompt_tokens=prompt_tokens,
completion_tokens=total_tokens - prompt_tokens,
)