此存储库包含一个如何在使用语音作为用户界面的应用程序中实现抹布支持的示例,该应用程序由GPT-4O实时API供电,用于音频。我们在此博客文章中更详细地描述了该模式,您可以在此简短视频中看到此示例应用程序。
前端中的RTClient接收音频输入,将其发送到Python后端,该后端使用RTMiddleTier对象与Azure OpenAI实时API接口,并包括用于搜索Azure AI搜索的工具。

该存储库包括作为代码的基础架构和Dockerfile将应用程序部署到Azure容器应用程序中,但是只要配置Azure AI搜索和Azure OpenAI服务,它也可以在本地运行。
您有一些开始使用此模板的选择。最快入门的方法是GitHub代码空间,因为它将为您设置所有工具,但您也可以在本地设置它。您也可以使用VS代码DEV容器
您可以通过使用github codespese实际上运行此存储库,该码将在浏览器中打开基于Web的VS代码:
CodeSpace打开(这可能需要几分钟)后,打开一个新的终端并继续部署该应用程序。
您可以使用Dev容器扩展名中的本地VS代码DEV容器运行该项目:
启动Docker Desktop(如果尚未安装的话,请安装它)
打开项目:
在打开的VS代码窗口中,一旦显示了项目文件(这可能需要几分钟),打开一个新的终端,然后继续部署该应用程序。
安装所需的工具:
python --version 。在Ubuntu上,您可能需要运行sudo apt install python-is-python3将python链接到python3 。克隆仓库( git clone https://github.com/Azure-Samples/aisearch-openai-rag-audio )
继续前往下一部分以部署应用程序。
以下步骤将提供Azure资源,并将应用程序代码部署到Azure容器应用程序。
登录到您的Azure帐户:
azd auth login对于github代码,如果上一个命令失败,请尝试:
azd auth login --use-device-code创建一个新的AZD环境:
azd env new输入将用于资源组的名称。这将在.azure文件夹中创建一个新文件夹,并将其设置为azd的任何调用的活动环境。
(可选)这是您可以通过设置AZD环境变量来自定义部署的点,以便使用现有服务或自定义语音选择。
运行此单个命令以为示例数据提供资源,部署代码和设置集成矢量化:
azd upazd down或手动删除资源,以避免不必要的支出。成功部署应用程序后,您将看到将URL打印到控制台。导航到该URL与浏览器中的应用程序进行交互。要尝试使用该应用程序,请单击“开始对话按钮”,说“ Hello”,然后询问您的数据问题,例如“ Contoso Electronics的举报人政策是什么?”您现在也可以按照下一节中的说明在本地运行该应用程序。
您可以使用按照部署说明或将本地应用指向已经存在的服务,可以在本地运行此应用程序。
如果您使用azd up部署,则应查看具有必要环境变量的app/backend/.env文件。
如果不使用azd up ,则需要使用以下环境变量创建app/backend/.env文件:
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 >要使用ENTRA ID(您的用户在本地运行时,部署时托管身份)根本不会设置键。
运行此命令启动该应用程序:
视窗:
pwsh .scriptsstart.ps1Linux/Mac:
./scripts/start.sh该应用程序可在http:// localhost:8765上找到。
应用程序运行后,当您导航到上方的URL时,您应该看到应用程序的开始屏幕: 
要尝试使用该应用程序,请单击“开始对话按钮”,说“ Hello”,然后询问您的数据问题,例如“ Contoso Electronics的举报人政策是什么?”
定价每个区域和使用情况都有所不同,因此不可能预测使用的确切成本。但是,您可以尝试以下资源的Azure定价计算器。
为了降低成本,您可以改用各种服务的自由SKU,但是这些SKU有局限性。
azd down 。
该模板使用托管身份来消除开发人员管理这些凭据的需求。应用程序可以使用托管身份来获取Microsoft Entra代币,而无需管理任何凭据。为确保您的存储库中的最佳实践,建议任何基于模板创建解决方案的人确保在存储库中启用GitHub秘密扫描设置。
示例数据:此演示中使用的PDF文档包含使用语言模型(Azure OpenAI服务)生成的信息。这些文档中包含的信息仅用于演示目的,并不反映微软的观点或信念。微软对本文档中所包含的信息的完整性,准确性,可靠性,适用性或可用性不做任何形式或暗示的保证。保留给微软的所有权利。