OpenAI 发布 Swarm:用于构建、编排和部署多智能体系统的实验性 AI 框架

在快速发展的人工智能世界中,开发人员面临的一个紧迫挑战是协调复杂的多智能体系统。这些系统涉及多个 AI 智能体协同工作,通常在协调、控制和可扩展性方面存在重大困难。当前的解决方案往往很繁重,需要大量资源分配,这使部署和测试变得复杂。AI 模型就像 CPU;Ag...
继续阅读 »

在快速发展的人工智能世界中,开发人员面临的一个紧迫挑战是协调复杂的多智能体系统。这些系统涉及多个 AI 智能体协同工作,通常在协调、控制和可扩展性方面存在重大困难。当前的解决方案往往很繁重,需要大量资源分配,这使部署和测试变得复杂。


AI 模型就像 CPU;Agent就是程序:这里有一个很好的类比:你可以将人工智能模型(如 GPT)视为CPU它本身非常强大,但如果没有程序(或代理)在其上运行,CPU 就无法解决特定问题。在这个类比中,代理就像程序一样,旨在利用模型的功能来执行目标任务。
例如,一个模型可能能够回答任何类型的问题,但如果您希望它同时处理客户服务和技术支持,则需要将这些角色分解为专门的代理。这使系统能够有效地分配工作,确保每个任务都由最适合该工作的代理来处理。



OpenAI 推出了Swarm Framework,作为简化多智能体编排固有复杂性的解决方案。Swarm 是一个实验性框架,专注于使智能体协调、执行和测试既轻量又高度可控。目标是让开发人员能够以直接高效的方式管理多个 AI 智能体之间的交互。这个框架已经开发了几个月,OpenAI 现在很高兴将其公开分享,希望它能被 AI 社区接受,成为构建高级 AI 系统的实用工具。

eb8cb57b62222a3cf2b1501f2f7d02b8.png

">

Swarm 的优势在于它的两个基本抽象:agents和handoffs(交接)。Swarm 中的代理是可用于完成任务的特定指令和工具的组合。在其流程的任何阶段,代理都可以将对话或任务“交接”给另一个代理,从而使编排变得无缝和模块化。这种抽象不仅可以实现不同代理之间的复杂交互,还可以确保整体协调始终处于严格控制之下。通过利用这些元素,Swarm 能够保持协调和执行过程的轻量级,使其成为一个高度可测试的框架。此外,Swarm 建立在 ChatCompletions 之上,它提供了一个强大而多功能的基础,使开发人员能够创建和部署多代理系统而无需不必要的开销。


Swarm 框架之所以重要有几个原因。首先,它提供了一种简化的方式来管理代理通信并在代理之间动态转移职责。这在不同 AI 代理专门从事不同任务的场景中至关重要,需要一种有组织且高效的交接机制。Swarm 的轻量级方法意味着开发人员可以轻松地迭代、测试和改进多代理配置,而不会被复杂的基础设施要求所困扰。此外,Swarm 的高度可控性意味着它是希望确保 AI 代理编排可靠性和效率的研究人员和开发人员的理想选择。通过保持简单、可控和高效,Swarm 代表着向让更广泛的开发者社区更容易使用高级 AI 系统迈出了重要一步。


总之,OpenAI 的 Swarm 框架旨在通过专注于简单性和可控性来克服多智能体系统编排中的重大挑战。通过提供基于智能体交互和任务交接的轻量级基础设施,Swarm 不仅使多智能体编排成为可能,而且适用于广泛的用例。随着多智能体系统继续在 AI 研究和应用中发挥关键作用,像 Swarm 这样的工具将降低障碍、提高可访问性,并最终实现更强大、更通用的 AI 解决方案的开发。无论是出于研究、产品开发还是教育目的,Swarm 都提供了一个激动人心的机会,可以以高效、精简的方式探索协调的多智能体 AI 的可能性。


安装

pip install git+ssh://git@github.com/openai/swarm.git


或者

