收藏向:一文看懂企业级Agent!从0到1搭建你的“生产力军队”,赢下这场暗战!

长假期间,OpenAI在2025 DevDay宣布了一系列开发者生态的重大升级,除了我们熟知的模型能力外(如Sora2 API),最引人瞩目的是在 ChatGPT 中引入的“Apps in ChatGPT”及其SDK,及AgentKit工具集。OpenAI正试图把它的ChatGPT助手与背后的模型全面升级为一个功能完备的AI应用构建与分发平台。

本文为大家深度解读其中的三个主要工具:

  • Apps SDK:构建真正的Apps in ChatGPT
  • Agent Builder:可视化Agent工作流构建
  • ChatKit:快速集成Agent到UI应用的工具包

01 Apps SDK:构建真正的Apps in ChatGPT

Apps SDK

还记得OpenAI最早开始尝试的GPT Builder吗?它允许你构建可以通过ChatGPT访问的GPTs(后被大量模型厂家跟进,美其名曰“智能体”):

由于糟糕的体验,GPTs并没有达到预期的AI界AppStore的效果(国内很多通用AI工具中的所谓“智能体”也都是质量低下的”提示词或简单工具的包装器“),Sam Altman也承认该战略”并未奏效”,Apps SDK则是它们最新的尝试。

【Apps SDK是什么】

简单的说,Apps SDK允许开发者在 ChatGPT 中构建可以交互的“真”应用 。

用户在ChatGPT对话中可以直接“召唤出”应用。比如你可以对ChatGPT说:

Expedia帮我查询xx地区低于250$/晚的酒店大床房间

ChatGPT 就会自动在聊天中弹出Expedia的应用界面,完成指定的查询任务并将结果显示在界面上。

注意:这些应用不仅能理解自然语言指令,还能在ChatGPT的对话窗口中以富交互UI(如卡片、地图等)呈现结果,极大的丰富了 ChatGPT 的应用场景。

这种Apps in ChatGPT的开发工具就是Apps SDK。

【Apps SDK与GPT Builder的区别】

GPT Builder 和 Apps SDK 都旨在向开发者开放 ChatGPT平台与流量入口。但很显然Apps SDK开发出的Apps in ChatGPT是为了解决 GPTs 及其前身 Plugins 在用户体验和功能上的局限,将 ChatGPT 彻底转变为一个“超级应用”平台。

两者区别主要体现在交互、技术基础和应用深度等,我们用一张表格总结:

总的来说,Apps SDK的定位是让开发者将现有应用无缝带入 ChatGPT,对用户而言,这些应用就像聊天对话的一部分,在某个对话时机智能出现。它们是可自然语言交互的“真”App,而非简单的提示词加函数调用的增强LLM。

【Apps SDK初体验】

Apps SDK构建在开放的MCP标准之上。其使用方法为:

开发者通过MCP Server向 ChatGPT 声明一系列工具(Tools),并返回结构化数据和交互式UI部件。使用者在与ChatGPT对话时,由ChatGPT自动判断、建议、并调用MCP工具来完成与第三方后端应用的交互,并更新最新的上下文。

一个遵循Apps SDK要求的MCP Server样例:

import { McpServer } from"@modelcontextprotocol/sdk/server/mcp.js";// 创建一个 MCP 服务器实例const server = new McpServer({  name: "my-server",  version: "1.0.0"});// 注册一个工具(这里工具名为 kanban-board)server.registerTool("kanban-board",  {    title: "Show Kanban Board",    inputSchema: { tasks: z.string() } // 输入参数结构_meta: {      //  meta中指定交互界面模板 URI      "openai/outputTemplate": "ui://widget/kanban-board.html",      "openai/toolInvocation/invoking": "Loading board...",      "openai/toolInvocation/invoked": "Board is ready!" }} async () => {    const board = await loadKanbanBoard(); // 自定义函数获取数据    return {      structuredContent: {        // 返回结构化数据供前端渲染      ......      },      content: [{ type: "text", text: "Here is your updated Kanban board." }],    };  });

