背景
这个月,OpenAI举办了其年度开发者大会,由于我们的产品正在逐步使用AI的相关功能,老板很重视这个发布会,让我研究一下此次发布会的两个重点APP SDK和AgentKit,并让我准备一个分享会。
上文中已经介绍了一些关于AgentKit的一些内容,本文主要是在我资料收集中总结的一些内容(分享会上包括一些实操这里没有贴)。此篇文章主要介绍Apps SDK的相关介绍,主要是基于官方文档,概念性的东西比较多,文中也贴了一些链接,我尽量以AI概念小白能够看懂的方式去描述。
前言
现在其实很多的手机智能助手并不能直接使用APP帮我做一些东西,除了不够智能,不够了解我的意图以外,比如我的siri,除了让他打开某个软件之外,他无法对软件内部做任何操作,本质就是我们的应用没有向他暴露接口或者其他可以操作APP的能力,他无法通过我们的意图来访问我们的应用来帮我操作。

Apps SDK
Apps-SDK 是 OpenAI 最近推出的一套工具开发框架,它让开发者能够把自己的服务、数据或系统能力,直接接入 ChatGPT 。简单来说,它让 ChatGPT 不只是一个聊天机器人,而是一个可以直接调用你自己业务逻辑的入口。
官方文档链接:
developers.openai.com/apps-sdk/co...
此工具的推出,被各个分析博主称为OpenAI最大的野心,因为其直接让Chatgpt拥有了访问应用的能力,以后我们的手机助手将会变的越来越智能,并且根据我们的使用习惯,不断优化。其也让接入Chatgpt的APP的应用有了巨大的流量入口,毕竟Chatgpt拥有全球每周8亿的活跃用户,上一个提供这种流量入口的还是微信的小程序。咱就不多吹了,主要分析其应用。感兴趣的可以看一下这个视频[www.xiaohongshu.com/explore/68e...]
三个概念
MCP服务器
什么是MCP
MCP,全称 Model Context Protocol ,是 OpenAI 在 2024 年 11 月 推出的一个新的开放协议。
它是 Function Calling 的 继任者与标准化版本。
简单来说,MCP就是一种规范,类似于前后端对接的规范一样,你的服务得实现得符合MCP协议,Agent才会认识你,并且调用你的服务。 什么是模型上下文协议(MCP)?它如何比传统API更简单地集成AI?
Agent的一些概念可以看一下这些文章:
MCP服务器做了什么
使用Apps SDK的主要提供了两个作用:
- 列举工具,调用工具:这里的工具就是Agent概念里面的tool,可以是联网搜索的功能, 某个文件的查询, 三方软件的服务, 如美团航班查询,谷歌email服务,或者你自己的提供的服务MCP规范的接口。
- 返回自定义的UI组件:由于大模型默认返回的格式都是md文件格式,如果要实现比如图表,表格,表单等内容,需要我们自定义,并且返回给大模型,这样就可以在聊天框显示我们需要的样式。
js
┌──────────────────────┐
│ ChatGPT App / 用户交互 │
└──────────────┬──────┘
│
│ 用户输入(例如:"创建会议")
▼
┌──────────────────┐
│ Apps SDK 客户端 │
│(嵌入于 mcp sersver)│
└──────────────────┘
│
│ ① List tools
│ → 请求 MCP Client 提供工具清单
▼
┌────────────────────────────────────────┐
│ MCP server │
│ ┌───────────────────────────────────┐ │
│ │ 1️⃣ 列出工具 (list_tools) │ │
│ │ - 返回工具列表 + JSON Schema │ │
│ │ - 如:create_meeting, search_flight│ │
│ └───────────────────────────────────┘ │
│ │
│ ┌───────────────────────────────────┐ │
│ │ 2️⃣ 调用工具 (call_tool) │ │
│ │ - Apps SDK 发送 call_tool 请求 │ │
│ │ - 携带参数(来自模型推理) │ │
│ │ - MCP Server 执行实际动作 │ │
│ │ - 返回结构化结果(JSON 可解析) │ │
│ └───────────────────────────────────┘ │
│ │
│ ┌───────────────────────────────────┐ │
│ │ 3️⃣ 返回组件 (return_components) │ │
│ │ - 工具可提供一个 UI 界面资源链接 │ │
│ │ - ChatGPT 客户端可嵌入渲染 │ │
│ └───────────────────────────────────┘ │
└────────────────────────────────────────┘
▲
│
│ 响应(structured content + UI component)
▼
┌──────────────────┐
│ Apps SDK 客户端 │
└──────────┬───────┘
│
│ 渲染结果或执行下一步 reasoning
▼
┌────────────────────┐
│ ChatGPT App / 用户 │
└────────────────────┘
随便画的简图 
mcp服务作为一个桥梁,让chatgpt知道调用我们的哪个接口,哪个服务。
Apps-sdk作为一个工具,让我们快速建立一个mcpServer
用户交互
当Chatgpt中有多个类似的应用时,Chatgpt怎么知道要调用你的服务?
官方的解释如下 developers.openai.com/apps-sdk/co...
Discovery(发现)
一、命名提及(Name Invocation)
最直接的方式。
当用户在对话中明确提到你的应用名称时,模型会自动识别并在响应中调用该应用。
例子:
用户说「帮我用 任务助理 查一下今天的任务」,ChatGPT 会立即调用你注册的 "任务助理" 应用。
二、会话探索(Conversation Exploration)
如果用户一开始没有提到你的应用名称 ,模型会在用户发送 Prompt 时动态评估,决定是否调用。
这个评估过程综合了以下几个维度:
- 对话上下文
包括聊天历史、已使用的工具结果、用户记忆、偏好等。
例如:之前用户聊过"任务管理",模型会倾向再次使用"任务类"工具。
- 名词提及与引用
模型会分析 Prompt 中的名词(例如"谷歌"、"美团"),判断是否与某个应用相关。
若你的 App 在搜索结果中频繁被引用,也会提升触发概率。 - 工具元数据(Metadata)
也就是你在 MCP 服务中提供的名称、描述、参数说明。
元数据清晰准确,会显著提高模型理解你工具用途的可能性。 - 用户关联状态(User Linking)
模型会判断用户是否已连接或授权你的 App,若未授权,ChatGPT 会提示连接后再使用。
三、使用目录进行选择(Directory Invocation)
如果用户主动从 ChatGPT 的App 目录中选择你的应用 ,则会直接建立交互。
这是一种显式触发方式,常用于用户已经了解应用功能的场景。
如何提高你的 App 被发现和调用的概率?
要让 ChatGPT 更"聪明地"找到并使用你的服务,可以从以下几个方向优化:
1. 让提示词更"行动化"
模型对行动导向 的请求反应更灵敏。
例如,不要问「你知道任务什么时候过期吗?」
而要说「帮我查一下这个任务什么时候过期」。
这样模型更容易判断需要调用"任务查询类"App。
2. 优化工具描述(Metadata)
在工具元数据中,用自然语言准确描述工具行为和输出形式 。
例如:
"这个工具会展示一个任务列表表格,用户可以点击查看详情。"
模型在理解元数据时,会建立"用途-表现"映射,从而更精准地匹配场景。
3. 定期在开发者模式中测试
OpenAI 为开发者提供了 ChatGPT 的开发者模式(Developer Mode) ,
你可以在其中测试模型的应用发现行为:
- 精确率(Precision): 模型是否在合适的时候选中了你的工具?
- 召回率(Recall): 是否遗漏了一些本该调用你的工具的场景?
通过测试和迭代描述,你能逐步提高模型的理解能力和触发率。
应用设计指南
我的理解是,这个部分主要是定义了一些规范以及建议,如何让你的应用能够更好的嵌入到Chatgpt中 这里不做过多解释了,可以直接看原文developers.openai.com/apps-sdk/co...
如何让Chatgpt展示我们自己的UI页面
这部分就是文章一开始的时候介绍的,如何让Chatgpt能够更好的展示我们自己的AI页面的能力。
过去,我们和 ChatGPT 互动的方式非常单一:
------你输入一句话,它输出一段文字。
这是一种 对话式接口(conversational interface) 。
但是,当我们在 ChatGPT 里使用工具(tools)或调用外部系统时,这种"纯文本交互"逐渐暴露出几个明显的局限:
- 表达力不够
比如一个订票工具、地图搜索、报表生成器,只用文字展示结果太粗糙。
用户想看到「列表」「图片」「图表」「地图」「状态」等结构化结果。 - 交互性不足
文本交互意味着用户每一步都要"说出来",无法直接点击或滑动操作。
想要调整筛选条件、修改结果、刷新内容,都要重新输入指令。 - 缺乏视觉一致性
不同工具输出风格各异,体验割裂;
有的返回 JSON、有的返回 markdown、有的返回图片链接,用户体验不统一。 - 上下文难管理
模型生成的结果是静态的文本,无法维持可持续交互或状态同步。
比如"选中某个结果再进一步操作",在纯对话模式下非常别扭。
于是,OpenAI 推出了 Apps SDK 中的 "Custom UX" 能力 。
它让开发者可以在 ChatGPT 内嵌自己的交互界面 ------
一个可以显示数据、接受操作、触发事件的"小应用",真正让 ChatGPT 成为一个"界面容器"。

总结
我认为APPS SDK的对于开发者,两个大的能力其实就是功能层面 和页面层面上的
| 层级 | 作用 | 举例 |
|---|---|---|
| 功能层(Action 层) | 定义工具逻辑、参数和响应(MCP Server 部分) | 查询任务列表、创建会议、获取报表 |
| 界面层(UI 层) | 定义结果如何被 ChatGPT 渲染展示 | 表格、卡片、图表、按钮、输入框等 |
但是其推出的实际意义要更大于我们着眼的开发的意义,或许下一个APP的应用市场,下一个APP的流量入口就会从大模型这里爆发。