pip install git+https://github.com/openai/swarm.git


用法

from swarm import Swarm, Agent
client = Swarm()
def transfer_to_agent_b():
return agent_b
agent_a = Agent(
name="Agent A",
instructions="You are a helpful agent.",
functions=[transfer_to_agent_b],
)
agent_b = Agent(
name="Agent B",
instructions="Only speak in Haikus.",
)
response = client.run(
agent=agent_a,
messages=[{"role": "user", "content": "I want to talk to agent B."}],
)
print(response.messages[-1]["content"])



在这个场景中,代理 A开始对话,但意识到用户需要它无法提供的东西。它将对话转交给代理 B,后者用俳句回复。这个简单的交接演示了 Swarm 中的代理如何协作解决用户问题。


Hope glimmers brightly,New paths converge gracefully,What can I assist?

Swarm只是探索多智能体系统的众多工具之一。Microsoft AutoGencrewAI是另外两个重要框架:


  • AutoGen专注于复杂的工作流程,并通过跨代理的内存和状态管理提供更为强大的解决方案。

  • crewAI旨在简化业务流程,通过模块化代理自动执行任务。

收起阅读 »

OpenAI DevDay利好AI开发者的五大创新!

OpenAI 今天在旧金山举行的开发者日活动上宣布了其 API 服务的一系列更新。这些更新将使开发人员能够进一步定制模型、开发新的基于语音的应用程序、降低重复提示的价格,并从较小的模型中获得更好的性能,更好的使用新广场功能。 OpenAI 在活动期间宣布了5个...
继续阅读 »

OpenAI 今天在旧金山举行的开发者日活动上宣布了其 API 服务的一系列更新。这些更新将使开发人员能够进一步定制模型、开发新的基于语音的应用程序、降低重复提示的价格,并从较小的模型中获得更好的性能,更好的使用新广场功能。
5cc4b73311fded774bf380506baade4c.jpg
OpenAI 在活动期间宣布了5个主要的更新:模型提炼、提示词缓存、视觉微调, RealTime 的新 API 服务,以及新广场玩法。对于初学者来说,API可以使软件开发人员能够将外部应用程序的功能集成到自己的产品中。

模型提炼


561bea437430521fd83342a734529894.jpeg
该公司推出了一种新方法,通过使用较大模型的输出对 GPT-4o mini 等较小模型进行微调,从而增强其功能,这种方法称为模型蒸馏。该公司在一篇博客文章中表示,“到目前为止,蒸馏是一个多步骤、容易出错的过程,需要开发人员手动协调不连贯的工具之间的多个操作,从生成数据集到微调模型和衡量性能改进。”
图片
为了提高流程效率,OpenAI 在其 API 平台中构建了一个模型蒸馏套件。该平台使开发人员能够使用 GPT-4o 和 o1-preview 等高级模型来构建自己的数据集,以生成高质量的响应,微调较小的模型以跟踪这些响应,然后创建和运行自定义评估以衡量模型在特定任务中的表现。

OpenAI 表示,为了帮助开发人员开始进行蒸馏,它将在 10 月 31 日之前每天在 GPT-4o mini 上提供 200 万个免费训练Tokens,在 GPT-4o 上提供 100 万个免费训练Tokens。(Tokens是 AI 模型为理解请求而处理的数据块。)训练和运行蒸馏模型的成本与 OpenAI 的标准微调价格相同。

提示词缓存

f51fd13939c056dbf62667fa59a8a329.jpeg
OpenAI 一直致力于降低其 API 服务的价格,并通过“提示缓存”朝着这个方向迈出了新的一步,这项新功能使开发人员能够重复使用常见的提示,而无需每次都支付全价。
图片
许多使用 OpenAI 模型的应用程序在提示前添加了较长的前缀,详细说明模型在完成特定任务时应如何操作,例如指示模型以愉快的语气响应所有请求,或始终以项目格式响应。较长的前缀通常可以改进模型并有助于保持响应的一致性,但也会增加每次 API 调用的成本。


