fix: context window overflow patch (#2053)

This commit is contained in:
Charles Packer
2024-11-18 15:21:11 -08:00
committed by GitHub
parent f57dc28552
commit a75dfd7907
6 changed files with 85 additions and 4 deletions

View File

@@ -94,7 +94,10 @@ def num_tokens_from_functions(functions: List[dict], model: str = "gpt-4"):
num_tokens = 0
for function in functions:
function_tokens = len(encoding.encode(function["name"]))
function_tokens += len(encoding.encode(function["description"]))
if function["description"]:
function_tokens += len(encoding.encode(function["description"]))
else:
raise ValueError(f"Function {function['name']} has no description, function: {function}")
if "parameters" in function:
parameters = function["parameters"]
@@ -229,7 +232,13 @@ def num_tokens_from_messages(messages: List[dict], model: str = "gpt-4") -> int:
# num_tokens += len(encoding.encode(value["arguments"]))
else:
num_tokens += len(encoding.encode(value))
if value is None:
# raise ValueError(f"Message has null value: {key} with value: {value} - message={message}")
warnings.warn(f"Message has null value: {key} with value: {value} - message={message}")
else:
if not isinstance(value, str):
raise ValueError(f"Message has non-string value: {key} with value: {value} - message={message}")
num_tokens += len(encoding.encode(value))
if key == "name":
num_tokens += tokens_per_name