Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En este artículo se muestra cómo implementar y ejecutar el Chat usando tu propio conjunto de datosmediante código de ejemplo para Python. Esta aplicación de chat de ejemplo se compila con Python, Azure OpenAI Service y Recuperación de generación aumentada (RAG) a través de Azure AI Search.
La aplicación proporciona respuestas a preguntas del usuario sobre las ventajas de los empleados en una empresa ficticia. Usa Retrieval-Augmented Generación (RAG) para hacer referencia al contenido de los archivos PDF proporcionados, que pueden incluir:
- Manual de un empleado
- Documento de información general sobre las ventajas
- Lista de roles y expectativas de la empresa
Al analizar estos documentos, la aplicación puede responder a consultas de lenguaje natural con respuestas precisas y relevantes contextualmente. Este enfoque muestra cómo puede usar sus propios datos para impulsar experiencias de chat inteligentes específicas del dominio con Azure OpenAI y Azure AI Search.
También aprenderá a configurar la configuración de la aplicación para modificar su comportamiento de respuesta.
Después de completar los pasos de este artículo, puede empezar a personalizar el proyecto con su propio código. Este artículo forma parte de una serie que le guía a través de la creación de una aplicación de chat con Azure OpenAI Service y Azure AI Search. Otros artículos de esta serie son:
- .NET
- Java
- JavaScript
- Front-end de JavaScript con back-end de Python
Nota:
Este artículo se basa en una o varias plantillas de aplicación de IA, que sirven para implementaciones de referencia bien mantenidas. Estas plantillas están diseñadas para ser fáciles de implementar y proporcionar un punto de partida confiable y de alta calidad para crear sus propias aplicaciones de inteligencia artificial.
Arquitectura de una aplicación de ejemplo
En el diagrama siguiente se muestra una arquitectura sencilla de la aplicación de chat.
Entre los componentes clave de la arquitectura se incluyen:
- Una aplicación web que hospeda la interfaz de chat interactiva (normalmente creada con Python Flask o JavaScript/React) y envía preguntas de usuario al back-end para su procesamiento.
- Un recurso de Azure AI Search que realiza búsquedas inteligentes sobre documentos indexados (ARCHIVOS PDF, archivos de Word, etc.) y devuelve extractos de documentos relevantes (fragmentos) para su uso en las respuestas.
- Una instancia del servicio OpenAI de Azure que:
- Convierte documentos y preguntas de usuario en representaciones vectoriales para la búsqueda de similitud semántica.
- Extrae palabras clave importantes para refinar las consultas de Azure AI Search.
- Sintetiza las respuestas finales mediante los datos recuperados y la consulta de usuario.
El flujo típico de la aplicación de chat es el siguiente:
- El usuario envía una pregunta: un usuario escribe una pregunta en lenguaje natural a través de la interfaz de la aplicación web.
- Azure OpenAI procesa la pregunta: El back-end usa Azure OpenAI para:
- Genere una inserción de la pregunta mediante el modelo text-embeding-ada-002.
- Opcionalmente, extraiga palabras clave para refinar la relevancia de la búsqueda.
- Azure AI Search recupera los datos pertinentes: la inserción o las palabras clave se usan para realizar una búsqueda semántica sobre contenido indexado (como archivos PDF) en Azure AI Search.
- Combinar resultados con la pregunta: Los extractos de documentos (fragmentos) más relevantes se combinan con la pregunta original del usuario.
- Azure OpenAI genera una respuesta: la entrada combinada se pasa a un modelo GPT (por ejemplo, gpt-35-turbo o gpt-4), que genera una respuesta compatible con el contexto.
- La respuesta se devuelve al usuario: la respuesta generada se muestra en la interfaz de chat.
Requisitos previos
Está disponible un entorno contenedor de desarrollo con todas las dependencias necesarias para completar este artículo. Puede ejecutar el contenedor de desarrollo en GitHub Codespaces (en un explorador) o localmente mediante Visual Studio Code.
Para usar este artículo, necesita los siguientes requisitos previos:
Una suscripción de Azure. Cree una cuenta gratuita antes de comenzar.
Permisos de cuenta de Azure. La cuenta de Azure debe tener permisos de Microsoft.Authorization/roleAssignments/write. Los roles como administrador de acceso de usuario o propietario cumplen este requisito.
Acceso concedido a Azure OpenAI en la suscripción de Azure. En la mayoría de los casos, puede crear filtros de contenido personalizados y administrar niveles de gravedad con acceso general a los modelos de Azure OpenAI. El registro de acceso basado en aprobación no es necesario para el acceso general. Para más información, consulte Características de acceso limitado para los servicios de Azure AI.
Filtros de contenido o modificaciones relacionadas con el abuso (opcional). Para crear filtros de contenido personalizados, cambiar los niveles de gravedad o admitir la supervisión del abuso, necesita aprobación de acceso formal. Puede solicitar acceso completando los formularios de registro necesarios. Para obtener más información, consulte Registro de filtros de contenido modificados o supervisión de abusos.
Soporte técnico y solución de problemas de acceso. Para obtener acceso a la solución de problemas, abra un problema de soporte técnico en el repositorio de GitHub.
Una cuenta de GitHub. Necesario para bifurcar el repositorio y usar GitHub Codespaces o clonarlo localmente.
Costo de uso de los recursos de ejemplo
La mayoría de los recursos usados en esta arquitectura se encuentran en los planes de tarifa básicos o basados en el consumo. Esto significa que solo paga por lo que usa y los cargos suelen ser mínimos durante el desarrollo o las pruebas.
Para completar este ejemplo, puede haber un pequeño costo en el que se incurre en el uso de servicios como Azure OpenAI, AI Search y almacenamiento. Una vez que haya terminado de evaluar o implementar la aplicación, puede eliminar todos los recursos aprovisionados para evitar cargos en curso.
Para obtener un desglose detallado de los costos esperados, consulte estimación de costos en el repositorio de GitHub del ejemplo.
Entorno de desarrollo abierto
Comience configurando un entorno de desarrollo que tenga instaladas todas las dependencias para completar este artículo.
- Una suscripción de Azure. Crear uno gratis.
- Permisos de cuenta de Azure. La cuenta de Azure debe tener permisos de Microsoft.Authorization/roleAssignments/write. Los roles como administrador de acceso de usuario o propietario cumplen este requisito.
- Una cuenta de GitHub. Necesario para bifurcar el repositorio y usar GitHub Codespaces o clonarlo localmente.
Apertura de un entorno de desarrollo
Use las instrucciones siguientes para implementar un entorno de desarrollo preconfigurado que contenga todas las dependencias necesarias para completar este artículo.
Para la configuración más sencilla y simplificada, use GitHub Codespaces. GitHub Codespaces ejecuta un contenedor de desarrollo administrado por GitHub y proporciona Visual Studio Code para la Web como interfaz de usuario (UI). Este entorno incluye todas las herramientas, SDK, extensiones y dependencias necesarias preinstaladas, por lo que puede empezar a desarrollar inmediatamente sin configuración manual.
El uso de Codespaces garantiza:
- Ya están instaladas las versiones y las herramientas de desarrollo correctas.
- No es necesario instalar Docker, VS Code ni extensiones localmente.
- Configuración rápida del entorno de incorporación y reproducible.
Importante
Todas las cuentas de GitHub pueden usar GitHub Codespaces durante hasta 60 horas gratuitas cada mes con 2 instancias principales. Si supera la cuota gratuita o usa opciones de proceso más grandes, se aplican las tarifas de facturación estándar de GitHub Codespaces. Para obtener más información, consulte GitHub Codespaces: horas de almacenamiento y núcleo incluidas mensualmente.
Para empezar a trabajar con el proyecto de ejemplo, cree un nuevo espacio de código de GitHub en la
main
rama delAzure-Samples/azure-search-openai-demo
repositorio de GitHub.Haga clic con el botón derecho en la opción GitHub Codespaces - Open (Abrir ) en la parte superior de la página del repositorio y seleccione Abrir vínculo en la nueva ventana. Esto garantiza que el contenedor de desarrollo se inicie en una pestaña de explorador dedicado de pantalla completa, lo que le proporciona acceso tanto al código fuente como a la documentación integrada.
En la página Crear un nuevo espacio de código, revise las opciones de configuración de codespace y, a continuación, seleccione Crear espacio de código:
Espere a que se inicie el espacio de código de GitHub. El proceso de inicio puede tardar unos minutos.
Una vez que se abra el espacio de código de GitHub, inicie sesión en Azure con la CLI para desarrolladores de Azure; para ello, escriba el siguiente comando en el panel Terminal del espacio de código:
azd auth login
GitHub muestra un código de seguridad en el panel Terminal.
Copie el código de seguridad en el panel Terminal y seleccione Entrar. Se abre una ventana del explorador.
En el aviso, pegue el código de seguridad en el campo del navegador.
Siga las instrucciones para autenticarse con su cuenta Azure.
En este artículo se completan las tareas restantes de GitHub Codespaces en el contexto de este contenedor de desarrollo.
Implementación de la aplicación de chat en Azure
El repositorio de ejemplo incluye todo lo que necesita para implementar un chat con su propia aplicación de datos en Azure, lo que incluye:
- Código fuente de la aplicación (Python)
- Archivos de infraestructura-como-código (Bicep)
- Configuración para la integración de GitHub y CI/CD (opcional)
Utiliza los siguientes pasos para implementar la aplicación con la CLI para desarrolladores de Azure (azd).
Importante
Los recursos de Azure creados en esta sección(especialmente Azure AI Search) pueden comenzar a acumular cargos inmediatamente después del aprovisionamiento, incluso si la implementación se interrumpe antes de la finalización. Para evitar cargos inesperados, supervise el uso de Azure y elimine los recursos no utilizados inmediatamente después de las pruebas.
En el panel Terminal de Visual Studio Code, cree los recursos de Azure e implemente el código fuente ejecutando el comando siguiente
azd
:azd up
El proceso le pide una o varias de las opciones siguientes en función de la configuración:
Nombre del entorno: este valor se usa como parte del nombre del grupo de recursos. Introduzca un nombre corto con letras minúsculas y guiones (
-
), como myenv. No se admiten letras mayúsculas, números ni caracteres especiales.Suscripción: seleccione una suscripción para crear los recursos. Si no ve la suscripción deseada, use las teclas de dirección para desplazarse por la lista completa de suscripciones disponibles.
Ubicación: esta ubicación de región se usa para la mayoría de los recursos, incluido el hospedaje. Seleccione una ubicación de región cercana geográficamente.
Ubicación para el modelo openAI o el recurso de Inteligencia de documentos: seleccione la ubicación más cercana geográficamente. Si la región seleccionada para la ubicación está disponible para esta configuración, seleccione la misma región.
La aplicación puede tardar algún tiempo en implementarse. Antes de continuar, espere a que se complete la implementación.
Una vez que la aplicación se implemente correctamente, el panel Terminal muestra una dirección URL del punto de conexión:
Seleccione la dirección URL del punto de conexión para abrir la aplicación de chat en un explorador:
Utilice la aplicación de chat para obtener respuestas de archivos PDF
La aplicación de chat está precargada con información sobre los beneficios de los empleados a partir de archivos PDF. Puede utilizar la aplicación de chat para hacer preguntas sobre los beneficios. Los siguientes pasos le guiarán a través del proceso de uso de la aplicación de chat. Las respuestas pueden variar a medida que se actualizan los modelos subyacentes.
En la aplicación de chat, seleccione la opción ¿Qué ocurre en una revisión de rendimiento? o escriba el mismo texto en el cuadro de texto de chat. La aplicación devuelve la respuesta inicial:
En el cuadro de respuesta, seleccione una cita:
GitHub Codespaces abre el panel Cita derecho con tres regiones con pestañas y el foco está en la pestaña Cita :
GitHub Codespaces proporciona tres pestañas de información para ayudarle a comprender cómo la aplicación de chat generó la respuesta:
Pestaña Descripción Proceso de pensamiento Muestra un script de las interacciones de preguntas y respuestas en el chat. Puede ver el contenido proporcionado por la aplicación de chat system
, las preguntas introducidas por eluser
y las aclaraciones realizadas por el sistemaassistant
.Contenido auxiliar Enumera la información utilizada para responder a su pregunta y el material de origen. La configuración del desarrollador especifica el número de citas de material de origen. El número predeterminado de citas es 3. Referencia bibliográfica Muestra el origen original que contiene la cita seleccionada. Cuando haya terminado, seleccione la pestaña seleccionada actualmente en el panel derecho. Se cierra el panel derecho.
Uso de la configuración para cambiar el comportamiento de la respuesta
El modelo openAI específico determina la inteligencia del chat y la configuración que se usa para interactuar con el modelo. La opción Configuración del desarrollador abre el panel Configurar generación de respuestas , donde puede cambiar la configuración de la aplicación de chat:
Configuración | Descripción |
---|---|
Anular plantilla de solicitud | Invalida la solicitud usada para generar la respuesta en función de la pregunta y los resultados de búsqueda. |
Temperatura | Establece la temperatura de la solicitud en el modelo de lenguaje grande (LLM) que genera la respuesta. Las temperaturas más altas dan lugar a respuestas más creativas, pero podrían ser menos fundamentadas. |
Valor de inicialización | Establece una semilla para mejorar la reproducibilidad de las respuestas del modelo. La inicialización puede ser cualquier entero. |
puntuación de búsqueda mínima | Establece una puntuación mínima para los resultados de búsqueda devueltos desde Azure AI Search. El intervalo de puntuación depende de si se usa Híbrido (valor predeterminado), Solo vectores o Solo texto para la configuración del modo de recuperación . |
Puntuación mínima del reclasificador | Establece una puntuación mínima para los resultados de búsqueda devueltos por el reevaluador semántico. La puntuación siempre oscila entre 0 y 4. Cuanto mayor sea la puntuación, más relevante semánticamente será el resultado para la pregunta. |
Recuperar esta cantidad de resultados | Establece el número de resultados de búsqueda que se van a recuperar de Azure AI Search. Más resultados pueden aumentar la probabilidad de encontrar la respuesta correcta, pero puede provocar que el modelo se pierda en el medio. Puede ver los orígenes devueltos en las pestañas Proceso de pensamiento y Contenido auxiliar del panel Cita . |
Incluir categoría | Especifica las categorías que se van a incluir al generar los resultados de la búsqueda. Use la lista desplegable para realizar la selección. La acción predeterminada es incluir todas las categorías. |
Excluir categoría | Especifica las categorías que se van a excluir de los resultados de la búsqueda. No se usan categorías en el conjunto de datos predeterminado. |
Usar clasificador semántico para la recuperación | Habilita el clasificador semántico de Azure AI Search, un modelo que vuelve a generar resultados de búsqueda en función de la similitud semántica con la consulta del usuario. |
Usar subtítulos semánticos | Envía subtítulos semánticos al LLM en lugar del resultado de búsqueda completo. Un subtítulo semántico se extrae de un resultado de búsqueda durante el proceso de clasificación semántica. |
Sugerir preguntas de seguimiento | Solicita al LLM que sugiera preguntas de seguimiento basadas en la consulta del usuario. |
modo de recuperación | Define el modo de recuperación de la consulta de Búsqueda de Azure AI. La acción predeterminada es Vectors + Texto (híbrido), que usa una combinación de búsqueda vectorial y búsqueda de texto completo. La opción Vectors solo usa la búsqueda de vectores. La opción Texto solo usa la búsqueda de texto completo. El enfoque híbrido es óptimo. |
Transmitir respuestas de finalización de chat | Transmite continuamente la respuesta a la interfaz de usuario de chat a medida que se genera el contenido. |
Los siguientes pasos le guiarán a través del proceso de cambio de la configuración.
En el explorador, seleccione la opción Configuración del desarrollador .
Active la casilla Sugerir preguntas de seguimiento para habilitar la opción y seleccione Cerrar para aplicar el cambio de configuración.
En la aplicación de chat, vuelva ak la pregunta, esta vez escribiendo el texto en el cuadro de pregunta:
What happens in a performance review?
La respuesta de la aplicación de chat ahora incluye preguntas de seguimiento sugeridas:
Vuelva a seleccionar la opción Configuración del desarrollador y anule la selección de Usar clasificador semántico para la recuperación . Cierre la configuración.
Vuelva a formular la misma pregunta y observe la diferencia en la respuesta de la aplicación de chat.
Con el clasificador semántico: "Durante una revisión de rendimiento en Contoso Electronics, el supervisor analizará el rendimiento durante el último año y proporcionará comentarios sobre las áreas para mejorar. También tendrá la oportunidad de discutir sus objetivos y objetivos para el próximo año. La revisión es un diálogo bidireccional entre los gerentes y los empleados, y se anima a que los empleados sean honestos y abiertos durante el proceso (1). Los comentarios proporcionados durante la revisión deben ser positivos y constructivos, destinados a ayudar a los empleados a desarrollar y crecer en sus roles. Los empleados recibirán un resumen escrito de su revisión de rendimiento, que incluirá una clasificación de su rendimiento, comentarios y objetivos para el próximo año (1).
Sin el clasificador semántico: "Durante una revisión de rendimiento en Contoso Electronics, el supervisor analizará el rendimiento durante el último año y proporcionará comentarios sobre las áreas para mejorar. Es un diálogo bidireccional en el que se recomienda ser honesto y abierto (1). Los comentarios proporcionados durante la revisión deben ser positivos y constructivos, destinados a ayudarle a desarrollar y crecer en su rol. Recibirá un resumen escrito de la revisión, incluida una clasificación de su rendimiento, comentarios y objetivos para el próximo año (1)."
Limpieza de recursos
Después de completar el ejercicio, se recomienda quitar los recursos que ya no sean necesarios.
Limpieza de los recursos de Azure
Los recursos Azure creados en este artículo se facturan a su suscripción Azure. Si no espera necesitar estos recursos en el futuro, elimínelos para evitar incurrir en más gastos.
Elimine los recursos de Azure y quite el código fuente ejecutando el siguiente azd
comando:
azd down --purge --force
Los modificadores de comandos incluyen:
purge
: Los recursos eliminados se purgan inmediatamente. Esta opción permite reutilizar el valor de la métrica de tokens por minuto (TPM) de Azure OpenAI.force
: la eliminación se produce de forma silenciosa, sin necesidad de consentimiento del usuario.
Limpieza de GitHub Codespaces
- GitHub Codespaces
- Visual Studio Code
La eliminación del entorno de GitHub Codespaces garantiza que pueda maximizar la cantidad de derechos de horas gratuitas por núcleo que obtiene para su cuenta.
Importante
Para obtener más información sobre los derechos de la cuenta de GitHub, consulte GitHub Codespaces: almacenamiento incluido mensual y horas principales.
Inicie sesión en el panel de GitHub Codespaces.
En el panel de control, busque los espacios de código que están en ejecución actualmente procedentes del repositorio de GitHub
Azure-Samples/azure-search-openai-demo
.Abra el menú contextual del espacio de código y seleccione Eliminar:
Obtener ayuda
Este repositorio de muestras ofrece información para la resolución de problemas.
Si su problema no se resuelve, agréguelo a la página web de problemas del repositorio.
Contenido relacionado
- Obtener el código fuente para el ejemplo usado en este artículo
- Crear una aplicación de chat con la arquitectura de soluciones de mejores procedimientos de Azure OpenAI
- Control de acceso en aplicaciones de IA generativa con la búsqueda de Azure AI
- Cree una solución OpenAI preparada para la empresa con Azure API Management
- Mejorar el vector de búsqueda gracias a las capacidades híbridas de recuperación y clasificación