Version 2.x ist eine komplette Neufassung des Moduls und nicht abwärtskompatibel mit Version 1.x.
Dem Modul wurden neue Integrationen und Funktionen hinzugefügt, um die neuesten Azure OpenAI- Dienste und -Funktionen wie GPT-4-1106
, GPT-4-Vision
und DALL-E-3
zu nutzen. Dem Modul wurde eine neue ChatBot-Benutzeroberfläche / LibreChat hinzugefügt, um eine Komplettlösung bereitzustellen.
HINWEIS: Die Legacy-Version 1.x finden Sie hier im Legacy-Zweig
Dokumentation zur Version 1.x
Gemäß den Bedingungen von OpenAI können bei Verwendung der öffentlichen Version von ChatGPT alle von Ihnen gestellten Fragen – sogenannte „Eingabeaufforderungen“ – zum weiteren Training des Large Language Model (LLM) von OpenAI beitragen. Vor diesem Hintergrund ist es wichtig zu fragen: Sind Sie damit einverstanden, dass dieser wertvolle Datenfluss Ihr Unternehmen verlässt? Wenn Sie ein Entscheidungsträger sind oder für die Sicherheitsmaßnahmen Ihres Unternehmens verantwortlich sind, welche Schritte ergreifen Sie, um sicherzustellen, dass geschützte Informationen vertraulich bleiben?
Eine effektive Lösung liegt in der Nutzung einer gehosteten Version des beliebten LLM auf Azure OpenAI . Obwohl Azure OpenAI zahlreiche Vorteile bietet, möchte ich zwei hervorheben:
Datenschutz : Durch das Hosten der OpenAI-Modelle auf Azure dienen Ihre Eingabeaufforderungen niemals als Quelle für das Training des LLM. Es handelt sich lediglich um eine eigenständige Version, die auf Azure ausgeführt wird und auf Ihre Verwendung zugeschnitten ist.
Verbesserte Sicherheit : Azure OpenAI bietet robuste Sicherheitsmaßnahmen, von der Möglichkeit, bestimmte Endpunkte zu sichern, bis hin zu komplexen rollenbasierten Zugriffskontrollen. Weitere Informationen finden Sie in diesem Microsoft Learn-Artikel.
Obwohl Azure OpenAI mit Kosten verbunden ist, ist es äußerst erschwinglich – oft kostet ein Gespräch weniger als 10 Cent. Die Preisdetails von Azure OpenAI können Sie hier einsehen.
kommt bald...
Beiträge sind willkommen. Bitte senden Sie eine Pull-Anfrage, wenn Sie Verbesserungen oder Korrekturen haben. Achten Sie darauf, dem bestehenden Codestil zu folgen und fügen Sie Kommentare zu Ihrem Code hinzu, die erklären, was er tut.
Dieses Terraform-Modul ist unter der MIT-Lizenz lizenziert. Weitere Einzelheiten finden Sie in der LICENSE-Datei.
Wenn Sie auf Probleme stoßen oder Fragen zu diesem Terraform-Modul haben, öffnen Sie bitte ein Issue auf GitHub. Wir werden unser Bestes tun, um so schnell wie möglich zu antworten.
Dieses Terraform-Modul wurde von Marcel Lupo im Rahmen eines Projekts zur Erforschung der Fähigkeiten von Azure OpenAI-Modellen entwickelt. Wir möchten dem Team von OpenAI und Microsoft für ihre unglaubliche Arbeit und die kontinuierliche Unterstützung der KI-Community danken.
Name | Version |
---|---|
Terraform | >= 1.9.5 |
Azurerm | ~> 4.0 |
zufällig | ~> 3.0 |
Name | Version |
---|---|
Azurerm | ~> 4.0 |
zufällig | ~> 3.0 |
Keine Module.
Name | Typ |
---|---|
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_assignment | 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 | Datenquelle |
Name | Beschreibung | Typ | Standard | Erforderlich |
---|---|---|---|---|
app_service_name | Name des Linux App Service-Plans. | string | "openaiasp9000" | NEIN |
app_service_sku_name | Der SKU-Name des App Service-Plans. | string | "B1" | NEIN |
cosmosdb_automatic_failover | Ob das automatische Failover für das Cosmos DB-Konto aktiviert werden soll | bool | false | NEIN |
cosmosdb_capabilities | Die Funktionen für das Cosmos DB-Konto | list(string) | [ | NEIN |
cosmosdb_consistency_level | Die Konsistenzebene des Cosmos DB-Kontos | string | "BoundedStaleness" | NEIN |
cosmosdb_geo_locations | Die geografischen Standorte für das Cosmos DB-Konto | list(object({ | [ | NEIN |
cosmosdb_is_virtual_network_filter_enabled | Ob die virtuelle Netzwerkfilterung für das Cosmos DB-Konto aktiviert werden soll | bool | true | NEIN |
cosmosdb_kind | Die Art der zu erstellenden Cosmos DB | string | "MongoDB" | NEIN |
cosmosdb_max_interval_in_seconds | Das maximale Veraltungsintervall in Sekunden für das Cosmos DB-Konto | number | 10 | NEIN |
cosmosdb_max_staleness_prefix | Das maximale Veraltungspräfix für das Cosmos DB-Konto | number | 200 | NEIN |
Cosmosdb_name | Der Name des Cosmos DB-Kontos | string | "openaicosmosdb" | NEIN |
cosmosdb_offer_type | Der Angebotstyp, der für das Cosmos DB-Konto verwendet werden soll | string | "Standard" | NEIN |
cosmosdb_public_network_access_enabled | Ob der öffentliche Netzwerkzugriff für das Cosmos DB-Konto aktiviert werden soll | bool | true | NEIN |
cosmosdb_virtual_network_subnets | Die Subnetze des virtuellen Netzwerks, die dem Cosmos DB-Konto (Dienstendpunkt) zugeordnet werden sollen. Wenn im Rahmen des Moduls eine Vernetzung erstellt wird, wird diese automatisch ausgefüllt. | list(string) | null | NEIN |
DNS-Ressourcengruppenname | Die Ressourcengruppe, die die benutzerdefinierte DNS-Zone enthält, die für den App Service verwendet werden soll | string | "dns-rg" | NEIN |
kv_fw_allowed_ips | Wert der für die Key Vault-Firewall zulässigen IP-Regeln. | list(string) | [] | NEIN |
kv_fw_bypass | Liste der zu umgehenden Schlüsseltresor-Firewallregeln. | string | "AzureServices" | NEIN |
kv_fw_default_action | Standardaktion für Key Vault-Firewallregeln. | string | "Deny" | NEIN |
kv_fw_network_subnet_ids | Die Subnetze des virtuellen Netzwerks, die dem Cosmos DB-Konto (Dienstendpunkt) zugeordnet werden sollen. Wenn im Rahmen des Moduls eine Vernetzung erstellt wird, wird diese automatisch ausgefüllt. | list(string) | null | NEIN |
kv_name | Name des zu erstellenden Schlüsseltresors (Lösungsgeheimnisse). | string | "openaikv9000" | NEIN |
kv_sku | SKU des zu erstellenden Key Vault. | string | "standard" | NEIN |
libre_app_allow_email_login | E-Mail-Anmeldung zulassen | bool | true | NEIN |
libre_app_allow_registration | Registrierung zulassen | bool | true | NEIN |
libre_app_allow_social_login | Social Login zulassen | bool | false | NEIN |
libre_app_allow_social_registration | Soziale Registrierung zulassen | bool | false | NEIN |
libre_app_allowed_ip_addresses | Zulässige IP-Adressen. Die CIDR-Notation der IP oder des IP-Bereichs, die abgeglichen werden soll. Beispiel: 10.0.0.0/24 oder 192.168.10.1/32 | list(object({ | [ | NEIN |
libre_app_allowed_subnets | Zulässige Subnetze (Standardmäßig ist dem Subnetz, in dem der App-Dienst bereitgestellt wird, der Zugriff bereits mit der Priorität 100 gestattet.) Fügen Sie hier alle Extras hinzu | list(object({ | [ | NEIN |
libre_app_az_oai_api_key | Azure OpenAI-API-Schlüssel | string | null | NEIN |
libre_app_az_oai_api_version | Azure OpenAI API-Version | string | "2023-07-01-preview" | NEIN |
libre_app_az_oai_dall3_api_version | Azure OpenAI DALL-E API-Version | string | "2023-12-01-preview" | NEIN |
libre_app_az_oai_dall3_deployment_name | Azure OpenAI DALL-E-Bereitstellungsname | string | "dall-e-3" | NEIN |
libre_app_az_oai_instance_name | Azure OpenAI-Instanzname | string | null | NEIN |
libre_app_az_oai_models | Azure OpenAI-Modelle. Beispiel: „gpt-4-1106-preview,gpt-4,gpt-3.5-turbo,gpt-3.5-turbo-1106,gpt-4-vision-preview“ | string | "gpt-4-1106-preview" | NEIN |
libre_app_az_oai_use_model_as_deployment_name | Azure OpenAI-Verwendungsmodell als Bereitstellungsname | bool | true | NEIN |
libre_app_custom_domain_create | Erstellen Sie eine benutzerdefinierte Domäne und ein verwaltetes Zertifikat für den App Service. | bool | false | NEIN |
libre_app_custom_footer | Fügen Sie eine benutzerdefinierte Fußzeile für die App hinzu. | string | "Privately hosted chat app powered by Azure OpenAI and LibreChat." | NEIN |
libre_app_debug_console | Aktivieren Sie die ausführliche Serverausgabe in der Konsole, obwohl dies aufgrund der hohen Ausführlichkeit nicht empfohlen wird. | bool | false | NEIN |
libre_app_debug_logging | LibreChat verfügt über eine zentrale Protokollierung in seinem Backend (API). Protokolldateien werden in /api/logs gespeichert. Fehlerprotokolle werden standardmäßig gespeichert. Debug-Protokolle sind standardmäßig aktiviert, können aber bei Bedarf deaktiviert werden. | bool | false | NEIN |
libre_app_debug_plugins | Aktivieren Sie den Debug-Modus für Libre App-Plugins. | bool | false | NEIN |
libre_app_docker_image | Das Docker-Image, das für den App Service verwendet werden soll. | string | "ghcr.io/danny-avila/librechat-dev-api:latest" | NEIN |
libre_app_domain_client | Zur lokalen Verwendung setzen Sie DOMAIN_CLIENT und DOMAIN_SERVER auf http://localhost:3080 (3080 ist der zuvor konfigurierte Port). Bei der Bereitstellung in einer benutzerdefinierten Domäne setzen Sie DOMAIN_CLIENT und DOMAIN_SERVER auf Ihre bereitgestellte URL, z. B. https://mydomain.example. com | string | "http://localhost:3080" | NEIN |
libre_app_domain_server | Zur lokalen Verwendung setzen Sie DOMAIN_CLIENT und DOMAIN_SERVER auf http://localhost:3080 (3080 ist der zuvor konfigurierte Port). Bei der Bereitstellung in einer benutzerdefinierten Domäne setzen Sie DOMAIN_CLIENT und DOMAIN_SERVER auf Ihre bereitgestellte URL, z. B. https://mydomain.example. com | string | "http://localhost:3080" | NEIN |
libre_app_enable_meilisearch | Aktivieren Sie Meilisearch | bool | false | NEIN |
libre_app_endpoints | Auswahl von Endpunkten und Modellen. Beispiel: „openAI,azureOpenAI,bingAI,chatGPTBrowser,google,gptPlugins,anthropic“ | string | "azureOpenAI" | NEIN |
libre_app_host | Der Server hört standardmäßig auf localhost:3080. Sie können die Ziel-IP beliebig ändern. Wenn Sie diesen Server extern verfügbar machen möchten, beispielsweise um den Server mit anderen zu teilen oder ihn von einem Docker-Container aus verfügbar zu machen, setzen Sie Host auf 0.0.0.0 oder Ihre externe IP-Schnittstelle. | string | "0.0.0.0" | NEIN |
libre_app_jwt_refresh_secret | JWT-Aktualisierungsgeheimnis | string | null | NEIN |
libre_app_jwt_secret | JWT-Geheimnis | string | null | NEIN |
libre_app_mongo_uri | Die MongoDB-Verbindungszeichenfolge, mit der eine Verbindung hergestellt werden soll. | string | null | NEIN |
libre_app_name | Name des LibreChat-App-Dienstes. | string | "librechatapp9000" | NEIN |
libre_app_plugins_creds_iv | Libre App Plugins Creds IV | string | null | NEIN |
libre_app_plugins_creds_key | Creds-Schlüssel für Libre App Plugins | string | null | NEIN |
libre_app_port | Der Host-Port, der überwacht werden soll. | number | 3080 | NEIN |
libre_app_public_network_access_enabled | Ob der öffentliche Netzwerkzugriff aktiviert ist oder nicht. Der Standardwert ist false . | bool | true | NEIN |
libre_app_title | Fügen Sie einen benutzerdefinierten Titel für die App hinzu. | string | "PrivateGPT" | NEIN |
libre_app_violations | Konfiguration für Verstöße | Objekt({ | { | NEIN |
libre_app_virtual_network_subnet_id | Die ID des Subnetzes, die verwendet wird, um den Zugriff auf den App Service zu ermöglichen (Priorität 100), z. B. cosmosdb, meilisearch usw. Wenn Netzwerke als Teil des Moduls erstellt werden, wird diese automatisch ausgefüllt, wenn der Wert „null“ ist. | string | null | NEIN |
librechat_app_custom_dns_zone_name | Die für den App Service zu verwendende DNS-Zone. | string | "domain.com" | NEIN |
librechat_app_custom_domain_name | Die benutzerdefinierte Domäne, die für den App Service verwendet werden soll. | string | "privategpt" | NEIN |
Standort | Azure-Region, in der Ressourcen gehostet werden. | string | "uksouth" | NEIN |
oai_account_name | Der Name des OpenAI-Dienstes. | string | "az-openai-account" | NEIN |
oai_custom_subdomain_name | Der Subdomänenname, der für die tokenbasierte Authentifizierung verwendet wird. Wenn Sie dies ändern, muss eine neue Ressource erstellt werden. (normalerweise identisch mit dem Kontonamen) | string | "demo-account" | NEIN |
oai_customer_managed_key | Typ = Objekt({ key_vault_key_id = (Erforderlich) Die ID des Key Vault-Schlüssels, der zum Verschlüsseln der Daten in diesem OpenAI-Konto verwendet werden soll. Identity_client_id = (Optional) Die Client-ID der vom Benutzer zugewiesenen Identität, die Zugriff auf den Schlüssel hat. Diese Eigenschaft muss nur angegeben werden, wenn dem OpenAI-Konto mehrere Identitäten zugeordnet sind. }) | Objekt({ | null | NEIN |
oai_dynamic_throttling_enabled | Ob dynamische Drosselung aktiviert ist oder nicht. Der Standardwert ist true . | bool | true | NEIN |
oai_fqdns | Eine Liste von FQDNs, die für die tokenbasierte Authentifizierung verwendet werden sollen. Wenn Sie dies ändern, muss eine neue Ressource erstellt werden. | list(string) | [] | NEIN |
oai_identity | Typ = Objekt({ type = (Erforderlich) Der Typ der Identität. Mögliche Werte sind SystemAssigned , UserAssigned , SystemAssigned, UserAssigned .Identity_ids = (Optional) Gibt eine Liste der vom Benutzer zugewiesenen verwalteten Identitäts-IDs an, die diesem OpenAI-Konto zugewiesen werden sollen. }) | Objekt({ | { | NEIN |
oai_local_auth_enabled | Ob lokale Authentifizierungsmethoden für das Cognitive-Konto aktiviert sind. Der Standardwert ist true . | bool | true | NEIN |
oai_model_deployment | type = list(object({ bereitstellung_id = (Erforderlich) Der Name der Cognitive Services- Model Deployment . Wenn Sie dies ändern, muss eine neue Ressource erstellt werden.Modellname = { model_format = (Erforderlich) Das Format des Cognitive Services-Kontobereitstellungsmodells. Wenn Sie dies ändern, muss eine neue Ressource erstellt werden. Möglicher Wert ist OpenAI. model_name = (Erforderlich) Der Name des Cognitive Services-Kontobereitstellungsmodells. Wenn Sie dies ändern, muss eine neue Ressource erstellt werden. model_version = (Erforderlich) Die Version des Cognitive Services-Kontobereitstellungsmodells. } Artikelnummer = { sku_name = (Erforderlich) Der Name der SKU. Mögliche Werte sind Standard, GlobalBatch, GlobalStandard und ProvisionedManaged. sku_tier = (Optional) Mögliche Werte sind Free, Basic, Standard, Premium, Enterprise. Wenn Sie dies ändern, muss eine neue Ressource erstellt werden. sku_size = (Optional) Die SKU-Größe. Wenn das Namensfeld eine Kombination aus Stufe und einem anderen Wert ist, wäre dies der eigenständige Code. Wenn Sie dies ändern, muss eine neue Ressource erstellt werden. sku_family = (Optional) Wenn der Dienst über unterschiedliche Hardwaregenerationen für dieselbe SKU verfügt, kann dies hier erfasst werden. Wenn Sie dies ändern, muss eine neue Ressource erstellt werden. sku_capacity = (Optional) Tokens pro Minute (TPM). Wenn die SKU SKU Out/In unterstützt, sollte die Kapazitäts-Ganzzahl enthalten sein. Wenn SKU-Out/In für die Ressource nicht möglich ist, kann dies weggelassen werden. Der Standardwert ist 1. Wenn Sie diesen Wert ändern, wird die Erstellung einer neuen Ressource erzwungen. } rai_policy_name = (Optional) Der Name der RAI-Richtlinie. Wenn Sie dies ändern, muss eine neue Ressource erstellt werden. })) | list(object({ | [] | NEIN |
oai_network_acls | type = set(object({ default_action = (Erforderlich) Die zu verwendende Standardaktion, wenn keine Regeln von ip_rules / virtual_network_rules übereinstimmen. Mögliche Werte sind Allow und Deny .ip_rules = (Optional) Eine oder mehrere IP-Adressen oder CIDR-Blöcke, die auf das Cognitive-Konto zugreifen können sollen. virtual_network_rules = optional(set(object({ subnet_id = (Erforderlich) Die ID eines Subnetzes, das auf das OpenAI-Konto zugreifen können soll. ignore_missing_vnet_service_endpoint = (Optional) Gibt an, ob der fehlende VNET-Dienstendpunkt ignoriert wird oder nicht. Standardmäßig ist false .}))) })) | set(object({ | null | NEIN |
oai_outbound_network_access_restricted | Ob der ausgehende Netzwerkzugriff eingeschränkt ist oder nicht. Der Standardwert ist false . | bool | false | NEIN |
oai_public_network_access_enabled | Ob der öffentliche Netzwerkzugriff aktiviert ist oder nicht. Der Standardwert ist false . | bool | true | NEIN |
oai_sku_name | SKU-Name des OpenAI-Dienstes. | string | "S0" | NEIN |
oai_storage | type = list(object({ storage_account_id = (Erforderlich) Vollständige Ressourcen-ID einer Microsoft.Storage-Ressource. Identity_client_id = (Optional) Die Client-ID der verwalteten Identität, die der Speicherressource zugeordnet ist. })) | list(object({ | [] | NEIN |
Ressourcengruppenname | Name der Ressourcengruppe, um den OpenAI-Dienst zu erstellen bzw. wo ein vorhandener Dienst gehostet wird. | string | n / A | Ja |
subnet_config | Eine Liste von Subnetzkonfigurationsobjekten zum Erstellen von Subnetzen im virtuellen Netzwerk. | Objekt({ | { | NEIN |
Tags | Eine Karte von Schlüssel-Wert-Paaren, die zum Markieren erstellter Ressourcen verwendet wird. | map(string) | {} | NEIN |
use_cosmosdb_free_tier | Ob das kostenlose Kontingent für das Cosmos DB-Konto aktiviert werden soll. Dies muss „false“ sein, wenn eine andere Instanz bereits das kostenlose Kontingent nutzt. | bool | true | NEIN |
virtueller_Netzwerkname | Name des virtuellen Netzwerks, an das Ressourcen angeschlossen sind. | string | "openai-vnet-9000" | NEIN |
vnet_address_space | Wert des Adressraums für das virtuelle Netzwerk. | list(string) | [ | NEIN |
Name | Beschreibung |
---|---|
app_service_default_hostname | Der Standardhostname des App Service |
app_service_id | Die ID des App Service |
app_service_name | Der Name des App Service |
app_service_outbound_ip_addresses | Die ausgehenden IP-Adressen des App Service |
app_service_plan_id | Die ID des App Service-Plans |
app_service_plan_name | Der Name des App Service-Plans |
kognitive_deployment_ids | Die IDs der OpenAI Cognitive Account Model-Bereitstellungen |
kognitive_bereitstellungsnamen | Die Namen der OpenAI Cognitive Account Model Deployments |
cosmosdb_account_endpoint | Der Endpunkt, der zum Herstellen einer Verbindung mit dem Cosmos DB-Konto verwendet wird |
cosmosdb_account_id | Die ID des Cosmos DB-Kontos |
cosmosdb_account_name | Der Name des Cosmos DB-Kontos |
cosmosdb_account_primary_key | Der primäre Hauptschlüssel für das Cosmos DB-Konto |
cosmosdb_account_secondary_key | Der sekundäre Hauptschlüssel für das Cosmos DB-Konto |
key_vault_id | Die ID des Schlüsseltresors |
Schlüsseltresorname | Der Name des Schlüsseltresors |
key_vault_uri | Der URI des Schlüsseltresors |
openai_endpoint | Der Endpunkt, der zum Herstellen einer Verbindung mit dem Cognitive Service-Konto verwendet wird. |
openai_primary_key | Der primäre Zugriffsschlüssel für das Cognitive Service-Konto. |
openai_secondary_key | Der sekundäre Zugriffsschlüssel für das Cognitive Service-Konto. |
openai_subdomain | Die Subdomäne, die zum Herstellen einer Verbindung mit dem Cognitive Service-Konto verwendet wird. |
subnet_id | Die ID des Subnetzes |
Subnetzname | Der Name des Subnetzes |
virtuelle_Netzwerk_ID | Die ID des virtuellen Netzwerks |
virtueller_Netzwerkname | Der Name des virtuellen Netzwerks |