版本2.x完全重写了模块,并且不向后兼容版本1.x。
该模块中添加了新的集成和功能,以使用最新的Azure OpenAI服务和功能,例如GPT-4-1106
、 GPT-4-Vision
和DALL-E-3
。模块中添加了新的 ChatBot UI / LibreChat,以提供完整的解决方案。
注意:旧版1.x可以在旧版分支中找到
1.x 版本文档
根据OpenAI 的条款,在使用ChatGPT公共版本时,您提出的任何问题(称为“提示”)都可能有助于 OpenAI 大型语言模型 (LLM) 的进一步训练。鉴于此,至关重要的是要问:您对离开组织的宝贵数据流感到满意吗?如果您是决策者或对组织的安全措施负责,您将采取哪些步骤来确保专有信息的机密性?
有效的解决方案在于利用Azure OpenAI上流行的 LLM 的托管版本。虽然 Azure OpenAI 有许多优点,但我想重点介绍两个优点:
数据隐私:通过在 Azure 上托管 OpenAI 的模型,您的提示永远不会成为法学硕士培训的来源。它只是一个在 Azure 上运行的独立版本,专为您的使用而定制。
增强的安全性:Azure OpenAI 提供强大的安全措施,从保护特定端点的能力到复杂的基于角色的访问控制。如需更深入的了解,请参阅这篇 Microsoft Learn 文章。
虽然 Azure OpenAI 确实需要付费,但它的价格非常实惠——通常一次对话的成本不到 10 美分。您可以在此处查看 Azure OpenAI 的定价详细信息。
即将推出...
欢迎贡献。如果您有任何改进或修复,请提交拉取请求。确保遵循现有的代码风格并向代码添加注释来解释其作用。
该 terraform 模块已根据 MIT 许可证获得许可。有关更多详细信息,请参阅许可证文件。
如果您遇到任何问题或对此 terraform 模块有任何疑问,请在 GitHub 上提出问题。我们将尽力尽快做出回应。
此 terraform 模块由Marcel Lupo开发,作为探索 Azure OpenAI 模型功能的项目的一部分。我们要感谢 OpenAI 和 Microsoft 团队所做的出色工作以及对 AI 社区的持续支持。
姓名 | 版本 |
---|---|
地形 | >= 1.9.5 |
蔚蓝 | 〜> 4.0 |
随机的 | 〜> 3.0 |
姓名 | 版本 |
---|---|
蔚蓝 | 〜> 4.0 |
随机的 | 〜> 3.0 |
没有模块。
姓名 | 类型 |
---|---|
azurerm_app_service_certificate_binding.libre_app_cert_binding | 资源 |
azurerm_app_service_custom_hostname_binding.hostname_binding | 资源 |
azurerm_app_service_driven_certificate.libre_app_cert | 资源 |
azurerm_cognitive_account.az_openai | 资源 |
azurerm_cognitive_deployment.az_openai_models | 资源 |
azurerm_cosmosdb_account.az_openai_mongodb | 资源 |
azurerm_dns_cname_record.cname_record | 资源 |
azurerm_dns_txt_record.domain_verification | 资源 |
azurerm_key_vault.az_openai_kv | 资源 |
azurerm_key_vault_secret.libre_app_creds_iv | 资源 |
azurerm_key_vault_secret.libre_app_creds_key | 资源 |
azurerm_key_vault_secret.libre_app_jwt_refresh_secret | 资源 |
azurerm_key_vault_secret.libre_app_jwt_secret | 资源 |
azurerm_key_vault_secret.openai_cosmos_uri | 资源 |
azurerm_key_vault_secret.openai_endpoint | 资源 |
azurerm_key_vault_secret.openai_primary_key | 资源 |
azurerm_linux_web_app.librechat | 资源 |
azurerm_resource_group.az_openai_rg | 资源 |
azurerm_role_assignment.kv_role_assigment | 资源 |
azurerm_role_assignment.librechat_app_kv_access | 资源 |
azurerm_service_plan.az_openai_asp | 资源 |
azurerm_subnet.az_openai_subnet | 资源 |
azurerm_virtual_network.az_openai_vnet | 资源 |
random_password.libre_app_creds_iv | 资源 |
random_password.libre_app_creds_key | 资源 |
random_password.libre_app_jwt_refresh_secret | 资源 |
random_password.libre_app_jwt_secret | 资源 |
azurerm_client_config.current | 数据来源 |
姓名 | 描述 | 类型 | 默认 | 必需的 |
---|---|---|---|---|
应用程序服务名称 | Linux 应用服务计划的名称。 | string | "openaiasp9000" | 不 |
应用程序_服务_sku_名称 | 应用服务计划的 SKU 名称。 | string | "B1" | 不 |
cosmosdb_automatic_failover | 是否为 Cosmos DB 帐户启用自动故障转移 | bool | false | 不 |
宇宙数据库功能 | Cosmos DB 帐户的功能 | list(string) | [ | 不 |
cosmosdb_consistency_level | Cosmos DB 帐户的一致性级别 | string | "BoundedStaleness" | 不 |
cosmosdb_geo_locations | Cosmos DB 帐户的地理位置 | 列表(对象({ | [ | 不 |
cosmosdb_is_virtual_network_filter_enabled | 是否为 Cosmos DB 帐户启用虚拟网络过滤 | bool | true | 不 |
cosmosdb_kind | 要创建的 Cosmos DB 类型 | string | "MongoDB" | 不 |
cosmosdb_max_interval_in_秒 | Cosmos DB 帐户的最大过时间隔(以秒为单位) | number | 10 | 不 |
cosmosdb_max_staleness_prefix | Cosmos DB 帐户的最大过时前缀 | number | 200 | 不 |
宇宙数据库名称 | Cosmos DB 帐户的名称 | string | "openaicosmosdb" | 不 |
cosmosdb_offer_type | 用于 Cosmos DB 帐户的优惠类型 | string | "Standard" | 不 |
cosmosdb_public_network_access_enabled | 是否为Cosmos DB帐户启用公网访问 | bool | true | 不 |
cosmosdb_虚拟_网络_子网 | 与 Cosmos DB 帐户(服务端点)关联的虚拟网络子网。如果网络是作为模块的一部分创建的,则会自动填充。 | list(string) | null | 不 |
dns_资源组_名称 | 包含用于应用服务的自定义 DNS 区域的资源组 | string | "dns-rg" | 不 |
kv_fw_allowed_ips | Key Vault 防火墙允许的 ip 规则的值。 | list(string) | [] | 不 |
kv_fw_旁路 | 要绕过的 Key Vault 防火墙规则列表。 | string | "AzureServices" | 不 |
kv_fw_default_action | Key Vault 防火墙规则的默认操作。 | string | "Deny" | 不 |
kv_fw_network_subnet_ids | 与 Cosmos DB 帐户(服务端点)关联的虚拟网络子网。如果网络是作为模块的一部分创建的,则会自动填充。 | list(string) | null | 不 |
kv_名称 | 要创建的 Key Vault 的名称(解决方案机密)。 | string | "openaikv9000" | 不 |
kv_sku | 要创建的 Key Vault 的 SKU。 | string | "standard" | 不 |
libre_app_allow_email_login | 允许电子邮件登录 | bool | true | 不 |
libre_app_allow_registration | 允许注册 | bool | true | 不 |
libre_app_allow_social_login | 允许社交登录 | bool | false | 不 |
libre_app_allow_social_registration | 允许社交注册 | bool | false | 不 |
libre_app_allowed_ip_addresses | 允许的 IP 地址。要匹配以允许的 IP 或 IP 范围的 CIDR 表示法。例如:10.0.0.0/24 或 192.168.10.1/32 | 列表(对象({ | [ | 不 |
libre_app_allowed_subnets | 允许的子网(默认情况下,部署应用服务的子网已允许访问,优先级为 100)。在此添加任何附加内容 | 列表(对象({ | [ | 不 |
libre_app_az_oai_api_key | Azure OpenAI API 密钥 | string | null | 不 |
libre_app_az_oai_api_version | Azure OpenAI API 版本 | string | "2023-07-01-preview" | 不 |
libre_app_az_oai_dall3_api_version | Azure OpenAI DALL-E API 版本 | string | "2023-12-01-preview" | 不 |
libre_app_az_oai_dall3_deployment_name | Azure OpenAI DALL-E 部署名称 | string | "dall-e-3" | 不 |
libre_app_az_oai_instance_name | Azure OpenAI 实例名称 | string | null | 不 |
libre_app_az_oai_models | Azure OpenAI 模型。例如'gpt-4-1106-preview,gpt-4,gpt-3.5-turbo,gpt-3.5-turbo-1106,gpt-4-vision-preview' | string | "gpt-4-1106-preview" | 不 |
libre_app_az_oai_use_model_as_deployment_name | Azure OpenAI 使用模型作为部署名称 | bool | true | 不 |
libre_app_custom_domain_create | 为应用服务创建自定义域和托管证书。 | bool | false | 不 |
libre_app_custom_footer | 为应用程序添加自定义页脚。 | string | "Privately hosted chat app powered by Azure OpenAI and LibreChat." | 不 |
libre_app_debug_console | 在控制台中启用详细服务器输出,但由于详细程度较高,不建议这样做。 | bool | false | 不 |
libre_app_debug_logging | LibreChat 在其后端 (api) 中内置了中央日志记录。日志文件保存在/api/logs 中。默认保存错误日志。默认情况下启用调试日志,但如果不需要,可以将其关闭。 | bool | false | 不 |
libre_app_debug_plugins | 为 Libre App 插件启用调试模式。 | bool | false | 不 |
libre_app_docker_image | 用于应用服务的 Docker 映像。 | string | "ghcr.io/danny-avila/librechat-dev-api:latest" | 不 |
libre_app_domain_client | 要在本地使用,请将 DOMAIN_CLIENT 和 DOMAIN_SERVER 设置为 http://localhost:3080(3080 是之前配置的端口)。部署到自定义域时,将 DOMAIN_CLIENT 和 DOMAIN_SERVER 设置为您部署的 URL,例如 https://mydomain.example。 com | string | "http://localhost:3080" | 不 |
libre_app_domain_server | 要在本地使用,请将 DOMAIN_CLIENT 和 DOMAIN_SERVER 设置为 http://localhost:3080(3080 是之前配置的端口)。部署到自定义域时,将 DOMAIN_CLIENT 和 DOMAIN_SERVER 设置为您部署的 URL,例如 https://mydomain.example。 com | string | "http://localhost:3080" | 不 |
libre_app_enable_meilisearch | 启用美丽搜索 | bool | false | 不 |
libre_app_endpoints | 端点和模型选择。例如“openAI、azureOpenAI、bingAI、chatGPTBrowser、google、gptPlugins、anthropic” | string | "azureOpenAI" | 不 |
自由应用程序主机 | 服务器默认监听 localhost:3080。您可以根据需要更改目标 IP。如果您想让此服务器在外部可用,例如与其他人共享服务器或从 Docker 容器公开该服务器,请将主机设置为 0.0.0.0 或您的外部 IP 接口。 | string | "0.0.0.0" | 不 |
libre_app_jwt_refresh_secret | JWT 刷新秘密 | string | null | 不 |
libre_app_jwt_secret | 智威汤逊秘密 | string | null | 不 |
libre_app_mongo_uri | 要连接的 MongoDB 连接字符串。 | string | null | 不 |
自由应用程序名称 | LibreChat 应用服务的名称。 | string | "librechatapp9000" | 不 |
libre_app_plugins_creds_iv | Libre 应用程序插件 Creds IV | string | null | 不 |
libre_app_plugins_creds_key | Libre 应用程序插件 信用密钥 | string | null | 不 |
自由应用程序端口 | 要侦听的主机端口。 | number | 3080 | 不 |
libre_app_public_network_access_enabled | 是否开启公网访问。默认为false 。 | bool | true | 不 |
自由应用程序标题 | 为应用程序添加自定义标题。 | string | "PrivateGPT" | 不 |
libre_app_violations | 违规配置 | 目的({ | { | 不 |
libre_app_virtual_network_subnet_id | 子网的 ID,用于允许访问应用服务(优先级 100),例如 cosmosdb、meilisearch 等。如果网络是作为模块的一部分创建的,则如果值为“null”,则会自动填充。 | string | null | 不 |
librechat_app_custom_dns_zone_name | 用于应用服务的 DNS 区域。 | string | "domain.com" | 不 |
librechat_app_custom_domain_name | 用于应用服务的自定义域。 | string | "privategpt" | 不 |
地点 | 将托管资源的 Azure 区域。 | string | "uksouth" | 不 |
oai_帐户名 | OpenAI 服务的名称。 | string | "az-openai-account" | 不 |
oai_custom_subdomain_name | 用于基于令牌的身份验证的子域名。改变这一点会强制创建新资源。 (一般与账户名相同) | string | "demo-account" | 不 |
oai_客户_托管_密钥 | 类型=对象({ key_vault_key_id =(必需)用于加密此 OpenAI 帐户中的数据的 Key Vault 密钥的 ID。 Identity_client_id =(可选)有权访问密钥的用户分配身份的客户端 ID。仅当 OpenAI 帐户附加多个身份时才需要指定此属性。 }) | 目的({ | null | 不 |
oai_dynamic_throttle_enabled | 是否启用动态节流。默认为true 。 | bool | true | 不 |
oai_fqdns | 用于基于令牌的身份验证的 FQDN 列表。改变这一点会强制创建新资源。 | list(string) | [] | 不 |
oai_身份 | 类型=对象({ type =(必需)身份的类型。可能的值为 SystemAssigned 、 UserAssigned 、 SystemAssigned, UserAssigned 。Identity_ids =(可选)指定要分配给此 OpenAI 帐户的用户分配的托管身份 ID 列表。 }) | 目的({ | { | 不 |
oai_local_auth_enabled | 是否为认知帐户启用本地身份验证方法。默认为true 。 | bool | true | 不 |
oai_model_deployment | 类型 = 列表(对象({ Deployment_id =(必需)认知服务帐户 Model Deployment 的名称。改变这一点会强制创建新资源。型号名称 = { model_format =(必需)认知服务帐户部署模型的格式。改变这一点会强制创建新资源。可能的值是 OpenAI。 model_name =(必需)认知服务帐户部署模型的名称。改变这一点会强制创建新资源。 model_version =(必需)认知服务帐户部署模型的版本。 } sku = { sku_name =(必需)SKU 的名称。可能的值包括 Standard、GlobalBatch、GlobalStandard 和 ProvisionedManaged。 sku_tier =(可选)可能的值为免费、基本、标准、高级、企业。改变这一点会强制创建新资源。 sku_size =(可选)SKU 大小。当名称字段是层和其他值的组合时,这将是独立代码。改变这一点会强制创建新资源。 sku_family =(可选)如果服务具有不同代的硬件,对于同一 SKU,则可以在此处捕获。改变这一点会强制创建新资源。 sku_capacity =(可选)每分钟令牌数 (TPM)。如果 SKU 支持 sku out/in,则应包含容量整数。如果该资源无法进行 sku 输出/输入,则可以省略此操作。默认值为 1。更改此值会强制创建新资源。 } rai_policy_name = (可选)RAI 策略的名称。改变这一点会强制创建新资源。 })) | 列表(对象({ | [] | 不 |
oai_network_acls | 类型 = 设置(对象({ default_action =(必需)当 ip_rules / virtual_network_rules 没有规则匹配时使用的默认操作。可能的值为 Allow 和Deny 。ip_rules =(可选)应能够访问认知帐户的一个或多个 IP 地址或 CIDR 块。 virtual_network_rules = 可选(设置(对象({ subnet_id =(必需)能够访问 OpenAI 帐户的子网的 ID。 ignore_missing_vnet_service_endpoint = (可选)是否忽略缺少的 vnet 服务端点。默认为 false 。}))) })) | 设置(对象({ | null | 不 |
oai_outbound_network_access_restricted | 出站网络访问是否受到限制。默认为false 。 | bool | false | 不 |
oai_public_network_access_enabled | 是否开启公网访问。默认为false 。 | bool | true | 不 |
oai_sku_名称 | OpenAI 服务的 SKU 名称。 | string | "S0" | 不 |
oai_存储 | 类型=列表(对象({ storage_account_id =(必需)Microsoft.Storage 资源的完整资源 ID。 Identity_client_id =(可选)与存储资源关联的托管身份的客户端 ID。 })) | 列表(对象({ | [] | 不 |
资源组名称 | 用于创建 OpenAI 服务/或托管现有服务的资源组的名称。 | string | 不适用 | 是的 |
子网配置 | 用于在虚拟网络中创建子网的子网配置对象列表。 | 目的({ | { | 不 |
标签 | 用于标记创建的资源的键值对映射。 | map(string) | {} | 不 |
use_cosmosdb_free_tier | 是否为 Cosmos DB 帐户启用免费套餐。如果另一个实例已使用免费套餐,则此值必须为 false。 | bool | true | 不 |
虚拟网络名称 | 附加资源的虚拟网络的名称。 | string | "openai-vnet-9000" | 不 |
vnet_地址_空间 | 虚拟网络的地址空间值。 | list(string) | [ | 不 |
姓名 | 描述 |
---|---|
应用程序服务默认主机名 | 应用服务的默认主机名 |
应用程序服务ID | 应用服务的ID |
应用程序服务名称 | 应用服务的名称 |
app_service_outbound_ip_addresses | 应用服务的出站IP地址 |
应用程序服务计划 ID | 应用服务计划的 ID |
应用程序服务计划名称 | 应用服务计划的名称 |
认知部署 ID | OpenAI 认知帐户模型部署的 ID |
认知部署名称 | OpenAI 认知帐户模型部署的名称 |
cosmosdb_account_endpoint | 用于连接到 Cosmos DB 帐户的端点 |
cosmosdb_account_id | Cosmos DB 帐户的 ID |
cosmosdb_帐户名 | Cosmos DB 帐户的名称 |
cosmosdb_account_primary_key | Cosmos DB 帐户的主主密钥 |
cosmosdb_account_secondary_key | Cosmos DB 帐户的辅助主密钥 |
密钥库 ID | 密钥库的 ID |
密钥库名称 | 密钥保管库的名称 |
key_vault_uri | 密钥保管库的 URI |
openai_端点 | 用于连接到认知服务帐户的端点。 |
openai_primary_key | 认知服务帐户的主要访问密钥。 |
openai_secondary_key | 认知服务帐户的辅助访问密钥。 |
openai_子域 | 用于连接到认知服务帐户的子域。 |
子网号 | 子网 ID |
子网名称 | 子网名称 |
虚拟网络 ID | 虚拟网络的ID |
虚拟网络名称 | 虚拟网络的名称 |