单行测试时,OpenAI prompt 的成本看起来微不足道。但当同一个 prompt 要处理 10,000 甚至 100,000 行表格数据时,token 账单就很难忽略了。对于支持的模型,如果任务可以接受速度更慢、响应时间更难预测,OpenAI Flex Mode 能显著降低处理成本。

Datablist 让这种取舍变得简单实用。你可以导入 CSV 或 Excel 文件,通过 Ask ChatGPT/OpenAI enrichment 为每一行运行 prompt,预览输出、启用 Flex,并检查失败记录,全程无需自行搭建 API pipeline。如果你想先了解完整设置流程,请参阅在 CSV 或 Excel 每一行运行 ChatGPT prompt。

本指南将以客服工单分类为例,说明如何判断 Flex 是否适合你的任务、估算 Standard 与 Flex 的成本、配置运行参数,以及处理延迟或失败的行。重点不是获得更快的模型或更好的答案,而是在时间没有成本重要时,以更低的 token 单价完成相同的逐行任务。

OpenAI Flex Mode 改变了什么

Flex 是 OpenAI API 部分模型支持的一种 service tier。请求仍通过 Responses API 或 Chat Completions API 发送,但会使用 service_tier: "flex"。作为接受处理速度较慢、偶尔出现容量不足的交换,你可以按更低的 Flex token 费率付费。

OpenAI 表示 Flex token 采用 Batch API 费率。根据 2026 年 7 月 16 日查看的 OpenAI 定价页面,当时列出的 Flex 与 Batch 费率相同。以 gpt-5.4-mini 为例,Flex 的输入和输出价格均比 Standard 低 50%。

Flex 是一种处理方式,而不是另一个模型。你的 prompt、输入行和输出 schema 都可以保持不变,差别主要体现在运行层面:

  • 响应可能需要更长时间
  • 完成时间更难预测
  • 请求超时的概率更高
  • Flex 容量不足时,OpenAI 可能返回 429 Resource Unavailable

OpenAI 的 Flex processing 指南指出,因资源不可用而失败的请求不会收费。你可以稍后重试;如果完成任务比节省成本更重要,也可以将失败行切换到 Standard processing。

Flex 与 OpenAI Batch API 也不是一回事。Batch 是专门用于提交异步任务的 API;Flex 则是支持的常规 API 请求所使用的一种 service tier。Datablist 会负责这些请求周边的逐行工作流,因此你不必自行创建和监控 Batch job。

Flex 同样不属于 ChatGPT 网页版订阅。API 与 ChatGPT 应用采用不同的计费方式和工作流。在 Datablist 中,对于支持的模型,你可以使用自己的 OpenAI API key,也可以使用 Datablist credits。

🔑 关键原则

Flex 改变的是处理成本和响应时间。它不会提升输出质量,也并非所有模型都支持。

如需进一步了解如何大规模运行重复 prompt,请参阅 LLM 批量处理。

什么情况下适合使用 Flex Mode

我通常先问一个问题:如果成本更低,这项任务能否多等一会儿?

如果答案是肯定的,就值得考虑 Flex。适合的场景包括夜间客服工单分类、评论摘要、从文本中提取结构化数据,以及在后台进行 Lead 分类。使用 ChatGPT 翻译电商商品目录这类规模较大但不紧急的任务也很适合,前提是所选模型支持 Flex。

这些任务通常有三个共同点:用稳定的 prompt 重复处理大量行、输出可以稍后审核,并且不需要用户等待每一次响应。

以下情况建议继续使用 Standard processing:

  • 用户需要在当前会话中立即获得结果
  • 某一行失败或延迟会阻塞紧急工作流
  • 所选模型不支持 Flex
  • 相比降低成本,任务更需要可预测的延迟

我也不会直接用一个未经验证的新 prompt 在 Flex 上运行大批量任务。应先用少量数据预览并稳定 prompt 和输出 schema。Flex 可以降低处理成本,但无法弥补模糊的指令、无用的输入文本或过长的输出。

