DEV Community

parmarjatin4911@gmail.com
parmarjatin4911@gmail.com

Posted on

Pydantic Code Examples

**Pydantic Code Examples**
Enter fullscreen mode Exit fullscreen mode

import openai
from pydantic import BaseModel

instructor.patch()

class ProfileDetail(BaseModel):
fullname: str
years: int

profile: ProfileDetail = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
response_model=ProfileDetail,
messages=[
{"role": "user", "content": "on that stormy evening Samantha rushed to the shelter, she was 29 at the time"},
]
)

print(profile)

import openai
from pydantic import BaseModel, ValidationError, field_validator

instructor.patch()

class PersonalInfo(BaseModel):
given_name: str
years_old: int

@field_validator('given_name')
@classmethod
def check_name(cls, v):
    if v.upper() != v:
        raise ValueError("Given name must be in uppercase.")
    return v
Enter fullscreen mode Exit fullscreen mode

person_info = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
response_model=PersonalInfo,
messages=[
{"role": "user", "content": "Determine Alex is 30 years old"},
],
)

print(person_info.given_name)

from pydantic import BaseModel, ValidationError, validator
from typing_extensions import Annotated
from instructor import llm_validator

class InquiryResponse(BaseModel):
query: str
reply: Annotated[
str,
validator(llm_validator("please avoid inappropriate remarks"))
]

try:
ir = InquiryResponse(
query="What's the secret to happiness?",
answer="The secret to happiness is to live honestly and care freely",
)
except ValidationError as e:
print(e)

Generic

import openai
import instructor
from pydantic import BaseModel
from typing import Generic, TypeVar, Optional
DataT = TypeVar('DataT')

instructor.patch()

class GenericDetail(BaseModel, Generic[DataT]):
data: DataT # or Optional[DataT] = None

with open('cricket.txt', 'r', encoding='utf-8') as file:
cricket_text = file.read()

cricket: GenericDetail = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
response_model=GenericDetail,
messages=[
{"role": "system", "content": "Extract the winners:"},
{"role": "user", "content": cricket_text},
]
)

print(cricket)

Output

data={'1975': {'Winner': 'West Indies', 'Runner-up': 'Australia'}, '1979': {'Winner': 'West Indies', 'Runner-up': 'England'}, '1983': {'Winner': 'India', 'Runner-up': 'West Indies'}, '1987': {'Winner': 'Australia', 'Runner-up': 'England'}, '1992': {'Winner': 'Pakistan', 'Runner-up': 'England'}, '1996': {'Winner': 'Sri Lanka', 'Runner-up': 'Australia'}, '1999': {'Winner': 'Australia', 'Runner-up': 'Pakistan'}, '2003': {'Winner': 'Australia', 'Runner-up': 'India'}, '2007': {'Winner': 'Australia', 'Runner-up': 'Sri Lanka'}, '2011': {'Winner': 'India', 'Runner-up': 'Sri Lanka'}, '2015': {'Winner': 'Australia', 'Runner-up': 'New Zealand'}, '2019': {'Winner': 'England', 'Runner-up': 'New Zealand'}}

cricket.txt

Year Winner Winner's score Winning
margin Runner-up R/Up's score Final venue Host nation(s)[2] Crowd
1975 West Indies 291/8 (60 overs) 17 runs[11] Australia 274 all out (58.4 overs) Lord's, London England 24,000
1979 West Indies 286/9 (60 overs) 92 runs[16] England 194 all out (51 overs) Lord's, London England 32,000
1983 India 183 all out (55th over) 43 runs[20] West Indies 140 all out (52 overs) Lord's, London England 30,000
1987 Australia 253/5 (50 overs) 7 runs[21] England 246/8 (50 overs) Eden Gardens, Kolkata India, Pakistan 95,000
1992 Pakistan 249/6 (50 overs) 22 runs[23] England 227 all out (49.2 overs) MCG, Melbourne † Australia, New Zealand 87,182
1996 Sri Lanka 245/3 (46.2 overs) 7 wickets[25] Australia 241/7 (50 overs) Gaddafi Stadium, Lahore † Pakistan, India, Sri Lanka 62,645
1999 Australia 133/2 (20.1 overs) 8 wickets[28] Pakistan 132 all out (39 overs) Lord's, London England 30,000
2003 Australia 359/2 (50 overs) 125 runs[30] India 234 all out (39.2 overs) Wanderers, Johannesburg South Africa 32,827
2007 Australia 281/4 (38 overs) 53 runs ‡[32] Sri Lanka 215/8 (36 overs) Kensington Oval, Barbados West Indies 28,108
2011 India 277/4 (48.2 overs) 6 wickets[35] Sri Lanka 274/6 (50 overs) Wankhede Stadium, Mumbai † India, Sri Lanka, Bangladesh 42,000
2015 Australia 186/3 (33.1 overs) 7 wickets[36] New Zealand 183 all out (45 overs) MCG, Melbourne † Australia, New Zealand 93,013
2019 England 241 all out (50 overs) Tiebreak: 9 boundaries New Zealand 241/8 (50 overs) Lord's, London England, Wales 30,000

Categories

Top comments (0)