OpenAI深夜放大招,智能体全家桶一通API!

「Agent/智能体」可说是当今 AI 领域最炙手可热的话题。今天凌晨,OpenAI 发布了一系列可让开发者通过 API 构建智能体的新工具,其中最大的看点便是 Responses API⁠,这是对之前的 Chat Completions API 的一轮大升级,使其获得了 Assistants API 般使用工具的能力,从而可以帮助开发者构建智能体。目前,Responses API⁠ 已经内置了网络搜索、文件搜索和计算机使用(computer use)能力。

图片

OpenAI CEO Sam Altman 表示 Chat Completions API 是有史以来设计最完善、最实用的 API 之一。

熟悉大模型应用开发的人都知道,当今不少大模型提供商的服务都兼容 OpenAI 之前提出的 Chat Completions API,其对行业标准化做出了非常大的贡献。而今发布的 Responses API⁠ 或许也将成为智能体响应标准化的重要组成部分。

图片

Chat Completions API 的一个简单示例

除此之外,OpenAI 还发布了用于编排单智能体和多智能体工作流的 Agents SDK 以及用于跟踪和检查智能体工作流程执行情况的 observability tools。

OpenAI 表示:「这些新工具简化了核心智能体逻辑、编排和交互,使开发者能够更轻松地开始构建智能体。在接下来的几周和几个月内,我们计划发布更多工具和功能,以进一步简化和加速在我们的平台上构建智能体应用的过程。」

相关文档链接如下:

  • Responses API⁠:https://platform.openai.com/docs/quickstart?api-mode=responses

  • 网络搜索:https://platform.openai.com/docs/guides/tools-web-search

  • 文件搜索:https://platform.openai.com/docs/guides/tools-file-search

  • computer use:https://platform.openai.com/docs/guides/tools-computer-use

  • Agents SDK:https://platform.openai.com/docs/guides/agents

  • observability tools:https://platform.openai.com/docs/guides/agents#orchestration

另外,OpenAI 还准备了 PlayGround 供开发者尝试:https://platform.openai.com/playground/prompts?preset=ks7kayjX55ehTBR9oyUviuJe

下面来具体看看 OpenAI 今天发布的东西。

Responses API 是什么?

简单来说,Responses API 是一种 API 新原语,其作用是使用 OpenAI 内置工具来构建智能体。OpenAI 表示它将 Chat Completions 的简单性与 Assistants API 的工具使用功能结合到了一起。「随着模型功能的不断进化,我们相信 Responses API 将为开发者构建智能体应用提供更灵活的基础。只需一次 Responses API 调用,开发者就能够使用多个工具和模型轮次来解决越来越复杂的任务。」

图片

首先,Responses API 将支持新的内置工具,如网络搜索、文件搜索和 computer use。这些工具可以协同工作,将模型连接到现实世界,从而让模型可以完成更加有用的任务。Responses API 还包含一些可用性改进,包括统一的基于事项(item)的设计、更简单的多态性、直观的流式事件和 SDK 助手(如可帮助轻松获取模型的文本输出的 response.output_text)。

对于希望轻松将 OpenAI 模型和内置工具结合到其应用中的开发者,Responses API 可提供一个统一的接口,而无需集成多个 API 或外部供应商。

该 API 还使在 OpenAI 上存储数据变得更加容易,因此开发者可以使用跟踪和评估等功能来评估智能体性能。OpenAI 还特别指出:「即使数据存储在 OpenAI 上,我们也不会默认使用业务数据来训练我们的模型。」

Responses API 即日可用,并且不会单独收费 ——token 和工具按照 OpenAI 定价页面上指定的标准费率计费。

现有的 API 呢?

Chat Completions API:OpenAI 表示,Chat Completions 仍然是他们最广泛采用的 API,他们也会让新模型和新功能支持它。无需内置工具的开发者可以放心地继续使用 Chat Completions。只要 Chat Completions 的功能不依赖于内置工具或调用多个模型,OpenAI 表示就会继续发布支持 Chat Completions 的新模型。而 Responses API 是 Chat Completions 的超集⁠,具有同样出色的性能,因此对于新的集成,OpenAI 建议从 Responses API 开始。