上述代码示例演示了一个 MCP Server 的核心部分:创建服务器、注册工具、并在工具调用时返回结果。这里:

  • structuredContent 字段包含了用于前端UI部件渲染的数据
  • content 字段为 ChatGPT 收到的文字输出,比如提示文字
  • _meta 字段则用来指定UI部件的模板URI(通过MCP Resource获取)

借助 Apps SDK,开发者可以用熟悉的代码定义逻辑,同时为应用编写自定义的交互界面(通过注册前端组件 URI)。

准备好App后,你可以提交给OpenAI(暂未开通),获取商业收益。

02

Agent Builder:可视化Agent工作流构建器

Agent Builder

即使变身“超级应用”的ChatGPT再强大,很多时候你还是需要定制化的Agent来处理复杂自动化任务。所以,OpenAI推出了Agent Builder。

【Agent Builder是什么】

一个面向开发者和企业的可视化Agent工作流构建的低代码工具。

相信用过n8n、Dify、Coze的对此不会陌生:提供拖拽式节点画布,让用户通过“所见即所得”的方式编排多个LLM调用、Agent、工具和逻辑关系,无需手动写复杂的代码 。每个节点可以是一次工具调用、一个分类/决策器、亦或是一个子代理。

Agent Builder 支持版本管理预览测试内联评估配置 等功能,方便快速迭代。(预览、评估等功能需要认证)

【Agent Builder有什么不同】

Agent Builder、Dify 和 Coze等都是用于构建Agent工作流的低代码平台。或许在功能丰富度、第三方(模型、向量库、插件等)兼容度等方面,Agent Builder还处于劣势,不过从笔者的体验看,它的最大特点是:

简洁、专注核心问题、与OpenAI生态集成但又保留了开放性。

一些令人印象深刻的特点:

  • 平台托管+本地部署的双模式

Agent Builder 与开源的OpenAI Agents SDK共享底层逻辑。因此你可以将可视化的工作流导出成开源Agents SDK的原生代码,从而脱离OpenAI的平台。你可以用代码对Agent Builder无法实现的功能做扩展后自由部署。对开发者而言,既可以享受低代码的效率,又能获得最大的代码控制权和自行部署的能力。

  • 原生企业级安全防护(Guardrails)

提供了一个模块化的安全节点,用于实时检测和预防越狱攻击(Jailbreaks)、屏蔽或标记 PII(个人身份信息)等,而无需依赖于自定义提示或第三方工具。Guardrails也是OpenAI Agents SDK的重要特性。

  • 内建的 Agent 性能评估(Evals)

OpenAI提供了Evals评估工具集,数据集、跟踪评分和自动化提示优化功能 。这种原生的、与 Agent 运行时深度绑定的评估能力,允许开发者精确地衡量和优化 Agent 的准确性和可靠性,这是现有很多低代码平台所没有的。

  • 与前端应用的快速集成能力

Agent与前端应用的集成,通常涉及到较麻烦的流输出、事件跟踪、并发管理等。通过与另一个重要模块ChatKit的集成,Agent Builder可以极大的简化这一工作。比如,你可以指定某个节点处理事件是否反馈到前端UI。

【Agent Builder初体验】

在OpenAI的开发者平台登录,进入Agent Builder工作区,选择一个简单的模板来构建一个测试Agent:

选择”规划助手“这个模板,进入Agent流设计界面。整个操作逻辑与常见的Agent低代码平台类似:

可供选择的工作流节点主要是四类:

  • Core:核心的Agent节点。用来定义带有Tools使用能力的“增强型”LLM调用,工具包括搜索、代码解释器、MCP等。
  • Tools: 直接的工具调用模块。包括文件搜索(需要在OpenAI创建向量库)、Guardrails(安全模块),以及MCP工具。
  • Logic:逻辑控制模块。用来控制条件分支、循环体、以及人类参与节点(HITL,Human-in-the-Loop)。
  • Data: 数据处理节点。用来做一些状态变量的设置与数据转换。

