成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

OpenAI今天Open了一下:開源多智能體框架Swarm

人工智能 新聞
Swarm 開源后引起了熱烈討論,有網友表示這能幫助簡化許多潛在的多智能體用例的工作流程。

毫無疑問,多智能體肯定是 OpenAI 未來重要的研究方向之一,前些天 OpenAI 著名研究科學家 Noam Brown 還在 X 上為 OpenAI 正在組建的一個新的多智能體研究團隊招募機器學習工程師。

圖片

就在幾個小時前,這個或許還沒有組建完成的新研究團隊就已經開源發布了一項重量級研究成果:Swarm。這是一個實驗性質的多智能體編排框架,主打特征是工效(ergonomic)與輕量(lightweight)。

圖片

  • 項目地址:https://github.com/openai/swarm

Swarm 開源后引起了熱烈討論,有網友表示這能幫助簡化許多潛在的多智能體用例的工作流程。

圖片

我們先來看一個例子。首先安裝 Swarm,很簡單:

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

裝好這個框架之后,用起來也很方便。以下代碼定義了 2 個智能體,而用戶的指令是與智能體 B 交談:

from swarm import Swarm, Agent

client = Swarm()

def transfer_to_agent_b():
return agent_b

agent_a = Agent(
name="Agent A",
instructinotallow="You are a helpful agent.",
functinotallow=[transfer_to_agent_b],
)

agent_b = Agent(
name="Agent B",
instructinotallow="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"])

輸出消息:

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

下面我們就來簡單介紹一下這個開源項目。

首先,需要再次強調,Swarm 是一個實驗性質的多智能體框架,并不是為生產目的開發的,因此團隊表示不會提供任何官方支持。

Swarm 概況

Swarm 關注的重點是讓智能體協作和執行變得輕量、高度可控且易于測試。

為此,它使用了兩種原語抽象:智能體(agent)交接(handoff)。其中,智能體包含指令和工具,并且在任何時間都可以選擇將對話交接給另一個智能體。

該團隊表示,這些原語很強大,「足以表達工具和智能體網絡之間的豐富動態,讓你可以針對真實世界問題構建可擴展的解決方案,同時避免陡峭的學習曲線。」

另外,該團隊指出,請注意 Swarm 智能體與 Assistants API 中的 Assistants 無關。之所以名字相似,只是為了方便。Swarm 完全由 Chat Completions API 提供支持,因此在調用之間是無狀態的。

為什么要使用 Swarm?

在設計上,Swarm 是輕量級、可擴展且高度可定制的。它最適合處理存在大量獨立功能和指令的情況——這些功能和指令很難編碼成單個提示詞。

如果開發者想要尋求完全托管的線程以及內置的內存管理和檢索,那么 Assistants API 就已經是很好的選擇了。但如果開發者想要完全的透明度,并且能夠細粒度地控制上下文、步驟和工具調用,那么 Swarm 才是最佳選擇。Swarm (幾乎)完全運行在客戶端,與 Chat Completions API 非常相似,不會在調用之間存儲狀態。

該團隊還展示了一個應用示例,包括天氣查詢智能體、用于在航空公司環境中處理不同客戶服務請求的多智能體設置、客服機器人、可以幫助銷售和退款的個人智能體等。具體示例請訪問 Swarm 代碼庫。

圖片

簡單的天氣查詢智能體示例,問題先經過篩選智能體處理,再轉交給天氣智能體解答

Swarm 的核心組件

Swarm 的核心組件包括 client(客戶端)、Agent(智能體)、Function(函數)。

運行 Swarm 就是從實例化一個 client 開始的(其就是在內部實例化一個 OpenAI 客戶端)。

from swarm import Swarm
client = Swarm()

client.run()

Swarm 的 run() 函數類似于 Chat Completions API 中的 chat.completions.create() 函數——接收消息并返回消息,并且在調用之間不保存任何狀態。但重點在于,它還處理 Agent 函數執行、交接、上下文變量引用,并且可以在返回給用戶之前進行多輪執行。

