Type something to search...
利用预测输出加速 OpenAI API 响应

利用预测输出加速 OpenAI API 响应

在本文中,我讨论了如何利用OpenAI的预测输出以获得更快的API响应。

介绍

预测输出 允许您在 API 响应中显著减少延迟,当大部分输出已经知道时尤为有效。

使用 OpenAI 预测输出 确实会引入对两个模型的依赖,并且与 OpenAI 作为模型提供者的耦合更紧密,自由度较低。

此功能在您需要对文本或代码文件进行小幅修改时特别有用,通过利用已知的标记使响应更快。

使用 OpenAI 预测输出 时,预测文本还为模型提供了 上下文

它帮助模型理解语气、风格和内容,从而指导其生成更连贯的延续。这种双重作用提高了最终输出的相关性和准确性。

预测不会节省成本,请注意,任何被拒绝的标记仍然像 API 生成的其他完成标记一样计费,因此预测输出可能会为您的请求引入更高的成本。

一些背景

通过使用预测,您可以提前提供这些已知的令牌。模型随后专注于仅生成新的或修改的部分,从而简化响应时间。

目前,最新的 gpt-4ogpt-4o-mini 模型支持预测输出。

延迟节省:预测输出减少了模型生成响应所需的时间,当输出的大部分内容提前已知时尤为明显。

通过预定义响应的部分内容,模型可以快速专注于生成仅未知或修改的部分,从而实现更快的响应时间。

成本影响:尽管延迟减少,但成本保持不变或甚至可能增加。

这是因为 API 对所有处理的令牌收费,包括 被拒绝的预测令牌——那些生成但未包含在最终输出中的令牌。

因此,即使预测减少了生成的新令牌数量,您仍然会为会话中处理的所有令牌付费,无论它们是否在最终响应中使用。

虽然预测输出可以提高响应速度,但它们并不会固有地降低 API 使用的成本。

上下文参考

OpenAI 预测输出,预测文本还可以为模型提供进一步的上下文。

通过包含预测,您不仅在指导模型了解已知内容,还提供了模型可以用来更好地理解和完成任务的额外上下文。

例如,如果您提供一封部分信件作为预测,模型会利用该部分文本来理解风格、语气和内容,这有助于生成更连贯和上下文相关的续写。

预测的这种双重角色——既是输出应有的提示,又是上下文——增强了模型生成准确和适当的补充内容的能力。

限制

使用预测输出时,请注意以下因素和限制:

模型兼容性: 预测输出仅支持 GPT-4o 和 GPT-4o-mini 系列模型。

令牌费用: 生成的令牌但未包含在最终输出中,仍按完成令牌费率计费。有关更多信息,请查看下面标题为 cost 的部分。

不支持的 API 参数:

  • n 值大于 1 不受支持
  • logprobs 不受支持
  • presence_penalty 值大于 0 不受支持
  • frequency_penalty 值大于 0 不受支持
  • audio 预测输出与 音频输入和输出 不兼容
  • modalities 仅支持 text 模态
  • max_completion_tokens 不受支持
  • tools 当前不支持使用预测输出进行函数调用

这个简化版本使限制更加清晰易懂。

成本

在 OpenAI 的 API 中,当模型生成预测输出时,它可能会产生比最终完成的内容更多的 tokens。

这些额外的 tokens 被称为 拒绝的预测 tokens,是模型生成但未被选为返回给用户的最终响应的一部分的 tokens。

尽管这些 tokens 不在可见输出中,但仍会被计算并按 完成 token 费率 收费。

这意味着使用 API 的成本包括最终输出中的 tokens 以及模型考虑但未使用的任何额外 tokens。

usage 对象中的 rejected_prediction_tokens 属性提供了这些未使用 tokens 的计数。此信息帮助用户了解总的 token 使用情况和成本,包括那些生成但未包含在最终完成中的 tokens。

简而言之,虽然您只看到并使用最终选定的 tokens,但您会为模型处理的所有 tokens 付费,包括那些它生成但被丢弃的 tokens。

示例代码

下面是您可以在笔记本中运行的最简单的 Python 示例,代码将提示您输入您的 OpenAI API 密钥。

pip install openai==0.28

import openai

