优势

  1. 私密性:内置的隐私保障,完全与OpenAI运营的保持隔离。
  2. 可控性:网络流量可以完全隔离到您的网络中,并且还内置了其他企业级安全控制。
  3. 价值:通过您自己的内部数据源(即插即用)或使用插件与您的内部服务集成(例如,ServiceNow等),增加业务价值。

我们构建了一个解决方案加速器,以赋能您的工作人员使用Azure ChatGPT。

📘先决条件

Azure OpenAI

  1. 要在Azure上部署和运行ChatGPT,您需要一个具有访问Azure OpenAI服务的Azure订阅。在此处请求访问权限。一旦获得访问权限,请按照此链接中的说明部署gpt-35-turbo或gpt-4模型。
  2. 设置GitHub或Azure AD进行身份验证:下面添加身份提供者部分展示了如何配置身份验证提供者。

:::color1 💡注意:您可以使用NextAuth提供者将身份解决方案配置为身份验证提供者。

:::

👋🏻 介绍

  • Azure ChatGPT 是使用下述技术构建的。
  • Node.js 18:一个开源的、跨平台的 JavaScript 运行时环境。
  • Next.js 13:通过扩展最新的 React 特性,使您能够创建全栈 web 应用程序。
  • NextAuth.js:Next.js 13 的可配置身份验证框架。
  • LangChain JS:用于构建智能应用程序的 AI 编排层。
  • Tailwind CSS:是一个实用为先的 CSS 框架,提供一系列预定义的类,可以用来混合匹配每个元素的样式。
  • shadcn/ui:使用 Radix UI 和 Tailwind CSS 构建的可重复使用组件。
  • Azure Cosmos DB:完全托管的平台即服务(PaaS)NoSQL 数据库,用于存储聊天记录。
  • Azure App Service:完全托管的平台即服务(PaaS),用于托管 web 应用程序、REST API 和移动后端。

微软发布Azure ChatGPT:适用企业内使用的私有和安全 ChatGPT - 图1

💙 一键部署 Azure

部署

点击“部署到 Azure”按钮,并根据环境变量部分在 Azure 门户中配置您的设置。

有关将身份验证添加到您的应用程序的重要信息,请参阅下面的部分。

👨🏻‍💻 从本地机器运行

在本地克隆该存储库或者复制到您的Github账户。从“src”目录下运行以下所有步骤。

  1. 确保在您的Azure订阅中部署了一个Cosmos DB实例。
  2. 创建一个名为.env.local的新文件,用于存储环境变量,并添加以下变量。

请注意:

不要使用双引号,并且不要删除任何变量。

确保NEXTAUTH_URL=http://localhost:3000 这一行没有注释。

  1. # Azure OpenAI configuration
  2. AZURE_OPENAI_API_KEY=
  3. AZURE_OPENAI_API_INSTANCE_NAME=
  4. AZURE_OPENAI_API_DEPLOYMENT_NAME=
  5. AZURE_OPENAI_API_VERSION=
  6. # GitHub OAuth app configuration
  7. AUTH_GITHUB_ID=
  8. AUTH_GITHUB_SECRET=
  9. # Azure AD OAuth app configuration
  10. AZURE_AD_CLIENT_ID=
  11. AZURE_AD_CLIENT_SECRET=
  12. AZURE_AD_TENANT_ID=
  13. # When deploying to production,
  14. # set the NEXTAUTH_URL environment variable to the canonical URL of your site.
  15. # More information: https://next-auth.js.org/configuration/options
  16. NEXTAUTH_SECRET=
  17. NEXTAUTH_URL=http://localhost:3000
  18. AZURE_COSMOSDB_URI=
  19. AZURE_COSMOSDB_KEY=
  1. 将当前活动目录更改为src
  2. 通过运行npm install安装npm包
  3. 通过运行npm run dev启动项目
  4. 现在你应该会被提示登录你选择的OAuth提供者。登录成功后,你可以开始创建新的对话。

微软发布Azure ChatGPT:适用企业内使用的私有和安全 ChatGPT - 图2

微软发布Azure ChatGPT:适用企业内使用的私有和安全 ChatGPT - 图3

☁️ 部署到 Azure - GitHub Actions

🧬 Fork 该存储库

点此开始Fork

将该存储库fork到您自己的组织中,以便您可以针对自己的Azure订阅执行GitHub Actions。