💡 Prompt 稳定后再使用 Flex

先测试 10 至 20 行。确认标签、摘要和审核规则符合预期后,再将 Flex 作为后台任务的默认选项。

Datablist 的 Ask ChatGPT/OpenAI enrichment非常适合这类场景,因为它会逐行运行 prompt,将响应写入 properties,并保留每一行的处理状态以供审核。

CSV 和 prompt 示例

这里使用 Datablist 的客服工单 AI 示例。你可以在 CSV 示例文件库中找到它。100 行版本适合配置和截图,而 10,000 行版本更容易体现成本差异。

输入数据包含以下实用字段:

  • Ticket Subject
  • Ticket Text
  • Customer Plan
  • Priority Hint

每一行都执行相同任务:对工单分类、判断紧急程度、总结问题,并标记需要人工审核的不确定情况。由于任务可以在后台运行,而且每项输出都很短,因此非常适合使用 Flex。

我会从下面这个 prompt 开始:

对这张客服工单进行分类,以便制作运营报告。

工单主题:{{Ticket Subject}}

工单内容:{{Ticket Text}}

客户套餐:{{Customer Plan}}

优先级提示:{{Priority Hint}}

只返回简短的结构化字段值。

双大括号中的表达式是 prompt variables。Datablist 会将其替换为当前处理行中的对应值。

Prompt variables 将工单字段插入 OpenAI 请求
Prompt variables 将工单字段插入 OpenAI 请求

相比一整段文本,我更倾向于使用四个结构化输出:

  • Ticket Topic:Billing、Bug、Feature Request、Account Access、Cancellation 或 Other
  • Urgency:Low、Medium 或 High
  • One Sentence Summary:一句简洁摘要
  • Needs Review:当工单含义模糊、信息不完整、与优先级提示冲突或没有返回结果时填写 Yes

这种 schema 更便于筛选结果,也能控制输出 token。它还会把不确定的行从正常队列中分离出来,避免模型将疑点藏在一段文字里。

为结构化 OpenAI 响应配置独立的输出 properties
为结构化 OpenAI 响应配置独立的输出 properties

运行前估算 Standard 与 Flex 成本

应在完成全部配置前估算成本。你需要先根据实际行数判断:节省的费用是否值得牺牲处理速度。

计算分为两部分:

  • 输入成本 = 行数 × 每行平均输入 token × 每个输入 token 的价格
  • 输出成本 = 行数 × 每行平均输出 token × 每个输出 token 的价格
  • 总成本 = 输入成本 + 输出成本

本例使用 gpt-5.4-mini,假设每行包含 250 个输入 token 和 30 个输出 token。以下价格核对于 2026 年 7 月 16 日:

Service tier每 100 万输入 token 的价格每 100 万输出 token 的价格
Standard$0.75$4.50
Flex$0.375$2.25

处理 1,000 行时,Standard 输入成本为 250,000 × $0.75 / 1,000,000,即 $0.1875;输出成本为 30,000 × $4.50 / 1,000,000,即 $0.135。合计约为 $0.32。

在这个例子中,Flex 的两项费率均减半,因此相同任务的成本约为 $0.16。

行数Standard 预估成本Flex 预估成本预计节省
1,000$0.32$0.16$0.16
10,000$3.23$1.61$1.61
100,000$32.25$16.13$16.13

这些数字较小,是因为 prompt 和输出都很精简。如果将短工单换成长篇对话记录、商品描述或抓取的网页,输入成本会迅速增加。如果不再要求四个简短字段,而是让模型生成详细回答,输出成本也会随之上升。

我把这张表当作一种计算方法,而不是报价。正式运行前,请更新四项数据:模型、service tier 价格、平均输入 token 和平均输出 token。模型支持情况和价格会变化,因此应重新查看 OpenAI 定价页面,而不是照搬旧数据。

如果使用自己的 API key,费用由 OpenAI 向你的账号收取。如果使用 Datablist credits,Datablist 会根据支持模型的处理用量换算 credits。具体消耗取决于模型和 token 用量,因此 prompt 和输出仍应尽量精简。

