중요한
autogen-agentchat~=0.2
PYPI 패키지에서 찾으십시오.Autogen은 AI 에이전트 시스템을 구축하기위한 오픈 소스 프레임 워크입니다. 이벤트 중심, 분산, 확장 가능하며 탄력적 인 에이전트 응용 프로그램의 생성을 단순화합니다. 이를 통해 AI 에이전트가 협업하고 인간의 감독과 함께 작업을 수행하고 수행하는 시스템을 신속하게 구축 할 수 있습니다.
Autogen은 AI 개발 및 연구를 간소화하여 여러 대형 언어 모델 (LLM), 통합 도구 및 고급 다중 에이전트 설계 패턴을 사용할 수 있습니다. 에이전트 시스템을 로컬로 개발하고 테스트 한 다음 요구가 커짐에 따라 분산 클라우드 환경에 배포 할 수 있습니다.
Autogen은 다음과 같은 주요 기능을 제공합니다.
↑ 위로 돌아갑니다 ↑
Autogen에는 여러 패키지가 있으며 계층 아키텍처에 제작되었습니다. 현재 응용 프로그램이 타겟팅 할 수있는 세 가지 주요 API가 있습니다.
autogen-core
의 Autogen의 핵심 API는 액터 모델에 따라 구축됩니다. 에이전트와 이벤트 기반 워크 플로를 전달하는 비동기 메시지를 지원합니다. 핵심 계층의 에이전트는 RPC와 같은 기능을하는 직접 메시징 또는 Pub-Sub 인 주제로 방송을 통해 타이핑 된 메시지를 처리하고 제작합니다. 에이전트는 서로 다른 프로그래밍 언어로 배포되고 구현 될 수 있지만 여전히 서로 의사 소통 할 수 있습니다. 확장 가능하고 이벤트 중심의 에이전시 시스템을 구축하는 경우 여기에서 시작하십시오.
Agenchat API 인 autogen-agentchat
은 작업 구동이며 Autogen 0.2와 같은 높은 수준입니다. 이를 통해 대화 에이전트를 정의하고 팀으로 구성한 다음 작업을 해결할 수 있습니다. AgentChat 자체는 핵심 계층에 구축되었지만 저수준 시스템 개념의 대부분을 추상화시킵니다. 워크 플로우가 AgentChat API에 맞지 않으면 대상으로 코어를 대상으로하십시오. 다중 에이전트 워크 플로로 빠르게 시작하는 데 집중하고 싶다면 여기에서 시작하십시오.
확장 패키지 autogen-ext
에는 OpenAI 모델 클라이언트 및 Azure Code Executors와 같은 타사 시스템을 사용한 핵심 인터페이스의 구현이 포함되어 있습니다. 내장 확장자 외에도 패키지는 네임 스페이스 하위 패키지를 통해 커뮤니티로 인한 확장을 수용합니다. 우리는 당신의 기여를 기대합니다!
↑ 위로 돌아갑니다 ↑
먼저 패키지를 설치하십시오.
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 에이전트를 구축하기위한보다 강력하고 확장 가능하며 사용하기 쉽고 사용하기 쉽습니다. 일부 주요 기능에는 비동기 메시징, 확장 가능한 분산 에이전트 지원, 모듈 식 확장 설계 (자체 에이전트를 가져 오기, 동작을 구현하지만 동작을 구현), 교차 지원, 개선 된 관찰 및 전체 타이핑 통합이 포함됩니다. 깨진 변화입니다.
우리는 Autogen 사용자의 말을 듣고, 작동하는 일에서 배웠으며, 그렇지 않은 것을 고치기 위해 적응했습니다. 우리는 다양한 유형의 AI 에이전트에서 작업하는 광범위한 팀을 모았고보다 유연한 프로그래밍 모델과 더 나은 확장 성을 가진 개선 된 프레임 워크를 설계하기 위해 협력했습니다.
우리는 원래 버전의 Autogen (0.2)과 재 설계 (0.4)를 지원하겠다는 약속을 재확인하고자합니다. Autogen 0.4는 여전히 진행 중이며 커뮤니티와 구축 할 코드를 공유했습니다. 곧 원래의 Autogen을 사용하지 않을 계획은 없으며 두 버전 모두 적극적으로 유지 될 것입니다.
이 코드는 여전히 실험적이므로 안정적인 0.4 릴리스를 위해 작업하는 동안 변경 사항과 버그를 기대합니다. 우리는 얼리 어답터가 그것을 시도하고, 피드백을주고, 기여하도록 권장합니다. 안정적인 버전을 찾는 사람들을 위해 0.2를 계속 사용하는 것이 좋습니다.
자신을 얼리 어답터라고 생각한다면, 코드를 약간 변경하는 것이 편하고 그것을 시험해 볼 의향이 있습니다.
Autogen 0.2는 다음과 같이 설치할 수 있습니다.
pip install autogen-agentchat~=0.2
예, 이것은 로드맵에 있습니다. 우리의 현재 계획은 에이전트 기능 세트 (에이전트, 팀 등)를 구현하는 AgerCat High Level API에서 Autogen Studio를 구현할 수 있도록하는 것입니다.
Autogen에 익숙한 사용자의 경우 0.4의 Agentchat 라이브러리는 유사한 개념을 제공합니다. 우리는 마이그레이션 가이드 작업을하고 있습니다.
우리는 여전히 Autogen 0.4를 적극적으로 개발하고 있습니다. 흥미 진진한 새로운 기능 중 하나는 .NET 용 새로운 SDK의 출현입니다. 파이썬 SDK는 현재 더 앞서 나가지 만 우리의 목표는 패리티를 달성하는 것입니다. 우리는 향후 릴리스에 추가 언어를 추가하는 것을 목표로합니다.
우리는 여전히 문서, 샘플을 개선하고 코드 향상을 위해 노력하고 있습니다. 우리는 일이 준비되기 전에 출시되기를 바라고 있습니다.
이 프레임 워크의 탐색은 여러 마이크로 소프트 팀이 모여 Autogen 0.2- 여러 전임 프로젝트의 병합 아이디어를 해결하기 위해 함께 시작되었습니다. 팀은 2024 년 10 월에 오픈으로 다시 작업하기 전에 일정을 보장하기 위해 내부적으로 일했습니다.
버그 보고서 및 기능 요청에 GitHub 문제를 사용하십시오. 일반적인 질문과 토론을 위해 Github 토론을 사용하십시오.
프로젝트 토론에 불화를 사용할 수 없습니다. 따라서 우리는 모든 토론이 https://github.com/microsoft/autogen/discussions/에서 진행되도록 요청합니다.
https://github.com/microsoft/autogen/는 Autogen의 개발 및 지원을위한 유일한 공식 리포지토리입니다. 우리는 개인 개발을위한 많은 사람들을 포함하여 수천 개의 Autogen 포크가 있다는 것을 알고 있습니다. 우리는 이러한 포크에 관여하지 않으며 관련 계획을 알지 못합니다.
우리의 프로젝트는 완전히 오픈 소스이며 모든 사람이 접근 할 수 있습니다. 우리는 일부 포크가 다른 라이센스를 사용하여 다른 관심사와 일치한다는 것을 이해합니다. 우리는 프로젝트에 가장 허용되는 라이센스 (MIT)를 계속 사용할 것입니다.
현재, 우리는 참여없이 수행 된 패키지 소유권으로 변경되어 PYPI를 통해 pyautogen
패키지를 릴리스 할 수 없습니다. 또한, 우리는 여러 패키지를 사용하여 새로운 디자인과 일치합니다. 자세한 내용은 여기를 참조하십시오.
우리는 Autogen 0.2의 모든 기여자들에게 감사하며 Autogen 커뮤니티의 모든 사람들과 계속 협력하기를 기대합니다.
↑ 위로 돌아갑니다 ↑
Microsoft 및 모든 기고자는 Creative Commons Advribution 4.0 International Public 라이센스에 따라이 저장소의 Microsoft 문서 및 기타 컨텐츠에 라이센스를 부여하고 라이센스 파일을 참조하고 MIT 라이센스에 따라 저장소의 모든 코드에 대한 라이센스를 부여합니다. 라이센스 코드 파일.
문서에 참조 된 Microsoft, Windows, Microsoft Azure 및/또는 기타 Microsoft 제품 및 서비스는 미국 및/또는 기타 국가의 Microsoft의 상표 또는 등록 상표 일 수 있습니다. 이 프로젝트의 라이센스는 Microsoft 이름, 로고 또는 상표를 사용할 권한을 부여하지 않습니다. Microsoft의 일반 상표 지침은 http://go.microsoft.com/fwlink/?linkid=254653에서 찾을 수 있습니다.
개인 정보 보호 정보는 https://go.microsoft.com/fwlink/?linkid=521839에서 찾을 수 있습니다
Microsoft와 모든 기고자는 각각의 저작권, 특허 또는 상표에 따라 암시, Estoppel 또는 기타 상관없이 다른 모든 권리를 보유합니다.
↑ 위로 돌아갑니다 ↑