Compartir vía


Introducción a la creación de soluciones de IA generativas para desarrolladores

La inteligencia artificial generativa, habilitada por modelos de lenguaje grande (LLM), abre nuevas posibilidades emocionantes para desarrolladores y organizaciones de software. Los servicios como Azure OpenAI democratizan el desarrollo de inteligencia artificial al ofrecer API fáciles de usar, lo que permite a los desarrolladores de cualquier nivel de aptitud integrar la funcionalidad avanzada de inteligencia artificial en sus aplicaciones sin necesidad de conocimientos especializados ni requerir que las organizaciones inviertan en hardware.

Como desarrollador de aplicaciones, es posible que tenga dificultades para comprender qué rol puede desempeñar y dónde cabe. Por ejemplo, quizás se pregunte en qué nivel de la "pila de IA" debe centrar el aprendizaje? ¿O podría preguntarse qué es capaz de crear dadas las tecnologías existentes?

Para responder a estas preguntas, es importante desarrollar primero un modelo mental que asigne cómo encajan todas las nuevas terminologías y tecnologías en lo que ya comprende. Desarrollar un modelo mental le ayuda a diseñar y crear características de IA generativas en sus aplicaciones. Para ello, el propósito de esta serie de artículos es mostrar cómo se aplica la experiencia actual de desarrollo de software a la inteligencia artificial generativa. Los artículos también proporcionan un conjunto de niveles sobre palabras clave y conceptos a medida que comienza a desarrollar sus primeras soluciones de IA generativas.

¿Qué esperan las empresas lograr con la inteligencia artificial generativa?

Para comprender cómo se aplica la experiencia actual de desarrollo de software a la inteligencia artificial generativa, es importante empezar por comprender cómo las empresas piensan beneficiarse de ella.

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 de la organización o del producto.

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. Esto podría 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.
    • "Chatear con sus datos" o, en otras palabras, permitir a un usuario formular preguntas en una experiencia de chat mediante datos almacenados en bases de datos o en documentos como base de respuestas.
    • Resumen, organización y simplificación de grandes cuerpos de contenido para que el contenido sea más accesible.
    • "Búsqueda semántica" o, en su lugar, permite a los usuarios buscar en 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.

Como puede ver, los desarrolladores de software tienen 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 dependen sus organizaciones.

¿Cómo se compilan estos tipos de aplicaciones?

Aunque el modelo de lenguaje grande (LLM) realiza el trabajo pesado, se crean sistemas que integran, orquestan y supervisan los resultados. Aunque hay mucho que aprender, puede aplicar las aptitudes que ya conoce:

  • Realizar llamadas a las API mediante REST, JSON o kits de desarrollo de software específicos del 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 entradas y resultados en la experiencia del usuario
  • Creación de API a las que se puede llamar desde LLMs

De este modo, el desarrollo de soluciones de inteligencia artificial generativa se basa en sus aptitudes existentes.

¿Qué herramientas y servicios están disponibles?

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 alguna preocupación importante o responsabilidad necesaria para construir una solución de inteligencia artificial generativa. Para usar un servicio, una API o un recurso determinado de forma eficaz, el desafío es asegurarse de que:

  • ¿Comprende las funciones, roles y responsabilidades habituales en un tipo determinado de característica de IA generativa? Por ejemplo, como se describe en artículos conceptuales que describen los sistemas de chat basados en generación aumentada de 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.
  • ¿Comprende 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 con código personalizado o usar herramientas existentes de poco código o sin código, o llamar a las API para los servicios existentes.
  • Comprenda las opciones, incluidas las soluciones centradas en código y sin código o código bajo. Podría crear todo usted mismo, pero ¿es un uso eficaz de su tiempo y habilidad? Según sus requisitos, normalmente puede unir una combinación de tecnologías y enfoques (código, sin código, poco código, herramientas).

El punto aquí es que no hay ninguna manera correcta de crear características de IA generativas en las aplicaciones. Existen muchas herramientas y enfoques. Es importante evaluar los inconvenientes.

Comience con un enfoque en la capa de aplicación.

No es necesario comprender todo lo relacionado con los trabajos de inteligencia artificial generativa para empezar a trabajar y ser productivos. Como se indicó anteriormente, es probable que ya sepa lo suficiente, ya que puede usar las API y aplicar las aptitudes existentes.

Por ejemplo, no es necesario entrenar su propio LLM desde cero. La formación de un LLM requeriría tiempo y recursos que la mayoría de las empresas no están dispuestos a comprometer. En su lugar, se basa en modelos básicos previamente entrenados existentes, como GPT-4, mediante la realización de llamadas API a servicios hospedados existentes, como la API de Azure OpenAI. De este modo, 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 realmente comprender cómo funcionan los LLM requiere un profundo conocimiento de la ciencia de datos y el fondo matemático para apoyarlo. Esto puede incluir cursos de nivel de graduado sobre estadísticas, probabilidades y teoría de la información.