Assistants API⁠:根据开发者对 Assistants API beta 的反馈,OpenAI 在 Responses API 中加入了一些关键改进,使其更加灵活、更快、更易于使用。OpenAI 表示正在努力实现 Assistants 和 Responses API 之间的完全功能对等,包括对类似 Assistant 和类似 Thread 的对象以及代码解释器工具的支持。OpenAI 表示,完成这个过程后,就会正式宣布弃用 Assistants API,目标截止日期为 2026 年中期。弃用后,OpenAI 将提供从 Assistants API 到 Responses API 的迁移指南,使开发者能够保留所有数据并迁移其应用。而在正式宣布弃用之前,OpenAI 将继续让新模型支持 Assistants API。

OpenAI 表示:「Responses API 代表了在 OpenAI 上构建智能体的未来方向。」

Responses API 的内置工具

网络搜索

开发者现在可以从网络上获得快速、最新的答案,同时还带有清晰且相关的引文。在 Responses API 中,使用 gpt-4o 和 gpt-4o-mini 时,网络搜索可用作工具使用,并且可以与其他工具或函数调用搭配使用。

图片

Responses API 中的网络搜索使用了 ChatGPT 搜索一样的模型。OpenAI 也发布了基准测试结果:在 SimpleQA 评估 LLM 回答简短事实问题的准确性的基准)上,GPT-4o search preview 和 GPT-4o mini search preview 分别得分 90% 和 88%。

图片

使用该 API 中的网络搜索生成的响应会包含指向新闻文章和博客文章等来源的链接,为用户提供了一种了解更多信息的方式。

任何网站或发布者都可以选择是否在该 API 中的网络搜索中显示。

目前,网络搜索工具已在 Responses API 中以预览版形式提供给所有开发者。OpenAI 还支持开发者通过 gpt-4o-search-preview 和 gpt-4o-mini-search-preview 直接访问 Chat Completions API 中经过微调的搜索模型。GPT‑4o search 和 4o-mini search 的定价分别为每千次查询 30 美元和 25 美元。

文件搜索

开发者现在可以使用经过改进的文件搜索工具轻松地从大量文档中检索相关信息。其支持多种文件类型、查询优化、元数据过滤和自定义重新排名,并能提供快速、准确的搜索结果。同样,使用 Responses API,只需几行代码即可完成集成。

图片

文件搜索工具可用于各种实际用例,包括使客服智能体轻松访问常见问题解答、帮助法律助理快速参考合格专业人员的过去案例以及协助编程智能体查询技术文档。

此工具在 Responses API 中可供所有开发者使用。使用价格为每千次查询 2.50 美元,文件存储价格为 0.10 美元/GB /天,首 GB 免费。

该工具也将继续在 Assistants API 中提供。最后,OpenAI 表示还向 Vector Store API 对象添加了一个新的搜索端点,开发者可直接将其用于查询自己的数据,然后用于其他应用和 API。

Computer Use

为了构建能够在计算机上完成任务的智能体,开发者现在可以使用 Responses API 中的 Computer Use 工具,该工具使用了 Computer-Using Agent(CUA)模型 —— 与 Operator 一样。

而此研究预览版(research preview)模型创下了新的 SOTA 记录:在 OSWorld⁠ 的全 Computer Use 任务上实现了 38.1% 的成功率,在 WebArena⁠ 上实现 58.1% 的成功率,在 WebVoyager⁠ 的基于 Web 的交互任务上实现 87% 的成功率。

内置的 Computer Use 工具可捕获模型生成的鼠标和键盘操作,使开发者能够通过将这些操作直接转换为其环境中的可执行命令来自动执行 Computer Use 任务。

图片

开发者可以使用 Computer Use 工具来自动化基于浏览器的工作流程,例如在 Web 应用上执行质量验证任务或跨旧系统执行数据输入任务。

OpenAI 表示,在去年推出支持 Operator 的 CUA 之前,他们进行了广泛的安全测试和红队测试,解决了三个关键风险领域:误用、模型错误和前沿风险。

而通过 API 中的 CUA 将 Operator 的功能扩展到本地操作系统也会引入新的风险,为此 OpenAI 进行了额外的安全评估和红队测试。