现在,OpenAI 表示 API 将自动保存或“缓存”长前缀长达一小时。如果 API 检测到具有相同前缀的新提示,它将自动对输入成本应用 50% 的折扣。对于具有非常集中用例的 AI 应用程序开发人员来说,新功能可以节省大量资金。OpenAI 的竞争对手 Anthropic于 8 月在其自己的模型系列中引入了提示缓存。


视觉微调

fc0cc91265e83f9a9723e802c5376d20.jpeg
现在,开发人员除了可以使用文本之外,还可以使用图像对 GPT-4o 进行微调,OpenAI 表示,这将增强模型理解和识别图像的能力,从而实现“增强的视觉搜索功能、改进的自动驾驶汽车或智能城市的物体检测,以及更准确的医学图像分析等应用”。
图片
通过将带标签的图像数据集上传到 OpenAI 平台,开发人员可以提高模型在理解图像方面的性能。OpenAI 表示,Coframe 是一家正在构建人工智能驱动的增长工程助手的初创公司,它已经使用视觉微调来提高助手为网站生成代码的能力。通过为 GPT-4 提供数百张网站图像和用于创建这些图像的代码,与基础 GPT-4o 相比,他们将模型生成具有一致视觉风格和正确布局的网站的能力提高了 26%。

为了让开发人员入门,OpenAI 将在 10 月份每天免费发放 100 万个训练Tokens。从 11 月开始,使用图像对 GPT-4o 进行微调将花费每 100 万个Tokens 25 美元。


即时的API
6ccbeeb8aa5bd56199968589b5d5bafa.jpeg


上周,OpenAI 向所有 ChatGPT 用户推出了其高级语音模式,该模式听起来像人类的声音。现在,该公司正在帮助开发人员利用其技术构建语音转语音应用程序。

如果开发人员之前想要创建一个可以与用户对话的 AI 应用程序,他们首先需要转录音频,将文本传递给 GPT-4 等语言模型进行处理,然后将输出发送到文本转语音模型。OpenAI 表示,这种方法“通常会导致情感、强调和口音的丧失,以及明显的延迟。”

借助 Realtime API,音频可立即由 API 处理,无需将多个应用程序链接在一起,从而使其速度更快、更便宜、响应速度更快。该 API 还支持函数调用,这意味着由其支持的应用程序将能够执行操作,例如订购披萨或预约。Realtime 最终将更新以处理包括视频在内的各种多模式体验。

处理文本时,API 的费用为每百万输入令牌 5 美元,每百万输出令牌 20 美元。处理音频时,API 的费用为每百万输入令牌 100 美元,每百万输出令牌 200 美元。OpenAI 表示,这相当于“每分钟音频输入约 0.06 美元,每分钟音频输出约 0.24 美元”。


新广场功能

32894654fa1f67077642966bb7ad4c66.jpeg

新广场的功能主要包括生成提示词,Functions和Schemas,对提示词的结构框架以及其他用法作出了更多说明。

图片
在一天前就有这部分的内容疑似泄漏,「系统提示词」也被人扒了出来。
主要包括:“了解任务:掌握主要目标、目标、要求、约束和预期输出。”

最小更改:如果提供了现有提示,请仅在简单时对其进行改进。对于复杂的提示,在不改变原始结构的情况下提高清晰度并添加缺失的元素。

结论前推理:鼓励在得出任何结论之前进行推理步骤。注意力!如果用户提供了随后发生推理的示例,则 REVERSE 顺序!永远不要以结论开始例子!

推理顺序:调出提示和结论部分的推理部分(按名称划分的特定字段)。对于每个,确定执行此操作的 ORDER 以及是否需要反转。

结论、分类或结果:应始终出现在最后。


总结:OpenAI 的 DevDay 2024 标志着公司将转向更加专注、以开发者为中心的创新。虽然此次活动没有前几年那么热闹,但推出的功能表明 OpenAI 致力于提高开发者对 AI 的可访问性和效率。


