Compartir a través de


GenAIOps con flujo de avisos y GitHub

A medida que se eleva la demanda de aplicaciones infundidas por LLM, las organizaciones necesitan un proceso cohesivo y optimizado para administrar el ciclo de vida completo de estas aplicaciones. Las operaciones de inteligencia artificial generativa (GenAIOps), a veces denominadas LLMOps, es una piedra angular de la ingeniería de mensajes eficiente y el desarrollo e implementación de aplicaciones infundidas por LLM.

En este artículo se muestra cómo Azure Machine Learning le permite integrar con GitHub para automatizar el ciclo de vida de desarrollo de aplicaciones con incorporación de LLM con flujo de avisos. El flujo de avisos proporciona un enfoque simplificado y estructurado para desarrollar aplicaciones infundidas por LLM. Su proceso y ciclo de vida bien definidos le guían a través del proceso de creación, prueba, optimización e implementación de flujos, que culminan en la creación de soluciones basadas en LLM totalmente funcionales.

Características del flujo de avisos de GenAIOps

GenAIOps con flujo de avisos usa una plantilla de GenAIOps e instrucciones para ayudarle a compilar aplicaciones basadas en LLM mediante el flujo de avisos. GenAIOps con flujo de avisos tiene funcionalidades para aplicaciones LLM sencillas o complejas y es personalizable para las necesidades de la aplicación.

La plataforma de flujo de avisos de GenAIOps proporciona las siguientes características:

  • Hospedaje de código centralizado. El repositorio admite el hospedaje de código para varios flujos de avisos, lo que proporciona un único repositorio para todos los flujos. Este repositorio es como una biblioteca para los flujos, lo que facilita la búsqueda, el acceso y la colaboración en diferentes proyectos.

  • Administración del ciclo de vida. Cada flujo tiene su propio ciclo de vida, lo que proporciona una transición fluida de la experimentación local a la implementación de producción.

  • Experimentación de hiperparámetros y variantes. Las variantes y los hiperparámetros son como ingredientes en una receta. La plataforma permite experimentar con diferentes combinaciones de variantes en varios nodos de un flujo. Puede experimentar con múltiples variantes e hiperparámetros para evaluar fácilmente las variantes de flujo.

  • Varios destinos de implementación. La plataforma genera imágenes de Docker fusionadas con el flujo y la sesión de proceso para la implementación en cualquier plataforma de destino y sistema operativo que admita Docker. Puede implementar flujos en Azure App Services, Kubernetes y procesos administrados de Azure y configurarlos para escalar según sea necesario.

  • Implementación A/B. GenAIOps con flujo de avisos aplica sin problemas las implementaciones de A/B, lo que permite comparar fácilmente las diferentes versiones de flujo. Esta plataforma facilita la implementación de A/B para el flujo de avisos de la misma manera que en las pruebas A/B de un sitio web tradicional. Puede comparar fácilmente diferentes versiones de un flujo en una configuración real para determinar qué versión funciona mejor.

  • Relaciones entre varios conjuntos de datos y flujos. GenAIOps con flujo de avisos admite varios conjuntos de datos para cada flujo de evaluación y estándar, lo que permite la versatilidad en la prueba y evaluación del flujo.

  • Datos condicionales y registro de modelos. La plataforma registra una nueva versión del conjunto de datos para el recurso de datos de Azure Machine Learning y los flujos en el registro de modelos solo cuando se produce un cambio en el conjunto de datos.

  • Informes completos. GenAIOps con flujo de avisos genera informes detallados para cada configuración de variante, lo que le permite tomar decisiones fundamentadas. La plataforma proporciona una recopilación de métricas detallada, experimentos y ejecuciones masivas variantes para todas las ejecuciones y experimentos, lo que permite tomar decisiones controladas por datos para archivos CSV y HTML.

GenAIOps con flujo de avisos proporciona las siguientes características adicionales de personalización:

  • Bring-your-own-flows (BYOF) proporciona una plataforma completa para desarrollar varios casos de uso relacionados con aplicaciones basadas en LLM.
  • El desarrollo basado en configuración significa que no es necesario escribir código reutilizable extenso.
  • La experimentación y la evaluación de avisos se ejecutan localmente y en la nube.
  • Los cuadernos para la evaluación de avisos locales proporcionan una biblioteca de funciones para la experimentación local.
  • Las pruebas de puntos de conexión dentro de la canalización después de la implementación comprueban la disponibilidad y la preparación del punto de conexión.
  • La revisión humana en bucle opcional valida las métricas de solicitud antes de la implementación.

