You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Confirm this is an issue with the Python library and not an underlying OpenAI API
This is an issue with the Python library
Describe the bug
There's a bug in OpenAI's python client logic for translating pydantic models with dictionaries into structured outputs JSON schema definitions: dictionaries are always required to be empty in the resulting JSON schema, rendering the dictionary outputs significantly less useful since the LLM is never allowed to populate them
I've filed a small PR to fix this and introduce test coverage: #2003
To Reproduce
import json
from typing import Any, Dict
import pydantic
from openai.lib._pydantic import to_strict_json_schema
class GenerateToolCallArguments(pydantic.BaseModel):
arguments: Dict[str, Any] = pydantic.Field(description="The arguments to pass to the tool")
print(json.dumps(to_strict_json_schema(GenerateToolCallArguments), indent=4))
Observe that the output inserts additionalProperties: False into the resulting JSON schema definition, meaning that the dictionary must always be empty:
{
"properties": {
"arguments": {
"description": "The arguments to pass to the tool",
"title": "Arguments",
"type": "object",
# THE INSERTION OF THIS LINE IS A BUG
"additionalProperties": false
}
},
"required": [
"arguments"
],
"title": "GenerateToolCallArguments",
"type": "object",
"additionalProperties": false
}
Code snippets
No response
OS
macOS
Python version
Python v3.10.12
Library version
1.59.6
The text was updated successfully, but these errors were encountered:
I'm having the same issue, can confirm that models with dictionaries is the root problem. But i checked the documentation again, and they do talk about only allowing additionalProperties=false.
Confirm this is an issue with the Python library and not an underlying OpenAI API
Describe the bug
There's a bug in OpenAI's python client logic for translating pydantic models with dictionaries into structured outputs JSON schema definitions: dictionaries are always required to be empty in the resulting JSON schema, rendering the dictionary outputs significantly less useful since the LLM is never allowed to populate them
I've filed a small PR to fix this and introduce test coverage: #2003
To Reproduce
Observe that the output inserts
additionalProperties: False
into the resulting JSON schema definition, meaning that the dictionary must always be empty:Code snippets
No response
OS
macOS
Python version
Python v3.10.12
Library version
1.59.6
The text was updated successfully, but these errors were encountered: