Importante
autogen-agentchat~=0.2
PYPI.Autogen es un marco de código abierto para construir sistemas de agentes de IA. Simplifica la creación de aplicaciones de agente impulsadas por eventos, distribuidas, escalables y resistentes. Le permite construir rápidamente sistemas donde los agentes de IA colaboran y realizan tareas de forma autónoma o con supervisión humana.
Autógeno agiliza el desarrollo e investigación de IA, que permite el uso de múltiples modelos de idiomas grandes (LLM), herramientas integradas y patrones avanzados de diseño de agentes múltiples. Puede desarrollar y probar sus sistemas de agentes localmente, luego implementar en un entorno de nube distribuido a medida que sus necesidades crecen.
Autogen ofrece las siguientes características clave:
↑ volver a la cima ↑
Autogen tiene varios paquetes y se basa en una arquitectura en capas. Actualmente, hay tres API principales que su aplicación puede apuntar:
La API central de Autógeno, autogen-core
, se construye siguiendo el modelo de actor. Admite mensajes asincrónicos que pasa entre agentes y flujos de trabajo basados en eventos. Los agentes en la capa central manejan y producen mensajes mecanografiados, utilizando mensajes directos, que funciona como RPC, o mediante la transmisión de temas, que es pub-sub. Los agentes se pueden distribuir e implementar en diferentes lenguajes de programación, mientras se comunican entre sí. Comience aquí si está construyendo sistemas de agente escalables y basados en eventos.
La API Agentchat, autogen-agentchat
, está impulsada por la tarea y está en un nivel alto como Autogen 0.2. Le permite definir agentes de conversación, componerlos en equipos y luego usarlos para resolver tareas. Agentchat en sí se basa en la capa central, pero abstrae gran parte de sus conceptos de sistema de bajo nivel. Si sus flujos de trabajo no caben en la API Agentchat, apunte el núcleo en su lugar. Comience aquí si solo desea concentrarse en comenzar rápidamente con flujos de trabajo de varios agentes.
El paquete de extensión autogen-ext
contiene implementaciones de las interfaces centrales utilizando sistemas de terceros, como Operai Model Client y Azure Code Executors. Además de las extensiones incorporadas, el paquete acomoda extensiones contributadas por la comunidad a través de subackages del espacio de nombres. ¡Esperamos sus contribuciones!
↑ volver a la cima ↑
Primero instale los paquetes:
pip install ' autogen-agentchat==0.4.0.dev6 ' ' autogen-ext[openai]==0.4.0.dev6 '
El siguiente código utiliza el modelo GPT-4O de Openai y debe proporcionar su clave API para ejecutar. Para usar modelos Azure OpenAI, siga las instrucciones aquí.
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 ())
El SDK .NET aún no admite todas las interfaces que ofrece el SDK de Python, pero estamos trabajando para llevarlas a la paridad. Para usar el .NET SDK, debe agregar una referencia de paquete al SRC en su proyecto. Lanzaremos los paquetes Nuget pronto y actualizaremos estas instrucciones cuando eso suceda.
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
Luego, defina y ejecute su primer agente:
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
↑ volver a la cima ↑
↑ volver a la cima ↑
Autogen V0.4 es una reescritura de autógeno desde cero para crear una biblioteca más robusta, escalable, más fácil de usar y de lenguaje cruzado para construir agentes de IA. Algunas características clave incluyen mensajes asíncronos, soporte para agentes distribuidos escalables, diseño extensible modular (traiga sus propios agentes, implementan comportamientos como desee), soporte de idioma cruzado, observabilidad mejorada e integración completa de tipificación. Es un cambio de ruptura.
Escuchamos a nuestros usuarios de autógenos, aprendimos de lo que estaba funcionando y nos adaptamos a arreglar lo que no. Reunimos equipos de gran alcance que trabajan en muchos tipos diferentes de agentes de IA y colaboramos para diseñar un marco mejorado con un modelo de programación más flexible y una mejor escalabilidad.
Queremos reafirmar nuestro compromiso de apoyar la versión original de Autogen (0.2) y el rediseño (0.4). Autogen 0.4 sigue funcionando en progreso, y ahora compartimos el código para construir con la comunidad. No hay planes para desaprobar el autógeno original en el corto plazo, y ambas versiones se mantendrán activamente.
Este código todavía es experimental, así que espere cambios y errores mientras trabajamos hacia una versión estable 0.4. Alentamos a los primeros usuarios a probarlo, darnos comentarios y contribuir. Para aquellos que buscan una versión estable, recomendamos continuar usando 0.2
Si se considera un adoptante temprano, se siente cómodo haciendo algunos cambios en su código y está dispuesto a probarlo, entonces sí.
Autogen 0.2 se puede instalar con:
pip install autogen-agentchat~=0.2
Sí, esto está en la hoja de ruta. Nuestro plan actual es habilitar una implementación de Autogen Studio en la API de alto nivel Agentchat que implementa un conjunto de funcionalidades de agentes (agentes, equipos, etc.).
Para los usuarios familiarizados con Autogen, la biblioteca Agentchat en 0.4 proporciona conceptos similares. Estamos trabajando en una guía de migración.
Todavía estamos desarrollando activamente el autógeno 0.4. Una nueva característica emocionante es la aparición de nuevos SDK para .NET. Los SDK de Python están más adelante en este momento, pero nuestro objetivo es lograr la paridad. Nuestro objetivo es agregar idiomas adicionales en futuras versiones.
Todavía estamos trabajando para mejorar la documentación, las muestras y mejorar el código. Esperamos lanzar antes de fin de año cuando las cosas estén listas.
La Inarchitecture of the Framework comenzó con múltiples equipos de Microsoft que se unieron para abordar las brechas y los aprendizajes de Autógen 0.2, fusionando ideas de varios proyectos predecesores. El equipo trabajó en esto internamente durante algún tiempo para garantizar la alineación antes de trasladar el trabajo de regreso al Abierto en octubre de 2024.
Use problemas de GitHub para informes de errores y solicitudes de funciones. Use discusiones de GitHub para preguntas y discusiones generales.
No podemos usar Discord para las discusiones de proyectos. Por lo tanto, solicitamos que todas las discusiones tengan lugar en https://github.com/microsoft/autogen/discussions/ en el futuro.
https://github.com/microsoft/autogen/ sigue siendo el único repositorio oficial para el desarrollo y el apoyo de Autogen. Somos conscientes de que hay miles de tenedores de autógenos, incluidas muchas para el desarrollo personal y las nuevas empresas con la construcción con o en la parte superior de la biblioteca. No estamos involucrados con ninguna de estas horquillas y no estamos al tanto de ningún plan relacionado con ellos.
Nuestro proyecto sigue siendo de código abierto y accesible para todos. Entendemos que algunas horquillas usan diferentes licencias para alinearse con diferentes intereses. Continuaremos utilizando la licencia más permisiva (MIT) para el proyecto.
Actualmente, no podemos hacer lanzamientos al paquete pyautogen
a través de PYPI debido a un cambio en la propiedad del paquete que se realizó sin nuestra participación. Además, nos estamos moviendo a usar múltiples paquetes para alinear con el nuevo diseño. Consulte los detalles aquí.
Agradecemos a todos los contribuyentes a Autogen 0.2 y esperamos continuar colaborando con todos en la comunidad de autógenos.
↑ volver a la cima ↑
Microsoft y cualquier contribuyente le otorgan una licencia a la documentación de Microsoft y otro contenido en este repositorio bajo la licencia pública internacional de Creative Commons Attribution 4.0, consulte el archivo de licencia y le otorgue una licencia a cualquier código en el repositorio bajo la licencia del MIT, consulte el archivo de código de licencia.
Microsoft, Windows, Microsoft Azure y/u otros productos y servicios de Microsoft a los que se hace referencia en la documentación puede ser marcas comerciales o marcas registradas de Microsoft en los Estados Unidos y/u otros países. Las licencias para este proyecto no le otorgan derechos para usar nombres, logotipos o marcas comerciales de Microsoft. Las pautas de marca registrada de Microsoft se pueden encontrar en http://go.microsoft.com/fwlink/?linkid=254653.
La información de privacidad se puede encontrar en https://go.microsoft.com/fwlink/?linkid=521839
Microsoft y cualquier contribuyente reserva todos los demás derechos, ya sea bajo sus respectivos derechos de autor, patentes o marcas comerciales, ya sea por implicación, impedimento o de otra manera.
↑ volver a la cima ↑