OpenAI API 构建方法论:先诊断问题,再选技术

OpenAI Bootcamp 分享:用 BCA 框架诊断问题,让需求而非技术潮流决定是否引入 Agent 与 RAG。
OpenAI Enablement 团队的 Ellie 在 API Bootcamp 中提出,构建 AI 应用的核心障碍不是缺技术,而是缺乏对真实问题的清晰诊断。她以虚构客服团队 Acme 为例,介绍了 BCA 框架:行为(Behavior)、上下文(Context)、行动(Action)三条诊断车道,加上贯穿始终的质量维度。这三者是不同的修复方向而非成熟度等级——模型有信息却格式混乱是行为问题,缺少政策文档是上下文问题,需要开退款工单才是行动问题。她同时强调,RAG 只在真正需要从海量变化文档中检索时才值得搭建,Agent 只在下一步取决于沿途发现时才有意义。评测(eval)是贯穿全程的质量机制,每次只改一个变量、用同一批代表性用例重跑,才能让证据而非直觉指导决策。
在 OpenAI 官方 API Bootcamp 系列的第一场分享中,来自 Enablement 团队的主讲人 Ellie 提出了一个反直觉却极具价值的观点:构建 API 应用应当像调试任何工程问题一样——先理解真正的问题,再考虑要不要动用更多基础设施。这场分享没有堆砌技术名词,而是围绕一个虚构的客服团队 Acme,讲透了从模糊想法到可上线应用的完整思考路径。
三个常见陷阱:别急着上 Agent 和 RAG
很多团队一开口就是「我们需要一个 Agent」或「应该加上 RAG」,但往往连第一个有用的版本要做什么都没定义清楚。Ellie 用了一个精妙的比喻:这就像在咖啡变难喝之前,就决定要把整个厨房翻新——也许你确实需要,但也可能只是该清洗一下咖啡机了。
她总结出三个典型陷阱:用例模糊、迷恋某种技术、以及没有清晰的验证方式。这三者都无法靠堆砌基础设施来解决。这是整场分享反复强调的底层立场:技术选择应该由需求驱动,而不是由技术的「先进程度」驱动。
BCA 诊断框架:行为、上下文、行动
分享的核心是一个诊断心智模型,把问题拆解为三条不同的「车道」,再加上贯穿始终的质量维度。
- 行为(Behavior):模型拥有所需信息,但响应没有遵循正确的指令、格式或决策标准。就像你问同事要一句状态更新,却收到一篇五页长文——他们不缺文档,缺的是清晰的任务简报。
- 上下文(Context):模型缺少完成任务所必需的信息。就像让人解释退货政策,却没给他看当前的政策文件。
- 行动(Action):光有答案不够,还需要在响应之外发生一些事情,比如查询订单、开启一个工单。
- 质量(Quality):贯穿以上三者的问题——我们怎么知道它真的奏效了?
Ellie 特别强调,这些不是成熟度等级,而是不同的诊断方向。你不需要从 Behavior「进阶」到 Agent,而是根据具体失败点选择对应的修复方式。
从模糊目标到可测试的第一切片
以 Acme 客服团队为例,「用 AI 改善客服」是个合理的愿景,却无法告诉开发者第一步该做什么。Ellie 提出在选模型或架构之前,先用六个问题界定范围:谁参与其中、现状如何、什么信号能表明有改善、已经做过什么尝试、学到了什么、以及哪些环节必须由人来把关。
经过这样的界定,一个过于宽泛的目标(「用 AI 改善客服运营」)就能收窄为可实现的切片:对来单进行分类、标记涉及政策的敏感案例、并在关键决策处保留人工审核。对应的成功信号则是——人工分流变快,但路由准确率不下降。这就像更快地整理收件箱,却不会误把重要邮件藏起来。
行为层的四个控制旋钮
当第一个需求是从工单已有信息中做出一致可靠的分流决策时,问题就落在了行为层。Ellie 介绍了四个实用控制:Prompting、结构化输出、模型选择、推理强度。她提醒这些是不同的旋钮,而非需要全部拧到最大的清单。
好的 Prompt 更像一张优质的工程工单,而非某种秘密咒语:说清目标是什么、系统可以用哪些信息、边界在哪、完成后的结果长什么样。