Si procede de un fondo de informática, puede apreciar que la mayoría del desarrollo de aplicaciones se produce 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 (API disponibles, herramientas, patrones, etc.).

Lo mismo sucede con el campo de la inteligencia artificial. Puede comprender y apreciar la teoría que se basa en la creación de MÁQUINAS virtuales, pero es probable que centre su atención en la capa de aplicación o ayude a implementar patrones o procesos para permitir un esfuerzo de inteligencia artificial generativa en su empresa.

Esta es una representación demasiado simplificada de las capas de conocimiento necesarias para implementar características de IA generativas en una aplicación nueva o existente:

Diagrama de capas de conocimiento. En la parte inferior, un cuadro que contiene las palabras ciencia de datos fundamentales, investigación inteligente artificial, estadísticas y teoría de probabilidad. En el siguiente nivel superior, las palabras entrenan modelos de lenguaje grandes. El siguiente nivel superior, creación de servicios, herramientas y desarrollo de API. Y en el nivel más alto, capa de aplicación, patrones y procesos.

En el nivel más bajo, tiene científicos de datos que están realizando investigaciones de 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 superior, basada en la capa básica más baja, tiene científicos de datos que implementan conceptos teóricos en VM, creando las redes neuronales y entrenando los pesos y sesgos para proporcionar una parte práctica del software que puede aceptar entradas (avisos) y generar resultados (finalizaciones). El proceso computacional de redacción de finalizaciones basadas en avisos se conoce como inferencia. Hay quienes son responsables de implementar el modo en que 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 en función de una entrada. Los modelos suelen entrenarse y hospedarse 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 (sin tarjetas de vídeo de GPU dedicadas para ayudar a controlar el proceso necesario para generar resultados).

Cuando se hospeda en centros de datos de gran tamaño, el acceso mediante programación a estos modelos se proporciona a través de las API REST y, a veces, los SDK se "encapsulan" 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, existen patrones y procesos emergentes para ayudar a las empresas a crear una funcionalidad empresarial confiable basada en la inteligencia artificial generativa. Por ejemplo, existen patrones emergentes para ayudar a las empresas a garantizar que el texto generado, el código, las imágenes y el sonido cumplan los estándares éticos y de seguridad, así como los compromisos con la privacidad de los datos de los clientes.

En esta pila de preocupaciones o capas, si es un desarrollador de aplicaciones responsable de crear 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 están disponibles académicamente. Si no puede comprometerse a desarrollar competencias en la ciencia de datos académicamente para ayudar a crear la "siguiente capa hacia abajo en la pila" (así que hablar), céntrese en temas de capa de aplicación como:

  • Descripción de las API y LOS SDK disponibles, lo que está disponible, lo que producen los distintos puntos de conexión, etc.
  • Descripción de las herramientas y servicios relacionados para ayudarle a crear todas las características necesarias para una solución de IA generativa lista para producción.
  • Comprender la ingeniería rápida, como cómo lograr los mejores resultados mediante la realización o la repetición de preguntas.
  • Comprender dónde surgen los cuellos de botella y cómo escalar una solución. Comprender qué implica el registro o la obtención de telemetría sin infringir los problemas de privacidad de los clientes.
  • Comprender las características de las distintas MÁQUINAS virtuales (sus puntos fuertes, casos de uso, cuáles son los puntos de referencia y qué miden, diferenciaciones clave entre proveedores y modelos producidos por cada proveedor, etc.) para elegir el modelo adecuado para las necesidades de su empresa.
  • Comprenda los patrones, flujos de trabajo y procesos más recientes que se usan para crear características de IA generativas eficaces y resistentes en las aplicaciones.

Servicios y herramientas disponibles de Microsoft

Hay herramientas y servicios de inteligencia artificial generativos de poco código y sin código disponibles en Microsoft para ayudarle a crear parte o toda la solución. Varios servicios de Azure pueden desempeñar roles fundamentales, cada uno de los cuales contribuye a la eficiencia, escalabilidad y solidez de la solución:

API y SDK para el enfoque centrado en código

En el centro de cada solución de IA generativa se encuentra un modelo LLM y 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. Hay varias API diferentes que permiten realizar todas las funciones típicas de un LLM, como crear incrustaciones, crear una experiencia de chat, etc. con acceso completo a la configuración y ajustes para personalizar los resultados según sea necesario.

Entornos de ejecución

Dado que va a crear lógica de negocios, lógica de presentación o API para integrar la inteligencia artificial generativa en las aplicaciones de la organización, necesita un lugar 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 rag-chat. Admite el desarrollo, la implementación y el escalado rápidos de aplicaciones web, lo que facilita la administración de los componentes front-end del sistema.
Funciones de Azure Use el proceso sin servidor para controlar las tareas controladas por eventos en el sistema rag-chat. 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.

Código bajo/Sin código

