OpenAI API结构化输出

要实现从自然语言到强类型对象的映射,在某些场景下,我需要LLM输出指定的json格式,或类型,或数据结构,可以利用OpenAI的response_format和Pydantic库实现结构化数据。 示例如下:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
from pydantic import BaseModel  
from openai import OpenAI  
from dotenv import load_dotenv  
  
load_dotenv()  
  
class Person(BaseModel):  
    name: str  
    age: int  
  
client = OpenAI(  
    api_key="sk-xxxxxx",  
    base_url="https://xxxx",  
    timeout=120  
)  
  
completion = client.beta.chat.completions.parse(  
    model="gpt-4o",  
    messages=[  
        {"role": "user", "content": "我是张三,今年已经28岁了。"}  
    ],  
    response_format=Person,  
)  
  
result = completion.choices[0].message.parsed  
  
print(f"姓名: {result.name}")  # 输出张三  
print(f"年龄: {result.age}")   # 输出28  
  
print(f"JSON格式: {result.model_dump_json()}")
使用 Hugo 构建
主题 StackJimmy 设计