Fases de GenAIOps

El ciclo de vida de GenAIOps consta de cuatro fases distintas:

  • Inicialización. Defina claramente el objetivo empresarial, recopile ejemplos de datos relevantes, establezca una estructura básica de solicitud y cree un flujo que mejore sus capacidades.

  • Experimentación. Aplique el flujo a los datos de ejemplo, evalúe el rendimiento del mensaje y afine el flujo según sea necesario. Iterar continuamente hasta estar satisfecho con los resultados.

  • Evaluación y refinamiento. Realice pruebas comparativas del rendimiento del flujo mediante un conjunto de datos más grande, evalúe la eficacia del mensaje y realice refinamientos consecuentes. Avance a la siguiente fase si los resultados cumplen los estándares deseados.

  • Implementación. Optimice el flujo para lograr efectividad y eficacia, impleméntelo en un entorno de producción, incluida la implementación de A/B, supervise su rendimiento, recopile comentarios de los usuarios y use esta información para mejorar aún más el flujo.

Al adherirse a esta metodología estructurada, el flujo de avisos le permite desarrollar con confianza, probar rigurosamente, ajustar e implementar flujos, lo que conduce a la creación de aplicaciones de inteligencia artificial sólidas y sofisticadas.

La plantilla de flujo de avisos de GenAIOps formaliza esta metodología estructurada mediante un enfoque de código primero y le ayuda a compilar aplicaciones infundidas con LLM mediante herramientas de flujo de mensajes y características de flujo de mensajes de GenAIOps y procesos. Esta plantilla está disponible en GenAIOps con la plantilla del flujo de avisos.

Flujo de proceso de GenAIOps

Recorte de pantalla del proceso de flujo de avisos de GenAIOps.

  1. En la fase de inicialización, desarrolla flujos, prepara y conserva datos y actualiza los archivos de configuración relacionados con GenAIOps.
  2. Después del desarrollo local mediante Visual Studio Code con la extensión de flujo de avisos, se genera una solicitud de incorporación de cambios (PR) desde la rama de características a la rama de desarrollo, que ejecuta la canalización de validación de compilación y los flujos de experimentación.
  3. La solicitud de cambios se aprueba manualmente y el código se combina con la rama de desarrollo.
  4. Una vez que la solicitud de cambios se combina con la rama de desarrollo, se ejecuta la canalización de integración continua (CI) para el entorno de desarrollo. La canalización de CI ejecuta los flujos de experimentación y evaluación en secuencia y registra los flujos en el Registro de Azure Machine Learning, aparte de otros pasos de la canalización.
  5. Después de que haya finalizado la ejecución de la canalización de CI, un desencadenador de implementación continua (CD) ejecuta la canalización de CD, que implementa el flujo estándar desde el Registro de Azure Machine Learning como un punto de conexión en línea de Azure Machine Learning. A continuación, la canalización ejecuta pruebas de integración y de humo en el flujo implementado.
  6. Se crea una rama de versión a partir de la rama de desarrollo o se genera una solicitud de cambios desde la rama de desarrollo a la rama de versión.
  7. La solicitud de cambios se aprueba manualmente y el código se combina con la rama de versión. Una vez que la solicitud de cambios se combina con la rama de versión, se ejecuta la canalización de CI para el entorno de producción. La canalización ejecuta los flujos de experimentación y evaluación en secuencia y registra los flujos en el Registro de Azure Machine Learning aparte de otros pasos de la canalización.
  8. Una vez completada la ejecución de la canalización de CI, un desencadenador de CD ejecuta la canalización de CD, que implementa el flujo estándar desde el Registro de Azure Machine Learning como un punto de conexión en línea de Azure Machine Learning. A continuación, la canalización ejecuta pruebas de integración y de humo en el flujo implementado.

Creación de un flujo de avisos de GenAIOps