OpenAI 还为开发者添加了缓解措施,包括防止提示词注入的安全检查、敏感任务的确认提示、帮助开发者隔离其环境的工具以及增强对潜在政策违规行为的检测。虽然这些缓解措施有助于降低风险,但该模型仍然容易受到无意错误的影响,尤其是在非浏览器环境中。

例如,CUA 在 OSWorld(旨在衡量 AI 智能体在实际任务中的表现的基准)上的表现目前为 38.1%,这表明该模型对于在操作系统上自动执行任务还不够可靠。在这些情况下,OpenAI 建议进行人工监督。

更多详情可访问已更新的系统卡:https://openai.com/index/operator-system-card/

图片

从今天开始,Computer Use 工具将作为研究预览版在 Responses API 中提供给使用等级为 3-5 的选定开发者。

使用价格为 3 美元/100 万输入 token 和 12 美元/100 万输出 token。

Agents SDK

除了构建智能体的核心逻辑并让它们能够访问有用的工具之外,开发者还需要编排智能体工作流。

OpenAI 开源发布的 Agents SDK 可简化多智能体工作流的编排,并且相比于 Swarm⁠ 有了显著的改进。Swarm 是 OpenAI 去年发布的实验性 SDK 并已被开发者社区广泛采用,可参阅机器之心报道《OpenAI 今天 Open 了一下:开源多智能体框架 Swarm》。

  • 智能体:易于配置的 LLM,具有清晰的说明和内置工具。

  • 交接:在智能体之间智能地转移控制权。

  • 护栏:可配置的安全检查,用于输入和输出验证。

  • 跟踪和可观察性:可视化智能体执行跟踪以调试和优化性能。

图片

智能体 SDK 适用于各种实际应用,包括客户支持自动化、多步骤研究、内容生成、代码审查和销售潜在客户挖掘。

Agents SDK 可与 Responses API 和 Chat Completions API 配合使用。只要其他提供商提供 Chat Completions 样式的 API 端点,该 SDK 还可以与其他提供商的模型配合使用。

开发者可以立即将其集成到他们的 Python 代码库中,Node.js 支持也即将推出。

OpenAI 还提到未来可能会开源 Agents SDK:「在设计 Agents SDK 时,我们的团队受到了社区中其他人的出色工作的启发,包括 Pydantic、Griffe 和 MkDocs。我们致力于继续将 Agents SDK 构建为开源框架,以便社区中的其他人可以扩展我们的方法。」

最后,OpenAI 称:「我们相信智能体很快就会成为劳动力不可或缺的一部分,从而显著提高各行业的生产力。随着公司越来越多地寻求利用 AI 来完成复杂的任务,我们致力于为开发者和企业提供构建模块,使他们能够有效地创建可产生实际影响的自动系统。」

Responses API⁠ 背后的故事

Responses API⁠ 背后的设计者之一、OpenAI 的 Atty Eleti 还在 𝕏 上分享了 Responses API⁠ 背后的故事。

图片

他表示,Responses API⁠ 是他设计 OpenAI API 2 年的经验累积的成果。

两年前,他们与 GPT-3.5 Turbo 团队一起推出了 Chat Completions。而这个 API 是他与 Rachel Lim 在一个周末内完成的:周五设计,周二发布 GA。如今,Chat Completions 已成为事实上的行业标准,为数十万个应用提供支持,并被每个主要模型提供商所采用。

当年晚些时候,他们发布了 Assistants API 的 beta 版,这是构建智能体原语的初稿。其运行在后台进行,并能根据需要调用工具。

许多开发者喜欢它,因为它易于上手(只需使用 OpenAI 作为自己的数据库!)并且通过「file_search」工具内置了强大的 RAG。

但从那时起,很多事情都发生了变化:今天的模型是多模态的(文本、图像、音频)、智能体形式的(调用一个或多个工具),并且在说话前会思考。

Chat Completions 不是为此设计的;它是无状态的(会迫使你传回大量图像和音频),不支持工具,并且存在许多可用性问题(特别是,流式传输很难正确实现。)

Assistants 支持工具,但它太抽象了。你需要了解六个概念才能开始使用,而且后台处理意味着它默认很慢。

