是什么造就了一款出色的 ChatGPT 应用
在 DevDay 上,我们推出了 ChatGPT Apps——一种将你的产品直接带入 ChatGPT 对话的新方式。本文在该发布的基础上,为开发者、产品经理和设计师提供实用指导,帮助你选择合适的应用场景,并设计出上线后真正有用的应用。我们将重点介绍如何将你产品的优势转化为清晰、范围明确的能力,使模型能够在各种不同的对话和用户意图中应用这些能力。如果你想找原始的技术工作流程,可以直接跳转到 Apps SDK 快速入门和开发者文档。
我们将涵盖:
- ChatGPT 应用到底是什么(以及不是什么)
- 应用真正增加价值的三种方式
- 如何为对话和发现而设计
- 如何判断你的应用是否真的在发挥作用
- 具体示例和截图建议
ChatGPT 应用到底是什么
当团队构建他们的第一个 ChatGPT 应用时,出发点通常是:
“我们已经有一个产品了。让我们把它带进 ChatGPT。”
这通常从拿出现有的网页或移动端体验——屏幕、菜单、流程——并试图将其重塑为聊天形式开始。这是一种合理的直觉;多年来,“软件”一直意味着页面、导航和 UI 骨架。
然而,为 ChatGPT 构建应用是一个不同的环境。用户并不是“打开”你的应用并从主页开始。他们正在就某件事进行对话,而模型可以决定何时将应用引入该对话。他们是在某个时间点进入的。 在这样的世界中,最好的应用从外部看往往出奇地小。它们不会试图重新创建整个产品。相反,它们允许用户在 ChatGPT 中使用应用时访问一些特定的能力:你的产品最擅长的具体事情,模型可以在任何对话中重复使用。
在 ChatGPT 之外,你的应用通常是目的地。用户会:
- 点击你的图标
- 进入你的环境
- 学习你的导航和 UI 模式
大多数产品决策都源于这个假设:“我们拥有这个屏幕。”你可以大力投入布局、引导流程和信息架构,因为用户正在投入你的空间。
在 ChatGPT 内部,你的应用扮演不同的角色:
- 它是模型可以调用的能力——用于上下文和视觉互动。
- 它出现在进行中的对话内部。
- 它是模型可能编排的多个工具之一。
这意味着“价值单位”更多是你能在正确时刻帮助模型和用户完成的具体事情,而不是你的整体体验。
一个实用的定义:
ChatGPT 应用是一组定义明确的工具,可以执行任务、触发交互或访问数据。
这有几个含义:
- 你不需要移植每个功能。
- 你不需要完整的导航层级。
- 你确实需要一个清晰、紧凑的 API:一组易于调用、易于在其基础上构建的操作。
你可以这样理解:你的 ChatGPT 应用是模型在用户遇到特定类型问题时会使用的工具箱。这个工具箱定义得越精确,在对话流程中就越容易使用。
一旦你将应用视为“模型可以编排的能力”,而不是“我们产品的迷你版”,设计决策就会变得更清晰。你会开始问“我们在这里能帮上什么忙?”,而不是“用户接下来应该去哪里?”
增加真正价值的三种方式
适用于任何应用创意的简单筛选标准:
- 认知:它是否让用户能够获取在 ChatGPT 中无法看到的新上下文或数据?
- 行动:该应用是否代表用户执行真实操作?
- 展示:该应用是否以比纯文本更清晰、更可操作的 UI 呈现信息?
这既适用于“严肃的”生产力应用,也适用于“纯属娱乐”的应用(如游戏)。游戏可能无法帮助用户更快地交付报告,但它仍然能做到基础模型自身无法做好的事情:维护有状态的游戏逻辑、跟踪进度、执行规则,或渲染游戏世界的有趣视图。其价值在于愉悦感和参与度,但底层模式是相同的。
1) 新的认知内容
你的应用在 ChatGPT 对话中提供新的上下文:
- 实时价格、可用性、库存
- 内部指标、日志、分析数据
- 专业的、订阅限定的或小众的数据集
- 用户特定数据(账户、历史、偏好、权限)
- 传感器数据、实时视频流
在实践中,这通常意味着接入那些数据准确、及时且有权限控制的系统。该应用成为模型在你所在领域的“眼睛和耳朵”,能够以更高的权威性回答问题。
2) 新的行动
你的应用代表用户执行操作:
- 在内部工具中创建或更新记录
- 发送消息、工单、审批、通知
- 安排、预订、下单或配置事物
- 触发工作流(部署、升级、同步数据)
- 玩互动游戏(应用规则、推进回合、跟踪状态)
- 在物理世界中执行操作(物联网、机器人控制等)
在这里,应用与其说是真相来源,不如说是一双得力的手。它将用户的意图转化为你团队日常所用系统中的具体变更——或者对于游戏而言,转化为游戏状态的具体变更,使体验保持一致和公平。正是在这里,你的应用以有意义的方式转变为智能体。
3) 更好的展示方式
应用可以在 ChatGPT 对话中以 GUI 形式呈现信息,使信息更易于理解或更具可操作性:
- 精选列表、对比、排名
- 表格、时间线、图表
- 针对特定角色或特定决策的摘要
- 游戏状态的可视化或结构化视图(棋盘、库存、得分)
当用户在做选择或权衡取舍时,这一点尤其有价值。应用可以为模型提供一种结构化的语言:具有列、行、得分和视觉元素的组件,与人们实际的决策方式相匹配——或者在游戏中,与他们理解自己在世界中“所处位置”的方式相匹配。
如果一个应用在认知/行动/展示中至少一项上没有明显提升,它往往会让人觉得没有为用户在 ChatGPT 中已有的能力增添价值。用户可能不会明确抱怨,但这错失了为用户提供更有意义价值的机会,无论该应用是用于工作还是娱乐。
这里你可以看到一个由应用增强的体验示例:
来自 ChatGPT 的示例回答
这个回答很有帮助,然而,用户可能希望使用具备额外功能的应用,在不改变上下文或离开对话的情况下直接浏览真实房源。
使用 Zillow 应用的回答
借助 Zillow 应用,用户获得了额外的能力:搜索实时房源、按条件筛选,并查看丰富的房源详情——这一切都无需离开聊天。
用于丰富探索的全屏模式
这里的价值在于,你既能从模型获得丰富的上下文,又能获得一个可与用户意图动态交互的增强型应用体验。想让它查找某个特定区域的房源?使用 Zillow 应用时,模型会调用 Zillow MCP 服务器上的工具并重新渲染 UI 层。
选择能力,而非移植你的产品
一个常见的初步想法是列出产品的所有功能,然后问:“我们如何把这些带进 ChatGPT?”
从纸面上看,这似乎很周全。但在实践中,它通常会产生一个庞大而模糊的表面区域,模型难以导航,用户也难以理解。如果你难以用一句话概括应用的功能,模型也会更难理解它。
更有效的路径是:
-
列出核心待办任务(jobs-to-be-done)——识别用户试图完成的、你的产品能帮助实现的具体任务或成果。这些正是你的产品存在的原因。从这里开始,可以让你专注于用户成果,而不是功能清单。
示例:- 帮助人们选择住宅。
- 将想法转化为精美的演示文稿。
- 将意图转化为愉悦的发现体验。
- 将原始数据转化为清晰、可分享的报告。
-
针对每项任务,问自己:
“如果没有应用,用户在 ChatGPT 对话中就无法做什么?”
常见答案包括:
- 访问实时或私有数据。
- 在我们的系统中执行真实操作。
- 获取用户所需的结构化或可视化输出。
-
这正是你的独特价值开始显现的地方。你不再思考“我们在技术上能暴露什么?”,而是思考“我们在哪些方面有独特的帮助?”
-
将这些差距转化为少数几个命名清晰的操作。例如:
search_properties– 返回候选住宅的结构化列表。explain_metric_change– 获取相关数据并总结可能的驱动因素。generate_campaign_variants– 创建多个带有元数据的广告变体。create_support_ticket– 创建工单并返回摘要 + 链接。
这些操作是:
- 足够具体,让模型能够自信地选择
- 足够简单,可以与对话中的其他步骤混合使用
- 直接与价值挂钩,而不是与你的整个产品地图挂钩
另一种思考方式是:如果团队中有人问:“我们绝对需要这个应用做好的三件事是什么?”这些事应该几乎一一对应地映射到你的产品能力。
例如,ChatGPT 中的 Canva 应用可以生成整个演示文稿草稿,用户可以进入符合其对幻灯片浏览预期的全屏模式,但更深入的逐页编辑仍在完整的 Canva 编辑器中进行。
为对话和发现而设计
在你的 MCP 服务器中,你可以定义 description,它为模型提供上下文,说明何时调用你的工具,以及具体调用哪些工具来执行特定任务。这有助于将用户意图映射到你的工具操作。
a) 模糊的意图
帮我弄清楚该住在哪里。
一个好的应用响应会:
- 使用对话中已有的任何相关上下文。
- 如有需要,最多问一两个澄清性问题。
- 快速产出具体成果——例如,给出几个示例城市并附上简短说明。
用户应该感觉到进展已经开始,而不是被扔进了一个多步骤的引导流程。如果他们必须回答五个问题才能看到有用的信息,很多人会直接放弃。
让我们看看 Canva 应用是如何处理这一点的:
构建一个完整的演示文稿需要上下文。Canva 应用会提出后续问题,以引导用户综合他们想要构建的内容。
b) 特定意图
在西雅图寻找价格低于 $1.2M、靠近优质小学的三居室住宅。
在这里,应用不应要求用户重复自己的话。它应该:
- 解析查询。
- 调用正确的功能。
- 返回一组结构清晰、聚焦的结果。
你仍然可以提供细化选项(“你更看重通勤还是学校评分?”),但它们应该感觉像是可选的微调,而不是必需的设置。
Canva 示例:
当用户的意图变得明确并要求生成演示文稿时,模型确切地知道何时调用 Canva 以及调用哪个功能。
如下所示,该工具会分享几个选项,并在用户希望进一步细化时进行更深入的探询:
c) 没有品牌认知
你不能假设用户知道你是谁。
你的第一个有意义的响应应该:
- 用一句话解释你的应用的作用(“我提供实时房源和学校评分,方便你比较选项。”)。
- 立即提供有用的输出。
- 提供清晰的下一步(“让我按通勤、社区或预算来缩小范围。”)。
把它看作一个冷启动问题:你在介绍你是什么、为什么你有用以及如何使用你——全部在一两条消息内完成。
同时为模型和用户进行设计
你在为两类受众设计:
- 聊天中的人类
- 决定何时以及如何调用你的应用的模型运行时
大多数团队对思考第一类受众感到自在。第二类则较新。但如果模型无法理解你的应用是做什么的或如何使用它,你面向人类的体验将没有太多运行的机会。
还有一个同样重要的维度:当模型调用你的应用时,哪些用户数据会流经你的应用。良好的应用设计不仅关乎清晰的功能,还关乎在你请求什么以及你如何使用它方面保持自律。
-
清晰、描述性的操作和参数:让你的应用何时相关以及如何调用一目了然。使用直白的名称(
search_jobs、get_rate_quote、create_ticket),并明确说明哪些参数是必需的、哪些是可选的,以及如何格式化它们。歧义是路由的负担。 -
隐私优先设计:只请求你真正需要的字段。避免收集额外上下文的“大杂烩”参数。优先使用最小化、结构化的输入,不要使用“把整个对话都发过来”之类的指令。
-
可预测、结构化的输出:保持 schema 稳定;包含 ID 和清晰的字段名称。将简短摘要(“三个符合你预算和通勤时间的选项”)与机器友好的列表(
[{id, address, price, commute_minutes, school_rating, url}, …])配对。这使模型能够自然地交谈,同时保持对数据的精确掌控。 -
对你不返回的内容保持有意为之:不要“以防万一”跳过敏感的内部信息。将令牌/密钥排除在用户可见的路径之外。当不需要完全保真度时,进行脱敏或聚合。
-
明确说明你收集什么以及为什么:只请求完成工作所需的最少信息。当你需要敏感信息(例如账户访问权限)时,用一句话说明原因。设计操作和 schema,使发送什么到哪里一目了然。
为生态系统设计,而非围墙花园
在真实的 ChatGPT 会话中,你的应用很少是唯一参与的应用。模型可能会在同一对话中调用多个应用。
从用户的角度来看,这是一个流程。从你的角度来看,这是一个提醒:你是生态系统的一部分,而不是一个封闭的产品。
几个实际的影响:
-
保持操作小而聚焦
search_candidates、score_candidates、send_outreach- 而不是单一的
run_full_recruiting_pipeline。
-
让输出易于传递
- 稳定的 ID、清晰的字段名称、一致的结构。
- 避免将重要信息仅隐藏在自由文本中。
-
避免冗长、隧道式的流程
- 完成你的工作部分,然后将控制权交还给对话。
- 让模型决定下一步应由哪个工具处理。
如果其他应用(或你自己的应用的未来版本)能够轻松地基于你的输出进行构建,你就能从生态系统的其他改进中受益,而不是与之竞争。
快速检查清单
一份可在构建前后运行的简短检查清单:
-
1. 新能力
- 你的应用是否明确地知道、执行或展示新事物?
- 在你的目标场景中,如果它停止工作,用户会注意到吗?
-
2. 聚焦的界面
- 你是否选择了一小部分功能,而不是克隆你的整个产品?
- 这些功能的命名和范围是否清晰地映射到实际待办任务?
-
3. 首次交互
- 你的应用能否优雅地处理模糊和具体的提示?
- 新用户能否从第一次有意义的响应中理解你的角色?
- 他们在第一轮对话中就能看到价值吗?
-
4. 模型友好性
- 操作和参数是否清晰且无歧义?
- 输出是否结构化且足够一致,以便链接和重用?
-
5. 评估
- 你是否有一个包含正面、负面和边缘情况的小型周到测试集?
- 你是否对应用提供的答案与不使用应用时 ChatGPT 答案的胜率有某种概念?
-
6. 生态系统契合度
- 其他应用和用户能否合理地基于你的输出进行构建?
- 你是否愿意成为多应用链中的一个环节,而不是整个旅程?
你不需要在每个维度都完美才能发布。但如果这些问题大多数你都能回答“是”,那么你就不只是把产品放进 ChatGPT,而是在你的领域赋予 ChatGPT 真正的杠杆作用——而这些应用正是从这里开始变得不可或缺。