@@ -674,7 +674,7 @@ def num_tokens_consumed_from_request(
674
674
num_tokens += 4 # every message follows <im_start>{role/name}\n{content}<im_end>\n
675
675
for key , value in message .items ():
676
676
try :
677
- num_tokens += len (encoding .encode (str (value )))
677
+ num_tokens += len (encoding .encode (str (value ), disallowed_special = () ))
678
678
except TypeError :
679
679
logger .warning (
680
680
f"Failed to encode value { value } with tiktoken to count tokens. Instead assuming a token for every 4 characters."
@@ -688,11 +688,13 @@ def num_tokens_consumed_from_request(
688
688
else :
689
689
prompt = api_specific_request_json ["prompt" ]
690
690
if isinstance (prompt , str ): # single prompt
691
- prompt_tokens = len (encoding .encode (prompt ))
691
+ prompt_tokens = len (encoding .encode (prompt , disallowed_special = () ))
692
692
num_tokens = prompt_tokens + completion_tokens
693
693
return num_tokens
694
694
elif isinstance (prompt , list ): # multiple prompts
695
- prompt_tokens = sum ([len (encoding .encode (p )) for p in prompt ])
695
+ prompt_tokens = sum (
696
+ [len (encoding .encode (p , disallowed_special = ())) for p in prompt ]
697
+ )
696
698
num_tokens = prompt_tokens + completion_tokens * len (prompt )
697
699
return num_tokens
698
700
else :
@@ -703,10 +705,10 @@ def num_tokens_consumed_from_request(
703
705
elif api_endpoint == "embeddings" :
704
706
input = api_specific_request_json ["input" ]
705
707
if isinstance (input , str ): # single input
706
- num_tokens = len (encoding .encode (input ))
708
+ num_tokens = len (encoding .encode (input , disallowed_special = () ))
707
709
return num_tokens
708
710
elif isinstance (input , list ): # multiple inputs
709
- num_tokens = sum ([len (encoding .encode (i )) for i in input ])
711
+ num_tokens = sum ([len (encoding .encode (i , disallowed_special = () )) for i in input ])
710
712
return num_tokens
711
713
else :
712
714
raise TypeError (
0 commit comments