Este repositorio contiene un ejemplo de cómo implementar el soporte de RAG en aplicaciones que usan Voice como su interfaz de usuario, alimentada por la API REALTIME GPT-4O para audio. Describimos el patrón con más detalle en esta publicación de blog, y puede ver esta aplicación de muestra en acción en este breve video.
El RTClient en el frontend recibe la entrada de audio, lo envía al backend de Python que utiliza un objeto RTMiddleTier para interactuar con la API en tiempo real de Azure Openai e incluye una herramienta para buscar la búsqueda de AI AIZ.

Este repositorio incluye infraestructura como código y un Dockerfile para implementar la aplicación en aplicaciones de contenedores Azure, pero también se puede ejecutar localmente siempre que se configuren Azure AI Search y Azure OpenAI.
Tiene algunas opciones para comenzar con esta plantilla. La forma más rápida de comenzar es GitHub CodeSpaces, ya que configurará todas las herramientas para usted, pero también puede configurarlo localmente. También puede usar un contenedor de desarrollo de código vs
Puede ejecutar este repositorio prácticamente utilizando GitHub CodesPaces, que abrirá un código VS basado en la web en su navegador:
Una vez que se abre el CodeSpace (esto puede tomar varios minutos), abra un nuevo terminal y proceda a implementar la aplicación.
Puede ejecutar el proyecto en su contenedor de desarrollo local VS Code utilizando la extensión de contenedores de Dev:
Inicie Docker Desktop (instálelo si aún no está instalado)
Abra el proyecto:
En la ventana VS Código que se abre, una vez que se muestran los archivos del proyecto (esto puede tomar varios minutos), abrir un nuevo terminal y continuar implementando la aplicación.
Instale las herramientas requeridas:
python --version de la consola. En Ubuntu, es posible que deba ejecutar sudo apt install python-is-python3 para vincular python a python3 . Clon the Repo ( git clone https://github.com/Azure-Samples/aisearch-openai-rag-audio )
Proceda a la siguiente sección para implementar la aplicación.
Los siguientes pasos aprovisionarán los recursos de Azure e implementarán el código de aplicación en las aplicaciones de contenedores de Azure.
Inicie sesión en su cuenta de Azure:
azd auth loginPara los usuarios de CodeSpaces de GitHub, si el comando anterior falla, intente:
azd auth login --use-device-codeCrea un nuevo entorno AZD:
azd env new Ingrese un nombre que se utilizará para el grupo de recursos. Esto creará una nueva carpeta en la carpeta .azure y la establecerá como el entorno activo para cualquier llamada a azd en el futuro.
(Opcional) Este es el punto en el que puede personalizar la implementación estableciendo variables de entorno AZD, para usar los servicios existentes o personalizar la elección de voz.
Ejecute este comando único para aprovisionar los recursos, implementar el código y configurar la vectorización integrada para los datos de muestra:
azd upazd down o eliminar los recursos manualmente para evitar el gasto innecesario.Después de que la aplicación se haya implementado con éxito, verá una URL impresa en la consola. Navegue a esa URL para interactuar con la aplicación en su navegador. Para probar la aplicación, haga clic en el "botón de conversación de inicio", diga "hola" y luego haga una pregunta sobre sus datos como "¿Cuál es la política de denuncia de denuncia para la electrónica Contoso?" Ahora también puede ejecutar la aplicación localmente siguiendo las instrucciones en la siguiente sección.
Puede ejecutar esta aplicación localmente utilizando los servicios de Azure que aprovisionó siguiendo las instrucciones de implementación o señalando la aplicación local en los servicios ya existentes.
Si implementó con azd up , debería ver un archivo de app/backend/.env con las variables de entorno necesarias.
Si no usó azd up , deberá crear el archivo app/backend/.env con las siguientes variables de entorno:
AZURE_OPENAI_ENDPOINT=wss:// < your instance name > .openai.azure.com
AZURE_OPENAI_REALTIME_DEPLOYMENT=gpt-4o-realtime-preview
AZURE_OPENAI_REALTIME_VOICE_CHOICE= < choose one: echo, alloy, shimmer >
AZURE_OPENAI_API_KEY= < your api key >
AZURE_SEARCH_ENDPOINT=https:// < your service name > .search.windows.net
AZURE_SEARCH_INDEX= < your index name >
AZURE_SEARCH_API_KEY= < your api key >Para usar ID de Entrra (su usuario cuando se ejecuta localmente, la identidad administrada cuando se implementa) simplemente no establezca las teclas.
Ejecute este comando para iniciar la aplicación:
Windows:
pwsh .scriptsstart.ps1Linux/Mac:
./scripts/start.shLa aplicación está disponible en http: // localhost: 8765.
Una vez que la aplicación se está ejecutando, cuando navegue a la URL anterior, debe ver la pantalla de inicio de la aplicación: 
Para probar la aplicación, haga clic en el "botón de conversación de inicio", diga "hola" y luego haga una pregunta sobre sus datos como "¿Cuál es la política de denuncia de denuncia para la electrónica Contoso?"
El precio varía por región y uso, por lo que no es posible predecir los costos exactos para su uso. Sin embargo, puede probar la calculadora de precios de Azure para los recursos a continuación.
Para reducir los costos, puede cambiar a SKU gratuitos para varios servicios, pero esos SKU tienen limitaciones.
azd down .
Esta plantilla utiliza identidad administrada para eliminar la necesidad de que los desarrolladores administren estas credenciales. Las aplicaciones pueden usar identidades administradas para obtener tokens Microsoft Entra sin tener que administrar ninguna credencial. Para garantizar las mejores prácticas en su repositorio, recomendamos a cualquiera que cree soluciones basadas en nuestras plantillas, asegure que la configuración de escaneo secreto de GitHub esté habilitado en sus repos.
Datos de muestra: Los documentos PDF utilizados en esta demostración contienen información generada utilizando un modelo de idioma (servicio Azure OpenAI). La información contenida en estos documentos es solo para fines de demostración y no refleja las opiniones o creencias de Microsoft. Microsoft no hace representaciones o garantías de ningún tipo, expresas o implícitas, sobre la integridad, precisión, confiabilidad, idoneidad o disponibilidad con respecto a la información contenida en este documento. Todos los derechos reservados para Microsoft.