⚠️ 价格可能调整

节省 50% 仅适用于上述核对日期、模型和价格。请将计算方式视为可复用的模板,而不是永久价目表或所有模型的固定承诺。

在 Datablist 中配置 Ask ChatGPT/OpenAI

确认任务和预期节省合理后,就可以配置 enrichment。每个设置都会应用到所有行,因此需要谨慎处理。

1. 导入 CSV 或打开 collection

将 CSV 或 Excel 文件导入 Datablist,或者打开已经包含这些行的 collection。确认四个输入字段都有有效内容。我会在调用模型前过滤掉工单正文为空的记录,因为没有必要为缺少有效输入的行付费。

2. 选择 Ask ChatGPT/OpenAI

打开 Enrich,选择 Ask ChatGPT/OpenAI。该 enrichment 会为选中的每一行发送请求,并将答案写入你配置的输出 properties。

3. 选择处理费用的支付方式

你可以使用自己的 OpenAI API key,由 OpenAI 直接计费;如果所选模型和账号支持,也可以选择 Datablist credits。Service tier 的选择与支付方式相互独立。

4. 添加逐行 prompt

粘贴客服工单 prompt,并通过 variable picker 插入各个字段。我会保持指令简短,并将输出格式要求放在末尾。在每一行中重复背景信息只会浪费输入 token。

如果某个工单字段经常为空,应明确告诉模型如何处理。例如,设置 Needs Review = Yes,比让模型自行编造缺失的上下文更安全。

5. 配置结构化输出 properties

启用 structured output 选项,并添加示例中的四个 properties。为每个字段编写简短说明,并在适用时定义允许使用的标签。

Structured output 可以减少后续清洗工作,但在这里更重要的价值是控制输出。将字段命名为 Urgency 并限定三个标签,可以减少模型返回长篇解释的空间。

6. 选择支持 Flex 的模型

打开模型选择器,选择带有 flex compatible 标记的模型。只有所选模型支持 Flex 时,Datablist 才会显示 Flex 设置。

Datablist 中显示支持 Flex 模型的 OpenAI 模型选择器
Datablist 中显示支持 Flex 模型的 OpenAI 模型选择器

本例使用 GPT-5.4 mini。不要假设可用模型列表会一直不变。每次开始新工作流时,都应查看 Datablist 中的标记和 OpenAI 当前定价页面。

7. 启用 Flex Mode

打开 Advanced Settings,然后启用 Use Flex Mode。

在 Datablist 的 Advanced Settings 中启用 Use Flex Mode
在 Datablist 的 Advanced Settings 中启用 Use Flex Mode

如果没有显示该开关,说明 Datablist 未将所选模型标记为支持 Flex。请选择支持的模型,或继续使用 Standard processing。

8. 从默认超时时间开始

Datablist 当前默认的 Flex timeout 为 360 秒,也就是 6 分钟。第一次预览时,我会保留默认值。只有实际发生 timeout,并且任务可以等待更长时间时,才需要提高该值。

可接受的 timeout 范围是 30 至 1,500 秒。更高的数值可以给慢速请求更多完成时间,但不能保证一定有可用容量,也不能保证请求在固定时间内返回。

9. 可能存在重复数据时保留缓存

对于设置相同且内容完全一致的 prompt,Datablist 可以缓存 48 小时。如果重复工单或描述生成了相同请求,使用缓存结果即可避免再次付费调用。

缓存不能替代去重。我仍会先过滤不必要的行,再将缓存作为第二层保障。

10. 限制输出 token 并控制并发量

根据四个短字段设置合适的 max-token 值。既然只需要标签和一句摘要,就不要为长篇文章预留空间。

如果使用自己的 API key,应保持较低的并发调用量。提高并发量并不能让 Flex 容量变得可预测,反而可能产生更多 rate-limit 错误。相比突发调用后反复重试,我更愿意让任务在后台稳定运行。

