重要的
autogen-agentchat~=0.2
PYPI包裝上找到它。Autogen是用於構建AI代理系統的開源框架。它簡化了事件驅動,分佈式,可擴展和彈性的代理應用程序的創建。它使您可以快速構建AI代理自動合作或與人類監督執行任務的系統。
Autogen簡化了AI開發和研究,從而可以使用多種大語言模型(LLM),集成工具和高級多代理設計模式。您可以在本地開發和測試代理系統,然後隨著需求的增長而部署到分佈式雲環境。
Autogen提供以下關鍵功能:
↑回到頂部↑
Autogen有多個軟件包,並建立在分層架構上。目前,您的應用程序可以針對三個主要API:
Autogen的核心API是autogen-core
,是根據Actor模型構建的。它支持在代理和基於事件的工作流程之間傳遞的異步消息。核心層中的代理人使用直接消息傳遞(例如RPC)或通過廣播到pub-sub的主題來處理並產生鍵入消息。代理可以以不同的編程語言分發和實施,同時仍相互交流。如果您要構建可擴展的事件驅動的代理系統,請從這裡開始。
代理API autogen-agentchat
是任務驅動的,並且在高水平的高水平上,例如Autogen 0.2。它允許您定義對話代理,將它們組成團隊,然後使用它們來解決任務。 AgentChat本身建立在核心層上,但它抽象了許多低級系統概念。如果您的工作流不適合AgentChat API,請改為目標核心。如果您只想專注於快速開始使用多代理工作流程,請從這裡開始。
擴展程序包autogen-ext
包含使用第三方系統(例如OpenAI模型客戶端和Azure代碼執行者)的核心接口實現。除了內置的擴展名外,該軟件包還通過命名空間子包裝可容納社區限制的擴展。我們期待您的貢獻!
↑回到頂部↑
首先安裝軟件包:
pip install ' autogen-agentchat==0.4.0.dev6 ' ' autogen-ext[openai]==0.4.0.dev6 '
以下代碼使用OpenAI的GPT-4O模型,您需要提供API鍵以運行。要使用Azure OpenAI型號,請在此處遵循該說明。
import asyncio
from autogen_agentchat . agents import AssistantAgent
from autogen_agentchat . task import Console , TextMentionTermination
from autogen_agentchat . teams import RoundRobinGroupChat
from autogen_ext . models import OpenAIChatCompletionClient
# Define a tool
async def get_weather ( city : str ) -> str :
return f"The weather in { city } is 73 degrees and Sunny."
async def main () -> None :
# Define an agent
weather_agent = AssistantAgent (
name = "weather_agent" ,
model_client = OpenAIChatCompletionClient (
model = "gpt-4o-2024-08-06" ,
# api_key="YOUR_API_KEY",
),
tools = [ get_weather ],
)
# Define termination condition
termination = TextMentionTermination ( "TERMINATE" )
# Define a team
agent_team = RoundRobinGroupChat ([ weather_agent ], termination_condition = termination )
# Run the team and stream messages to the console
stream = agent_team . run_stream ( task = "What is the weather in New York?" )
await Console ( stream )
asyncio . run ( main ())
.NET SDK尚未支持Python SDK提供的所有接口,但我們正在努力使它們均等。要使用.NET SDK,您需要在項目中對SRC添加軟件包參考。我們將盡快發布Nuget軟件包,並在發生這種情況時更新這些說明。
git clone https://github.com/microsoft/autogen.git
cd autogen
# Switch to the branch that has this code
git switch staging-dev
# Build the project
cd dotnet && dotnet build AutoGen.sln
# In your source code, add AutoGen to your project
dotnet add <your.csproj> reference <path to your checkout of autogen>/dotnet/src/Microsoft.AutoGen/Agents/Microsoft.AutoGen.Agents.csproj
然後,定義並運行您的第一個代理:
using Microsoft . AutoGen . Abstractions ;
using Microsoft . AutoGen . Agents ;
using Microsoft . Extensions . DependencyInjection ;
using Microsoft . Extensions . Hosting ;
// send a message to the agent
var app = await App . PublishMessageAsync ( " HelloAgents " , new NewMessageReceived
{
Message = " World "
} , local : true ) ;
await App . RuntimeApp ! . WaitForShutdownAsync ( ) ;
await app . WaitForShutdownAsync ( ) ;
[ TopicSubscription ( " HelloAgents " ) ]
public class HelloAgent (
IAgentContext context ,
[ FromKeyedServices ( " EventTypes " ) ] EventTypes typeRegistry ) : ConsoleAgent (
context ,
typeRegistry ) ,
ISayHello ,
IHandle < NewMessageReceived > ,
IHandle < ConversationClosed >
{
public async Task Handle ( NewMessageReceived item )
{
var response = await SayHello ( item . Message ) . ConfigureAwait ( false ) ;
var evt = new Output
{
Message = response
} . ToCloudEvent ( this . AgentId . Key ) ;
await PublishEventAsync ( evt ) . ConfigureAwait ( false ) ;
var goodbye = new ConversationClosed
{
UserId = this . AgentId . Key ,
UserMessage = " Goodbye "
} . ToCloudEvent ( this . AgentId . Key ) ;
await PublishEventAsync ( goodbye ) . ConfigureAwait ( false ) ;
}
public async Task Handle ( ConversationClosed item )
{
var goodbye = $" ********************* { item . UserId } said { item . UserMessage } ************************ " ;
var evt = new Output
{
Message = goodbye
} . ToCloudEvent ( this . AgentId . Key ) ;
await PublishEventAsync ( evt ) . ConfigureAwait ( false ) ;
await Task . Delay ( 60000 ) ;
await App . ShutdownAsync ( ) ;
}
public async Task < string > SayHello ( string ask )
{
var response = $" n n n n ***************Hello { ask } ********************** n n n n " ;
return response ;
}
}
public interface ISayHello
{
public Task < string > SayHello ( string ask ) ;
}
dotnet run
↑回到頂部↑
↑回到頂部↑
Autogen V0.4是從頭開始重寫Autogen的,可以創建一個更健壯,可擴展,易於使用的跨語言庫,用於構建AI代理。一些關鍵功能包括異步消息傳遞,對可擴展分佈式代理的支持,模塊化擴展設計(帶上自己的代理,實施行為,但您喜歡),跨語言支持,改進的可觀察性和完整的打字集成。這是一個打破的變化。
我們聽了我們的自動用戶,從有效的內容中學到了學習,並適應了解決方案。我們組建了從事許多不同類型的AI代理工作的廣泛的團隊,並合作設計了改進的框架,具有更靈活的編程模型和更好的可擴展性。
我們要重申我們對支持原始版本(0.2)和重新設計(0.4)的承諾。 Autogen 0.4仍在進行中,我們現在共享了與社區建設的代碼。沒有計劃很快就會貶低原始的Autogen,這兩個版本都將被積極維護。
該代碼仍然是實驗性的,因此在我們努力穩定的0.4版本時,期望變化和錯誤。我們鼓勵早期採用者嘗試一下,給我們反饋並做出貢獻。對於那些尋找穩定版本的人,我們建議繼續使用0.2
如果您認為自己是早期採用者,則可以對代碼進行一些更改,並且願意嘗試一下,那麼是。
Autogen 0.2可以安裝:
pip install autogen-agentchat~=0.2
是的,這在路線圖上。我們目前的計劃是在AgentChat高級API上實施AutoGen Studio,該AperChat高級API實現了一組代理功能(代理,團隊等)。
對於熟悉Autogen的用戶,0.4中的AgentChat庫提供了類似的概念。我們正在製定遷移指南。
我們仍在積極開發0.4。一個令人興奮的新功能是.NET的新SDK的出現。 Python SDK目前處於領先地位,但我們的目標是實現平等。我們的目標是在將來的發行版中添加其他語言。
我們仍在努力改進文檔,示例和增強代碼。我們希望在準備就緒的時候在年底之前釋放。
該框架的Rearchitecture始於多個Microsoft團隊,以解決自動基因0.2的差距和學習 - 從幾個前身項目中合併想法。該團隊在內部進行了一段時間的工作,以確保在2024年10月將工作重新回到公開賽之前保持一致。
使用GitHub問題進行錯誤報告和功能請求。使用GitHub討論進行一般問題和討論。
我們無法將Discord用於項目討論。因此,我們要求所有討論都在https://github.com/microsoft/autogen/discussions/上進行。
https://github.com/microsoft/autogen/仍然是唯一的自動發展和支持的官方倉庫。我們知道,有成千上萬的汽車叉,包括許多用於個人開發和圖書館頂部的初創企業。我們不參與這些叉子中的任何一個,也不知道與它們有關的任何計劃。
我們的項目仍然是完全開源的,每個人都可以訪問。我們了解,有些叉子使用不同的許可來與不同的利益保持一致。我們將繼續為該項目使用最允許的許可證(MIT)。
目前,我們無法通過PYPI發布pyautogen
包裝,因為對沒有我們參與的包裝所有權進行了更改。此外,我們正在使用多個軟件包來與新設計保持一致。請在此處查看詳細信息。
我們感謝Autogen 0.2的所有貢獻者,我們期待著繼續與Autogen社區中的每個人合作。
↑回到頂部↑
Microsoft和任何貢獻者在Creative Commons Attribution 4.0國際公共許可證下授予Microsoft文檔和該存儲庫中其他內容的許可證,請參閱許可證文件,並授予您根據MIT許可證中存儲庫中任何代碼的許可證,請參閱許可證文件。
文檔中引用的Microsoft,Windows,Microsoft Azure和/或其他Microsoft產品和服務可以是美國和/或其他國家的Microsoft的商標或註冊商標。該項目的許可證不授予您使用任何Microsoft名稱,徽標或商標的權利。可以在http://go.microsoft.com/fwlink/?linkid=254653上找到Microsoft的一般商標準則。
隱私信息可以在https://go.microsoft.com/fwlink/?linkid=521839中找到
Microsoft和任何貢獻者都保留所有其他權利,無論是在各自的版權,專利還是商標下,無論是通過暗示,禁止反言,還是其他權利。
↑回到頂部↑