Soluciones de IA generativas para desarrolladores
La inteligencia artificial generativa, habilitada por modelos de lenguaje grandes (LLM), abre nuevas posibilidades emocionantes para desarrolladores y organizaciones de software. Los servicios como El servicio Azure OpenAI hacen que el desarrollo de inteligencia artificial sea accesible con API fáciles de usar. Los desarrolladores de todos los niveles de aptitudes pueden integrar la funcionalidad avanzada de inteligencia artificial en sus aplicaciones sin conocimientos especializados ni inversión en hardware.
Como desarrollador de aplicaciones, es posible que quiera comprender qué rol puede desempeñar y dónde cabe. Por ejemplo, quizás se pregunte en qué nivel de la "pila de IA" centrar su aprendizaje. O quizá te preguntes de qué eres capaz de crear con las tecnologías existentes.
Para responder a estas preguntas, es importante desarrollar primero un modelo mental que asigne cómo encajan las nuevas tecnologías y terminología en lo que ya comprende. Desarrollar un modelo mental le ayuda a diseñar y crear características de IA generativas en sus aplicaciones.
En una serie de artículos, le mostramos cómo se aplica su experiencia de desarrollo de software actual a la inteligencia artificial generativa. Los artículos también establecen una base de palabras clave y conceptos para basarse en a medida que empiece a desarrollar sus primeras soluciones de IA generativas.
Cómo se benefician las empresas del uso de inteligencia artificial generativa
Para comprender cómo se aplica la experiencia actual de desarrollo de software a la inteligencia artificial generativa, es importante comprender cómo las empresas piensan beneficiarse del uso de inteligencia artificial generativa.
Las empresas ven la inteligencia artificial generativa como un medio para mejorar la involucración del cliente, aumentar la eficiencia operativa y mejorar la resolución de problemas y la creatividad. La integración de la inteligencia artificial generativa en sistemas existentes abre oportunidades para que las empresas mejoren sus ecosistemas de software. Puede complementar las funcionalidades de software tradicionales con funcionalidades avanzadas de inteligencia artificial, como recomendaciones personalizadas para los usuarios o un agente inteligente que pueda responder a preguntas específicas sobre una organización o sus productos o servicios.
Estos son algunos escenarios comunes en los que la inteligencia artificial generativa puede ayudar a las empresas:
generación de contenido:
- Genere texto, código, imágenes y sonido. Este escenario puede ser útil para marketing, ventas, TI, comunicaciones internas, etc.
procesamiento de lenguaje natural:
- Redacte o mejore las comunicaciones empresariales a través de sugerencias o generación completa de mensajes.
- Use "chatear con sus datos". Es decir, permitir que un usuario realice preguntas en una experiencia de chat mediante el uso de datos almacenados en las bases de datos o documentos de la organización como base de respuestas.
- Resumen, organización y simplificación de grandes cuerpos de contenido para que el contenido sea más accesible.
- Use la búsqueda semántica. Es decir, permitir a los usuarios buscar documentos y datos sin usar coincidencias exactas de palabras clave.
- Traducir idioma para aumentar el alcance y la accesibilidad del contenido.
análisis de datos:
- Analice los mercados e identifique las tendencias en los datos.
- Modele escenarios "what if" para ayudar a las empresas a planear posibles cambios o desafíos en cada área de la empresa.
- Analice el código para sugerir mejoras, corregir errores y generar documentación.
Un desarrollador de software tiene la oportunidad de aumentar drásticamente su impacto mediante la integración de aplicaciones y funcionalidades de IA generativas en el software en el que se basa su organización.
Creación de aplicaciones de IA generativas
Aunque el LLM realiza el trabajo pesado, construyes sistemas que integran, orquestan y supervisan los resultados. Hay mucho que aprender, pero puede aplicar las aptitudes que ya tiene, incluido cómo:
- Realizar llamadas a las API mediante REST, JSON o los kits de desarrollo de software específicos de un lenguaje (SDK).
- Orquestación de llamadas a API y realización de lógica de negocios
- Almacenar en almacenes de datos y recuperarlos
- Integración de la entrada y los resultados en la experiencia del usuario
- Crear API a las que se pueda llamar desde LLM
El desarrollo de soluciones de inteligencia artificial generativa se basa en sus aptitudes existentes.
Herramientas y servicios de desarrollo
Microsoft invierte en el desarrollo de herramientas, servicios, API, ejemplos y recursos de aprendizaje que le ayudarán a comenzar su recorrido de desarrollo de ia generativa. Cada uno resalta una importante preocupación o responsabilidad necesaria para construir una solución de IA generativa. Para usar un servicio, una API o un recurso determinado de forma eficaz, el desafío es asegurarse de que:
- Comprenda las funciones, roles y responsabilidades habituales en un tipo determinado de característica de inteligencia artificial generativa. Por ejemplo, como discutimos en profundidad en artículos conceptuales que describen los sistemas de chat basados en la generación aumentada con recuperación (RAG), hay muchas responsabilidades arquitectónicas en el sistema. Es importante que comprenda el dominio del problema y las restricciones íntimamente antes de diseñar un sistema que solucione el problema.
- Comprenda las API, los servicios y las herramientas que existen para una función, un rol o una responsabilidad determinada. Ahora que comprende el dominio y las restricciones del problema, puede elegir crear ese aspecto del sistema usted mismo mediante código personalizado o herramientas existentes de código bajo o sin código, o bien puede llamar a las API para los servicios existentes.
- Comprenda las opciones, incluidas las soluciones centradas en código y sin código o poco código. Puede crear todo usted mismo, pero ¿es un uso eficaz de su tiempo y habilidades? Según sus requisitos, normalmente puede unir una combinación de tecnologías y enfoques (código, sin código, poco código, herramientas).
No hay ninguna manera correcta de crear características de IA generativas en las aplicaciones. Puede elegir entre muchas herramientas y enfoques. Es importante evaluar los inconvenientes de cada uno de ellos.
Comience con la capa de aplicación.
No es necesario comprender todo sobre cómo funciona la inteligencia artificial generativa para empezar a trabajar y ser productivo. Como se indicó anteriormente, es probable que ya sepa lo suficiente. Puede usar las API y aplicar aptitudes existentes para empezar.
Por ejemplo, no es necesario entrenar su propio LLM desde cero. La formación de un LLM requiere tiempo y recursos que la mayoría de las empresas no están dispuestos a invertir. En su lugar, construya sobre los modelos básicos previamente entrenados existentes, como GPT-4, realizando llamadas a la API a servicios hospedados existentes, como la API de Azure OpenAI. Agregar características de IA generativas a una aplicación existente no es diferente de agregar ninguna otra funcionalidad basada en una llamada API.
Investigar cómo se entrenan los LLM o cómo funcionan pueden satisfacer su curiosidad intelectual, pero comprender completamente cómo funciona un LLM requiere un profundo conocimiento de la ciencia de datos y el fondo matemático que lo apoya. Obtener este conocimiento podría incluir cursos de nivel de graduado sobre estadísticas, probabilidades y teoría de la información.
Si tiene una formación en informática, puede apreciar que la mayoría del desarrollo de aplicaciones se lleva a cabo en una capa superior en la pila de investigación y tecnologías. Es posible que tenga conocimientos sobre cada capa, pero es probable que se especialice en la capa de desarrollo de aplicaciones, con un enfoque en un lenguaje de programación y una plataforma específicos, como las API disponibles, las herramientas y los patrones.
Lo mismo sucede con el campo de la inteligencia artificial. Puede entender y apreciar la teoría que se utiliza para construir sobre LLM, pero probablemente centrará su atención en la capa de aplicación o ayudará a implementar patrones o procesos para permitir un esfuerzo de IA generativa en su empresa.
Esta es una representación supersimplificada de las capas de conocimiento necesarias para implementar características de IA generativas en una aplicación nueva o existente:
En el nivel más bajo, los científicos de datos están investigando la ciencia de datos para resolver o mejorar la inteligencia artificial en función de un profundo conocimiento matemático de las estadísticas, la teoría de probabilidad, etc.
Una capa más arriba, basándose en la capa fundacional más baja, los científicos de datos implementan conceptos teóricos en LLM, construyendo las redes neuronales y entrenando los pesos y sesgos para proporcionar una pieza práctica de software que pueda aceptar entradas (mensajes) y generar resultados (finalizaciones). El proceso computacional de redacción de finalizaciones basadas en solicitudes se denomina inferencia. Los científicos de datos determinan cómo las neuronas de la red neuronal predicen la siguiente palabra o píxel que se va a generar.
Dada la cantidad de potencia de procesamiento necesaria para entrenar modelos y generar resultados basados en una entrada, los modelos a menudo se entrenan y hospedan en centros de datos de gran tamaño. Es posible entrenar o hospedar un modelo en un equipo local, pero los resultados suelen ser lentos. La velocidad y la eficacia vienen con tarjetas de vídeo de GPU dedicadas que ayudan a controlar el proceso necesario para generar resultados.
Cuando se hospeda en centros de datos grandes, el acceso mediante programación a estos modelos se proporciona a través de las API REST. A veces, los SDK "encapsulan" las API y están disponibles para los desarrolladores de aplicaciones para facilitar el uso. Otras herramientas pueden ayudar a mejorar la experiencia del desarrollador, proporcionando observabilidad u otras utilidades.
Los desarrolladores de aplicaciones pueden realizar llamadas a estas API para implementar la funcionalidad empresarial.
Además de preguntar a los modelos mediante programación, están surgiendo patrones y procesos para ayudar a las organizaciones a construir funciones empresariales fiables basadas en la inteligencia artificial generativa. Por ejemplo, están surgiendo patrones que ayudan a las empresas a garantizar que el texto, el código, las imágenes y el sonido generados cumplan con los estándares éticos y de seguridad y con compromisos de privacidad de los datos de clientes.
En esta pila de cuestiones o capas, si es un desarrollador de aplicaciones responsable de la creación de funcionalidad empresarial, es posible insertar más allá de la capa de aplicación para desarrollar y entrenar su propio LLM. Pero este nivel de comprensión requiere un nuevo conjunto de aptitudes que a menudo solo se desarrollan a través de la educación avanzada.
Si no puede comprometerse a desarrollar competencias en ciencia de datos académicamente para ayudar a crear la siguiente capa hacia abajo en la pila, puede centrarse en desarrollar sus conocimientos sobre temas de capa de aplicación:
- API y SDK: lo que está disponible y lo que producen los distintos puntos de conexión.
- Herramientas y servicios relacionados que le ayudarán a crear todas las características necesarias para una solución de IA generativa lista para producción.
- Ingeniería de mensajes: cómo lograr los mejores resultados mediante la realización o la repetición de preguntas.
- Dónde surgen cuellos de botella y cómo escalar una solución. Esta área incluye comprender qué implica el registro o la obtención de telemetría sin infringir los problemas de privacidad de los clientes.
- Las características de los distintos modelos de lenguaje de gran tamaño: sus puntos fuertes, casos de uso, pruebas de referencia y lo que miden, y diferencias clave entre proveedores y los modelos producidos por cada proveedor. Esta información le ayuda a elegir el modelo adecuado para las necesidades de su organización.
- Los patrones, flujos de trabajo y procesos más recientes que puede usar para crear características de IA generativas eficaces y resistentes en las aplicaciones.
Herramientas y servicios de Microsoft
Puede usar herramientas y servicios de IA generativos sin código y poco código de Microsoft para ayudarle a crear alguna o todas las soluciones. Varios servicios de Azure pueden desempeñar roles fundamentales. Cada uno contribuye a la eficiencia, escalabilidad y solidez de la solución.
API y SDK para un enfoque centrado en código
En el corazón de cada solución de IA generativa hay un modelo LLM. Azure OpenAI proporciona acceso a todas las características disponibles en modelos como GPT-4.
Producto | Descripción |
---|---|
Azure OpenAI | Un servicio hospedado que proporciona acceso a modelos de lenguaje eficaces como GPT-4. Puede usar varias API para realizar todas las funciones típicas de un LLM, incluida la creación de inserciones y la creación de una experiencia de chat. Tiene acceso total a la configuración y las personalizaciones para obtener los resultados que desee. |
Entornos de ejecución
Dado que va a crear lógica de negocios, lógica de presentación o API para integrar inteligencia artificial generativa en las aplicaciones de la organización, necesita un servicio para hospedar y ejecutar esa lógica.
Producto | Descripción |
---|---|
App de Azure Service (o uno de varios servicios en la nube basados en contenedores) | Esta plataforma puede hospedar las interfaces web o las API a través de las cuales los usuarios interactúan con el sistema de chat rag. Admite el desarrollo, la implementación y el escalado rápidos de aplicaciones web, por lo que es más fácil administrar los componentes front-end del sistema. |
Funciones de Azure | Usa computación sin servidor para manejar tareas impulsadas por eventos dentro del sistema de chat RAG. Por ejemplo, úselo para desencadenar procesos de recuperación de datos, procesar consultas de usuario o controlar tareas en segundo plano, como la sincronización de datos y la limpieza. Permite un enfoque más modular y escalable para crear el back-end del sistema. |
Soluciones de código bajo y sin código
Parte de la lógica que necesita para implementar la visión de IA generativa se puede crear rápidamente y hospedarse de forma confiable mediante una solución de código bajo o sin código.
Producto | Descripción |
---|---|
Azure AI Foundry | Puede usar Azure AI Foundry para entrenar, probar e implementar modelos de aprendizaje automático personalizados para mejorar un sistema de chat RAG. Por ejemplo, use Azure AI Foundry para personalizar la generación de respuestas o para mejorar la relevancia de la información recuperada. |
Base de datos vectorial
Algunas soluciones de inteligencia artificial generativa pueden requerir almacenamiento y recuperación de datos usados para aumentar la generación. Un ejemplo es un sistema de chat basado en RAG que permite a los usuarios chatear con los datos de su organización. En este caso de uso, necesita un almacén de datos vectoriales.
Producto | Descripción |
---|---|
Azure AI Search | Puede usar este servicio para buscar eficazmente en grandes conjuntos de datos para encontrar información relevante que informe de las respuestas generadas por el modelo de lenguaje. Es útil para el componente de recuperación de un sistema RAG, por lo que las respuestas generadas son tan informativas y contextualmente relevantes como sea posible. |
Azure Cosmos DB | Este servicio de base de datos multimodelo distribuido globalmente puede almacenar grandes cantidades de datos estructurados y no estructurados a los que necesita acceder el sistema de chat RAG. Sus funcionalidades de lectura y escritura rápidas hacen que sea ideal para servir datos en tiempo real al modelo de lenguaje y para almacenar interacciones del usuario para un análisis posterior. |
Azure Cache for Redis | Este almacén de datos en memoria totalmente administrado se puede usar para almacenar en caché información a la que se accede con frecuencia, lo que reduce la latencia y mejora el rendimiento del sistema de chat RAG. Es especialmente útil para almacenar datos de sesión, preferencias de usuario y consultas comunes. |
Azure Database for PostgreSQL: servidor flexible | Este servicio de base de datos administrado puede almacenar datos de aplicación, incluidos registros, perfiles de usuario y datos históricos de chat. Su flexibilidad y escalabilidad admiten las necesidades dinámicas de un sistema de chat RAG para que los datos estén disponibles y seguros de forma coherente. |
Cada uno de estos servicios de Azure contribuye a crear una arquitectura completa, escalable y eficaz para una solución de inteligencia artificial generativa. Ayudan a los desarrolladores a acceder y usar lo mejor de las funcionalidades de la nube de Azure y las tecnologías de inteligencia artificial.
Desarrollo de IA generativo centrado en código mediante la API de Azure OpenAI
En esta sección, nos centramos en la API de Azure OpenAI. Como se indicó anteriormente, puede acceder a la funcionalidad de LLM mediante programación a través de una API web RESTful. Puede usar literalmente cualquier lenguaje de programación moderno para llamar a estas API. En muchos casos, los SDK específicos del lenguaje o de la plataforma funcionan como contenedores en torno a las llamadas a la API REST para que la experiencia sea más idiomática.
Esta es la lista de contenedores de la API REST de Azure OpenAI:
- Biblioteca cliente de Azure OpenAI para .NET
- Biblioteca cliente de Azure OpenAI para Java
- Biblioteca cliente de Azure OpenAI para JavaScript
- Módulo cliente de Azure OpenAI para Go
- Use el paquete de Python de OpenAI y cambie varias opciones. Python no ofrece una biblioteca cliente específica de Azure.
Si un SDK de plataforma o lenguaje no está disponible, el peor de los casos es que debe realizar llamadas REST directamente a las API web:
La mayoría de los desarrolladores están familiarizados con cómo llamar a las API web.
Azure OpenAI ofrece una variedad de API diseñadas para facilitar diferentes tipos de tareas basadas en inteligencia artificial, por lo que los desarrolladores pueden integrar funcionalidades avanzadas de inteligencia artificial en sus aplicaciones. Esta es una introducción a las API clave disponibles en OpenAI:
- API de finalizaciones de chat: esta API se centra en escenarios de generación de texto, incluidas las funcionalidades conversacionales para admitir la creación de bots de chat y asistentes virtuales que pueden participar en diálogos naturales y similares a los humanos. Está optimizado para casos de uso interactivos, como soporte técnico al cliente, asistentes personales y entornos de aprendizaje interactivos. Sin embargo, se usa para todos los escenarios de generación de texto, como resumen, autocompletar, escritura de documentos, análisis de texto y traducción. Es el punto de entrada de las funcionalidades de visión que se encuentran actualmente en versión preliminar (es decir, para cargar una imagen y formular preguntas sobre ella).
- Moderation API: esta API está diseñada para ayudar a los desarrolladores a identificar y filtrar contenido potencialmente dañino dentro del texto. Es una herramienta que ayuda a garantizar interacciones de usuario más seguras mediante la detección automática de material ofensivo, no seguro o inapropiado.
- API de incrustaciones: la API de incrustaciones genera representaciones vectoriales de entradas de texto. Convierte palabras, oraciones o párrafos en vectores de alta dimensión. Estas incrustaciones se pueden usar para la búsqueda semántica, la agrupación en clústeres, el análisis de similitud de contenido, etc. Captura el significado subyacente y las relaciones semánticas en el texto.
- Image Generation API: use esta API para generar imágenes originales de alta calidad y arte a partir de descripciones textuales. Se basa en DALL de OpenAI· Modelo E, que puede crear imágenes que coincidan con una amplia variedad de estilos y temas en función de las indicaciones que recibe.
- Audio API: esta API proporciona acceso al modelo de audio de OpenAI y está diseñado para el reconocimiento automático de voz. Puede transcribir el idioma hablado en texto o texto en voz, soportando varios idiomas y dialectos. Resulta útil para las aplicaciones que requieren comandos de voz, transcripción de contenido de audio, etc.
Aunque puede usar inteligencia artificial generativa para trabajar con muchas modalidades multimedia diferentes, en el resto de este artículo, nos centramos en soluciones de IA generativas basadas en texto. Estas soluciones incluyen escenarios como chat y resumen.
Empiece a desarrollar con IA generativa
Los desarrolladores de software que son nuevos en un lenguaje, API o tecnología desconocidos suelen empezar a aprenderlo siguiendo tutoriales o módulos de entrenamiento que muestran cómo crear aplicaciones pequeñas. Algunos desarrolladores de software prefieren adoptar un enfoque autoguiado y crear aplicaciones experimentales pequeñas. Ambos enfoques son válidos y útiles.
A medida que empieces, es mejor empezar pequeño, prometer poco, iterar y crear tu comprensión y habilidad. El desarrollo de aplicaciones mediante el uso de inteligencia artificial generativa tiene desafíos únicos. Por ejemplo, en el desarrollo de software tradicional, puedes confiar en una salida determinista. Es decir, para cualquier conjunto de entradas, puede esperar la misma salida exactamente cada vez. Pero la inteligencia artificial generativa no es determinista. Nunca se obtiene exactamente la misma respuesta dos veces con una indicación determinada, lo cual es el origen de muchos nuevos desafíos.
A medida que empiece, tenga en cuenta estas sugerencias.
Sugerencia 1: Sé claro sobre lo que quieres lograr
- Ser específico sobre el problema que está intentando resolver: la inteligencia artificial generativa puede resolver una amplia gama de problemas, pero el éxito proviene de definir claramente el problema específico que tiene como objetivo resolver. ¿Está intentando generar texto, imágenes, código o algo más? Cuanto más específico sea, mejor podrá adaptar la inteligencia artificial para satisfacer sus necesidades.
- Comprender a su público: conocer a su público ayuda a adaptar la salida de la inteligencia artificial para satisfacer sus expectativas, ya sea usuarios casuales o expertos en un campo determinado.
Sugerencia 2: Usa los puntos fuertes de las LLM
- Comprender las limitaciones y sesgos de las LLM: Aunque las LLM son poderosas, tienen limitaciones y sesgos inherentes. Conocer las limitaciones y sesgos puede ayudarle a diseñarlas o incorporar mitigaciones.
- Comprender dónde destacan las LLM: las LLM destacan en tareas como la creación de contenido, resumir y la traducción de idiomas. Aunque sus funcionalidades de toma de decisiones y funcionalidades discriminativas se están poniendo más fuertes con cada nueva versión, puede haber otros tipos de inteligencia artificial que sean más adecuados para su escenario o caso de uso. Elija la herramienta adecuada para el trabajo.
Sugerencia 3: Para obtener buenos resultados, use buenas indicaciones
- Obtenga información sobre los procedimientos recomendados de ingeniería de avisos: La creación de avisos eficaces es un arte. Experimente con diferentes avisos para ver cómo afectan a la salida. Sea conciso pero descriptivo.
- Confirmar el refinamiento iterativo: a menudo, es posible que el primer mensaje no produzca el resultado deseado. Es un proceso de prueba y error. Utilice los resultados para refinar aún más las indicaciones.
Creación de la primera solución de IA generativa
Si desea empezar a experimentar con la creación de una solución de inteligencia artificial generativa inmediatamente, se recomienda echar un vistazo a Introducción al chat mediante su propio ejemplo de datos para Python. El tutorial también está disponible para .NET, Javay javaScript.
Consideraciones finales para el diseño de aplicaciones
Esta es una breve lista de aspectos que se deben tener en cuenta y otros aspectos de este artículo que podrían afectar a las decisiones de diseño de aplicaciones:
- Defina el espacio de problemas y el público claramente para alinear las funcionalidades de la inteligencia artificial con las expectativas del usuario. Optimice la eficacia de la solución para el caso de uso previsto.
- Use plataformas de código bajo o sin código para crear prototipos y desarrollo rápidos si cumplen los requisitos del proyecto. Evalúe el equilibrio entre la velocidad de desarrollo y la personalización. Explore las posibilidades de soluciones de código bajo y sin código para partes de la aplicación para acelerar el desarrollo y permitir que los miembros del equipo no técnico contribuyan al proyecto.