Esta solución crea una experiencia de interfaz similar a ChatGPT sobre sus propios documentos utilizando RAG (Generación Aumentada de Recuperación). Utiliza el servicio Azure OpenAI para acceder a los modelos GPT y Azure AI Search para la indexación y recuperación de datos.
El backend de esta solución está escrito en Python. También hay ejemplos de JavaScript , .NET y Java basados en este. Obtenga más información sobre el desarrollo de aplicaciones de IA mediante Azure AI Services.
Mire una descripción general en video de la aplicación.
Este ejemplo demuestra algunos enfoques para crear experiencias similares a ChatGPT a partir de sus propios datos utilizando el patrón de generación aumentada de recuperación. Utiliza el servicio Azure OpenAI para acceder a un modelo GPT (gpt-35-turbo) y Azure AI Search para la indexación y recuperación de datos.
El repositorio incluye datos de muestra, por lo que está listo para probarse de principio a fin. En esta aplicación de ejemplo utilizamos una empresa ficticia llamada Contoso Electronics y la experiencia permite a sus empleados hacer preguntas sobre los beneficios, las políticas internas, así como las descripciones de puestos y funciones.
IMPORTANTE: Para implementar y ejecutar este ejemplo, necesitará:
Microsoft.Authorization/roleAssignments/write
, como Administrador de control de acceso basado en roles, Administrador de acceso de usuario o Propietario. Si no tiene permisos de nivel de suscripción, se le debe otorgar RBAC para un grupo de recursos existente e implementarlo en ese grupo existente.Microsoft.Resources/deployments/write
en el nivel de suscripción.Los precios varían según la región y el uso, por lo que no es posible predecir los costos exactos de su uso. Sin embargo, puede probar la calculadora de precios de Azure para obtener los recursos siguientes.
Para reducir costos, puede cambiar a SKU gratuitos para varios servicios, pero esos SKU tienen limitaciones. Consulte esta guía sobre implementación con costos mínimos para obtener más detalles.
azd down
.
Tiene algunas opciones para configurar este proyecto. La forma más sencilla de comenzar es GitHub Codespaces, ya que configurará todas las herramientas por usted, pero también puede configurarlas localmente si lo desea.
Puede ejecutar este repositorio virtualmente usando GitHub Codespaces, que abrirá un VS Code basado en web en su navegador:
Una vez que se abra el espacio de código (esto puede tardar varios minutos), abra una ventana de terminal.
Una opción relacionada es VS Code Dev Containers, que abrirá el proyecto en su VS Code local usando la extensión Dev Containers:
Inicie Docker Desktop (instálelo si aún no está instalado)
Abra el proyecto:
En la ventana de VS Code que se abre, una vez que aparezcan los archivos del proyecto (esto puede tardar varios minutos), abra una ventana de terminal.
Instale las herramientas necesarias:
python --version
desde la consola. En Ubuntu, es posible que necesites ejecutar sudo apt install python-is-python3
para vincular python
a python3
.pwsh.exe
desde una terminal PowerShell. Si esto falla, es probable que necesites actualizar PowerShell.Cree una nueva carpeta y cámbiela en la terminal.
Ejecute este comando para descargar el código del proyecto:
azd init -t azure-search-openai-demo
Tenga en cuenta que este comando inicializará un repositorio git, por lo que no necesita clonar este repositorio.
Los pasos siguientes aprovisionarán recursos de Azure e implementarán el código de la aplicación en Azure Container Apps. Para implementar en Azure App Service, siga la guía de implementación del servicio de aplicaciones.
Inicie sesión en su cuenta de Azure:
azd auth login
Para los usuarios de GitHub Codespaces, si el comando anterior falla, intente:
azd auth login --use-device-code
Cree un nuevo entorno azd:
azd env new
Introduzca un nombre que se utilizará para el grupo de recursos. Esto creará una nueva carpeta en la carpeta .azure
y la configurará como entorno activo para cualquier llamada a azd
en el futuro.
(Opcional) Este es el punto donde puede personalizar la implementación configurando variables de entorno para utilizar recursos existentes, habilitar funciones opcionales (como autenticación o visión) o implementar en niveles gratuitos.
Ejecute azd up
: esto aprovisionará recursos de Azure e implementará esta muestra en esos recursos, incluida la creación del índice de búsqueda basado en los archivos que se encuentran en la carpeta ./data
.
azd down
o eliminar los recursos manualmente para evitar gastos innecesarios.Una vez que la aplicación se haya implementado correctamente, verá una URL impresa en la consola. Haga clic en esa URL para interactuar con la aplicación en su navegador. Se verá así:
NOTA: Después de ver "ÉXITO", la aplicación puede tardar entre 5 y 10 minutos en implementarse por completo. Si ve una pantalla de bienvenida de "Desarrollador de Python" o una página de error, espere un poco y actualice la página.
Si solo cambió el código backend/frontend en la carpeta app
, no necesita volver a aprovisionar los recursos de Azure. Puedes simplemente ejecutar:
azd deploy
Si cambió los archivos de infraestructura (carpeta infra
o azure.yaml
), deberá volver a aprovisionar los recursos de Azure. Puedes hacerlo ejecutando:
azd up
Para brindarle a otra persona acceso a un entorno existente y completamente implementado, usted o esa persona pueden seguir estos pasos:
azd init -t azure-search-openai-demo
o clone este repositorio.azd env refresh -e {environment name}
Necesitarán el nombre del entorno azd, el ID de suscripción y la ubicación para ejecutar este comando. Puede encontrar esos valores en su archivo .azure/{env name}/.env
. Esto completará el archivo .env
de su entorno azd con todas las configuraciones necesarias para ejecutar la aplicación localmente.AZURE_PRINCIPAL_ID
en ese archivo .env
o en el shell activo en su ID de Azure, que pueden obtener con az ad signed-in-user show
../scripts/roles.ps1
o .scripts/roles.sh
para asignar todos los roles necesarios al usuario. Si no tienen el permiso necesario para crear roles en la suscripción, es posible que deba ejecutar este script para ellos. Una vez que se ejecuta el script, deberían poder ejecutar la aplicación localmente. Solo puede ejecutar localmente después de haber ejecutado correctamente el comando azd up
. Si aún no lo ha hecho, siga los pasos de implementación anteriores.
azd auth login
app
./start.ps1
o ./start.sh
o ejecute la "Tarea de código VS: Iniciar aplicación" para iniciar el proyecto localmente.Vea más consejos en la guía de desarrollo local.
Una vez en la aplicación web:
Para limpiar todos los recursos creados por este ejemplo:
azd down
y
y
Se eliminarán el grupo de recursos y todos los recursos.
Además de los consejos a continuación, puede encontrar documentación extensa en la carpeta de documentos.
Una vez que haya implementado correctamente la aplicación, podrá comenzar a personalizarla según sus necesidades: cambiando el texto, modificando las indicaciones y reemplazando los datos. Consulte la guía de personalización de la aplicación y la guía de ingesta de datos para obtener más detalles.
De forma predeterminada, las aplicaciones implementadas utilizan Application Insights para rastrear cada solicitud, junto con el registro de errores.
Para ver los datos de rendimiento, vaya al recurso de Application Insights en su grupo de recursos, haga clic en la hoja "Investigar -> Rendimiento" y navegue hasta cualquier solicitud HTTP para ver los datos de tiempo. Para inspeccionar el rendimiento de las solicitudes de chat, utilice el botón "Profundizar en muestras" para ver seguimientos de un extremo a otro de todas las llamadas API realizadas para cualquier solicitud de chat:
Para ver las excepciones y los errores del servidor, navegue hasta la hoja "Investigar -> Fallos" y utilice las herramientas de filtrado para localizar una excepción específica. Puedes ver los seguimientos de la pila de Python en el lado derecho.
También puede ver resúmenes de gráficos en un panel ejecutando el siguiente comando:
azd monitor
Este ejemplo está diseñado para ser un punto de partida para su propia aplicación de producción, pero debe realizar una revisión exhaustiva de la seguridad y el rendimiento antes de implementarla en producción. Lea nuestra guía de producción para obtener más detalles.
Estos son los escenarios de fallas y las soluciones más comunes:
La suscripción ( AZURE_SUBSCRIPTION_ID
) no tiene acceso al servicio Azure OpenAI. Asegúrese de que AZURE_SUBSCRIPTION_ID
coincida con el ID especificado en el proceso de solicitud de acceso a OpenAI.
Está intentando crear recursos en regiones no habilitadas para Azure OpenAI (por ejemplo, Este de EE. UU. 2 en lugar de Este de EE. UU.) o donde el modelo que está intentando usar no está habilitado. Consulte esta matriz de disponibilidad de modelos.
Ha excedido una cuota, generalmente la cantidad de recursos por región. Consulte este artículo sobre cuotas y límites.
Estás recibiendo conflictos de "mismo nombre de recurso no permitido". Probablemente esto se deba a que ejecutó el ejemplo varias veces y eliminó los recursos que creó cada vez, pero se olvidó de eliminarlos. Azure conserva los recursos durante 48 horas a menos que los elimine de la eliminación temporal. Consulte este artículo sobre cómo eliminar recursos.
Verá CERTIFICATE_VERIFY_FAILED
cuando se ejecute el script prepdocs.py
. Por lo general, esto se debe a una configuración incorrecta de los certificados SSL en su máquina. Pruebe las sugerencias en esta respuesta de StackOverflow.
Después de ejecutar azd up
y visitar el sitio web, verá un mensaje "404 no encontrado" en el navegador. Espere 10 minutos y vuelva a intentarlo, ya que es posible que aún se esté iniciando. Luego intente ejecutar azd deploy
y espere nuevamente. Si aún encuentra errores con la aplicación implementada y la está implementando en App Service, consulte la guía sobre depuración de implementaciones de App Service. Presente un problema si los registros no le ayudan a resolver el error.
Este es un ejemplo creado para demostrar las capacidades de las aplicaciones modernas de IA generativa y cómo se pueden crear en Azure. Para obtener ayuda con la implementación de este ejemplo, publíquelo en Problemas de GitHub. Si es empleado de Microsoft, también puede publicar en nuestro canal de Teams.
Este repositorio cuenta con el respaldo de los mantenedores, no del soporte de Microsoft, así que utilice los mecanismos de soporte descritos anteriormente y haremos todo lo posible para ayudarlo.
Nota: Los documentos PDF utilizados en esta demostración contienen información generada mediante un modelo de lenguaje (servicio Azure OpenAI). La información contenida en estos documentos tiene únicamente fines de demostración y no refleja las opiniones o creencias de Microsoft. Microsoft no ofrece ninguna declaración ni garantía de ningún tipo, expresa o implícita, sobre la integridad, exactitud, confiabilidad, idoneidad o disponibilidad con respecto a la información contenida en este documento. Todos los derechos reservados a Microsoft.