跳到主要内容

在Azure进行部署

部署前的准备

需要提供的资源

  • 一个新的专门用于部署产品的订阅,并且确保这个订阅能够创建OpenAI相关的资源。
  • 一个Azure AD账号,这个账号拥有该订阅的Contributor或以上权限。
    • 可以将已有AAD账号以Guest身份加入租户并授权,也可以是专门创建的用于部署的AAD账号。
    • 该账号能够创建和配置AAD应用注册(例如授予:Application Developer角色)。

需要安装的工具

需要掌握的知识(建议)

产品部署架构及资源清单

产品部署架构

资源清单 & 推荐配置

提示

不同场景和使用频率下,服务器的负载情况不同,需要根据实际的负载情况进行调整

用途说明

服务类型自定义名称用途说明
Azure Front DoorCDN内容分发网络,用于加速静态资源的访问
Azure Front DoorAPI AccelerationAPI 加速,用于加速API的访问
API ManagementAPI EndpointAPI 管理终端,用于管理API
App ServiceAPI ServiceAPI 服务,用于处理API请求
App ServiceJob Service作业服务,用于处理高负载的任务,定时任务的执行
Azure OpenAI ServiceLLM-Primary主要大语言模型,用于Copilot问答的主模型(例如gpt-4o)
Azure OpenAI ServiceLLM-Secondary备用大语言模型,用于文档处理的辅助模型(例如gpt-4o-mini)
Azure OpenAI ServiceEmbedding向量嵌入,用于处理向量数据
Azure OpenAI ServiceText to Image文本生成图像,用于处理文本生成图像的任务
Azure OpenAI ServiceWhisper语音识别,用于处理语音识别的任务
Azure AI Document IntelligenceDocument OCR文档OCR识别,用于处理文档OCR识别的任务
Azure AI servicesDocument Translate文档翻译,用于处理文档翻译的任务
Azure SQL DatabaseData数据存储,主数据库,系统大部分的数据存储于此
Azure Database for PostgreSQLIndex索引数据库,主要存储文档相关的索引数据
Azure Cache for RedisCache缓存服务,用于缓存数据
Storage AccountsFiles文件存储,用于存储用户上传的文件
Key Vault-密钥管理,用于存储密钥

进行产品部署

部署流程

  • 执行部署
    • 创建AAD应用注册
    • Terraform部署参数设置
    • Azure账号登录,订阅切换
    • 执行部署
    • 更新AAD应用注册
  • 资源包上传,系统启动
    • 安装前端部署包、字体包、图标资源
    • 安装License
    • 启动系统,检查是否启动成功
  • 系统检查
    • 管理员登录系统
    • 测试系统功能是否正常
  • 完善配置
    • 系统设置修改
    • Copilot设置
    • 空间设置
    • 测试文档上传

Terraform部署

创建AAD应用注册

在Azure Entra ID中创建AAD应用注册,获取client_id

命名规则:appreg-[app-name]-[environment]

eg. appreg-serviceme-trial

Terraform部署参数设置

提示

请联系产品团队获取最新的部署包(包含Terraform部署包、前端部署包、字体包、图标资源)

根据Terraform部署包中的README.md文件,设置variables.tf中的参数

Azure账号登录,订阅切换

在部署包的工作目录中打开powershell,执行以下命令登录Azure,TENANT_ID是客户提供的租户ID

Global Cloud 登录命令

az login --tenant TENANT_ID

如果是非Global cloud,请指定--cloud参数,例如:

China Cloud 登录命令

az login --tenant TENANT_ID --cloud AzureChinaCloud

设置订阅ID,[subscriptionId]是客户提供的订阅ID

az account set --subscription "[subscriptionId]"

查看当前订阅,确保已经登录到正确的订阅

az account show

执行部署

首先检查即将执行的变更是否符合预期

terraform plan
+ 代表新增资源
- 代表删除资源
~ 代表更新资源

如无问题,正式应用这些变更,注意Terraform会再次检查和输出变更内容,查看后需要输入yes进行确认

terraform apply

等待部署完成(大约需要20~60分钟,其中APIM的部署时间较长)

如果没有发生报错,Terraform将会提示创建了多少资源,部署成功。

如果出现错误,需要根据错误提示进行排查,常见问题如下:

  • 执行过程中发生network error、request timeout之类的错误
    • 重新执行Terraform apply一般就可以解决
  • 执行过程中发生Resource already exists之类的错误
    • 通过Azure Portal检查相应的资源是否已经存在,如果已经存在通过Azure Portal进行删除。(部分资源有Purge Protection,可能需要通过专门的az cli命令进行删除)
  • OpenAI资源创建失败,提示quota不足
    • 请检查OpenAI资源在该Region的限额是否足够,如果不足,请改换其他区域

更新AAD应用注册

将APIM的URL更新至AAD应用注册中(规则:$APIM_GATEWAY_URL + "/",eg. https://xxx-apim.azure-api.net/ ),注意勾选access token,ID token

资源包上传,系统启动

安装前端部署包、字体包、图标资源

将以下资源上传至Azure Storage Account的对应容器中,可通过Azure Storage Explorer或是az cli命令进行上传

  • 前端部署包,上传至static-site容器中,注意不要覆盖其中的config.js文件
  • 字体包,上传至backend-core-fonts容器中
  • 图标资源,上传至icons容器中

安装License

将License文件上传至Azure Storage Account的static-site容器中

启动系统,检查是否启动成功

在 variables.tf 文件中将变量 enable_app_service 更新为 true

再次执行 terraform apply 命令来启用应用服务。

分别查看api_app_service、scheduler_app_service、pythoncore_app_service的Monitor日志,确认是否正常启动。

提示

如果启动失败,需要根据错误日志中的信息进行排查。

系统检查

管理员登录系统

通过APIM的URL登录系统,默认管理员账号为servicemeadmin,默认密码在部署包的README.md文件中。

测试系统功能是否正常

完善配置

Copilot设置

Copilot的问答的准确度以及回复内容的形式,很大程度受到Prompt以及相关参数的影响。

以下链接提供了一些Copilot设置的示例,可以在这个基础上根据客户的场景进行修改。

在Copilot提供给最终用户使用之前,需要进行充分的测试,以确保相关的技能能够被正确调用,问答的准确度以及回复内容的形式能够满足用户的需求。

参考系统设置最佳实践

空间设置

空间和文档属性中的设置将会影响到文档在预处理阶段的分段策略,请根据不同情况选择最合适的设置,以达到更好的文档准确度。

提示

设置调整以后,请记得对相关文档重新生成索引,否则设置只会对新上传的文档生效。

参考系统设置最佳实践

测试文档上传

可以将一些示例文档或是客户提供的文档上传至系统,在完成预处理后,通过Copilot问答进行测试。

系统设置修改

根据需要对系统的LOGO、系统标题进行修改。