Версия 2.x представляет собой полную переработку модуля и не имеет обратной совместимости с версией 1.x.
В модуль были добавлены новые интеграции и функции для использования новейших сервисов и функций Azure OpenAI , таких как GPT-4-1106
, GPT-4-Vision
и DALL-E-3
. В модуль добавлен новый пользовательский интерфейс ChatBot/LibreChat, обеспечивающий комплексное решение.
ПРИМЕЧАНИЕ. Устаревшую версию 1.x можно найти в устаревшей ветке здесь.
Документация версии 1.x
По условиям OpenAI при использовании общедоступной версии ChatGPT любые задаваемые вами вопросы, называемые «подсказками» , могут способствовать дальнейшему обучению модели большого языка OpenAI (LLM). Учитывая это, очень важно задаться вопросом: комфортно ли вам, когда этот ценный поток данных покидает вашу организацию? Если вы принимаете решения или несете ответственность за меры безопасности вашей организации, какие шаги вы предпринимаете, чтобы обеспечить конфиденциальность конфиденциальной информации?
Эффективное решение заключается в использовании размещенной версии популярного LLM на Azure OpenAI . Хотя у Azure OpenAI есть множество преимуществ, я хотел бы выделить два:
Конфиденциальность данных . Благодаря размещению моделей OpenAI в Azure ваши запросы никогда не будут служить источником для обучения LLM. Это просто автономная версия, работающая в Azure и адаптированная для вашего использования.
Повышенная безопасность . Azure OpenAI предлагает надежные меры безопасности: от возможности защищать определенные конечные точки до сложного контроля доступа на основе ролей. Более подробную информацию можно найти в этой статье Microsoft Learn.
Хотя Azure OpenAI имеет свою стоимость, она очень доступна — часто разговор обходится менее чем в 10 центов. Подробную информацию о ценах на Azure OpenAI можно просмотреть здесь.
вскоре...
Взносы приветствуются. Если у вас есть какие-либо улучшения или исправления, отправьте запрос на включение. Обязательно следуйте существующему стилю кода и добавляйте к коду комментарии, объясняющие, что он делает.
Этот модуль terraform лицензируется по лицензии MIT. Дополнительные сведения см. в файле ЛИЦЕНЗИИ.
Если у вас возникнут какие-либо проблемы или возникнут вопросы об этом модуле terraform, откройте проблему на GitHub. Мы сделаем все возможное, чтобы ответить как можно быстрее.
Этот модуль terraform был разработан Марселем Лупо в рамках проекта по изучению возможностей моделей Azure OpenAI. Мы хотели бы поблагодарить команду OpenAI и Microsoft за их невероятную работу и постоянную поддержку сообщества искусственного интеллекта.
Имя | Версия |
---|---|
терраформировать | >= 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_managed_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 | ресурс |
случайный_пароль.libre_app_creds_iv | ресурс |
случайный_пароль.libre_app_creds_key | ресурс |
случайный_пароль.libre_app_jwt_refresh_secret | ресурс |
случайный_пароль.libre_app_jwt_secret | ресурс |
azurerm_client_config.current | источник данных |
Имя | Описание | Тип | По умолчанию | Необходимый |
---|---|---|---|---|
app_service_name | Название плана службы приложений Linux. | string | "openaiasp9000" | нет |
app_service_sku_name | Название SKU плана службы приложений. | string | "B1" | нет |
Cosmosdb_automatic_failover | Включить ли автоматический переход на другой ресурс для учетной записи Cosmos DB. | bool | false | нет |
cosmosdb_capabilities | Возможности учетной записи 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 | нет |
космосдб_вид | Какой тип 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_virtual_network_subnets | Подсети виртуальной сети, которые нужно связать с учетной записью Cosmos DB (конечная точка службы). Если сеть создается как часть модуля, она будет заполнена автоматически. | list(string) | null | нет |
dns_resource_group_name | Группа ресурсов, содержащая настраиваемую зону DNS для использования службой приложений. | string | "dns-rg" | нет |
kv_fw_allowed_ips | значение IP-правил брандмауэра хранилища ключей разрешено. | list(string) | [] | нет |
kv_fw_bypass | Список правил брандмауэра хранилища ключей, которые необходимо обойти. | string | "AzureServices" | нет |
kv_fw_default_action | Действие по умолчанию для правил брандмауэра хранилища ключей. | string | "Deny" | нет |
kv_fw_network_subnet_ids | Подсети виртуальной сети, которые нужно связать с учетной записью Cosmos DB (конечная точка службы). Если сеть создается как часть модуля, она будет заполнена автоматически. | list(string) | null | нет |
kv_name | Имя создаваемого хранилища ключей (секреты решения). | string | "openaikv9000" | нет |
kv_sku | SKU Key Vault, который нужно создать. | 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-адреса. Нотация CIDR IP-адреса или диапазона IP-адресов, которые необходимо разрешить. Например: 10.0.0.0/24 или 192.168.10.1/32. | список(объект({ | [ | нет |
libre_app_allowed_subnets | Разрешенные подсети (по умолчанию подсети, в которой развернута служба приложений, уже разрешен доступ с приоритетом 100). Добавляйте сюда любые дополнения | список(объект({ | [ | нет |
libre_app_az_oai_api_key | Ключ API Azure OpenAI | string | null | нет |
libre_app_az_oai_api_version | Версия API Azure OpenAI | string | "2023-07-01-preview" | нет |
libre_app_az_oai_dall3_api_version | Версия API Azure OpenAI DALL-E | 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. | 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. ком | string | "http://localhost:3080" | нет |
libre_app_domain_server | Для локального использования установите для DOMAIN_CLIENT и DOMAIN_SERVER значение http://localhost:3080 (3080 — это ранее настроенный порт). При развертывании в личном домене установите для DOMAIN_CLIENT и DOMAIN_SERVER значение развернутого URL-адреса, например https://mydomain.example. ком | string | "http://localhost:3080" | нет |
libre_app_enable_meilisearch | Включить Meilisearch | bool | false | нет |
libre_app_endpoints | выбор конечных точек и моделей. Например, «openAI,azureOpenAI,bingAI,chatGPTBrowser,google,gptPlugins,anthropic» | string | "azureOpenAI" | нет |
libre_app_host | по умолчанию сервер будет слушать 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 | Секрет JWT | string | null | нет |
libre_app_mongo_uri | Строка подключения MongoDB для подключения. | string | null | нет |
libre_app_name | Имя службы приложений LibreChat. | string | "librechatapp9000" | нет |
libre_app_plugins_creds_iv | Плагины для приложений Libre Creds IV | string | null | нет |
libre_app_plugins_creds_key | Ключ Creds плагинов приложений Libre | string | null | нет |
libre_app_port | Хост-порт для прослушивания. | number | 3080 | нет |
libre_app_public_network_access_enabled | Включен ли доступ к общедоступной сети. По умолчанию установлено значение false . | bool | true | нет |
libre_app_title | Добавьте собственный заголовок для приложения. | string | "PrivateGPT" | нет |
libre_app_violations | Конфигурация на предмет нарушений | объект({ | { | нет |
libre_app_virtual_network_subnet_id | Идентификатор подсети, используемый для разрешения доступа к Службе приложений (приоритет 100), например cosmosdb, meilisearch и т. д. Если сеть создается как часть модуля, он будет автоматически заполнен, если значение равно нулю. | string | null | нет |
librechat_app_custom_dns_zone_name | Зона DNS, используемая для Службы приложений. | string | "domain.com" | нет |
librechat_app_custom_domain_name | Персональный домен, который будет использоваться для Службы приложений. | string | "privategpt" | нет |
расположение | Регион Azure, в котором будут размещаться ресурсы. | string | "uksouth" | нет |
oai_account_name | Имя сервиса OpenAI. | string | "az-openai-account" | нет |
oai_custom_subdomain_name | Имя субдомена, используемое для аутентификации на основе токенов. Изменение этого параметра приводит к созданию нового ресурса. (обычно совпадает с именем учетной записи) | string | "demo-account" | нет |
oai_customer_managed_key | тип = объект({ key_vault_key_id = (Обязательно) Идентификатор ключа хранилища ключей, который следует использовать для шифрования данных в этой учетной записи OpenAI. identity_client_id = (Необязательно) Идентификатор клиента назначенного пользователем удостоверения, имеющего доступ к ключу. Это свойство необходимо указывать только в том случае, если к учетной записи OpenAI прикреплено несколько идентификаторов. }) | объект({ | null | нет |
oai_dynamic_throttling_enabled | Включено ли динамическое регулирование. По умолчанию true . | bool | true | нет |
oai_fqdns | Список полных доменных имен, которые будут использоваться для аутентификации на основе токенов. Изменение этого параметра приводит к созданию нового ресурса. | list(string) | [] | нет |
oai_identity | тип = объект({ type = (Обязательно) Тип удостоверения. Возможные значения: SystemAssigned , UserAssigned , SystemAssigned, UserAssigned .identity_ids = (Необязательно) Указывает список назначаемых пользователем идентификаторов управляемых удостоверений, которые будут назначены этой учетной записи OpenAI. }) | объект({ | { | нет |
oai_local_auth_enabled | Включены ли локальные методы аутентификации для учетной записи Cognitive Account. По умолчанию true . | bool | true | нет |
oai_model_deployment | тип = список(объект({ Deployment_id = (Обязательно) Имя Model Deployment учетной записи Cognitive Services. Изменение этого параметра приводит к созданию нового ресурса.имя_модели = { model_format = (Обязательно) Формат модели развертывания учетной записи Cognitive Services. Изменение этого параметра приводит к созданию нового ресурса. Возможное значение — OpenAI. model_name = (обязательно) Имя модели развертывания учетной записи Cognitive Services. Изменение этого параметра приводит к созданию нового ресурса. model_version = (обязательно) Версия модели развертывания учетной записи Cognitive Services. } артикул = { sku_name = (Обязательно) Название SKU. Возможные значения: Standard, GlobalBatch, GlobalStandard и ProvisionedManaged. sku_tier = (Необязательно) Возможные значения: Free, Basic, Standard, Premium, Enterprise. Изменение этого параметра приводит к созданию нового ресурса. sku_size = (Необязательно) Размер SKU. Если поле имени представляет собой комбинацию уровня и какого-либо другого значения, это будет отдельный код. Изменение этого параметра приводит к созданию нового ресурса. sku_family = (Необязательно) Если в службе используется оборудование разных поколений для одного и того же SKU, это можно отразить здесь. Изменение этого параметра приводит к созданию нового ресурса. sku_capacity = (Необязательно) Токенов в минуту (TPM). Если номер SKU поддерживает исходящий/входящий SKU, необходимо указать целое число емкости. Если исходящий/входящий SKU для ресурса невозможен, это можно пропустить. Значение по умолчанию — 1. Изменение этого значения приводит к созданию нового ресурса. } rai_policy_name = (Необязательно) Имя политики RAI. Изменение этого параметра приводит к созданию нового ресурса. })) | список(объект({ | [] | нет |
oai_network_acls | тип = набор(объект({ default_action = (Обязательно) Действие по умолчанию, которое будет использоваться, если ни одно правило не соответствует правилам из ip_rules/virtual_network_rules. Возможные значения: Allow и Deny .ip_rules = (Необязательно) Один или несколько IP-адресов или блоков CIDR, которые должны иметь доступ к учетной записи Cognitive. virtual_network_rules = необязательно (набор (объект ({ subnet_id = (Обязательно) Идентификатор подсети, которая должна иметь доступ к учетной записи OpenAI. ignore_missing_vnet_service_endpoint = (Необязательно) Игнорировать отсутствующую конечную точку службы виртуальной сети или нет. По умолчанию значение false .}))) })) | набор(объект({ | null | нет |
oai_outbound_network_access_restricted | Ограничен ли исходящий доступ к сети. По умолчанию установлено значение false . | bool | false | нет |
oai_public_network_access_enabled | Включен ли доступ к общедоступной сети. По умолчанию установлено значение false . | bool | true | нет |
oai_sku_name | Название SKU сервиса OpenAI. | string | "S0" | нет |
oai_storage | тип = список(объект({ Storage_account_id = (Обязательно) Полный идентификатор ресурса Microsoft.Storage. identity_client_id = (Необязательно) Идентификатор клиента управляемого удостоверения, связанного с ресурсом хранения. })) | список(объект({ | [] | нет |
имя_группы_ресурса | Имя группы ресурсов для создания службы OpenAI или места размещения существующей службы. | string | н/д | да |
конфигурация_подсети | Список объектов конфигурации подсети для создания подсетей в виртуальной сети. | объект({ | { | нет |
теги | Карта пар ключ-значение, которая используется для маркировки созданных ресурсов. | map(string) | {} | нет |
use_cosmosdb_free_tier | Включить ли уровень бесплатного пользования для учетной записи Cosmos DB. Это значение должно быть ложным, если другой экземпляр уже использует уровень бесплатного пользования. | bool | true | нет |
имя_виртуальной_сети | Имя виртуальной сети, к которой подключены ресурсы. | string | "openai-vnet-9000" | нет |
vnet_address_space | значение адресного пространства для виртуальной сети. | list(string) | [ | нет |
Имя | Описание |
---|---|
app_service_default_hostname | Имя хоста по умолчанию для службы приложений. |
app_service_id | Идентификатор службы приложений |
имя_сервиса_приложения | Название службы приложений |
app_service_outbound_ip_addresses | Исходящие IP-адреса Службы приложений. |
app_service_plan_id | Идентификатор плана службы приложений |
app_service_plan_name | Название плана службы приложений |
Cognitive_deployment_ids | Идентификаторы развертываний модели когнитивной учетной записи OpenAI |
Cognitive_deployment_names | Названия развертываний модели когнитивной учетной записи OpenAI |
Cosmosdb_account_endpoint | Конечная точка, используемая для подключения к учетной записи Cosmos DB. |
Cosmosdb_account_id | Идентификатор учетной записи Cosmos DB. |
cosmosdb_account_name | Имя учетной записи Cosmos DB. |
Cosmosdb_account_primary_key | Основной главный ключ для учетной записи Cosmos DB. |
Cosmosdb_account_вторичный_ключ | Вторичный главный ключ для учетной записи Cosmos DB. |
key_vault_id | Идентификатор хранилища ключей |
key_vault_name | Название хранилища ключей |
key_vault_uri | URI хранилища ключей. |
openai_endpoint | Конечная точка, используемая для подключения к учетной записи Cognitive Service. |
openai_primary_key | Основной ключ доступа к учетной записи Cognitive Service. |
openai_вторичный_ключ | Вторичный ключ доступа к учетной записи Cognitive Service. |
openai_subdomain | Субдомен, используемый для подключения к учетной записи Cognitive Service. |
идентификатор_подсети | Идентификатор подсети |
имя_подсети | Имя подсети |
virtual_network_id | Идентификатор виртуальной сети |
имя_виртуальной_сети | Имя виртуальной сети |