究其核心,Swarm 的 client.run() 是實現以下循環:

  1. 先讓當前智能體完成一個結果
  2. 執行工具調用并附加結果
  3. 如有必要,切換智能體
  4. 如有必要,更新上下文變量
  5. 如果沒有新的函數調用,則返回

參數

client.run() 的參數包括:

圖片

client.run() 完成后(可能進行過多次智能體和工具調用),會返回一個響應,其中包含所有相關的已更新狀態。具體來說,即包含新消息、最后調用的智能體、最新的上下文變量。你可以將這些值(加上新的用戶消息)傳遞給 client.run() 的下一次執行,以繼續上次的交互——就像是 chat.completions.create()

響應字段

圖片

Agent

Agent(智能體)就是將一組指令與一組函數封裝在一起(再加上一些額外的設置),并且其有能力將執行過程交接給另一個 Agent。

Agent 字段

圖片

指令(instructions)

Agent instructions 會直接轉換成對話的系統提示詞(作為第一條消息)。只有當前活動的 Agent 的指令會被使用(當發生智能體交接時,系統提示詞會變化,但聊天歷史不會)。

agent = Agent(
instructinotallow="You are a helpful agent."
)

instructions 可以是常規字符串,也可以是返回字符串的函數。該函數可以選擇性地接收 context_variables 參數,該參數將由傳入 client.run() 的 context_variables 填充。

def instructions(context_variables):
user_name = context_variables["user_name"]
return f"Help the user, {user_name}, do whatever they want."


agent = Agent(
instructinotallow=instructions
)
response = client.run(
agent=agent,
messages=[{"role":"user", "content": "Hi!"}],
context_variables={"user_name":"John"}
)
print(response.messages[-1]["content"])

輸出消息:

Hi John, how can I assist you today?

Function

  • Swarm Agent 可以直接調用 Python 函數。
  • 函數通常應返回一個字符串(數值會被轉換為字符串)。
  • 如果一個函數返回了一個 Agent,則執行過程將轉交給該 Agent。
  • 如果函數定義了 context_variables 參數,則它將由傳遞到 client.run() 的 context_variables 填充。
def greet(context_variables, language):
user_name = context_variables["user_name"]
greeting = "Hola" if language.lower() == "spanish" else "Hello"
print(f"{greeting}, {user_name}!")
return "Done"


agent = Agent(
functinotallow=[print_hello]
)


client.run(
agent=agent,
messages=[{"role": "user", "content": "Usa greet() por favor."}],
context_variables={"user_name": "John"}
)

輸出消息:

Hola, John!

如果某個 Agent 函數調用出錯(缺少函數、參數錯誤等),則會在聊天之中附加一條報錯響應,以便 Agent 恢復正常。

如果 Ageny 調用多個函數,則按順序執行它們。

交接和更新上下文變量

通過在返回的函數中包含一個 Agent,可將執行過程交接給這個 Agent。

sales_agent = Agent(name="Sales Agent")

def transfer_to_sales():
return sales_agent

agent = Agent(functinotallow=[transfer_to_sales])

response = client.run(agent, [{"role":"user", "content":"Transfer me to sales."}])
print(response.agent.name)

輸出消息:

Sales Agent

它還可以通過返回更完整的 Result 對象來更新 context_variables。如果你希望用單個函數返回一個值、更新智能體并更新上下文變量(或三者中的任何組合),它還可以包含一個 value 和一個 agent。

sales_agent = Agent(name="Sales Agent")


def talk_to_sales():
print("Hello, World!")
return Result(
value="Done",
agent=sales_agent,
context_variables={"department": "sales"}
)


agent = Agent(functinotallow=[talk_to_sales])


response = client.run(
agent=agent,
messages=[{"role": "user", "content": "Transfer me to sales"}],
context_variables={"user_name": "John"}
)
print(response.agent.name)
print(response.context_variables)

輸出消息:

Sales Agent
{'department': 'sales', 'user_name': 'John'}

注意:如果一個 Agent 調用了多個交接 Agent 的函數,則僅使用最后一個交接函數。

函數模式

