When working with Pydantic
models for structured output
, can I use Annotated
along with StringConstraints
to enforce restrictions on string lengths.
Example usecase:
import os
from pydantic import BaseModel
from typing import Annotated
from pydantic.types import StringConstraints
from openai import OpenAI
client = OpenAI(
api_key=os.getenv("OPENAI_API_KEY"),
api_version=os.getenv("OPENAI_API_VERSION"),
)
MaxLength50 = Annotated[str, StringConstraints(min_length=3, max_length=64)]
class User(BaseModel):
username: MaxLength50
email: MaxLength50
prompt = "Give a cool sounding username and email"
completion = client.beta.chat.completions.parse(
model=os.getenv('OPENAI_MODEL_NAME'),
messages=[
{"role": "user", "content": prompt)},
],
response_format=User,
)