参考链接:

1.https://www.inc.com/ben-sherry/openai-just-announced-4-new-ai-features-and-theyre-available-now/90982838




收起阅读 »
Debug messages:

Template: default


Session:

Session type: db

[tlu__Anwsion] Array ( [permission] => [client_info] => [human_valid] => )


Plugins:


Loaded Class:

core_config: /data/aiquanzi/system/core/config.php

core_db: /data/aiquanzi/system/core/db.php

Zend_Db: /data/aiquanzi/system/Zend/Db.php

Zend_Db_Adapter_Abstract: /data/aiquanzi/system/Zend/Db/Adapter/Abstract.php

Zend_Db_Adapter_Mysqli: /data/aiquanzi/system/Zend/Db/Adapter/Mysqli.php

Zend_Db_Profiler: /data/aiquanzi/system/Zend/Db/Profiler.php

Zend_Db_Statement_Interface: /data/aiquanzi/system/Zend/Db/Statement/Interface.php

Zend_Db_Statement: /data/aiquanzi/system/Zend/Db/Statement.php

Zend_Db_Statement_Mysqli: /data/aiquanzi/system/Zend/Db/Statement/Mysqli.php

Zend_Registry: /data/aiquanzi/system/Zend/Registry.php

Zend_Cache: /data/aiquanzi/system/Zend/Cache.php

Zend_Cache_Backend: /data/aiquanzi/system/Zend/Cache/Backend.php

Zend_Cache_Backend_Interface: /data/aiquanzi/system/Zend/Cache/Backend/Interface.php

Zend_Cache_Backend_ExtendedInterface: /data/aiquanzi/system/Zend/Cache/Backend/ExtendedInterface.php

Zend_Db_Table_Abstract: /data/aiquanzi/system/Zend/Db/Table/Abstract.php

core_plugins: /data/aiquanzi/system/core/plugins.php

setting_class: /data/aiquanzi/models/setting.php

Zend_Db_Select: /data/aiquanzi/system/Zend/Db/Select.php

Zend_Db_Expr: /data/aiquanzi/system/Zend/Db/Expr.php

Zend_Session_Abstract: /data/aiquanzi/system/Zend/Session/Abstract.php

Zend_Session: /data/aiquanzi/system/Zend/Session.php

Zend_Session_SaveHandler_Interface: /data/aiquanzi/system/Zend/Session/SaveHandler/Interface.php

Zend_Session_SaveHandler_DbTable: /data/aiquanzi/system/Zend/Session/SaveHandler/DbTable.php

Zend_Exception: /data/aiquanzi/system/Zend/Exception.php

Zend_Session_Exception: /data/aiquanzi/system/Zend/Session/Exception.php

Zend_Db_Table_Select: /data/aiquanzi/system/Zend/Db/Table/Select.php

Zend_Db_Table_Rowset_Abstract: /data/aiquanzi/system/Zend/Db/Table/Rowset/Abstract.php

Zend_Db_Table_Rowset: /data/aiquanzi/system/Zend/Db/Table/Rowset.php

Zend_Db_Table_Row_Abstract: /data/aiquanzi/system/Zend/Db/Table/Row/Abstract.php

Zend_Db_Table_Row: /data/aiquanzi/system/Zend/Db/Table/Row.php

Zend_Session_Namespace: /data/aiquanzi/system/Zend/Session/Namespace.php

core_cache: /data/aiquanzi/system/core/cache.php

core_uri: /data/aiquanzi/system/core/uri.php

banip_class: /data/aiquanzi/models/banip.php

Zend_Validate_Interface: /data/aiquanzi/system/Zend/Validate/Interface.php

Zend_Validate: /data/aiquanzi/system/Zend/Validate.php

Zend_Loader: /data/aiquanzi/system/Zend/Loader.php

Zend_Validate_Abstract: /data/aiquanzi/system/Zend/Validate/Abstract.php

