预测性输出
2024年12月15日大约 3 分钟
预测性输出
在调用 API 的时候,附上一个“预测输出”, AI 就会基于这个进行修改,而不是从头生成
原文:预测性输出
使用 Predicted Outputs 的时候,也不会特别复杂,参数的最后 prediction 字段就行了,比如下面这个
from openai import OpenAI
original_code = """
# ... (你的电商项目其他代码) ...
class 订单:
def __init__(self, 订单编号, 用户名, 商品列表, 总价, 下单时间):
self.订单编号 = 订单编号
self.用户名 = 用户名
self.商品列表 = 商品列表
self.总价 = 总价
self.下单时间 = 下单时间
def 打印订单详情(self):
print(f"订单编号:{self.订单编号}")
print(f"用户名:{self.用户名}")
print("商品列表:")
for 商品 in self.商品列表:
print(f" - {商品.名称} x {商品.数量},单价:{商品.价格}")
print(f"总价:{self.总价}")
print(f"下单时间:{self.下单时间}")
# ... (你的电商项目其他代码, 上百处用到了'用户名') ...
def 生成订单报表(订单列表):
for 订单 in 订单列表:
print(f"{订单.订单编号}, {订单.用户名}, {订单.总价}")
# ... (你的电商项目其他代码) ...
"""
refactor_prompt = "将代码中所有用到 '用户名' 的地方,都改成 '用户ID',并添加一个'优惠信息'字段。"
client = OpenAI()
completion = client.chat.completions.create(
model="gpt-4o",
messages=[
{"role": "user", "content": refactor_prompt},
{"role": "user", "content": original_code},
],
**prediction={"type": "content", "content": original_code},# 使用原始代码作为预测**
)
print(completion.choices[0].message.content)
print(completion.usage)
然后就会获得这个,返回速度相当快:
为了将代码中所有用到的“用户名”改为“用户ID”并添加一个“优惠信息”字段,你需要修改类定义和相关的方法。下面是相应的修改:
```python
# ... (你的电商项目其他代码) ...
class 订单:
def __init__(self, 订单编号, 用户ID, 商品列表, 总价, 下单时间, 优惠信息=None):
self.订单编号 = 订单编号
self.用户ID = 用户ID
self.商品列表 = 商品列表
self.总价 = 总价
self.下单时间 = 下单时间
self.优惠信息 = 优惠信息
def 打印订单详情(self):
print(f"订单编号:{self.订单编号}")
print(f"用户ID:{self.用户ID}")
print("商品列表:")
for 商品 in self.商品列表:
print(f" - {商品.名称} x {商品.数量},单价:{商品.价格}")
print(f"总价:{self.总价}")
if self.优惠信息:
print(f"优惠信息:{self.优惠信息}")
print(f"下单时间:{self.下单时间}")
# ... (你的电商项目其他代码, 上百处用到了'用户ID') ...
def 生成订单报表(订单列表):
for 订单 in 订单列表:
print(f"{订单.订单编号}, {订单.用户ID}, {订单.总价}, {订单.优惠信息}")
# ... (你的电商项目其他代码) ...
在这个修改版本中:
- 将所有用到“用户名”的地方替换为“用户ID”。
- 在
订单
类的初始化方法中添加了一个可选的参数“优惠信息”。 - 更新了
打印订单详情
方法,以显示“优惠信息”。 - 更新了
生成订单报表
函数以包含“优惠信息”字段。
请确保在整个代码中不同部分与“用户名”相关的逻辑都做了对应的更改。由于无法完全查看你的完整代码库,所以需要你根据此模板做同样的修改。
查看返回参数,显示如下:
CompletionUsage(
completion_tokens=671,
prompt_tokens=313,
total_tokens=984,
completion_tokens_details=CompletionTokensDetails(accepted_prediction_tokens=26,
audio_tokens=0,
reasoning_tokens=0,
rejected_prediction_tokens=198),
prompt_tokens_details=PromptTokensDetails(audio_tokens=0, cached_tokens=0)
)