Como alternativa, algunas de las lógicas requeridas por la solución se podrían compilar de forma rápida y confiable mediante soluciones de código bajo o sin código.

Producto Descripción
Azure AI Studio Azure AI Studio podría usarse para entrenar, probar e implementar modelos de aprendizaje automático personalizados que podrían mejorar el sistema de chat rag. Por ejemplo, use Azure AI Studio para personalizar la generación de respuestas o 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 (por ejemplo, sistemas de chat basados en RAG que permiten 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 Este servicio se puede usar para realizar búsquedas eficaces a través de grandes conjuntos de datos para encontrar información relevante que se puede usar para informar de las respuestas generadas por los modelos de lenguaje. Resulta útil para el componente de recuperación de un sistema RAG, lo que garantiza que las respuestas generadas sean tan informativas y contextualmente relevantes como sea posible.
Cosmos DB Este servicio de base de datos multimodelo distribuido globalmente podría almacenar las 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 almacenar interacciones del usuario para un análisis posterior.
Azure Cache for Redis Este almacén de datos en memoria totalmente administrado podría usarse 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.
Servidor flexible de Azure Database for PostgreSQL Este servicio de base de datos administrado podría almacenar los datos de la aplicación, incluidos los registros, los perfiles de usuario y los datos históricos de chat. Su flexibilidad y escalabilidad admiten las necesidades dinámicas de un sistema de chat RAG, lo que garantiza 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, lo que permite a los desarrolladores usar lo mejor de las funcionalidades en la nube y las tecnologías de inteligencia artificial de Azure.

Desarrollo de IA generativo centrado en código con 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 de lenguaje o plataforma funcionan como "contenedores" en torno a las llamadas API REST para hacer que la experiencia sea más idiomática.

Si un SDK de lenguaje o plataforma no está disponible, el peor de los casos es que debe realizar llamadas REST directamente a la API web. Sin embargo, 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, lo que permite a los desarrolladores 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, lo que permite 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, también se usa para todos los escenarios de generación de texto, como resumen, autocompletar, escritura de documentos, análisis de texto, traducción, etc. Es el punto de entrada para las funcionalidades de visión actualmente en versión preliminar (es decir, cargar una imagen y formular preguntas sobre ella).
  • API de moderación: esta API está diseñada para ayudar a los desarrolladores a identificar y filtrar contenido potencialmente dañino dentro del texto, lo que proporciona una herramienta para 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, la conversión de 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.
  • API de generación de imágenes: esta API permite generar imágenes originales y de alta calidad 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, 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 la inteligencia artificial generativa se puede usar para trabajar con muchas modalidades de medios diferentes, dedicamos el resto de este artículo a centrarnos en soluciones de IA generativas basadas en texto. Esto abarca escenarios como chat, resumen, etc.

Cómo empezar a desarrollar aplicaciones 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 para compilar 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 empiece, es mejor comenzar pequeño, prometer poco, iterar y crear su comprensión y habilidad, ya que el desarrollo con inteligencia artificial generativa presenta desafíos únicos. Por ejemplo, en el desarrollo de software tradicional, puede confiar en la salida determinista: para cualquier conjunto de entradas, puede esperar la misma salida exacta cada vez. Sin embargo, Generative no es determinista: nunca obtendrá la misma respuesta exacta dos veces para un mensaje determinado, que se encuentra en la raíz de muchos desafíos nuevos. A medida que empiece, tenga en cuenta las siguientes sugerencias antes de llegar demasiado lejos:

Sugerencia n.º 1: despejarse de lo que intenta lograr.

  • Obtenga información específica sobre el problema que intenta 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 n.º 2: Jugar a los puntos fuertes de las MÁQUINAS virtuales.

  • Comprender las limitaciones y sesgos de las MÁQUINAS virtuales: aunque las LLM son eficaces, tienen limitaciones y sesgos inherentes. Conocer las limitaciones y sesgos puede ayudarle a diseñarlas o incorporar mitigaciones.
  • Comprender dónde se excelán las LLM: las llm excel en tareas como la creación de contenido, el resumen, la traducción de idioma, etc. 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 n.º 3: Los mejores resultados comienzan con 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. Use las salidas para refinar aún más las solicitudes.

Creación de la primera solución de IA generativa

Si desea empezar a experimentar con la creación de una solución de IA generativa inmediatamente, se recomienda echar un vistazo a Introducción al chat con su propio ejemplo de datos para Python. También hay versiones del tutorial disponibles en .NET, Java y JavaScript.

Consideraciones finales que pueden influir en las decisiones de diseño de la aplicación

Esta es una breve lista de aspectos que se deben tener en cuenta y otros aspectos de este artículo que afectan 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, optimizando la eficacia de la solución para el caso de uso previsto.
  • Use plataformas de poco código o sin código para crear prototipos y desarrollo rápidos si cumplen los requisitos del proyecto, evaluando 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.