core_user: /data/aiquanzi/system/core/user.php

admin_class: /data/aiquanzi/models/admin.php

TPL: /data/aiquanzi/system/class/cls_template.inc.php

Savant3: /data/aiquanzi/system/Savant3.php

account_class: /data/aiquanzi/models/account.php

HTTP: /data/aiquanzi/system/class/cls_http.inc.php

hook_class: /data/aiquanzi/models/hook.php

plugin_class: /data/aiquanzi/models/plugin.php

PLUTPL: /data/aiquanzi/system/class/cls_plugins.inc.php

core_lang: /data/aiquanzi/system/core/lang.php

Zend_Filter_Interface: /data/aiquanzi/system/Zend/Filter/Interface.php

Zend_Filter_Digits: /data/aiquanzi/system/Zend/Filter/Digits.php

system_class: /data/aiquanzi/models/system.php

article_class: /data/aiquanzi/models/article.php

column_class: /data/aiquanzi/models/column.php

topic_class: /data/aiquanzi/models/topic.php

menu_class: /data/aiquanzi/models/menu.php

module_class: /data/aiquanzi/models/module.php

core_pagination: /data/aiquanzi/system/core/pagination.php

FORMAT: /data/aiquanzi/system/class/cls_format.inc.php

Services_BBCode: /data/aiquanzi/system/Services/BBCode.php


Database

[ Log time: 1755225393.1099 ] [ Expend time: 0.0052108764648438 ] Connect Master DB

[ Log time: 1755225393.1166 ] [ Expend time: 0.0023210048675537 ] SELECT `wecenter_system_setting`.* FROM `wecenter_system_setting`

[ Log time: 1755225393.1252 ] [ Expend time: 0.0024838447570801 ] SELECT `wecenter_nav`.`url` FROM `wecenter_nav` WHERE (is_index=1 AND status='Y') LIMIT 1

[ Log time: 1755225393.1283 ] [ Expend time: 0.0012950897216797 ] SELECT `wecenter_ban_ip`.`id` FROM `wecenter_ban_ip` WHERE (ip='216.73.216.47') LIMIT 1

[ Log time: 1755225393.1302 ] [ Expend time: 0.001378059387207 ] SELECT `wecenter_nav`.* FROM `wecenter_nav` WHERE (status='Y') ORDER BY `sort` desc

[ Log time: 1755225393.1353 ] [ Expend time: 0.0017390251159668 ] SELECT `wecenter_hook_plugins`.`hook`, `wecenter_hook_plugins`.`plugins` FROM `wecenter_hook_plugins` WHERE (status = 1) ORDER BY `sort` DESC

[ Log time: 1755225393.1389 ] [ Expend time: 0.0025460720062256 ] SELECT `wecenter_plugins`.* FROM `wecenter_plugins` WHERE (state = 1)

[ Log time: 1755225393.1569 ] [ Expend time: 0.0014760494232178 ] SELECT `wecenter_category`.* FROM `wecenter_category`

[ Log time: 1755225393.1612 ] [ Expend time: 0.0026669502258301 ] SELECT `wecenter_article`.* FROM `wecenter_article` WHERE (category_id = 21 AND is_del = 0) ORDER BY `add_time` DESC LIMIT 10

[ Log time: 1755225393.1623 ] [ Expend time: 0.0009610652923584 ] SELECT COUNT(*) AS `n` FROM `wecenter_article` WHERE (category_id = 21 AND is_del = 0)

[ Log time: 1755225393.1662 ] [ Expend time: 0.001662015914917 ] SELECT `wecenter_topic_relation`.* FROM `wecenter_topic_relation` WHERE (item_id IN(60,59) AND `type` = 'article')

[ Log time: 1755225393.1679 ] [ Expend time: 0.0015730857849121 ] SELECT `wecenter_topic`.* FROM `wecenter_topic` WHERE (topic_id IN(8,9,8))

