赛博禅心 2024年12月08日
“鸽”声中,OpenAI 偷偷上线:预测性输出
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

OpenAI 最近更新了“Predicted Outputs”功能,专注于内容修改而非生成,提高大型文件修改效率。该功能在代码生成中尤为实用,通过在API调用中附加“预测输出”,AI能基于此进行修改,而非从头生成。文章以电商系统中将“用户名”改为“用户ID”为例,展示了其应用。此外,该功能还可用于文本校正,如将“变压器”改为“Transformer”,“法学硕士”改为“LLM”。

🎯OpenAI 的“Predicted Outputs”功能聚焦于内容的修改而非内容的生成。当需要修改的文件很大但修改内容很少时,模型会专注于修改,从而快速给出结果,这在代码生成中非常实用。

💻在调用 API 时,通过附加一个“预测输出”,AI 会基于这个预测进行修改,而不是从头生成。例如,在电商系统中需要将“用户名”改为“用户ID”,并添加“优惠信息”字段,通过使用原始代码作为预测,可以快速获得修改后的代码。

📝该功能不仅适用于代码修改,也适用于文本校正。例如,可以将文本中的“变压器”改为“Transformer”,“法学硕士”改为“LLM”,并在所有中英文之间添加空格,通过使用原始文本作为预测,可以快速获得校正后的文本。

⚡️在实际应用中,该功能可以显著提高开发效率和代码维护性。例如,当运营提出需求需要修改订单详情中的“用户名”为“用户ID”时,传统方法需要手动查找和修改多处代码,容易出错且难以维护,而使用“Predicted Outputs”可以快速准确地完成修改。

⏱️该功能可以显著提高API的返回速度.根据文章的演示,使用了预测性输出后,模型的返回速度相当快,并且展示了具体的token消耗情况,表明该功能在处理效率上具有优势.

原创 金色传说大聪明 2024-12-08 19:31 广东

看我手势

3,2,1 - 上链接!

先吐槽下:

OpenAI 鸽了周末的发布

AGI 被推迟了 4 天(毕竟俩周末)


 

但同时,OpenAI 最近偷偷做了个更新,还挺实用: 

Predicted Outputs 预测性输出,聚焦于内容修改,而不是内容生成 

 

简单来说:

如果要修改的文件很大(比如50页的合同),

但修改的内容很少的时候(你的银行帐号),

模型就会聚焦于修改,而不是生成,很快的出结果。 


这个功能,在代码生成中,更是非常实用。 



 

这东西有用

来,先品一品这段代码,会出现在电商系统里: 

# ... (你的电商项目其他代码) ...
class 订单:
def __init__(self, 订单编号, 用户名, 商品列表, 总价, 下单时间, 优惠信息):
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.下单时间}")
if self.优惠信息:
print(f"优惠信息: {self.优惠信息}")
# ... (你的电商项目其他代码) ...

 

现在,运营小姐姐提了个需求:为了财务对账方便,需要在打印订单详情 的时候,把“用户名”改成“用户ID”。 

 

可达鸭眉头一皱,事情并不简单。

整个项目里,可能有几百处,都直接或间接地用到了 用户名!思考再三,回复了句:“寄” 

但无奈是小姐姐的需求,横竖都得给搞定。 

 

比如用大家熟悉的方法:筛一下,然后把必要的内容丢给 GPT。但这有些显著问题: 

 

而这时候,可以试试 Predicted Outputs。 

在调用 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)
)




文本也能用

我每天会看大量的文档,然后发现...  

很多的历史文档,是被“乱翻译”了,比如下面这个: 

近年来,变压器模型在深度学习领域取得了重大突破。 

变压器最初是为自然语言处理任务而设计的,但现在它已被广泛应用于计算机视觉和其他领域。 

大语言模型,也称为法学硕士,是基于变压器架构的。 

法学硕士可以生成高质量的文本,并用于各种应用,如机器翻译和文本摘要。我们的产品使用了最新的法学硕士技术。 

 

如果我想把它回归成正常的文本,就可以 

from openai import OpenAI
original_text = """
近年来,变压器模型在深度学习领域取得了重大突破。
变压器最初是为自然语言处理任务而设计的,但现在它已被广泛应用于计算机视觉和其他领域。
大语言模型,也称为法学硕士,是基于变压器架构的。
法学硕士可以生成高质量的文本,并用于各种应用,如机器翻译和文本摘要。我们的产品使用了最新的法学硕士技术。
"""

rewrite_prompt = "请将这段文本中的“变压器”改为“Transformer”,“法学硕士”改为“LLM”,并在所有中英文之间添加空格。"
client = OpenAI()
completion = client.chat.completions.create(
model="gpt-4o",
messages=[
{"role": "user", "content": rewrite_prompt},
{"role": "user", "content": original_text},
],
prediction={"type": "content", "content": original_text}, # 使用原始文本作为预测
)
print(completion.choices[0].message.content)
print(completion.usage)

 

然后,我得到了: 

近年来, Transformer 模型在深度学习领域取得了重大突破。  

Transformer 最初是为自然语言处理任务而设计的, 但现在它已被广泛应用于计算机视觉和其他领域。 

大语言模型, 也称为 LLM, 是基于 Transformer 架构的。  

LLM 可以生成高质量的文本, 并用于各种应用, 如机器翻译和文本摘要。我们的产品使用了最新的 LLM 技术。 

 

非常棒! 




话说回来

好的 12 days 呢?

变成 12 working days了?

 

说好的 AGI 呢?

说好的 Sora 呢?

说好的发布会呢?

鸽子厂实锤了!


跳转微信打开

Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

OpenAI 预测性输出 代码生成 文本校正 API
相关文章