📘 没有 Flex 开关?

请先检查模型标记。Datablist 只会为标记为兼容的模型显示 Flex 设置。否则,请选择其他支持的模型或使用 Standard。

预览、运行并检查结果

处理完整文件前,先预览 10 至 20 行。即使 prompt 看起来很明确,我也会这样做。微小的措辞变化可能会在数千次请求中影响标签、输出长度和 token 用量。

预览时检查以下内容:

  • 每个预期 property 都有值
  • Ticket Topic 始终使用一致的标签
  • Urgency 会分析工单内容,而不是直接复制 Priority Hint
  • 摘要保持为一句话
  • Needs Review 能识别信息缺失或相互冲突的情况
  • 输入和输出长度接近成本估算中的假设

有代表性的结果应该如下所示:

Ticket SubjectTicket TopicUrgencyOne Sentence SummaryNeeds Review
重置密码后无法登录Account AccessHigh客户重置密码后仍无法访问账号。No

如果模型返回的标签不一致,请在运行完整任务前收紧允许值。如果摘要过长,请精简指令并降低 max tokens。处理 10 行后修改 prompt 成本很低;处理完 100,000 行后再修改则完全不同。

预览结果稳定后,对目标行运行 enrichment。Datablist 会记录已处理的 items,帮助你避免为已完成的行再次调用 OpenAI。

运行结束后,筛选状态为失败、timeout 或无结果的行。重试前,先从每一组中抽取一些样本检查:

  • 如果错误看起来只是暂时问题,而且任务可以等待,则继续使用 Flex 重试
  • 如果有效的长输入持续 timeout,则提高 Flex timeout
  • 如果完成率或速度比成本更重要,则使用 Standard processing 重试关键行
  • 先补全缺失的输入数据,再为新的请求付费
在 Datablist collection 中检查逐行 OpenAI 结果
在 Datablist collection 中检查逐行 OpenAI 结果

确认结果通过审核后,将处理完成的 collection 导出为 CSV 或 Excel。如果后续还需要人工验证不确定的工单,请在导出文件中保留 Needs Review。

进一步降低成本的方法

Flex 只是降低成本的一种方式。对于很多文件,减少发送的数据以及避免不必要的调用,往往能节省更多费用。

处理前筛选数据行

删除空行、已经分类的工单,以及不在任务范围内的记录。最便宜的请求,永远是没有发送的请求。

精简 prompt 和输入内容

只包含模型真正需要的字段。Customer ID 或许有助于后续关联结果,但模型不需要读取它。工单中的长签名、引用的邮件历史和模板化文本也是如此。

保持输出结构化且简短

使用标签、布尔值和简洁摘要。输出 token 的价格通常高于输入 token,因此设置较小的 max-token 上限可以明显降低成本。

缓存重复 prompt

如果完全相同的请求可能重复出现,请启用缓存。导入多个文件后出现重复描述或相同文本时,这种做法尤其有效。

选择满足质量要求的最小模型

更换模型前,使用同一组有代表性的行进行预览。只有在标签质量和人工审核率仍可接受的情况下,更便宜的模型才真正有价值。

固定任务优先使用专用 enrichment

LLM 很灵活,但不一定是最便宜的工具。如果只需要识别语言,请使用专用语言检测工作流,而不是让通用模型逐行推断。

我会在精简 prompt 并筛选数据集后再估算成本。否则,你计算的其实是一个原本就不应该执行的任务。

限制与故障排查

Flex 会带来一些需要提前考虑的失败情况。

所选模型没有显示 Flex

Flex 仅支持部分模型,而且支持范围可能变化。如果 Datablist 没有显示 Flex 开关,请切换到标记为兼容的模型,或使用 Standard processing。不要在大批量任务中强行使用未经验证的 custom model。

响应时间比预期更长

处理速度较慢且时间难以预测,正是 Flex 的核心取舍,并不意味着输出质量较低。非紧急行可以继续等待,但紧急任务应切换到 Standard。

数据行发生 timeout

