|
@@ -807,34 +807,37 @@ class OAIAPICompatLargeLanguageModel(_CommonOaiApiCompat, LargeLanguageModel):
|
|
|
|
|
|
|
|
|
num_tokens += self._get_num_tokens_by_gpt2("name")
|
|
|
- num_tokens += self._get_num_tokens_by_gpt2(tool.name)
|
|
|
+ if hasattr(tool, "name"):
|
|
|
+ num_tokens += self._get_num_tokens_by_gpt2(tool.name)
|
|
|
num_tokens += self._get_num_tokens_by_gpt2("description")
|
|
|
- num_tokens += self._get_num_tokens_by_gpt2(tool.description)
|
|
|
- parameters = tool.parameters
|
|
|
- num_tokens += self._get_num_tokens_by_gpt2("parameters")
|
|
|
- if "title" in parameters:
|
|
|
- num_tokens += self._get_num_tokens_by_gpt2("title")
|
|
|
- num_tokens += self._get_num_tokens_by_gpt2(parameters.get("title"))
|
|
|
- num_tokens += self._get_num_tokens_by_gpt2("type")
|
|
|
- num_tokens += self._get_num_tokens_by_gpt2(parameters.get("type"))
|
|
|
- if "properties" in parameters:
|
|
|
- num_tokens += self._get_num_tokens_by_gpt2("properties")
|
|
|
- for key, value in parameters.get("properties").items():
|
|
|
- num_tokens += self._get_num_tokens_by_gpt2(key)
|
|
|
- for field_key, field_value in value.items():
|
|
|
- num_tokens += self._get_num_tokens_by_gpt2(field_key)
|
|
|
- if field_key == "enum":
|
|
|
- for enum_field in field_value:
|
|
|
- num_tokens += 3
|
|
|
- num_tokens += self._get_num_tokens_by_gpt2(enum_field)
|
|
|
- else:
|
|
|
+ if hasattr(tool, "description"):
|
|
|
+ num_tokens += self._get_num_tokens_by_gpt2(tool.description)
|
|
|
+ if hasattr(tool, "parameters"):
|
|
|
+ parameters = tool.parameters
|
|
|
+ num_tokens += self._get_num_tokens_by_gpt2("parameters")
|
|
|
+ if "title" in parameters:
|
|
|
+ num_tokens += self._get_num_tokens_by_gpt2("title")
|
|
|
+ num_tokens += self._get_num_tokens_by_gpt2(parameters.get("title"))
|
|
|
+ num_tokens += self._get_num_tokens_by_gpt2("type")
|
|
|
+ num_tokens += self._get_num_tokens_by_gpt2(parameters.get("type"))
|
|
|
+ if "properties" in parameters:
|
|
|
+ num_tokens += self._get_num_tokens_by_gpt2("properties")
|
|
|
+ for key, value in parameters.get("properties", {}).items():
|
|
|
+ num_tokens += self._get_num_tokens_by_gpt2(key)
|
|
|
+ for field_key, field_value in value.items():
|
|
|
num_tokens += self._get_num_tokens_by_gpt2(field_key)
|
|
|
- num_tokens += self._get_num_tokens_by_gpt2(str(field_value))
|
|
|
- if "required" in parameters:
|
|
|
- num_tokens += self._get_num_tokens_by_gpt2("required")
|
|
|
- for required_field in parameters["required"]:
|
|
|
- num_tokens += 3
|
|
|
- num_tokens += self._get_num_tokens_by_gpt2(required_field)
|
|
|
+ if field_key == "enum":
|
|
|
+ for enum_field in field_value:
|
|
|
+ num_tokens += 3
|
|
|
+ num_tokens += self._get_num_tokens_by_gpt2(enum_field)
|
|
|
+ else:
|
|
|
+ num_tokens += self._get_num_tokens_by_gpt2(field_key)
|
|
|
+ num_tokens += self._get_num_tokens_by_gpt2(str(field_value))
|
|
|
+ if "required" in parameters:
|
|
|
+ num_tokens += self._get_num_tokens_by_gpt2("required")
|
|
|
+ for required_field in parameters["required"]:
|
|
|
+ num_tokens += 3
|
|
|
+ num_tokens += self._get_num_tokens_by_gpt2(required_field)
|
|
|
|
|
|
return num_tokens
|
|
|
|