🗝️ 在您的GitHub存储库中配置

  1. AZURE_CREDENTIALS

GitHub工作流程需要一个名为AZURE_CREDENTIALS的机密来对Azure进行身份验证。该机密包含在包含容器应用程序和容器注册表的资源组上具有Contributor角色的服务主体的凭据。

  1. 1. 在包含Azure应用服务的资源组上创建具有Contributor角色的服务主体。
  1. az ad sp create-for-rbac
  2. --name <NAME OF THE CREDENTIAL> --role contributor --scopes /subscriptions/<SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP> --sdk-auth --output json
  1. 2. 复制命令的JSON输出。
  2. 3. GitHub存储库中,导航到“设置”>“机密”>“操作”,然后选择“新存储库机密”。
  3. 4. 将“AZURE_CREDENTIALS”输入为名称,并将JSON输出的内容粘贴为值。
  4. 5. 选择“添加机密”。

2.AZURE_APP_SERVICE_NAME

在相同的存储库密钥下,添加一个新的变量AZURE_APP_SERVICE_NAME,以部署到Azure Web应用程序。该密钥的值是您的Azure Web应用程序的名称,例如从https://my-web-app-name.azurewebsites.net/域中的my-web-app-name。

🔄 运行GitHub Actions

一旦配置了密钥,GitHub Actions将在每次代码推送到存储库时触发。或者,您可以通过在GitHub的Actions选项卡中点击”Run Workflow”按钮来手动运行工作流。

微软发布Azure ChatGPT:适用企业内使用的私有和安全 ChatGPT - 图4

🪪 添加身份提供者

完成部署后,您需要添加一个身份提供者来对您的应用进行身份验证。

⚠️ 注意:下面只需要一个身份提供者。

GitHub身份验证提供者

我们将创建两个GitHub应用程序:一个用于本地测试,另一个用于生产环境。

🟡 开发应用程序设置

  1. 前往GitHub OAuth应用程序设置页面 https://github.com/settings/developers
  2. 创建一个新的OAuth应用程序 https://github.com/settings/applications/new
  3. 填写以下细节
  1. Application name: Azure ChatGPT DEV Environment
  2. Homepage URL: http://localhost:3000
  3. Authorization callback URL: http://localhost:3000/api/auth/callback/github

🟢 生产应用程序设置

  1. 转到GitHub OAuth 应用程序设置 https://github.com/settings/developers
  2. 创建一个新的OAuth 应用程序 https://github.com/settings/applications/new
  3. 填写以下详细信息
  1. Application name: Azure ChatGPT Production
  2. Homepage URL: https://YOUR-WEBSITE-NAME.azurewebsites.net
  3. Authorization callback URL: https://YOUR-WEBSITE-NAME.azurewebsites.net/api/auth/callback/github

⚠️ 完成应用程序设置后,请确保本地和Azure应用服务上的环境变量已经更新。

  1. # Azure AD OAuth app configuration
  2. AZURE_AD_CLIENT_ID=
  3. AZURE_AD_CLIENT_SECRET=
  4. AZURE_AD_TENANT_ID=

🔑 环境变量

以下是所需的环境变量,需要添加到Azure Portal或.env.local文件中。

App Setting Value Note
AZURE_OPENAI_API_KEY Azure OpenAI资源的API密钥
AZURE_OPENAI_API_INSTANCE_NAME Azure OpenAI资源的名称。
AZURE_OPENAI_API_DEPLOYMENT_NAME The name of your model deployment
AZURE_OPENAI_API_VERSION 2023-03-15-preview API version when using gpt chat
AUTH_GITHUB_ID Client ID of your GitHub OAuth application
AUTH_GITHUB_SECRET Client Secret of your GitHub OAuth application
NEXTAUTH_SECRET Used to encrypt the NextAuth.js JWT, and to hash email verification tokens. This set by default as part of the deployment template
NEXTAUTH_URL Current webs hosting domain name with HTTP or HTTPS. This set by default as part of the deployment template
AZURE_COSMOSDB_URI URL of the Azure CosmosDB
AZURE_COSMOSDB_KEY API Key for Azure Cosmos DB
AZURE_AD_CLIENT_ID The client id specific to the application
AZURE_AD_CLIENT_SECRET The client secret specific to the application
AZURE_AD_TENANT_ID The organisation Tenant ID