## 提示用户输入他们的 OpenAI API 密钥
api_key = input("请输入您的 OpenAI API 密钥: ")
openai.api_key = api_key

## 定义一个简单的函数来使用预测输出
def use_predicted_outputs():
    # 示例提示,其中预测是提前已知的
    prediction = "The quick brown fox jumps over the lazy dog"
    
    # 使用预测调用聊天完成 API
    # 由于当前文档不清楚其实现,暂时移除 'prediction' 参数
    response = openai.ChatCompletion.create(
        model="gpt-4o-mini",  # 使用支持的模型进行预测输出
        messages=[
            {"role": "system", "content": "您是一个完成句子的助手。"},
            {"role": "user", "content": "完成以下句子: 'The quick brown fox'."}
        ],
    )
    
    # 打印输出,包括预测和最终完成
    print("预测输出:", prediction) # 这是您预先确定的预测
    print("最终响应:", response['choices'][0]['message']['content'])

## 运行该函数
use_predicted_outputs()

以下是运行笔记本后的输出:

预测输出: The quick brown fox jumps over the lazy dog
最终响应: 'The quick brown fox jumps over the lazy dog.'

下面的示例展示了如何连接一封信件……

## 定义一个使用预测输出的信件写作示例的函数
def use_predicted_outputs():
    # 信件的预定义部分(预测)
    prediction = "Dear John,\n\nRegarding our conversation about the budget..." # 更改为字符串

    # 使用预测调用聊天完成 API
    response = openai.ChatCompletion.create(
        model="gpt-4o-mini",  # 使用支持的模型进行预测输出
        messages=[
            {"role": "system", "content": "您是一个帮助完成信件的助手。"},
            {"role": "user", "content": "从以下信件开始完成: '" + prediction + "'"} # 在提示中包含预测
        ],
        # prediction=prediction # 移除预测参数,因为它不以这种方式使用
    )

    # 打印预测和最终完成的信件部分
    print("信件的预测部分:\n", prediction) 
    print("\n完成的信件:\n", response['choices'][0]['message']['content'])

## 运行该函数
use_predicted_outputs()

笔记本的输出……

用例

OpenAI API中的预测功能在输出大部分已知或可以预见的场景中非常有用,这使得模型能够专注于生成仅有的新内容或修改内容。

预测功能在许多场景中特别有用。

一个常见的用例是再生成或完善文档,在这种情况下需要进行小的编辑或更新,例如纠正语法、添加段落或调整格式。例如,更新法律合同或技术文档,其中大部分文本保持不变,这种情况下受益于该功能。

另一个用例是IDE中的自动完成。在编写代码时,某些部分通常可以根据当前上下文进行预测,从而实现对样板代码结构或重复编码模式的自动完成。

或者在模板需要完成时,其中大部分内容是静态的,仅需要动态生成特定字段,预测功能表现出色。例如,生成个性化的电子邮件或报告,具有固定结构但细节各异的内容变得更加高效。

对话中的对话轮次也从预测中受益,特别是在聊天机器人应用中。下一部分对话通常可以根据先前的互动进行预测,例如在客户服务聊天机器人中预先生成响应。

生产场景

生产实施中,使用 OpenAI 预测输出管理预测文本将涉及几个战略步骤,以确保高效使用、一致性和成本效益。以下是管理的方式:

1. 生成预测

预处理:在发送请求之前,系统会根据已知模式、模板或历史数据生成或检索预测文本。

动态预测:对于频繁更新的内容,系统可以根据最新的用户输入或系统状态动态生成预测。

2. 在 API 请求中融入预测

API 集成:预测文本在调用 OpenAI API 时包含在 prediction 参数中。这有助于预先填充预期输出的部分,从而减少延迟。

上下文相关性:系统确保预测与当前提示高度相关,以最大限度地提高生成输出的连贯性和实用性。

3. 评估模型响应

后处理:在接收到 API 响应后,系统评估预测的使用程度。这涉及检查 rejected_prediction_tokens 属性,以了解模型对预测的接受或拒绝情况。

调整逻辑:如果预测经常被拒绝或与最终输出不一致,系统可以调整未来的预测,以更好地符合模型的期望。

4. 性能监控