但仅有清晰指令并不能凭空补上缺失的政策信息,也无法保证响应格式稳定。这时就需要结构化输出——给响应一个「契约」:哪些字段、什么类型、允许哪些取值。它的价值在于让应用不必猜测模型把字段叫做 category、ticket_type 还是 issue。Ellie 展示了通过 Responses API 配合 text_format 定义 schema 的做法,让输出能直接接入队列、看板或下游流程。
关于模型选择,她的态度很务实:不要总选名字最花哨的那个,而应像挑选任何依赖一样,用同一批代表性工单跑不同候选模型,比较分类准确率、敏感案例召回、延迟和成本。「是评测而非模型标签替你做决定。」 推理强度同理——改一个设置,重跑同一批用例,让证据说话。
上下文层:搞清楚 RAG 到底是什么
当问题变成模型缺信息时,才进入上下文层。Ellie 澄清了一个常见误解:上下文不等于必须搭建检索系统。如果只是总结一篇文章,直接把文章给它就行;只有当你要在上万份不断变化的文档中找到正确段落时,才是另一回事。

对于 RAG(检索增强生成),她的解释朴素而准确:找到相关信息、随请求一起提供、基于这些信息生成答案。就像朋友问快递柜几点关门,你不会背下整本住户手册,而是查一下相关那页再回答。
她建议每次上下文决策都从一个问题开始:缺失的信息到底存在哪里? 短小的已知政策就直接内联;公开且时效性强的信息可用 web search;存放在批准过的公司文件里,托管的 file_search 是务实的起点;而只有当你需要严格控制排序、权限或对接既有数据系统时,才值得自建检索栈。她用食物配送作比:有时点餐就够了,有时想自己挑食材,只有真正需要那种掌控力时才该经营整个厨房。
关键的评估原则是:检索质量和答案质量要分开评估——找对了书和读对了内容,是两件不同的事。
RAG(Retrieval-Augmented Generation,检索增强生成)的核心思想是弥补大语言模型的两个固有局限:训练数据的知识截止日期,以及无法直接访问私有或实时信息。其工作流程通常分为两个阶段:离线阶段将文档切片并转化为向量嵌入(embedding)存入向量数据库;在线阶段则将用户查询同样转为向量,检索相似度最高的若干片段,拼入提示词后再由模型生成答案。
这套机制看起来优雅,但实践中的失败往往集中在检索这一环:切片粒度过粗、嵌入模型与查询语义不匹配、相关文档因权限隔离无法被索引等,都会导致模型"找到了错误的那页书"。这正是 Ellie 强调"检索质量和答案质量要分开评估"的原因——一个生成端看起来流畅的答案,可能建立在完全错误的检索结果之上,而这类问题只有在专门测试检索层时才会暴露。
行动层:谁控制系统被允许做什么
只有当有用的结果需要在生成响应之外做点什么时,才引入行动。Ellie 强调行动不是「所有人都要毕业进入的下一关」。她最在意的问题是:谁控制系统被允许做什么?
她区分了几种能力载体:Code Interpreter 在沙箱里生成图表,但不能更新 Acme 的线上系统;自定义函数用于查订单、开审核工单;MCP 服务器则为已连接的外部服务提供接口。一个微妙但重要的点是——工具的存在并不自动让用例变成「行动型」,file_search 服务的是上下文需求,而「创建退款审核工单」才属于行动,因为它改变了响应之外的东西。

在函数调用的三步流程中,边界至关重要:Acme 在代码里定义能力、模型用结构化参数请求调用、而 Acme 的应用决定是否执行。就像提交报销单——申请报销不等于批准付款,财务仍会核对政策。她特意设计了一个「只能开审核工单、无权批准退款」的函数,这就像可以提交采购申请但不会被交给公司信用卡。
关于 Agent,她给出了清晰的判断标准:当下一个被批准的步骤取决于系统沿途的发现时,Agent 才变得有用。Chatbot 适合回答「差旅政策是什么」;Workflow 适合步骤固定的取消退款;只有像「比较改签方案」这类自适应路径,才值得引入受控的 Agent 循环。她还展示了用 Agents SDK 配置输入护栏、限制工具清单、以及 max_turns 防止无限循环的做法——就像给临时承包商发一张有期限、限门禁的门卡。
MCP(Model Context Protocol)是 Anthropic 于 2024 年底提出的开放协议,旨在为大语言模型提供一种标准化的方式来连接外部工具和数据源。其设计思路类似于 USB 接口的统一规范:工具提供方只需实现一次 MCP 服务器,各类模型或 Agent 框架便可通过统一接口发现并调用这些能力,而无需为每个集成单独开发适配层。
在实践中,MCP 与自定义函数调用(function calling)的关键区别在于管理粒度:函数调用通常由开发者在代码中显式定义每个工具的 schema 和执行逻辑,而 MCP 服务器可以动态暴露工具列表,更适合需要对接已有外部服务(如 GitHub、Slack、数据库)的场景。Ellie 在分享中将其列为"为已连接的外部服务提供接口"的选项,核心考量依然是权限边界——MCP 服务器的能力范围需要在架构层面提前明确,而非由模型在运行时自行发现并扩展。
质量与评测:给 AI 行为加上「回归测试」
质量不是最后附加的阶段,而是贯穿全程的习惯,而 eval 是可复现的机制。一个完整的 eval 由四部分组成:数据集、被测系统、评分器、指标。数据集要包含普通请求和你真正在意的边界案例——一个超出退货窗口的迟到订单,比 20 个几乎相同的简单样本有用得多。
Ellie 反复强调一个纪律:每次只改一个变量,重跑同一批用例。这就像研究蛋糕为什么总塌——如果同时改烤箱温度、配方和烤盘,你会得到不同结果,却不知道是哪一步起了作用。评分方式也要匹配你所改动的层:Prompt 看分类是否正确,结构化输出要同时验证 schema 和字段取值,检索要看是否找对来源且答案忠实于来源,工具和 Agent 则要检查所选工具、参数、停止条件和副作用。