[ Log time: 1755225393.1697 ] [ Expend time: 0.0016148090362549 ] SELECT `wecenter_users`.* FROM `wecenter_users` WHERE (is_del = 0 and uid IN(40,38))

[ Log time: 1755225393.1717 ] [ Expend time: 0.0013940334320068 ] SELECT `wecenter_category`.* FROM `wecenter_category` WHERE (`type` = 'question') ORDER BY `id` ASC

[ Log time: 1755225393.1732 ] [ Expend time: 0.0013751983642578 ] SELECT `wecenter_category`.* FROM `wecenter_category` WHERE (`type` = 'question') ORDER BY `sort` ASC, `id` ASC

[ Log time: 1755225393.1749 ] [ Expend time: 0.0013189315795898 ] SELECT question_id FROM wecenter_question WHERE category_id IN(21) ORDER BY add_time DESC LIMIT 200

[ Log time: 1755225393.1765 ] [ Expend time: 0.0014188289642334 ] SELECT `wecenter_article`.* FROM `wecenter_article` WHERE (add_time > 1752633393 AND is_del = 0) ORDER BY `votes` DESC LIMIT 10

[ Log time: 1755225393.1775 ] [ Expend time: 0.0009150505065918 ] SELECT COUNT(*) AS `n` FROM `wecenter_article` WHERE (add_time > 1752633393 AND is_del = 0)

[ Log time: 1755225393.1941 ] [ Expend time: 0.0012121200561523 ] SELECT `wecenter_users`.`avatar_file` FROM `wecenter_users` WHERE (uid=40) LIMIT 1

[ Log time: 1755225393.197 ] [ Expend time: 0.0010409355163574 ] SELECT `wecenter_users`.`avatar_file` FROM `wecenter_users` WHERE (uid=38) LIMIT 1


Cache

[ Log time: 1755225393.1218 ] Backend: File

[ Log time: 1755225393.1219 ] [ Expend time: 0.000076 ] Get Cache: crond, result type: array

[ Log time: 1755225393.1219 ] [ Expend time: 0.000009 ] Get Cache: crond_timer_half_minute, result type: boolean

[ Log time: 1755225393.122 ] [ Expend time: 0.000006 ] Get Cache: crond_timer_minute, result type: boolean

[ Log time: 1755225393.122 ] [ Expend time: 0.000005 ] Get Cache: crond_timer_five_minutes, result type: boolean

[ Log time: 1755225393.122 ] [ Expend time: 0.000006 ] Get Cache: crond_timer_ten_minutes, result type: boolean

[ Log time: 1755225393.122 ] [ Expend time: 0.000058 ] Get Cache: crond_timer_day, result type: integer

[ Log time: 1755225393.1221 ] [ Expend time: 0.000048 ] Get Cache: crond_timer_week, result type: integer

[ Log time: 1755225393.1327 ] [ Expend time: 0.000106 ] Get Cache: user_group_99, result type: array

[ Log time: 1755225393.1613 ] [ Expend time: 0.000030 ] Get Cache: db_rows_cache_5cda9d4c1ec42d939fd08d4da5d5d182, result type: boolean

[ Log time: 1755225393.1627 ] [ Expend time: 0.000301 ] Save Cache: db_rows_cache_5cda9d4c1ec42d939fd08d4da5d5d182, result type: integer

[ Log time: 1755225393.1702 ] [ Expend time: 0.000102 ] Get Cache: nav_menu_list, result type: array

[ Log time: 1755225393.1765 ] [ Expend time: 0.000037 ] Get Cache: db_rows_cache_c91cfbf5c6e058305b4ce3a3cfec2450, result type: boolean


Crond

[ Log time: 1755225393.1221 ] Tag: day, Last run time: 2025-08-15 08:37:32

[ Log time: 1755225393.1221 ] Tag: week, Last run time: 2025-08-15 06:45:04


Escape time: 0.32826209068298, 20 queries, PHP Memory usage: 5910.390625 KB, Server time: 2025-08-15 10:36:33