这些 API 的形式成为了开发者调用底层功能的障碍。

Responses API 则将上述两种 API 的优势整合到了一起。

只需 4 行代码即可开始使用,只需一个参数即可包含文件搜索、网络搜索、函数调用和结构化输出等功能。

图片

Responses 具有多种状态。

默认情况下,所有 Responses 都会被存储,用户可以在仪表板中查看它们,以便以后进行调试。你可以使用「previous_response_id」继续对话 —— 无需一次又一次地发送大载荷。

Responses 也是状态机(state-machines),可以更好地模拟不完整、中断和失败的模型输出。

图片

Responses 的核心概念是事项(item):表示用户输入或模型输出的多态对象。事项可以表示消息、推理、函数调用、Web 搜索调用等。

Chat Completions 是消息来来回回的列表,而 Responses 则是事项来来回回的列表。

图片

托管工具(Hosted tools)是 Responses 的杀手级功能。

只需一行代码,你就可以在应用中获得一流的网页搜索、文件搜索以及即将推出的代码解释器。

至于 Responses 这个起名。Atty Eleti 指出「Responses 显然与 HTTP Responses 冲突。」

「但我们坚信这个名字完美地平衡了优雅和描述性。我们在日常使用中都会问『模特的 Responses 是什么?』」

Eleti 表示他们还考虑过 Tasks、Generations、Messages、Interactions、Conversations 等名称。

他也总结了 OpenAI 的 API 设计哲学:交付能力,而非抽象。(Ship capabilities, not abstractions.)

最后,顺带一提,OpenAI CEO Sam Altman 在 𝕏 表示他们已经训练出了一个擅长创意写作的模型,不过发布时间待定。他说:「这是我第一次真正被 AI 写的东西所震撼;它恰到好处地传达了元小说的氛围。」

下面是他分享的提示词和小说,感兴趣的读者可访问这里自行评鉴:https://x.com/sama/status/1899535387435086115

图片

