跳到主要内容

在Azure进行部署

部署前的准备

需要提供的资源

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

需要安装的工具

需要掌握的知识(建议)

产品部署架构及资源清单

我们在Terraform脚本中提供了两种部署选项,可根据需要进行选择。

标准部署架构

Private Endpoint部署架构,通过Private Endpoint/Vnet实现内部资源的网络隔离,进一步提高安全性。

提示

使用Private Endpoint时,除了基础的按数量计费外,还会产生额外的网络流量费用。

各组件用途说明

类型自定义名称用途说明
Azure Front DoorCDN(可选的) 内容分发网络,用于加速静态资源的访问
Azure Front DoorAPI Acceleration(可选的) API 加速,用于加速API的访问
API ManagementAPI EndpointAPI 管理终端,用于管理API
App ServiceAPI ServiceAPI 服务,用于处理API请求
App ServiceJob Service作业服务,用于处理高负载的任务,定时任务的执行
Azure OpenAI ServiceLLM-Primary主要大语言模型,用于Agent问答的主模型(例如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-密钥管理,用于存储密钥
Azure Monitor-(可选的) 资源监控服务,收集和分析资源的指标信息
Application Insights-(可选的) 应用监控服务,用于应用性能监控,问题诊断
Vnet/Subnet-(可选的) 定义Azure资源的逻辑隔离网络和子网
Private Endpoint-(可选的) 通过私有IP安全地连接到Azure服务
Private DNS Zone-(可选的) 私有DNS,将服务的FQDN解析为私有IP
Managed Identity-(可选的) 托管标识,资源间通信的凭证
Public IP-(可选的) 公网IP地址,在使用Private Endpoint部署架构时,Standard tier的API Management需要配置公网IP
Network Security Group-(可选的) 网络安全组,用于控制资源的网络访问

参考配置

提示

以上配置仅供参考,需要根据实际的负载情况进行调整

进行产品部署

部署流程

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

Terraform部署

创建AAD应用注册

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

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

eg. appreg-serviceme-trial

部署包准备

提示

请联系产品团队获取最新的部署包(包含Terraform部署包、字体包、图标资源、Web前端部署包、移动端部署包、浏览器插件包)

请参考Terraform部署包中的README.md文件,按照其中的说明配置variables.tf文件中的各项参数

如需启用 Private Endpoint 功能,请在 variables.tf 文件中将 deploy_private_network 变量设置为 true。Vnet 和 subnet 的 IP 地址配置请在 network.tf 文件中进行设置。

关于 enable_public_network_access 变量:

  • 该变量用于控制除 APIM 外所有资源的公网访问权限
  • 建议在所有部署完成后再将此选项设置为false
  • 如果提前关闭,可能会影响 Terraform 脚本的正常执行
  • 一旦关闭,将无法在vnet以外的网络访问包括keyvault、数据库在内的资源,需要部署VPN Gateway或是跳板机

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命令进行上传

  • 将字体包上传至backend-core-fonts容器
  • 将图标资源上传至icons容器
  • 将Web前端部署包上传至static-site容器(请勿覆盖现有的config.js文件)
  • 将浏览器插件部署包上传至extension容器(如果没有请手动创建)
  • 如需部署移动端,请在static-site容器中创建mobile文件夹,配置好移动端部署包中的config.js后上传至该文件夹

安装License

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

启动系统并验证部署状态

  1. 修改配置启用应用服务

    • 打开 variables.tf 文件
    • enable_app_service 变量值更新为 true
  2. 应用配置变更

    • 执行 terraform apply 命令
    • 等待部署完成
  3. 检查服务运行状态

    • 登录 Azure Portal
    • 分别检查以下服务的 Monitor 日志:
      • api_app_service
      • scheduler_app_service
      • pythoncore_app_service
    • 确认所有服务均正常启动运行
提示

如发现服务启动异常,请仔细查看错误日志信息,根据具体错误进行排查和修复。

提示

对于采用 Private Endpoint 部署的环境,请注意以下几点:

  1. 部署完成后,如需限制公网访问,可将 enable_public_network_access 变量设置为 false
  2. 此设置将关闭除 APIM 外所有资源的公网访问权限,提高系统安全性
  3. 需要注意的是,关闭公网访问后:
    • Terraform 将无法直接访问 keyvault 和 Storage 资源
    • 可能导致后续的 terraform apply 操作失败
    • 解决方案:
      • 方案一:临时启用公网访问,执行完 terraform apply 后再关闭
      • 方案二:通过跳板机或 VPN Gateway 连接到 vnet 执行脚本

系统检查

管理员登录系统

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

测试系统功能是否正常

完善配置

Agent设置

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

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

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

参考系统设置最佳实践

空间设置

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

提示

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

参考系统设置最佳实践

测试文档上传

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

系统设置修改

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