En el resto de este artículo se muestra cómo usar GenAIOps con el flujo de mensajes siguiendo el ejemplo de un extremo a otro en GenAIOps con el repositorio de plantillas de flujo de avisos, lo que le ayuda a compilar aplicaciones infundidas por LLM mediante el flujo de mensajes y GitHub. El objetivo principal es proporcionar asistencia en el desarrollo de estas aplicaciones mediante las funcionalidades del flujo de avisos y GenAIOps.

Requisitos previos

Configuración de una conexión de flujo de avisos

El flujo de avisos usa un recurso de conexión para conectarse a los puntos de conexión de Azure OpenAI, OpenAI o Búsqueda de Azure AI. Puede crear una conexión a través de la interfaz de usuario del portal del flujo de avisos o mediante la API de REST. Para obtener más información, consulte Conexiones en el flujo de avisos.

Para crear la conexión, siga las instrucciones de Configuración de conexiones para el flujo de avisos. Los flujos de ejemplo usan una conexión denominada aoai, por lo que debe asignar ese nombre a la conexión.

Configuración de una sesión de proceso

El flujo de avisos usa una sesión de proceso para ejecutar el flujo. Cree e inicie la sesión de proceso antes de que ejecute el flujo de avisos del símbolo.

Configuración del repositorio de GitHub

Para crear un repositorio bifurcado en la organización de GitHub, siga las instrucciones de Configuración del repositorio de GitHub. Este repositorio usa dos ramas, main y development, para promociones de código y ejecución de canalización.

Para crear un nuevo repositorio local, siga las instrucciones de Clonación del repositorio. Este clon le ayuda a crear una nueva rama de características desde la rama de desarrollo e incorporar cambios.

Configuración de la autenticación entre GitHub y Azure

Este proceso configura un secreto de GitHub que almacena información de la entidad de servicio. Para conectarse automáticamente a Azure, los flujos de trabajo del repositorio pueden leer la información de conexión mediante el nombre del secreto. Para más información, consulte Uso de Acciones de GitHub para conectarse a Azure.

  1. Cree una entidad de servicio siguiendo las instrucciones de Creación de una entidad de servicio de Azure.
  2. Use la entidad de servicio para configurar la autenticación entre el repositorio de GitHub y los servicios de Azure siguiendo las instrucciones de Configuración de la autenticación con Azure y GitHub.

Probar la canalización

Para probar las canalizaciones, siga las instrucciones de Actualización de datos de prueba. El proceso completo implica los pasos siguientes:

  1. Se genera una solicitud de cambios de una rama de características a la rama de desarrollo.
  2. La canalización de solicitud de cambios se ejecuta automáticamente debido a la configuración de la directiva de rama.
  3. La solicitud de cambios se combina con la rama de desarrollo.
  4. La canalización asociada de dev se ejecuta, lo que da como resultado la ejecución completa de CI y CD y el aprovisionamiento o la actualización de los puntos de conexión de Azure Machine Learning.

Las salidas deben tener un aspecto similar a los ejemplos de Escenario de ejecución, evaluación e implementación de mensaje de ejemplo.

Usar la ejecución local

Para usar funcionalidades de ejecución local, siga estos pasos.

  1. Clone el repositorio de la siguiente manera:

    git clone https://github.com/microsoft/genaiops-promptflow-template.git
    
  2. Cree un archivo .env en el nivel de carpeta superior. Agregue líneas para cada conexión y actualice los valores de los marcadores de posición. Los ejemplos del repositorio de ejemplo usan la conexión de AzureOpenAI denominada aoai y la versión de API 2024-02-01.

    aoai={ "api_key": "<api key>","api_base": "<api base or endpoint>","api_type": "azure","api_version": "2024-02-01"}
    <connection2>={ "api_key": "<api key>","api_base": "<api base or endpoint>","api_type": "<api type>","api_version": "<api_version>"}
    
  3. Prepare la conda local o el entorno virtual para instalar las dependencias.

    python -m pip install promptflow promptflow-tools promptflow-sdk jinja2 promptflow[azure] openai promptflow-sdk[builtins] python-dotenv
    
  4. Incorpore o escriba los flujos en la plantilla según las instrucciones de Incorporación de nuevos flujos.

  5. Escriba scripts de Python en la carpeta local_execution similar a los ejemplos proporcionados.