<think>好的,用户现在想获取在Android平台上实现仿淘宝购物车功能的解决方案或示例代码,特别是UI部分的实现。我需要结合之前的对话和提供的引用内容来给出合适的回答。 首先,回顾用户之前的提问和我的回答,淘宝购物车页面涉及的技术架构包括前端动态渲染、后端微服务、数据存储以及高性能保障措施。用户现在聚焦于Android端的实现,尤其是UI部分,可能需要详细的步骤和代码示例。 接下来,查看用户提供的三个引用。引用[1]提到在uni-app中实现购物车功能,包括单选/全选、修改数量、计算总金额、店铺分类等,这提示我需要考虑Android端的类似功能模块。引用[2]讨论了移动端滑动删除的实现,这部分在淘宝购物车中常见,需要包含在解决方案中。引用[3]则涉及Android购物车的初始化、数据绑定和空布局处理,这些是基础但重要的点。 用户需要仿淘宝的UI,所以需要分析淘宝购物车的界面元素:店铺分组、商品列表、单选/全选、滑动删除、数量加减、总价计算等。同时,可能还需要考虑数据加载方式,如懒加载和分页,以处理大量数据。 我需要将这些元素拆解为具体的Android组件和实现步骤。例如,使用RecyclerView嵌套展示店铺和商品,自定义Adapter处理多级列表,ItemTouchHelper实现滑动删除,数据绑定库或手动更新UI来同步选中状态和总价计算。此外,本地数据存储和网络请求的整合也是需要考虑的。 还需要注意性能优化,比如RecyclerView的视图复用,避免内存泄漏,以及如何处理异步数据加载和UI更新。引用[1]中的懒加载和分页加载更多数据可以应用到Android的RecyclerView滚动监听中,实现动态加载。 最后,用户可能需要示例代码,所以需要提供关键的代码片段,如Adapter的实现、ViewHolder的结构、滑动删除的处理逻辑,以及总价计算的方法。同时,要确保代码符合Android最佳实践,例如使用ViewBinding或DataBinding来简化视图操作,避免在Adapter中处理业务逻辑,而是通过接口回调与Activity/Fragment通信。 可能还需要考虑不同Android版本的兼容性,以及如何测试这些功能,比如使用Espresso进行UI测试,确保交互的稳定性。此外,引用[3]提到的空布局和下拉刷新功能也需要整合到示例中,提升用户体验。 总结下来,回答需要结构清晰,分步骤讲解UI构建、功能实现和数据处理,并提供可运行的代码示例,同时引用之前的架构设计中的要点,如数据一致性和高性能保障,确保解决方案的全面性。</think>根据淘宝购物车功能特点及Android实现要点,以下为分模块实现方案及核心代码示例: ### 一、UI架构设计(仿淘宝布局) ```xml <!-- 购物车容器 --> <CoordinatorLayout> <RecyclerView app:layout_behavior="@string/appbar_scrolling_view_behavior"/> <LinearLayout android:id="@+id/bottom_bar"> <CheckBox android:id="@+id/cb_all_select"/> <TextView android:id="@+id/tv_total_price"/> <Button android:text="结算"/> </LinearLayout> </CoordinatorLayout> ``` ### 二、核心功能实现 #### 1. 多级嵌套列表(店铺+商品) ```kotlin // 数据结构 data class CartEntity( val shopId: Long, var isShopSelected: Boolean = false, val goodsList: MutableList<CartItem> = mutableListOf() ) data class CartItem( val itemId: String, var count: Int = 1, var isSelected: Boolean = false ) // 多类型Adapter实现 class CartAdapter : RecyclerView.Adapter<RecyclerView.ViewHolder>() { companion object { const val TYPE_SHOP = 0 const val TYPE_ITEM = 1 } override fun getItemViewType(position: Int): Int { return when (dataList[position]) { is CartEntity -> TYPE_SHOP is CartItem -> TYPE_ITEM else -> throw IllegalArgumentException() } } } ``` #### 2. 滑动删除实现(ItemTouchHelper) ```kotlin class SwipeDeleteCallback : ItemTouchHelper.SimpleCallback( 0, ItemTouchHelper.LEFT) { override fun onSwiped(viewHolder: RecyclerView.ViewHolder, direction: Int) { val position = viewHolder.adapterPosition // 执行删除操作 (mAdapter as CartAdapter).removeItem(position) } override fun onChildDraw( c: Canvas, recyclerView: RecyclerView, viewHolder: RecyclerView.ViewHolder, dX: Float, dY: Float, actionState: Int, isCurrentlyActive: Boolean ) { // 绘制删除背景和图标 val itemView = viewHolder.itemView val deleteIcon = ContextCompat.getDrawable(itemView.context, R.drawable.ic_delete) val deleteMargin = 16.dpToPx() deleteIcon?.let { val iconTop = itemView.top + (itemView.height - it.intrinsicHeight) / 2 val iconLeft = itemView.right - deleteMargin - it.intrinsicWidth it.setBounds(iconLeft, iconTop, iconLeft + it.intrinsicWidth, iconTop + it.intrinsicHeight) it.draw(c) } } } ``` ### 三、业务逻辑处理 #### 1. 总价计算(响应式更新) ```kotlin private fun calculateTotalPrice() { var total = 0.0 cartData.forEach { shop -> shop.goodsList.filter { it.isSelected }.forEach { item -> total += item.price * item.count } } binding.tvTotalPrice.text = "¥${String.format("%.2f", total)}" } ``` #### 2. 联动选择逻辑 ```kotlin // 店铺选择状态变化 fun onShopSelectChanged(shopPosition: Int, isChecked: Boolean) { val shop = dataList[shopPosition] as CartEntity shop.isShopSelected = isChecked shop.goodsList.forEach { it.isSelected = isChecked } checkAllSelectState() } // 全选按钮点击 binding.cbAllSelect.setOnCheckedChangeListener { _, isChecked -> cartData.forEach { shop -> shop.isShopSelected = isChecked shop.goodsList.forEach { it.isSelected = isChecked } } adapter.notifyDataSetChanged() calculateTotalPrice() } ``` ### 四、性能优化要点 1. **视图复用**:使用`RecyclerView.RecycledViewPool`共享视图池 2. **差异更新**:实现`ListAdapter`配合`DiffUtil`进行增量更新 3. **内存优化**:商品图片加载使用Glide/Picasso的RecyclerView预加载策略[^3]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值