Imagine un mundo en el que los agentes de IA puedan actuar como su asistente personal y completar tareas por usted, como configurar una devolución en amazon o cancelar reuniones en función de sus correos electrónicos. Esto requeriría que los agentes operaran sus aplicaciones de forma interactiva en flujos de trabajo complejos, y realmente no ha habido una buena manera de comparar a dichos agentes. Hasta ahora.
Los asistentes de IA (por ejemplo, los de nuestros teléfonos móviles) están mejorando a medida que mejoran los modelos de IA subyacentes. Hace unos años, tenían dificultades para responder correctamente a preguntas factuales simples. Hoy, tienen comenzó para llegar al punto en que puedan operar aplicaciones en nuestro nombre para realizar tareas básicas. Por ejemplo, gran parte de las aplicaciones recientes GoogleIO y WWDC de Apple Los eventos giraron en torno a esta visión de los asistentes de IA como agentes autónomos que trabajan en nuestro nombre.
En el futuro, podrán completar de forma autónoma tareas más complejas en nuestras aplicaciones. Por ejemplo, podría decir: “Oye, algunos de mis compañeros de trabajo cancelaron reuniones por correo electrónico; borra los recordatorios telefónicos correspondientes”. El agente revisaría de forma autónoma tu bandeja de entrada de correo electrónico, averiguaría qué compañeros de trabajo cancelaron, iría a la aplicación de calendario, determinaría qué reuniones son con esos compañeros de trabajo y las cancelaría.
Una de las formas en que los modelos de IA pueden abordar tales tareas es interactivamente escribiendo código y llamando API. API permitir que los agentes realicen acciones elementales en las aplicaciones, código les permite orquestarlos en una lógica compleja y un flujo de control, y interacción Les permite explorar cuentas de usuario y adaptarse en función de los resultados de la ejecución del código.
Consideremos un ejemplo en la figura siguiente, donde el agente tiene la tarea de iniciar una lista de reproducción con suficientes canciones para cubrir la duración del entrenamiento del usuario de hoy. Para ello, el agente primero debe escribir un código que llame a SimpleNote API (1er bloque de código) para buscar y “leer” (imprimir) la nota que contiene el programa de entrenamiento. Solo después de esto interacción Para observar cómo está estructurada la nota (teniendo en cuenta que la duración se indica por día), el agente puede escribir el código necesario (segundo bloque de código), que implica encontrar el día de la semana de hoy y extraer la duración asociada. Para seleccionar una lista de reproducción, debe escribir rich código con bucles for y otro flujo de control para iterar sobre listas de reproducción, calcular duraciones de listas de reproducción y reproducir una que cubra la duración del entrenamiento (tercer bloque de código).
Ahora que sabemos cómo un agente puede completar tales tareas, la pregunta es:
¿Cómo podemos desarrollar y evaluar dichos agentes de codificación para tareas digitales cotidianas en diversas aplicaciones?
Para ello, necesitamos (i) un entorno de ejecución rico, estable y reproducible donde los agentes puedan interactuar con muchas aplicaciones cotidianas a través de código y API, (ii) tareas complejas que requieran llamadas API y codificación rica e interactiva, y (iii) un marco de evaluación confiable.
Puntos de referencia existentes como Gorila, Banco de herramientas, Banco API, Charla sobre herramientas, Banco de descanso no cumplen ninguno de estos tres requisitos. Además de carecer del tipo de entorno mencionado anteriormente, sus tareas solo implican una secuencia lineal de 1 a 4 llamadas a API, sin necesidad de codificación rica e interactiva, y evalúan mediante la comparación de la solución del agente con una solución de referencia (utilizando un LLM o un humano), lo que no funciona bien para tareas complejas que admiten muchas soluciones variables.
Para abordar esta brecha, presentamos Mundo de las aplicaciones, que constituye (1) un entorno mundial controlable y simulado (motor) donde los agentes de codificación pueden operar varias aplicaciones a través de API en nombre de las personas, (2) a punto de referencia de tareas complejas definidas sobre este entorno, y (3) un sólido evaluación Marco para evaluar el desempeño del agente.
2.1 Engine: mundo digital simulado
AppWorld Engine es un simulador basado en API de alta fidelidad (60 000 líneas de código) que simula un ecosistema de 9 aplicaciones cotidianas de varios dominios (Gmail para correo electrónico, amazon para compras, Spotify para música, etc.). Este motor está respaldado por un backend local totalmente controlable con 457 API y más de 100 tablas de bases de datos, que imitan de cerca las ricas características de las aplicaciones reales. Estas API tienen documentación detallada (Explorar interactivamente) que los agentes pueden leer para comprender su uso.
Luego simulamos un mundo digital de personas y sus actividades digitales en estas aplicaciones sobre este motor. En particular, llenamos las bases de datos de la aplicación (BD) con 106 personas ficticias que viven en este mundo simulado. Están relacionadas entre sí a través de varias relaciones, como compañeros de habitación, amigos, gerentes, etc., para permitir tareas interpersonales, como dividir las facturas con los compañeros de habitación. Luego, se simula su vida cotidiana para realizar varias actividades personales e interpersonales en sus cuentas de la aplicación, como pedir camisetas en amazon para entrega a domicilio, pedirle a un compañero de habitación las llaves del auto por teléfono, etc. Las BD finales tienen más de 300 000 filas que abarcan 726 columnas.
2.2 Benchmark de tareas complejas
AppWorld Benchmark crea 750 tareas diarias sobre este motor (los ejemplos se muestran arriba), lo que requiere muchas API (a menudo más de 15), abarca varias aplicaciones (1 a 4) y requiere una codificación rica e interactiva (a menudo más de 80 líneas con muchas construcciones de programación). Vea las estadísticas en la siguiente figura y Explorar tareas interactivamente en nuestro patio de juegos.
Cada instrucción de tarea viene con un supervisor (persona en AppWorld) en cuyo nombre el agente debe realizar la tarea. El agente tiene acceso a todas sus cuentas de aplicación. El estado inicial de la base de datos de cada tarea está cuidadosamente diseñado (programáticamente) para garantizar que la tarea esté bien definida y tenga distracciones y obstáculos realistas. Las tareas también vienen con variaciones de tarea, que verifican de manera integral si un agente puede resolver la tarea de manera confiable bajo diferentes condiciones iniciales y variaciones de instrucción.
Todas las implementaciones de tareas están diseñadas y desarrolladas por nosotros (no son de colaboración colectiva). Sus implementaciones abarcan más de 40 000 líneas de código (sí, se invierte mucho en el desarrollo de tareas; consulte el documento).
2.3. Marco de evaluación robusto
Las tareas complejas en AppWorld se pueden completar de muchas maneras (por ejemplo, se puede descargar un recibo de pedido desde su API de amazon o su correo electrónico de confirmación). Además, un agente que resuelva la tarea puede causar daños colaterales de muchas maneras diferentes (por ejemplo, iniciar una devolución no solicitada). Por lo tanto, un proceso-basado El enfoque que compara el código generado por el agente con el código de referencia o las llamadas API es inadecuado para evaluar la finalización de la tarea.
En cambio, AppWorld utiliza un basado en el estado Enfoque. En particular, para cada tarea, definimos un conjunto programático de pruebas unitarias que toman instantáneas de los estados de la base de datos como entradas: (1) estado antes de que comience el agente y (2) después de que finalice. Luego, verificamos que se realicen todos los cambios esperados y no inesperados en la base de datos. Esto nos permite robustamente comprobar si un agente completó la tarea correctamente sin causar daños colaterales.
Por último, para garantizar que las tareas se puedan resolver, escribimos códigos de solución de validación y verificamos programáticamente que su ejecución pase todas las pruebas de evaluación.
Hemos evaluado muchos LLM con varios métodos de solicitud de pocos intentos, como ReAct, plan andexecute, generación de código completo con reflexión y llamada de funciones. Incluso el mejor LLM, GPT-4o, tiene un rendimiento bastante deficiente. Por ejemplo, solo completa correctamente aproximadamente el 30 % de las tareas en el conjunto de pruebas de desafío. GPT-4 Turbo y los LLM abiertos se quedan mucho más atrás.
Además, los puntajes son mucho más bajos para nuestra métrica de robustez más estricta, que verifica si los agentes pueden completar de manera confiable todas las variaciones de la tarea bajo diferentes condiciones de inicio y perturbaciones de instrucciones.
Además, las puntuaciones disminuyen sustancialmente a medida que aumenta la dificultad, según nuestras etiquetas asignadas a mano y otros indicadores de dificultad, como la cantidad de API y líneas de código basadas en nuestras soluciones de validación escritas.
AppWorld es una base modular y extensible que abre muchas posibilidades interesantes en la automatización de tareas digitales. Por ejemplo, los trabajos futuros pueden:
- Ampliar el motor de AppWorld para soportar el control basado en UI/navegador móvil para las tareas existentes a fin de proporcionar un punto de referencia unificado para código, API y agentes autónomos basados en UI.
- Amplíe el punto de referencia de AppWorld para incluir tareas que requieran coordinación y colaboración de múltiples agentes (y humanos) (por ejemplo, programar una reunión de calendario con un amigo coordinándose con su agente por correo electrónico).
- Superpongamos nuestro motor del mundo digital a un motor del mundo físico, como simulacroscon agentes que juegan a roles para estudiar la dinámica social y el comportamiento en un entorno controlado.
- Utilice el motor como un entorno de pruebas sin consecuencias para estudiar los posibles riesgos de privacidad y seguridad que pueden surgir cuando se les otorga a los asistentes digitales la “autoridad” para actuar en nuestro nombre en el mundo real.
- Y, por supuesto, ampliar AppWorld a un ecosistema aún más grande de aplicaciones y tareas.
Estamos entusiasmados por nosotros mismos y por que otros puedan seguir estas direcciones (¡y más!) en AppWorld. ¡Comuníquese con nosotros si necesita ayuda o desea colaborar!
AppWorld es fácil de usar y rápido. Puedes instalar el paquete Python de código abierto y comenzar a crear y probar tu agente. Si tienes un agente, el siguiente código es todo lo que necesitas para ejecutarlo y evaluarlo en AppWorld.
Para obtener documentos, códigos, tablas de clasificación, explorador de datos (tareas, API, trayectorias de agentes), área de juegos interactiva (interactúe directamente con las tareas de AppWorld), video explicativo y más, visite https://appworld.dev.
NUEVO:AppWorld ganó el Mejor documento de recursos premio en ACL'24.
Fuente de la imagen:Todas las imágenes son creadas por el autor.