她还引用了真实客户 BlueJ 的案例:在税务研究领域,答案必须来自可信的当前来源,因此上下文与质量成为核心。其成果包括每位用户每周节省约 2.7 小时、覆盖三个国家 3000 家机构、错误率低于七百分之一。要点不是照抄架构,而是识别真正的缺口、选择合适的实现、并持续测试它是否奏效。
LLM-as-a-judge(用大语言模型作为评分器)是近年来被广泛采用的自动化评估方式:由一个独立的模型(通常是能力更强的版本)对被测系统的输出打分或做出通过/失败判断。其优势在于可以处理开放式输出——对于"分类是否正确"这类问题,规则匹配足够,但对于"这个答案是否忠实于来源文档",人工逐条审阅代价极高,而 LLM 评分器可以快速覆盖大批量样本。
使用这一方法时需要警惕几个常见偏差:评分模型可能偏好更长、措辞更自信的回答,而非更准确的答案;当被测模型与评分模型来自同一家提供商时,也可能存在系统性的风格偏好。因此,建立 LLM-as-a-judge 流程时,通常需要先用一批人工标注样本校准评分器本身的可靠性,再将其部署为自动化流水线的一部分。
落地方法:一个可实践的开发习惯
整场分享最终收敛为一个开发者习惯的四步:诊断(第一个有用版本必须做对什么)、选择(第一步是行为、上下文、行动还是继续收窄问题)、推迟(哪些复杂度可以等)、验证(用哪个真实案例来测试)。
在 Q&A 环节,Ellie 补充了几个务实建议:RAG 的信息可靠性取决于来源是否可信、更新频率如何,以及在证据不足时果断标记人工审核;人工介入应聚焦在高风险、不可逆的关键决策点,且需要提前定义好「成功」的清晰标准;从原型到生产最常见的错误是塞入过多无关上下文,以及忽视规模化后延迟、成本与模型选择的权衡。关于 LLM-as-a-judge 与 human-in-the-loop,她认为并非生产环境必须二者兼备——低风险动作可用护栏和监控自动化,高风险才需要人来把关。
这场分享的价值不在于教你某个 API 的具体调用,而在于建立一种判断力:知道你在构建什么、为什么这个技术合适、什么可以先等等,以及如何判断它是否真的奏效。
相关推荐

Ema融资7700万美元:AI正在蚕食企业软件市场
AI初创公司Ema完成7700万美元融资,累计募资1.4亿美元,客户包括谷歌与微软等50余家企业。此轮融资反映AI正加速蚕食企业软件与服务市场。

NeurIPS录用通知前夜:学术圈的焦虑如何自处
NeurIPS录用通知临近,一位研究者在Reddit坦言焦虑远超预期,引发学术圈共鸣。本文探讨顶会投稿压力的根源、是否会随时间缓解,以及学术社区对研究者心理健康的关注。

Vercel AI SDK 发布 @ai-sdk/vue@3.0.289 补丁更新
Vercel AI SDK 发布 @ai-sdk/vue@3.0.289 补丁更新,同步升级 ai@6.0.289 与 provider-utils@4.0.53 等依赖。本文解读此次更新内容及对 Vue 开发者的影响。