OpenAI新特性【格式化输出】python代码实现

openai版本:1.40.0

格式化输出函数

from pydantic import BaseModel
from openai import OpenAI


def ask_gpt(prompt, response_format):
    base_url = ""
    api_key = ""
    client = OpenAI(api_key=api_key, base_url=base_url)

    messages = [{
            "role": "user",
            "content": prompt
        }]
    completion = client.beta.chat.completions.parse(
        model="gpt-4o-2024-08-06",
        messages=messages,
        response_format=response_format
    )
    msg = None
    message = completion.choices[0].message
    if message.parsed:
        msg = message.content
    else:
        msg = message.refusal
    return msg

定义输出格式

这里定义的最终类是Books,其中属性publisher的值是字符串,属性address的值是对应Address类中的格式,属性books的值是Book类的列表

class Book(BaseModel):
    name: str
    author: str
    date: str
class Address(BaseModel):
    state: str
    city: str
    street: str
class Books(BaseModel):
    publisher: str
    address: Address
    books: list[Book]

调用:

msg = ask_gpt("随机生成3个书籍信息", Books)

这里传入的参数 Books 就是前面定义的最终的类
上述代码只能实现格式化输出,如果同时需要正常问答的话需要加一个判断,在completion那里用的是不同的函数:

completion = client.chat.completions.create(
	model="gpt-4o-2024-08-06",
	messages=messages,
    stream=streaming_flg,

输出效果

{
    "publisher": "Mystery Horizons",
    "address": {
        "state": "New York",
        "city": "Brooklyn",
        "street": "Maple Street"
    },
    "books": [
        {
            "name": "Whispers of the Forgotten Woods",
            "author": "Eleanor Bryce",
            "date": "2021-06-15"
        },
        {
            "name": "Echoes of the Silver Moon",
            "author": "Gordon Knight",
            "date": "2019-11-23"
        },
        {
            "name": "Shadows of the Vanishing Isle",
            "author": "Lila Thompson",
            "date": "2020-05-07"
        }
    ]
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值