instructor
59 строк · 1.1 Кб
1import instructor2
3from openai import OpenAI4from pydantic import BaseModel, Field5from typing import Optional6
7client = instructor.from_openai(OpenAI())8
9
10class UserDetail(BaseModel):11age: int12name: str13role: Optional[str] = Field(default=None)14
15
16def get_user_detail(string) -> UserDetail:17return client.chat.completions.create(18model="gpt-3.5-turbo-0613",19response_model=UserDetail,20messages=[21{22"role": "user",23"content": f"Get user details for {string}",24},25],26) # type: ignore27
28
29user = get_user_detail("Jason is 25 years old")30print(user.model_dump_json(indent=2))31"""
32{
33"age": 25,
34"name": "Jason",
35"role": null
36}
37"""
38
39user = get_user_detail("Jason is a 25 years old scientist")40print(user.model_dump_json(indent=2))41"""
42{
43"age": 25,
44"name": "Jason",
45"role": "scientist"
46}
47"""
48
49# ! notice that the string should not contain anything
50# ! but a user and age was still extracted ?!
51user = get_user_detail("User not found")52print(user.model_dump_json(indent=2))53"""
54{
55"age": 25,
56"name": "John Doe",
57"role": "null"
58}
59"""
60