A principios de la década de 1990, trabajé en un gran laboratorio de investigación de telecomunicaciones, como parte del grupo Advanced Local Loop. Nuestro ámbito problemático era la “última milla”: llevar servicios a los hogares de las personas. Una de mis áreas de investigación implicó pensar en lo que podría suceder cuando se completara el cambio de red de servicios analógicos a digitales.
Pasé mucho tiempo en la biblioteca del laboratorio, contemplando cómo sería la informática en un futuro con ancho de banda universal. Uno de los conceptos que me fascinó fue la computación ubicua, donde las computadoras desaparecen en un segundo plano y Los agentes de software se convierten en nuestros proxy., interactuando con servicios de red en nuestro nombre. Esa idea inspiró el trabajo en Apple, IBM, General Magic y muchas otras empresas.
Una de las pioneras del concepto de agente de software fue la profesora del MIT Pattie Maes. Su trabajo traspasó las fronteras entre redes, programación e inteligencia artificial, y se centró en dos ideas relacionadas: agentes inteligentes y agentes autónomos. Se trataba de programas adaptativos que podían encontrar y extraer información para los usuarios y cambiar su comportamiento mientras lo hacían.
A la industria del software le ha llevado más de 30 años ponerse al día con esa investigación pionera, pero con una combinación de tecnologías basadas en transformadores. grandes modelos de lenguaje (LLM) y canales de orquestación adaptativafinalmente podemos comenzar a implementar esas ambiciosas ideas originales.
Kernel semántico como marco de agente
El equipo de Kernel Semántico de Microsoft está basándose en el modelo Asistente de OpenAI para ofrecer un tipo de agente inteligente, junto con un conjunto de herramientas para gestionar llamadas con múltiples funciones. También brindan una forma de administrar los mensajes enviados hacia y desde la API de OpenAI, y de usar complementos para integrar el chat de propósito general con integraciones basadas en datos basados en RAG.
El equipo está empezando a ir más allá del original. LangChain-como modelo de orquestación con la reciente versión 1.01 y ahora está pensando en Semantic Kernel como un tiempo de ejecución para una conversación contextual. Eso requiere mucha más gestión de la conversación y del historial de mensajes utilizado. Todas las interacciones pasarán por la función de chat, y Semantic Kernel gestionará tanto las entradas como las salidas.
Están sucediendo muchas cosas aquí. Primero, estamos viendo un movimiento hacia una pila de IA. Quizás sea mejor considerar el modelo Copilot de Microsoft como una implementación de una pila de agentes moderna, basándose en la inversión de la compañía en infraestructura preparada para IA (tanto para inferencia como para capacitación), su biblioteca de modelos básicos, hasta el soporte para complementos. que funcionan en las plataformas de Microsoft y OpenAI.
El papel de los complementos del Kernel Semántico
Un aspecto clave de actualizaciones recientes de Semantic Kernel simplifica los chats con interfaces de usuario de LLM, ya que ya no es necesario administrar historiales explícitamente. Esto ahora lo maneja Semantic Kernel tan pronto como defina los servicios de IA que utilizará para su aplicación. El resultado es un código mucho más fácil de entender, abstraído del modelo subyacente.
Al gestionar el estado de la conversación por usted, Semantic Kernel se convierte en el agente de contexto para su agente. Lo siguiente que necesita es una forma de interactuar con herramientas externas. Aquí es donde Los complementos agregan descripciones compatibles con LLM a los métodos.. No hay necesidad de hacer más que agregar estos metadatos a su código. Una vez que está allí, un chat puede desencadenar acciones a través de un APIcomo subir la calefacción mediante una plataforma doméstica inteligente como Home Assistant.
Cuando agrega un complemento al objeto del kernel Semantic Kernel, queda disponible para la orquestación basada en chat. El LLM subyacente proporciona la comprensión del lenguaje necesaria para ejecutar la acción asociada con la descripción del complemento más probable. Esto garantiza que los usuarios que ejecutan su agente no necesiten ser tediosamente precisos. Una descripción del complemento «Establecer la temperatura de la habitación» podría activarse mediante «Hacer la habitación más cálida» o «Establecer la habitación a 17 ° C». Ambos indican la misma intención e indican al Semantic Kernel que llame al método apropiado.
Alternativamente, podrá utilizar Complementos de OpenAI, cuyo soporte es actualmente experimental. Estos complementos utilizan especificaciones OpenAPI para acceder a API externas, con llamadas vinculadas a descripciones semánticas. La descripción semántica de una llamada API permite a los LLM de OpenAI realizar la llamada adecuada en función del contenido de un mensaje. Semantic Kernel puede gestionar el contexto general y encadenar llamadas a una serie de API, utilizando sus propios complementos y complementos de OpenAI. Semantic Kernel puede incluso mezclar modelos y utilizarlos junto con su propia memoria semántica, utilizando búsquedas vectoriales fundamentar el LLM en datos del mundo real.
El trabajo de Microsoft aquí toma las capacidades lingüísticas de un LLM y las envuelve en el contexto del usuario, los datos y la API. Aquí es donde es posible empezar a llamar a Semantic Kernel una herramienta para construir agentes inteligentes, ya que utiliza sus mensajes y chats de usuarios para orquestar dinámicamente consultas contra fuentes de datos y recursos alojados en Internet.
¿Pueden los agentes de LLM ser autónomos?
Otro conjunto de funciones del Núcleo Semántico comienza a implementar una forma de autonomía. Aquí es donde las cosas se ponen realmente interesantes, porque al administrar el contexto, nuestro agente del Kernel Semántico puede seleccionar los complementos apropiados de su biblioteca actual para brindar respuestas.
Aquí podemos aprovechar Planificadores del Kernel Semántico para crear un flujo de trabajo. El planificador de manillares lanzado recientemente puede generar dinámicamente una orquestación que incluye bucles y declaraciones condicionales. Cuando un usuario crea una tarea en un chat, el planificador crea una orquestación basada en esas instrucciones y llama a los complementos según sea necesario para completar la tarea. Semantic Kernel se basa únicamente en aquellos complementos definidos en el código de su kernel, utilizando un mensaje que garantiza que solo se utilicen esos complementos.
Hay problemas con el código que funciona de forma autónoma. ¿Cómo puede estar seguro de que se mantiene firme y evita imprecisiones y errores? Una opción es trabajar con la herramienta Prompt Flow en Estudio de IA de Azure a construir un marco de prueba que evalúa la precisión de sus planificadores y complementos. Puede utilizar una gran variedad de datos de referencia para determinar cómo funciona su agente con diferentes entradas de usuario. Es posible que necesite generar consultas sintéticas para obtener suficientes datos, utilizando un LLM para producir las solicitudes iniciales.
Los copilotos de Microsoft son un ejemplo de agentes inteligentes en acción, y es bueno ver que el equipo de Semantic Kernel utiliza el término. Con más de 30 años de investigación sobre agentes de software, se puede aprovechar mucha experiencia para evaluar y mejorar los resultados de la orquestación del Kernel Semántico y para guiar a los desarrolladores en la construcción de las experiencias de usuario y los marcos que estos agentes pueden ofrecer.
Agentes inteligentes 30 años después
Es importante tener en cuenta que el modelo de agente de Semantic Kernel difiere del concepto de agente original en un aspecto importante: no envía código inteligente para ejecutar consultas en plataformas remotas. Pero en los últimos 30 años hemos visto una gran revolución en el desarrollo de aplicaciones distribuidas que ha cambiado gran parte de lo que se necesita para soportar las tecnologías de agentes.
El resultado de este nuevo enfoque de desarrollo es que ya no es necesario ejecutar código arbitrario y no confiable en servidores remotos. En cambio, podemos aprovechar las API y los recursos de la nube para tratar a un agente como un flujo de trabajo orquestado que abarca sistemas distribuidos. Además, ese agente puede reorganizar inteligentemente esa orquestación en función de operaciones anteriores y actuales. Moderno microservicios son una plataforma ideal para estosobre la base de Arquitectura orientada a Servicios conceptos con OpenAPI autodocumentado y GrafoQL descripciones.
Este parece ser el modelo que está adoptando Semantic Kernel, al proporcionar un marco para albergar esos flujos de trabajo dinámicos. Combinar llamadas API, búsquedas vectoriales y complementos de OpenAI con una estructura programática relativamente simple le brinda una manera de construir una alternativa moderna a la premisa original del agente. Después de todo, ¿cómo podríamos distinguir los agentes benignos del malware? En 1994, los virus informáticos eran algo raro y los ataques a la red eran materia de ciencia ficción.
Hoy podemos usar definiciones de OpenAPI para enseñar a los LLM cómo consultar y extraer datos de API confiables. Todo el código necesario para realizar esas conexiones lo entrega la IA subyacente: todo lo que necesita es un mensaje y una pregunta del usuario. Semantic Kernel proporciona indicaciones y ofrece respuestas en lenguaje natural, en contexto con la pregunta original.
Puede pensar en esto como un enfoque moderno para hacer realidad esos primeros conceptos de agentes, ejecutando código en un solo lugar en la nube, en lugar de en muchos sistemas diferentes. El uso de API reduce la carga en los sistemas que proporcionan información al agente y hace que el proceso sea más seguro.
A medida que estas tecnologías evolucionan, es importante no tratarlas como algo totalmente nuevo. Este es el resultado de décadas de trabajo de investigación, un trabajo que finalmente llega a sus usuarios previstos. Hay mucho en esa investigación que podría ayudarnos a ofrecer agentes inteligentes, confiables y fáciles de usar que sirvan como nuestros representantes en la red de próxima generación, de manera muy similar a lo que pretendían aquellos investigadores iniciales en la década de 1990.
Copyright © 2024 IDG Communications, Inc.