延迟跟踪: 系统监控响应时间,以确保使用预测输出确实减少了延迟。

成本分析: 定期分析令牌使用情况有助于管理成本,特别是考虑到被拒绝的令牌仍然会被计费。

5. 回退机制

错误处理:如果预测失败或导致不连贯的输出,系统可以回退到标准的完成内容而不进行预测,以确保可靠性。

迭代优化:预测逻辑可以根据用户反馈和模型性能随时间进行优化,以提高准确性和相关性。

首席传播官 @ Kore.ai | 我热衷于探索人工智能与语言的交集。从语言模型、人工智能代理到代理应用、开发框架与数据驱动的生产力工具,我分享这些技术如何塑造未来的见解和想法。

https://platform.openai.com/docs/guides/predicted-outputs?lang=python

Related Posts

结合chatgpt-o3-mini与perplexity Deep Research的3步提示:提升论文写作质量的终极指南

结合chatgpt-o3-mini与perplexity Deep Research的3步提示:提升论文写作质量的终极指南

AI 研究报告和论文写作 合并两个系统指令以获得两个模型的最佳效果 Perplexity AI 的 Deep Research 工具提供专家级的研究报告,而 OpenAI 的 ChatGPT-o3-mini-high 擅长推理。我发现你可以将它们结合起来生成令人难以置信的论文,这些论文比任何一个模型单独撰写的都要好。你只需要将这个一次性提示复制到 **

阅读更多
让 Excel 过时的 10 种 Ai 工具:实现数据分析自动化,节省手工作业时间

让 Excel 过时的 10 种 Ai 工具:实现数据分析自动化,节省手工作业时间

Non members click here作为一名软件开发人员,多年来的一个发现总是让我感到惊讶,那就是人们还在 Excel

阅读更多
使用 ChatGPT 搜索网络功能的 10 种创意方法

使用 ChatGPT 搜索网络功能的 10 种创意方法

例如,提示和输出 你知道可以使用 ChatGPT 的“搜索网络”功能来完成许多任务,而不仅仅是基本的网络搜索吗? 对于那些不知道的人,ChatGPT 新的“搜索网络”功能提供实时信息。 截至撰写此帖时,该功能仅对使用 ChatGPT 4o 和 4o-mini 的付费会员开放。 ![](https://images.weserv.nl/?url=https://cdn-im

阅读更多
掌握Ai代理:解密Google革命性白皮书的10个关键问题解答

掌握Ai代理:解密Google革命性白皮书的10个关键问题解答

10 个常见问题解答 本文是我推出的一个名为“10 个常见问题解答”的新系列的一部分。在本系列中,我旨在通过回答关于该主题的十个最常见问题来分解复杂的概念。我的目标是使用简单的语言和相关的类比,使这些想法易于理解。 图片来自 [Solen Feyissa](https://unsplash.com/@solenfeyissa?utm_source=medium&utm_medi

阅读更多
在人工智能和技术领域保持领先地位的 10 项必学技能 📚

在人工智能和技术领域保持领先地位的 10 项必学技能 📚

在人工智能和科技这样一个动态的行业中,保持领先意味着不断提升你的技能。无论你是希望深入了解人工智能模型性能、掌握数据分析,还是希望通过人工智能转变传统领域如法律,这些课程都是你成功的捷径。以下是一个精心策划的高价值课程列表,可以助力你的职业发展,并让你始终处于创新的前沿。 1. 生成性人工智能简介课程: [生成性人工智能简介](https://genai.works

阅读更多
揭开真相!深度探悉DeepSeek AI的十大误区,您被误导了吗?

揭开真相!深度探悉DeepSeek AI的十大误区,您被误导了吗?

在AI军备竞赛中分辨事实与虚构 DeepSeek AI真的是它所宣传的游戏规则改变者,还是仅仅聪明的营销和战略炒作?👀 虽然一些人将其视为AI效率的革命性飞跃,但另一些人则认为它的成功建立在借用(甚至窃取的)创新和可疑的做法之上。传言称,DeepSeek的首席执行官在疫情期间像囤积卫生纸一样囤积Nvidia芯片——这只是冰山一角。 从其声称的550万美元培训预算到使用Open

阅读更多
Type something to search...