注意对第三方应用的插件/工具支持都统一通过MCP实现。

对这个工作流稍作修改与编排后,可以进行预览和评估(认证客户)后发布。

那么如何将创建的工作流部署到自己的应用呢?

点击”Get Code“按钮,可以看到有两种选项:ChatKit和Agents SDK。这就是对应上面我们说的”双模式“部署。

  • ChatKit:Agent在OpenAI托管,你的客户端使用ChatKit与其集成。
  • Agents SDK:获得Agents SDK的原生代码,自由扩展与本地部署。

ChatKit在下一节介绍,这里选择Agents SDK,就可以获得工作流代码。打开后可以看到这是一个完整的Agents SDK的开发代码,核心为run_workflow函数:

...class WorkflowInput(BaseModel):  input_as_text: str# Main code entrypointasync def run_workflow(workflow_input: WorkflowInput):  state = {  }  workflow = workflow_input.model_dump()...

现在你可以自由修改Agent,比如,你想替换使用第三方的模型API后测试这个Agent:

async def main():   #替换默认的模型客户端,这里可以提供第三方的API URL   client = AsyncOpenAI(            api_key=<api_key>,            base_url=<base_url>        )        # 设置为默认客户端    set_default_openai_client(client, use_for_tracing=False)    set_tracing_disabled(True)    # 创建工作流输入    workflow_input = WorkflowInput(        input_as_text="我想在未来6个月内启动一个新的AI产品线,目前有5个工程师和50万预算。"    )            try:        result = await run_workflow(workflow_input)    ...

运行代码测试工作流:

所以,即使你无法将Agent托管在OpenAI,你也可以使用Agent Builder:将其作为一个纯粹的代码可视化设计与生成工具(基于OpenAI Agents SDK)。

03

ChatKit:快速集成Agent到UI应用的工具包

ChatKit

Agent Builder 负责复杂的后端逻辑,但Agent 要投入使用,还需要一个美观、友好的交互界面来处理用户输入和 Agent 输出。ChatKit 正是为此而设计。

我们曾经介绍过一个极其类似的产品CopilotKit:

实战 CopilotKit:快速集成前端UI与后端Agent的神器【上】

实战 CopilotKit:生成式 UI 与集成 Human-in-the-Loop【下】

【ChatKit是什么】

ChatKit是用来集成OpenAI Agent与前端UI应用的工具包。

ChatKit用来解决Agent与UI集成中的一些复杂挑战。包括流式响应的处理、高效管理会话线程;并设计更引人入胜的、深度融合的交互体验,是将 Agent的核心逻辑与最终用户无缝衔接的关键环节。

【ChatKit如何使用】

方式一:前端嵌入ChatKit+OpenAI托管Agent

也就是上节提到的Agent托管部署方式:Agent在OpenAI托管运行,前端UI通过ChatKit与Agent直接通信。

这种模式你只需要前端引入ChatKit-JS模块。

简单了解该模式的使用步骤:

  1. 实现一个本地服务端点:传入您的托管Agent工作流 ID,并借助OpenAI的API创建Session,成功后返回一个客户端秘钥。
  2. 把ChatKit嵌入到前端应用,并通过上述端点初始化。

方式二:前端嵌入ChatKit+任意的后端Agent

你可以使用本地部署的Server+自定义的Agent+自定义的身份验证,把ChatKit作为开源的集成框架,完全控制其使用方式。

这种模式下你需要使用后端的ChatKit Python SDK来配合前端ChatKit。

该模式的使用过程:

  1. 后端:实现一个ChatKitServer类及respond接口,在该接口中调用自己的Agent,并输出流事件。
  2. 后端:实现服务器端点(比如FastAPI),将请求交给ChatKitServer响应。
  3. 客户端:UI应用中嵌入ChatKit,通过FastAPI端点进行通信。
  4. 扩展功能:比如Agent可以调用客户端的Tool、服务端可以将Agent结果渲染成UI小部件(Widget)返回等。

【ChatKit初体验】

