Files
AI/참고/instructor-main/tests/test_dynamic_model_creation.py

55 lines
1.7 KiB
Python
Raw Normal View History

2026-05-12 19:40:31 +09:00
from pydantic import BaseModel, create_model, Field
from instructor import openai_schema
def test_dynamic_model_creation_with_field_description():
"""
Test that dynamic model creation with Field(description) works correctly.
This verifies the example in the documentation at docs/concepts/models.md.
"""
types = {
"string": str,
"integer": int,
"email": str,
}
mock_cursor = [
("name", "string", "The name of the user."),
("age", "integer", "The age of the user."),
("email", "email", "The email of the user."),
]
DynamicModel = create_model(
"User",
**{
property_name: (types[property_type], Field(description=description))
for property_name, property_type, description in mock_cursor
},
__base__=BaseModel,
)
schema = DynamicModel.model_json_schema()
assert schema["properties"]["name"]["description"] == "The name of the user."
assert schema["properties"]["age"]["description"] == "The age of the user."
assert schema["properties"]["email"]["description"] == "The email of the user."
assert "default" not in schema["properties"]["name"]
assert "default" not in schema["properties"]["age"]
assert "default" not in schema["properties"]["email"]
OpenAISchemaModel = openai_schema(DynamicModel)
openai_schema_json = OpenAISchemaModel.model_json_schema()
assert (
openai_schema_json["properties"]["name"]["description"]
== "The name of the user."
)
assert (
openai_schema_json["properties"]["age"]["description"] == "The age of the user."
)
assert (
openai_schema_json["properties"]["email"]["description"]
== "The email of the user."
)