先使用 Datablist 默认的 360 秒。如果有效数据发生 timeout,并且任务可以继续等待,请在支持的范围内提高 timeout。如果只有少量关键行失败,我通常会用 Standard 重试这些行,而不是拖慢整个任务。

OpenAI SDK 自身的 timeout 与 Datablist 的 Flex timeout 设置相互独立。在本工作流中,请以 Datablist 显示的值为准。

OpenAI 返回 429 Resource Unavailable

Flex 容量可能暂时不可用。OpenAI 表示不会对此类请求收费。如果优先考虑最低成本,可以稍后重试;如果成功完成更重要,则使用 Standard processing。

大量数据行触发 rate limit

Flex 不会取消 API rate limit。请减少并发调用数量,或者先处理较小的数据分段再重试。相比一次产生大量失败,一个速度较慢但稳定可控的任务更容易审核。

分不清 Flex、Batch API 和 ChatGPT

记住以下边界即可:

  • Flex 是支持的 API 请求所使用的低成本 service tier
  • Batch API 是独立的异步 API
  • ChatGPT 是网页端和 App 产品,并非这里使用的逐行 API 工作流
  • Datablist 提供表格工作流,并可使用 API key 或 credits

总结

当所选模型支持 Flex、成本比响应速度更重要,而且任务可以在后台运行时,就适合使用 Flex。对于紧急、交互式或对失败敏感的行,请继续使用 Standard processing。

我推荐的流程很直接:估算 token 成本、筛选文件、配置简短的结构化输出、预览 10 至 20 行、启用 Flex、运行完整列表,然后只重试确实需要处理的行。这样既能保持 CSV 工作流简单,又能将本文核对模型的处理成本降低一半。

FAQ

OpenAI Flex Mode 总能降低 50% 成本吗?

不能。2026 年 7 月 16 日,gpt-5.4-mini 的 Flex 输入和输出价格比 Standard 低 50%,并与 Batch API 费率一致。价格和支持的模型可能变化。估算大型任务前,请在 OpenAI 当前定价页面查看对应模型。

哪些 OpenAI 模型支持 Flex Mode?

Flex 仅支持部分模型,而且支持范围会随时间变化。请查看 OpenAI 当前定价列表,并在 Datablist 模型选择器中寻找 flex compatible 标记。只有选择支持的模型后,才会显示 Flex 开关。

Flex Mode 与 OpenAI Batch API 相同吗?

不同。Flex 是支持的 Responses 或 Chat Completions 请求所使用的一种 service tier;Batch API 则是用于提交批处理任务的独立异步 API。两者可能采用相同的 token 价格,但并不是同一种工作流。

Flex Mode 会影响输出质量吗?

Flex 并不代表不同的质量等级,它改变的是请求的处理层级和时间。结果仍由模型、prompt 和输出 schema 决定。无论使用哪种 tier,都应先预览部分行,因为 prompt 质量始终至关重要。

Datablist 的 Flex Mode 应设置多长 timeout?

从默认的 360 秒开始。只有有效数据发生 timeout 且任务可以等待更长时间时,才提高该值。Datablist 支持 30 至 1,500 秒。更长的 timeout 会给请求更多时间,但不能保证一定有可用容量。

Flex Mode 可以使用 Datablist credits 吗?

对于支持的模型和账号配置,Datablist 可使用 OpenAI API key 或 Datablist credits。Credits 消耗取决于模型和 token 用量,因此应先预览样本,并保持输入和输出精简。

哪些情况应该继续使用 Standard processing?

交互式任务、紧急任务、有人正在等待结果的行、不支持 Flex 的模型,以及无法接受响应延迟的流程,都应使用 Standard。你也可以先用 Flex 处理批量任务,再用 Standard 重试少量关键行。

Flex Mode 可以处理 Excel 文件吗?

可以。Datablist 支持导入 CSV 和 Excel 文件。Flex 作用于受支持的 OpenAI API 请求,与源文件类型无关,两种格式都能使用相同的逐行 prompt 工作流。