借助OpenAI的一个例子来体验ChatKit(显然方式二更适合我们)。

1: 实现ChatKitServer

定义一个派生自 ChatKitServer 的服务类,实现respond方法以处理用户输入,并返回聊天事件流。通用的代码逻辑为:

from chatkit.server import ChatKitServer, ThreadMetadata, UserMessageItemfrom agents import Agent, Runnerfrom chatkit.agent import stream_agent_response, simple_to_agent_input, AgentContextclass MyChatKitServer(ChatKitServer):    # 定义一个简单的Agent(当然也可以是其他Agent)    assistant_agent = Agent(        name="Assistant",        instructions="You are a helpful assistant"    )    async def respond(self, thread: ThreadMetadata, input: UserMessageItem | None, context):        # 为当前对话创建上下文        agent_context = AgentContext(thread=thread, store=self.store, request_context=context)        # 将输入转换成 Agents SDK 可用的格式        agent_input = await simple_to_agent_input(input) if input else []        # 运行Agent并获取流式结果        result_stream = Runner.run_streamed(self.assistant_agent, agent_input, context=agent_context)        # 将代理输出的事件逐个发回 ChatKit        asyncfor event in stream_agent_response(agent_context, result_stream):            yield event
  1. 实现服务器端点

负责把客户端请求转交给ChatKitServer。比如:

@app.post("/chatkit")async def chatkit_endpoint(    request: Request, server: MyChatKitServer = Depends(get_chatkit_server)) -> Response:    payload = await request.body()    result = await server.process(payload, {"request": request})    if isinstance(result, StreamingResult):        return StreamingResponse(result, media_type="text/event-stream")    if hasattr(result, "json"):        return Response(content=result.json, media_type="application/json")    return JSONResponse(result)
  1. 客户端嵌入ChatKit

简单配置即可在应用中嵌入一个ChatKit聊天助手,与后端的Agent对话:

const chatkit = useChatKit({    api: { url: CHATKIT_API_URL, domainKey: CHATKIT_API_DOMAIN_KEY },...  return (    <div className="relative h-full w-full overflow-hidden border border-slate-200/60 bg-white shadow-card dark:border-slate-800/70 dark:bg-slate-900">      <ChatKit control={chatkit.control} className="block h-full w-full" />    </div>  );...
  1. 测试效果

分别启动前后端。访问前端URL,就会出现ChatKit的对话助手:

  1. 高级功能

OpenAI提供了很多组件帮助实现更易于交互的前端UI小部件(Widget)。你可以在前端使用,也可以后端将Agent输出渲染成小部件直接返回。

为了方便设计与共享Widget,OpenAI提供了一个Widget Builder。比如我们设计一个天气卡片:

将这个Widget的JSON导出,然后在服务端借助ChatKit Python SDK可以将渲染后的天气卡片返回到客户端。这是测试的客户端效果:

除此之外,你还可以自定义存储(线程、消息、附件等)、鉴权流程、实现Agent调用客户端工具(Client Tool)等高级能力。

04

总结:OpenAI的AI大平台战略

OpenAI

以上我们学习与体验了此次OpenAI发布的几大“平台战略”中的产品。最后做一个简单总结:

Apps SDK 负责将外部应用作为工具引入 ChatGPT 客户端;但如果开发者需要创建自己的Agent应用,就可以利用 Agent Builder 来实现其核心逻辑;而构建出Agent若需快速集成到自有产品中,则可通过 ChatKit 来实现,从而保证了从后端逻辑到前端交互的完整闭环。

需要注意的是,Agent Builder与ChatKit都是AgentKit的一部分;它们与即将推出的Connector Registry(集中管理数据源与工具)、Evals构成完整的Agent开发、部署与优化平台。

很显然,OpenAI正在为其设想的“Agent经济”奠定事实上的"AI操作系统"和开发工具包。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

END

推荐学习本公众号最新出版的作品:

📘《MCP原理揭秘与开发指南——构建可扩展的AI智能体》

详情点击下方链接

识别以下名片

加入公众号交流群(说明来意)

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值