Skip to content

Commit

Permalink
Fix wrong OpenAI chat tool calling parameters format.
Browse files Browse the repository at this point in the history
  • Loading branch information
notsyncing committed Sep 1, 2024
1 parent a8eaf99 commit 4dd8d40
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 11 deletions.
32 changes: 22 additions & 10 deletions src/azarrot/frontends/openai_frontend.py
Original file line number Diff line number Diff line change
Expand Up @@ -179,20 +179,32 @@ def __to_backend_generation_messages(
return result

def __to_backend_tool_parameters(
self, tool_parameters: list[dict[str, Any]] | None
self, tool_parameters: dict[str, Any] | None
) -> list[LocalizedToolParameter]:
if tool_parameters is None:
return []

return [
LocalizedToolParameter(
name=parameter["name"],
description=parameter.get("description"),
type=parameter["type"],
required=parameter.get("required", False),
)
for parameter in tool_parameters
]
param_type = tool_parameters["type"]

if param_type != "object":
raise ValueError(f"Unsupported tool parameter type {param_type}")

required_params = tool_parameters.get("required", [])

params = []

if "properties" in tool_parameters:
for k, v in tool_parameters["properties"].items():
p = LocalizedToolParameter(
name=k,
description=v.get("description"),
type=v.get("type"),
required=k in required_params
)

params.append(p)

return params

def __to_backend_tools_info(
self, tools_info: list[ToolInfo] | None, tools_choice: Literal["none", "auto", "required"] | ToolChoice | None
Expand Down
2 changes: 1 addition & 1 deletion src/azarrot/frontends/openai_support/openai_data.py
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ class ChatCompletionStreamOptions(BaseModel):
class ToolFunctionInfo(BaseModel):
description: str | None = None
name: str
parameters: list[dict[str, Any]] | None = None
parameters: dict[str, Any] | None = None


class ToolInfo(BaseModel):
Expand Down

0 comments on commit 4dd8d40

Please sign in to comment.