Swarm 會自動將函數轉換為 JSON 模式,然后將其傳遞給聊天補全工具。

  • 文檔字符串會轉換為函數 description。
  • 沒有默認值的參數會設置為 required。
  • 類型提示會映射到參數的 type(默認為 string)。
  • 不明確支持對每個參數進行描述,但如果只是在文檔字符串中添加,應該能以相似的方式工作。
def greet(name, age: int, location: str = "New York"):
"""Greets the user. Make sure to get their name and age before calling.


Args:
name: Name of the user.
age: Age of the user.
location: Best place on earth.
"""
print(f"Hello {name}, glad you are {age} in {location}!")
{
"type": "function",
"function": {
"name": "greet",
"description": "Greets the user. Make sure to get their name and age before calling.\n\nArgs:\n name: Name of the user.\n age: Age of the user.\n location: Best place on earth.",
"parameters": {
"type": "object",
"properties": {
"name": {"type": "string"},
"age": {"type": "integer"},
"location": {"type": "string"}
},
"required": ["name", "age"]
}
}
}

流式處理

Swarm 也支持流式處理。

stream = client.run(agent, messages, stream=True)
for chunk in stream:
print(chunk)

使用了與 Chat Completions API streaming 一樣的事件,但添加了兩個事件類型:

  • {"delim":"start"} 和 {"delim":"start"},用于在 Agent 每次處理單個消息(響應或函數調用)時發出信號。這有助于識別 Agent 之間的切換。
  • 為方便起見,{"response": Response} 將在流的末尾返回帶有已聚合的(完整)響應的 Response 對象。

核心貢獻者

Swarm 的核心貢獻者均就職于 OpenAI,他們分別是(右側為對應的 GitHub 用戶名):

  • Ilan Bigio - ibigio
  • James Hills - jhills20
  • Shyamal Anadkat - shyamal-anadkat
  • Charu Jaiswal - charuj
  • Colin Jarvis - colin-openai
責任編輯:張燕妮 來源: 機器之心
相關推薦

2024-10-15 17:28:05

2024-10-18 15:20:00

2025-06-10 09:28:31

智能體開發工具

2024-10-14 10:00:00

OpenAI代碼

2024-10-22 20:00:00

2024-03-25 00:30:00

AI框架

2025-03-12 11:34:35

2025-06-20 14:38:43

OpenAI客服智能體人工智能

2025-05-12 08:19:13

2024-09-19 09:30:39

緩存框架抽象

2025-01-22 15:17:43

2020-03-05 11:40:46

開源技術 趨勢

2023-03-29 23:40:24

2023-11-18 09:09:08

GNUBSD協議

2021-10-09 18:26:59

二叉樹多叉樹搜索

2023-05-04 15:53:34

強化學習開發

2010-12-06 09:10:02

LightSwitch

2023-11-30 16:34:18

2023-09-22 07:23:50

Alice模型任務

2021-07-22 15:25:14

開源技術 框架
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产在线91 | 精品久久久久久中文字幕 | 国产一区二区av | 国产成人jvid在线播放 | 在线看av网址 | 男人天堂视频在线观看 | 日韩综合在线 | 精品久久久久久18免费网站 | 成人精品鲁一区一区二区 | 免费国产一区 | 中文字幕在线观看一区二区 | 91极品视频 | 在线观看国产精品一区二区 | 色呦呦在线 | 午夜欧美a级理论片915影院 | 伊人久久综合影院 | 黄色三级在线播放 | 成人免费淫片aa视频免费 | 欧美精品一区二区三区在线播放 | 亚洲精品一区二区在线观看 | 91国在线高清视频 | 欧美国产日韩一区二区三区 | 亚洲免费在线观看视频 | 最新超碰 | 九九综合 | 国产欧美一区二区三区久久手机版 | 久久久久久综合 | 久久er99热精品一区二区 | 国产精品久久精品 | 91精品国产色综合久久 | 在线视频 欧美日韩 | 天天看夜夜 | 日本久久久一区二区三区 | 免费1区2区3区 | 国产精品xxxx | 91精品午夜窝窝看片 | 日韩中文字幕高清 | 中文字幕1区2区3区 日韩在线视频免费观看 | 黄色日本视频 | 国产欧美日韩视频 | 99福利视频导航 |