La version 2.x est une réécriture complète du module et n'est pas rétrocompatible avec la version 1.x.
De nouvelles intégrations et fonctionnalités ont été ajoutées au module pour utiliser les derniers services et fonctionnalités Azure OpenAI tels que GPT-4-1106
, GPT-4-Vision
et DALL-E-3
. Une nouvelle interface utilisateur ChatBot / LibreChat a été ajoutée au module pour fournir une solution complète.
REMARQUE : La version héritée 1.x peut être trouvée dans la branche héritée ici
Documentation de la version 1.x
Selon les conditions d'OpenAI, lors de l'utilisation de la version publique de ChatGPT , toutes les questions que vous posez, appelées « invites » , peuvent contribuer à la formation continue du grand modèle linguistique (LLM) d'OpenAI. Dans ce contexte, il est crucial de se poser la question : êtes-vous à l'aise avec ce précieux flux de données qui quitte votre organisation ? Si vous êtes un décideur ou êtes responsable des mesures de sécurité de votre organisation, quelles mesures prenez-vous pour garantir que les informations exclusives restent confidentielles ?
Une solution efficace consiste à utiliser une version hébergée du populaire LLM sur Azure OpenAI . Bien qu’Azure OpenAI présente de nombreux avantages, j’aimerais en souligner deux :
Confidentialité des données : en hébergeant les modèles OpenAI sur Azure, vos invites ne serviront jamais de source pour former le LLM. Il s'agit simplement d'une version autonome exécutée sur Azure et adaptée à votre utilisation.
Sécurité améliorée : Azure OpenAI offre des mesures de sécurité robustes, de la capacité de sécuriser des points de terminaison spécifiques à des contrôles d'accès complexes basés sur les rôles. Pour une analyse plus approfondie, reportez-vous à cet article Microsoft Learn.
Même si Azure OpenAI a un coût, il est très abordable : souvent, une conversation coûte moins de 10 cents. Vous pouvez consulter les détails des tarifs d’Azure OpenAI ici.
à venir...
Les contributions sont les bienvenues. Veuillez soumettre une pull request si vous avez des améliorations ou des correctifs. Assurez-vous de suivre le style de code existant et d'ajouter des commentaires à votre code expliquant ce qu'il fait.
Ce module Terraform est sous licence MIT. Voir le fichier LICENSE pour plus de détails.
Si vous rencontrez des problèmes ou avez des questions sur ce module Terraform, veuillez ouvrir un ticket sur GitHub. Nous ferons de notre mieux pour répondre le plus rapidement possible.
Ce module Terraform a été développé par Marcel Lupo dans le cadre d'un projet visant à explorer les capacités des modèles Azure OpenAI. Nous tenons à remercier l'équipe OpenAI et Microsoft pour leur travail incroyable et leur soutien continu à la communauté de l'IA.
Nom | Version |
---|---|
terraformer | >= 1.9.5 |
azurrm | ~> 4.0 |
aléatoire | ~> 3.0 |
Nom | Version |
---|---|
azurrm | ~> 4.0 |
aléatoire | ~> 3.0 |
Aucun module.
Nom | Taper |
---|---|
azurerm_app_service_certificate_binding.libre_app_cert_binding | ressource |
azurerm_app_service_custom_hostname_binding.hostname_binding | ressource |
azurerm_app_service_managed_certificate.libre_app_cert | ressource |
azurerm_cognitive_account.az_openai | ressource |
azurerm_cognitive_deployment.az_openai_models | ressource |
azurerm_cosmosdb_account.az_openai_mongodb | ressource |
azurerm_dns_cname_record.cname_record | ressource |
azurerm_dns_txt_record.domain_verification | ressource |
azurerm_key_vault.az_openai_kv | ressource |
azurerm_key_vault_secret.libre_app_creds_iv | ressource |
azurerm_key_vault_secret.libre_app_creds_key | ressource |
azurerm_key_vault_secret.libre_app_jwt_refresh_secret | ressource |
azurerm_key_vault_secret.libre_app_jwt_secret | ressource |
azurerm_key_vault_secret.openai_cosmos_uri | ressource |
azurerm_key_vault_secret.openai_endpoint | ressource |
azurerm_key_vault_secret.openai_primary_key | ressource |
azurerm_linux_web_app.librechat | ressource |
azurerm_resource_group.az_openai_rg | ressource |
azurerm_role_assignment.kv_role_assigment | ressource |
azurerm_role_assignment.librechat_app_kv_access | ressource |
azurerm_service_plan.az_openai_asp | ressource |
azurerm_subnet.az_openai_subnet | ressource |
azurerm_virtual_network.az_openai_vnet | ressource |
random_password.libre_app_creds_iv | ressource |
random_password.libre_app_creds_key | ressource |
random_password.libre_app_jwt_refresh_secret | ressource |
random_password.libre_app_jwt_secret | ressource |
azurerm_client_config.current | source de données |
Nom | Description | Taper | Défaut | Requis |
---|---|---|---|---|
nom_service_application | Nom du plan Linux App Service. | string | "openaiasp9000" | Non |
app_service_sku_name | Nom SKU du plan App Service. | string | "B1" | Non |
cosmosdb_automatic_failover | S'il faut activer le basculement automatique pour le compte Cosmos DB | bool | false | Non |
cosmosdb_capabilities | Les fonctionnalités du compte Cosmos DB | list(string) | [ | Non |
cosmosdb_consistency_level | Le niveau de cohérence du compte Cosmos DB | string | "BoundedStaleness" | Non |
cosmosdb_geo_locations | Les géolocalisations du compte Cosmos DB | liste(objet({ | [ | Non |
cosmosdb_is_virtual_network_filter_enabled | S'il faut activer le filtrage des réseaux virtuels pour le compte Cosmos DB | bool | true | Non |
cosmosdb_kind | Le genre de Cosmos DB à créer | string | "MongoDB" | Non |
cosmosdb_max_interval_in_seconds | L'intervalle d'obsolescence maximal en secondes pour le compte Cosmos DB | number | 10 | Non |
cosmosdb_max_staleness_prefix | Le préfixe d'obsolescence maximale pour le compte Cosmos DB | number | 200 | Non |
nom_cosmosdb | Le nom du compte Cosmos DB | string | "openaicosmosdb" | Non |
cosmosdb_offer_type | Le type d'offre à utiliser pour le compte Cosmos DB | string | "Standard" | Non |
cosmosdb_public_network_access_enabled | S'il faut activer l'accès au réseau public pour le compte Cosmos DB | bool | true | Non |
cosmosdb_virtual_network_subnets | Les sous-réseaux du réseau virtuel à associer au compte Cosmos DB (Service Endpoint). Si un réseau est créé dans le cadre du module, celui-ci sera automatiquement renseigné. | list(string) | null | Non |
dns_resource_group_name | Le groupe de ressources qui contient la zone DNS personnalisée à utiliser pour App Service | string | "dns-rg" | Non |
kv_fw_allowed_ips | valeur des règles IP autorisées par le pare-feu Key Vault. | list(string) | [] | Non |
kv_fw_bypass | Liste des règles de pare-feu du coffre de clés à contourner. | string | "AzureServices" | Non |
kv_fw_default_action | Action par défaut pour les règles de pare-feu de Key Vault. | string | "Deny" | Non |
kv_fw_network_subnet_ids | Les sous-réseaux du réseau virtuel à associer au compte Cosmos DB (Service Endpoint). Si un réseau est créé dans le cadre du module, celui-ci sera automatiquement renseigné. | list(string) | null | Non |
nom_kv | Nom du Key Vault à créer (secrets de la solution). | string | "openaikv9000" | Non |
kv_sku | SKU du Key Vault à créer. | string | "standard" | Non |
libre_app_allow_email_login | Autoriser la connexion par e-mail | bool | true | Non |
libre_app_allow_registration | Autoriser l'inscription | bool | true | Non |
libre_app_allow_social_login | Autoriser la connexion sociale | bool | false | Non |
libre_app_allow_social_registration | Autoriser l'enregistrement social | bool | false | Non |
libre_app_allowed_ip_addresses | Adresses IP autorisées. Notation CIDR de l'adresse IP ou de la plage IP à autoriser. Par exemple : 10.0.0.0/24 ou 192.168.10.1/32 | liste(objet({ | [ | Non |
libre_app_allowed_subnets | Sous-réseaux autorisés (par défaut, le sous-réseau dans lequel le service d'application est déployé est déjà autorisé à accéder en priorité 100). Ajoutez des ajouts ici | liste(objet({ | [ | Non |
libre_app_az_oai_api_key | Clé API Azure OpenAI | string | null | Non |
libre_app_az_oai_api_version | Version de l'API Azure OpenAI | string | "2023-07-01-preview" | Non |
libre_app_az_oai_dall3_api_version | Version de l'API Azure OpenAI DALL-E | string | "2023-12-01-preview" | Non |
libre_app_az_oai_dall3_deployment_name | Nom du déploiement Azure OpenAI DALL-E | string | "dall-e-3" | Non |
libre_app_az_oai_instance_name | Nom de l'instance Azure OpenAI | string | null | Non |
libre_app_az_oai_models | Modèles Azure OpenAI. Par exemple, "gpt-4-1106-preview, gpt-4, gpt-3.5-turbo, gpt-3.5-turbo-1106, gpt-4-vision-preview" | string | "gpt-4-1106-preview" | Non |
libre_app_az_oai_use_model_as_deployment_name | Azure OpenAI utilise le modèle comme nom de déploiement | bool | true | Non |
libre_app_custom_domain_create | Créez un domaine personnalisé et un certificat géré pour App Service. | bool | false | Non |
libre_app_custom_footer | Ajoutez un pied de page personnalisé pour l'application. | string | "Privately hosted chat app powered by Azure OpenAI and LibreChat." | Non |
libre_app_debug_console | Activez la sortie détaillée du serveur dans la console, bien que cela ne soit pas recommandé en raison de sa verbosité élevée. | bool | false | Non |
libre_app_debug_logging | LibreChat intègre une journalisation centrale dans son backend (api). Les fichiers journaux sont enregistrés dans /api/logs. Les journaux d'erreurs sont enregistrés par défaut. Les journaux de débogage sont activés par défaut mais peuvent être désactivés si vous ne le souhaitez pas. | bool | false | Non |
libre_app_debug_plugins | Activez le mode débogage pour les plugins Libre App. | bool | false | Non |
libre_app_docker_image | Image Docker à utiliser pour App Service. | string | "ghcr.io/danny-avila/librechat-dev-api:latest" | Non |
libre_app_domain_client | Pour une utilisation locale, définissez DOMAIN_CLIENT et DOMAIN_SERVER sur http://localhost:3080 (3080 étant le port précédemment configuré). Lors du déploiement sur un domaine personnalisé, définissez DOMAIN_CLIENT et DOMAIN_SERVER sur votre URL déployée, par exemple https://mydomain.example. com | string | "http://localhost:3080" | Non |
libre_app_domain_server | Pour une utilisation locale, définissez DOMAIN_CLIENT et DOMAIN_SERVER sur http://localhost:3080 (3080 étant le port précédemment configuré). Lors du déploiement sur un domaine personnalisé, définissez DOMAIN_CLIENT et DOMAIN_SERVER sur votre URL déployée, par exemple https://mydomain.example. com | string | "http://localhost:3080" | Non |
libre_app_enable_meilisearch | Activer Meilisearch | bool | false | Non |
libre_app_endpoints | sélection des points finaux et des modèles. Par exemple, « openAI, azureOpenAI, bingAI, chatGPTBrowser, google, gptPlugins, anthropique » | string | "azureOpenAI" | Non |
libre_app_host | Le serveur écoutera localhost:3080 par défaut. Vous pouvez modifier l'adresse IP cible à votre guise. Si vous souhaitez rendre ce serveur disponible en externe, par exemple pour partager le serveur avec d'autres ou l'exposer à partir d'un conteneur Docker, définissez l'hôte sur 0.0.0.0 ou votre interface IP externe. | string | "0.0.0.0" | Non |
libre_app_jwt_refresh_secret | Secret d'actualisation JWT | string | null | Non |
libre_app_jwt_secret | Secret JWT | string | null | Non |
libre_app_mongo_uri | La chaîne de connexion MongoDB à laquelle se connecter. | string | null | Non |
libre_app_name | Nom du service d'application LibreChat. | string | "librechatapp9000" | Non |
libre_app_plugins_creds_iv | Plugins d'application Libre Creds IV | string | null | Non |
libre_app_plugins_creds_key | Clé de crédits des plugins d’application Libre | string | null | Non |
libre_app_port | Le port hôte sur lequel écouter. | number | 3080 | Non |
libre_app_public_network_access_enabled | Si l'accès au réseau public est activé ou non. La valeur par défaut est false . | bool | true | Non |
libre_app_title | Ajoutez un titre personnalisé pour l'application. | string | "PrivateGPT" | Non |
libre_app_violations | Configuration pour les violations | objet({ | { | Non |
libre_app_virtual_network_subnet_id | L'ID du sous-réseau, utilisé pour autoriser l'accès à App Service (priorité 100), par exemple cosmosdb, meilisearch, etc. Si un réseau est créé dans le cadre du module, il sera automatiquement renseigné si la valeur est « nulle ». | string | null | Non |
librechat_app_custom_dns_zone_name | Zone DNS à utiliser pour App Service. | string | "domain.com" | Non |
librechat_app_custom_domain_name | Domaine personnalisé à utiliser pour App Service. | string | "privategpt" | Non |
emplacement | Région Azure où les ressources seront hébergées. | string | "uksouth" | Non |
oai_nom_compte | Le nom du service OpenAI. | string | "az-openai-account" | Non |
oai_custom_subdomain_name | Le nom de sous-domaine utilisé pour l'authentification basée sur un jeton. Changer cela force la création d’une nouvelle ressource. (normalement le même que le nom du compte) | string | "demo-account" | Non |
oai_customer_managed_key | type = objet({ key_vault_key_id = (Obligatoire) L'ID de la clé Key Vault qui doit être utilisée pour chiffrer les données de ce compte OpenAI. Identity_client_id = (Facultatif) ID client de l'identité attribuée par l'utilisateur qui a accès à la clé. Cette propriété ne doit être spécifiée que lorsque plusieurs identités sont attachées au compte OpenAI. }) | objet({ | null | Non |
oai_dynamic_throttling_enabled | Si la limitation dynamique est activée ou non. La valeur par défaut est true . | bool | true | Non |
oai_fqdns | Une liste de noms de domaine complets à utiliser pour l'authentification basée sur des jetons. Changer cela force la création d’une nouvelle ressource. | list(string) | [] | Non |
oai_identity | type = objet({ type = (Obligatoire) Le type de l'identité. Les valeurs possibles sont SystemAssigned , UserAssigned , SystemAssigned, UserAssigned .Identity_ids = (Facultatif) Spécifie une liste d'ID d'identité gérés attribués par l'utilisateur à attribuer à ce compte OpenAI. }) | objet({ | { | Non |
oai_local_auth_enabled | Si les méthodes d'authentification locales sont activées pour le compte cognitif. La valeur par défaut est true . | bool | true | Non |
oai_model_deployment | type = liste (objet ({ déploiement_id = (Obligatoire) Nom du Model Deployment de compte Cognitive Services. Changer cela force la création d’une nouvelle ressource.nom_modèle = { model_format = (Obligatoire) Le format du modèle de déploiement de compte Cognitive Services. Changer cela force la création d’une nouvelle ressource. La valeur possible est OpenAI. model_name = (Obligatoire) Le nom du modèle de déploiement de compte Cognitive Services. Changer cela force la création d’une nouvelle ressource. model_version = (Obligatoire) La version du modèle de déploiement de compte Cognitive Services. } réf = { sku_name = (Obligatoire) Le nom du SKU. Les valeurs possibles incluent Standard, GlobalBatch, GlobalStandard et ProvisionedManaged. sku_tier = (Facultatif) Les valeurs possibles sont Free, Basic, Standard, Premium, Enterprise. Changer cela force la création d’une nouvelle ressource. sku_size = (Facultatif) La taille du SKU. Lorsque le champ de nom est la combinaison d’un niveau et d’une autre valeur, il s’agira du code autonome. Changer cela force la création d’une nouvelle ressource. sku_family = (Facultatif) Si le service dispose de différentes générations de matériel, pour le même SKU, cela peut être capturé ici. Changer cela force la création d’une nouvelle ressource. sku_capacity = (Facultatif) Jetons par minute (TPM). Si le SKU prend en charge le SKU out/in, l’entier de capacité doit être inclus. Si le sku out/in n'est pas possible pour la ressource, cela peut être omis. La valeur par défaut est 1. Changer cette valeur force la création d'une nouvelle ressource. } rai_policy_name = (Facultatif) Le nom de la stratégie RAI. Changer cela force la création d’une nouvelle ressource. })) | liste(objet({ | [] | Non |
oai_network_acls | type = ensemble (objet ({ default_action = (Obligatoire) L'action par défaut à utiliser lorsqu'aucune règle ne correspond à ip_rules / virtual_network_rules. Les valeurs possibles sont Allow et Deny .ip_rules = (Facultatif) Une ou plusieurs adresses IP ou blocs CIDR qui devraient pouvoir accéder au compte cognitif. virtual_network_rules = optionnel(set(objet({ subnet_id = (Obligatoire) L'ID d'un sous-réseau qui devrait pouvoir accéder au compte OpenAI. ignore_missing_vnet_service_endpoint = (Facultatif) Indique si le point de terminaison du service vnet manquant est ignoré ou non. La valeur par défaut est false .}))) })) | ensemble(objet({ | null | Non |
oai_outbound_network_access_restricted | Si l'accès au réseau sortant est restreint ou non. La valeur par défaut est false . | bool | false | Non |
oai_public_network_access_enabled | Si l'accès au réseau public est activé ou non. La valeur par défaut est false . | bool | true | Non |
oai_sku_name | Nom SKU du service OpenAI. | string | "S0" | Non |
oai_storage | type = liste (objet ({ storage_account_id = (Obligatoire) ID de ressource complet d'une ressource Microsoft.Storage. Identity_client_id = (Facultatif) ID client de l'identité gérée associée à la ressource de stockage. })) | liste(objet({ | [] | Non |
nom_groupe_ressource | Nom du groupe de ressources pour créer le service OpenAI / ou où un service existant est hébergé. | string | n / A | Oui |
sous-réseau_config | Une liste d'objets de configuration de sous-réseau pour créer des sous-réseaux dans le réseau virtuel. | objet({ | { | Non |
balises | Une carte de paires clé-valeur utilisée pour baliser les ressources créées. | map(string) | {} | Non |
use_cosmosdb_free_tier | S'il faut activer le niveau gratuit pour le compte Cosmos DB. Cela doit être faux si une autre instance utilise déjà le niveau gratuit. | bool | true | Non |
nom_réseau_virtuel | Nom du réseau virtuel auquel les ressources sont attachées. | string | "openai-vnet-9000" | Non |
espace_adresse_vnet | valeur de l’espace d’adressage du réseau virtuel. | list(string) | [ | Non |
Nom | Description |
---|---|
app_service_default_hostname | Le nom d'hôte par défaut d'App Service |
app_service_id | L’ID de l’App Service |
nom_service_application | Le nom de l'App Service |
app_service_outbound_ip_addresses | Les adresses IP sortantes de l’App Service |
app_service_plan_id | L’ID du plan App Service |
nom_plan_service_app | Le nom du plan App Service |
cognitif_deployment_ids | Les identifiants des déploiements du modèle de compte cognitif OpenAI |
noms_deployment_cognitifs | Les noms des déploiements du modèle de compte cognitif OpenAI |
cosmosdb_account_endpoint | Le point de terminaison utilisé pour se connecter au compte Cosmos DB |
cosmosdb_account_id | L'ID du compte Cosmos DB |
cosmosdb_account_name | Le nom du compte Cosmos DB |
cosmosdb_account_primary_key | La clé principale primaire du compte Cosmos DB |
cosmosdb_account_secondary_key | La clé principale secondaire du compte Cosmos DB |
key_vault_id | L’ID du Key Vault |
key_vault_name | Le nom du Key Vault |
key_vault_uri | L’URI du Key Vault |
openai_endpoint | Point de terminaison utilisé pour se connecter au compte de service cognitif. |
openai_primary_key | La clé d'accès principale pour le compte de service cognitif. |
openai_secondary_key | La clé d'accès secondaire pour le compte de service cognitif. |
openai_subdomain | Le sous-domaine utilisé pour se connecter au compte Cognitive Service. |
id_sous-réseau | L'ID du sous-réseau |
nom_sous-réseau | Le nom du sous-réseau |
virtual_network_id | L'ID du réseau virtuel |
nom_réseau_virtuel | Le nom du réseau virtuel |