Skip to main content
LibreChat is joining ClickHouse to power the open-source Agentic Data Stack 🎉 Learn more
LibreChat

Azure OpenAI

Come configurare Azure OpenAI in LibreChat tramite il file `librechat.yaml`, coprendo distribuzioni, gruppi di modelli, regioni multiple e impostazioni correlate.

Integrazione Azure OpenAI per LibreChat

LibreChat supporta i servizi API di Azure OpenAI come endpoint di prima classe. Per utilizzare Azure OpenAI all'interno di LibreChat, configura il file librechat.yaml per la tua configurazione. Questo documento illustra il processo di configurazione per l'utilizzo di distribuzioni e modelli multipli.

Esempio

Un esempio di configurazione che include molte delle opzioni e funzionalità descritte di seguito:

endpoints:
  azureOpenAI:
    # Endpoint-level configuration
    titleModel: "llama-70b-chat"
    plugins: true
    assistants: true
    groups:
    # Group-level configuration
    - group: "my-resource-westus"
      apiKey: "${WESTUS_API_KEY}"
      instanceName: "my-resource-westus"
      version: "2024-03-01-preview"
      # Model-level configuration
      models:
        gpt-4-vision-preview:
          deploymentName: gpt-4-vision-preview
          version: "2024-03-01-preview"
        gpt-3.5-turbo:
          deploymentName: gpt-35-turbo
        gpt-4-1106-preview:
          deploymentName: gpt-4-1106-preview
    # Group-level configuration
    - group: "mistral-inference"
      apiKey: "${AZURE_MISTRAL_API_KEY}"
      baseURL: "https://Mistral-large-vnpet-serverless.region.inference.ai.azure.com/v1/chat/completions"
      serverless: true
      # Model-level configuration
      models:
        mistral-large: true
    # Group-level configuration
    - group: "my-resource-sweden"
      apiKey: "${SWEDEN_API_KEY}"
      instanceName: "my-resource-sweden"
      deploymentName: gpt-4-1106-preview
      version: "2024-03-01-preview"
      assistants: true
      # Model-level configuration
      models:
        gpt-4-turbo: true

Questo esempio segue la Documentazione di Configurazione dell'Endpoint Azure OpenAI.

Ogni livello di configurazione è dettagliato nella rispettiva sezione:

  1. Configurazione a livello di endpoint

  2. Configurazione a livello di gruppo

  3. Configurazione a livello di modello

Setup

  1. Apri librechat.yaml per la modifica: Usa il tuo editor di testo o IDE preferito per aprire e modificare il file librechat.yaml.

    • Opzionale: utilizza un percorso file remoto o personalizzato con la seguente variabile d'ambiente:
    CONFIG_PATH="/alternative/path/to/librechat.yaml"
  2. Configura le impostazioni di Azure OpenAI: Segui la struttura delineata di seguito per popolare le tue impostazioni di Azure OpenAI, inclusi chiavi API, nomi delle istanze, gruppi di modelli e altre configurazioni.

  3. Rimuovere le impostazioni legacy: Se stai utilizzando una qualsiasi delle configurazioni legacy, rimuovila. Il server LibreChat le rileverà e te lo ricorderà.

  4. Salva le tue modifiche: Salva il file librechat.yaml.

  5. Riavvia LibreChat: Riavvia la tua applicazione LibreChat in modo che la configurazione aggiornata venga caricata.

Campi Obbligatori

Per integrare Azure OpenAI con LibreChat, è necessario configurare campi specifici nel file librechat.yaml. Questi campi vengono convalidati attraverso una combinazione di variabili personalizzate e d'ambiente. Di seguito sono riportati i requisiti dettagliati.

Configurazione a livello di endpoint

Impostazioni Globali Azure:

Impostazioni del titolo e della conversazione:

KeyTypeDescriptionExample
titleModelstringSpecifica il modello da utilizzare per generare i titoli delle conversazioni. Se non fornito, il modello predefinito è impostato su `gpt-3.5-turbo`, il che comporterà l'assenza di titoli se tale modello non è disponibile. È inoltre possibile impostarlo per utilizzare dinamicamente il modello corrente impostandolo su `current_model`.titleModel:
pluginsbooleanAbilita l'uso dei plugin tramite Azure. Impostare su `true` per attivare il supporto dell'endpoint Plugins tramite la configurazione Azure. Predefinito: `false`.plugins:false
assistantsbooleanAbilita l'uso degli assistenti tramite Azure. Impostare su `true` per attivare l'endpoint Assistants tramite la configurazione Azure. Predefinito: `false`. Nota: ciò richiede una regione compatibile con gli assistenti.assistants:false
summarizebooleanAbilita la riassunzione della conversazione per tutti i modelli Azure. Impostare su `true` per attivare la riassunzione. Predefinito: `false`.summarize:false
summaryModelstringSpecifica il modello da utilizzare per generare i riepiloghi delle conversazioni. Se non fornito, il comportamento predefinito consiste nell'utilizzare il primo modello nell'array `default` del primo gruppo.summaryModel:
titleConvobooleanAbilita la generazione del titolo della conversazione per tutti i modelli Azure. Impostare su `true` per attivare la generazione del titolo. Predefinito: `false`.titleConvo:false
titleMethodstringControlla il metodo utilizzato per generare i titoli delle conversazioni. Valori validi: "completion" (predefinito), "structured", "functions" (alias legacy per "structured").titleMethod:completion
titlePromptstringPrompt personalizzato per la generazione del titolo. Deve includere il segnaposto {convo} per il contenuto della conversazione.See documentation for default prompt
titlePromptTemplatestringModello per la formattazione del contenuto della conversazione. Deve includere i segnaposto {input} e {output}. Predefinito: "User: {input}\nAI: {output}"titlePromptTemplate:
titleEndpointstringEndpoint alternativo da utilizzare per la generazione del titolo. Valori accettati: openAI, azureOpenAI, google, anthropic, bedrock o nomi di endpoint personalizzati.titleEndpoint:

Configurazione del gruppo:

KeyTypeDescriptionExample
groupsarraySpecifica l'elenco dei gruppi di modelli Azure OpenAI. Ogni gruppo rappresenta un insieme di modelli con configurazioni condivise. Il campo groups è un array di oggetti, dove ogni oggetto definisce le impostazioni per uno specifico gruppo. Questo è un campo obbligatorio a livello di endpoint e deve essere definito almeno un gruppo. Le configurazioni a livello di gruppo sono dettagliate nella sezione Group-Level Configuration.# groups:[]

Ordine personalizzato (Opzionale):

KeyTypeDescriptionExample
customOrdernumberTi consente di specificare un ordine personalizzato per l'endpoint Azure nell'interfaccia utente. I numeri più alti appariranno più in basso nell'elenco. Se non specificato, l'ordine predefinito è determinato dall'ordine in cui gli endpoint sono definiti nel file `librechat.yaml`.customOrder:

L'opzione customOrder è commentata, poiché è facoltativa.

Esempio di queste impostazioni a livello di endpoint nel tuo file librechat.yaml:

endpoints:
  azureOpenAI:
    titleModel: "gpt-3.5-turbo-1106"
    plugins: true
    assistants: true
    summarize: true
    summaryModel: "gpt-3.5-turbo-1106"
    titleConvo: true
    titleMethod: "functions"
    groups:
      # ... (group-level and model-level configurations)

Configurazione a livello di gruppo

I campi configurabili nel file Custom Config (librechat.yaml). Per ulteriori informazioni su ciascun campo, consulta la sezione Azure OpenAI nella documentazione di Custom Config.

Configurazione a livello di gruppo: Identificazione del gruppo:

KeyTypeDescriptionExample
groupstringNome identificativo univoco per un gruppo di modelli. Nomi di gruppo duplicati non sono consentiti e comporteranno errori di convalida.group: default

Autenticazione:

KeyTypeDescriptionExample
apiKeystringDeve essere una chiave API valida per i servizi Azure OpenAI. Può essere una stringa di chiave diretta o un riferimento a una variabile d'ambiente (ad esempio, ${WESTUS_API_KEY}).apiKey: ${AZURE_API_KEY}

Istanza Azure OpenAI:

KeyTypeDescriptionExample
instanceNamestringNome dell'istanza Azure OpenAI. Questo campo supporta anche riferimenti a variabili d'ambiente. **Supporta entrambi i formati di dominio**: `.openai.azure.com` (legacy) e `.cognitiveservices.azure.com` (nuovo). È possibile specificare il dominio completo (es. `my-instance.cognitiveservices.azure.com`) o solo il nome dell'istanza (es. `my-instance`) per la compatibilità con il formato legacy `.openai.azure.com`.instanceName: ${AZURE_OPENAI_INSTANCE}

Configurazione di Deployment:

KeyTypeDescriptionExample
deploymentNamestringIl nome della distribuzione a livello di gruppo è facoltativo, ma obbligatorio se un qualsiasi modello all'interno del gruppo è impostato su true.deploymentName: my-deployment
versionstringLa versione dell'API Azure OpenAI a livello di gruppo è facoltativa, ma richiesta se un qualsiasi modello all'interno del gruppo è impostato su true.version: 2023-03-15-preview

Impostazioni avanzate:

KeyTypeDescriptionExample
baseURLstringURL di base personalizzato per le richieste API di Azure OpenAI. I riferimenti alle variabili d'ambiente sono supportati. Questo è facoltativo e può essere utilizzato per scenari di routing avanzati.baseURL: https://my-custom-base-url.com
additionalHeadersobjectSpecifica eventuali intestazioni aggiuntive per le richieste API di Azure OpenAI come coppie chiave-valore. I riferimenti alle variabili d'ambiente possono essere inclusi come valori.additionalHeaders: {Authorization: ${AUTH_HEADER}}
serverlessbooleanSpecifica se il gruppo è un endpoint di chat completions per l'inferenza serverless da Azure Model Catalog, per il quale sono necessari solo un identificatore di modello, baseURL e apiKey. Per ulteriori informazioni, consulta serverless inference endpoints.serverless: true
addParamsobjectAggiunge o sovrascrive parametri aggiuntivi per le richieste API di Azure OpenAI. Utile per specificare opzioni specifiche dell'API come coppie chiave-valore.addParams: {temperature: 0.7}
dropParamsarrayConsente l'esclusione di determinati parametri predefiniti dalle richieste API di Azure OpenAI. Utile per le API che non accettano o non riconoscono parametri specifici. Deve essere specificato come un elenco di stringhe.dropParams: [top_p, stop]

Configurazione del modello:

KeyTypeDescriptionExample
modelsobjectSpecifica la mappatura degli identificatori dei modelli alle loro configurazioni all'interno del gruppo. Le chiavi rappresentano gli identificatori dei modelli, che devono corrispondere ai nomi dei modelli OpenAI corrispondenti. I valori possono essere booleani (true) o oggetti contenenti impostazioni specifiche del modello. Se un modello è impostato su true, eredita il deploymentName e la version a livello di gruppo. Se un modello è configurato come oggetto, può avere il proprio deploymentName e la propria version. Questo campo è obbligatorio e deve essere definito almeno un modello all'interno di ogni gruppo. Maggiori informazioni quimodels: {gpt-3.5-turbo: true, text-davinci-003: {}}

Esempio di una configurazione a livello di gruppo nel file librechat.yaml:

endpoints:
  azureOpenAI:
    # ... (endpoint-level configurations)
    groups:
      - group: "my-resource-group"
        apiKey: "${AZURE_API_KEY}"
        instanceName: "my-instance"
        deploymentName: "gpt-35-turbo"
        version: "2023-03-15-preview"
        baseURL: "https://my-instance.openai.azure.com/"
        additionalHeaders:
          CustomHeader: "HeaderValue"
        addParams:
          max_tokens: 2048
          temperature: 0.7
        dropParams:
          - "frequency_penalty"
          - "presence_penalty"
        models:
        # ... (model-level configurations)

Configurazione a livello di modello

All'interno di ciascun gruppo, il campo models contiene una mappatura degli identificatori dei modelli verso le relative configurazioni:

Identificazione del modello:

KeyTypeDescriptionExample
Model IdentifierstringDeve corrispondere al nome del modello OpenAI corrispondente. Può essere una corrispondenza parziale.gpt-3.5-turbo: true

Configurazione del modello:

KeyTypeDescriptionExample
Model Configurationboolean/objectBoolean true: Utilizza il deploymentName e la versione a livello di gruppo. Object: Specifica il deploymentName e la versione specifici del modello. Se non forniti, eredita dal gruppo.text-davinci-003: {deploymentName: my-model-deployment, version: 2023-03-15-preview}
deploymentNamestringIl nome della distribuzione per questo specifico modello.deploymentName: my-model-deployment
versionstringLa versione dell'API Azure OpenAI per questo specifico modello.version: 2023-03-15-preview

Endpoint di inferenza serverless:

KeyTypeDescriptionExample
Serverless Inference EndpointsnotePer i modelli serverless, imposta il modello su true.gpt-4: true
  • L'identificativo del modello deve corrispondere al nome del modello OpenAI corrispondente affinché possa riflettere correttamente i suoi limiti di contesto noti e/o funzionare nel caso della visione. Ad esempio, se intendi utilizzare gpt-4-vision, deve essere configurato in questo modo:
endpoints:
  azureOpenAI:
    # ... (endpoint-level configurations)
    groups:
    # ... (group-level configurations)
    - group: "example_group"
    models:
     # Model identifiers must match OpenAI Model name (can be a partial match)
      gpt-4-vision-preview:
      # Object setting: must include at least "deploymentName" and/or "version"
        deploymentName: "arbitrary-deployment-name"
        version: "2024-02-15-preview" # version can be any that supports vision
      # Boolean setting, must be "true"
      gpt-4-turbo: true
  • Vedi Model Deployments per ulteriori esempi.

  • Se un modello è impostato su true, ciò implica l'utilizzo di deploymentName e version a livello di gruppo per questo modello. In questo caso, entrambi devono essere definiti a livello di gruppo.

  • Se un modello è configurato come oggetto, può specificare il proprio deploymentName e version. Se questi non vengono forniti, il modello eredita il deploymentName e la version del gruppo.

  • Se il gruppo rappresenta un serverless inference endpoint, il modello singolo deve essere impostato su true per aggiungerlo all'elenco dei modelli.

Considerazioni speciali

  1. Nomi univoci: Sia i nomi dei modelli che quelli dei gruppi devono essere univoci nell'intera configurazione. Nomi duplicati portano a errori di convalida.

  2. Campi obbligatori mancanti: La mancanza dei campi obbligatori deploymentName o version, sia a livello di gruppo (per i modelli con flag booleano) che all'interno delle configurazioni dei modelli (se non ereditati o specificati esplicitamente), comporterà errori di convalida, a meno che il gruppo non rappresenti un serverless inference endpoint.

  3. Riferimenti alle variabili d'ambiente: La configurazione supporta i riferimenti alle variabili d'ambiente (ad esempio, ${VARIABLE_NAME}). Assicurati che tutte le variabili referenziate siano presenti nel tuo ambiente per evitare errori in fase di esecuzione. L'assenza di variabili d'ambiente definite e richiamate nella configurazione causerà degli errori. ${INSTANCE_NAME} e ${DEPLOYMENT_NAME} sono segnaposto univoci e non corrispondono a variabili d'ambiente, bensì al nome dell'istanza e al nome della distribuzione del modello attualmente selezionato. Si sconsiglia l'utilizzo di INSTANCE_NAME e DEPLOYMENT_NAME come nomi di variabili d'ambiente per evitare potenziali conflitti.

  4. Gestione degli errori: Qualsiasi problema nella configurazione, come nomi duplicati, variabili d'ambiente non definite o campi obbligatori mancanti, invaliderà l'impostazione e genererà messaggi di errore descrittivi volti a una rapida risoluzione. Non sarà consentito avviare il server con una configurazione non valida.

  5. Identificatori di modello: Un modello sconosciuto (al progetto) può essere utilizzato come identificatore di modello, ma deve corrispondere a un modello noto per riflettere la sua lunghezza di contesto nota, il che è fondamentale per la gestione di messaggi/token; ad esempio, gpt-7000 sarà valido ma avrà come impostazione predefinita un limite di 4k token, mentre gpt-4-turbo verrà riconosciuto come avente un limite di contesto di 128k.

Convalida la tua configurazione rispetto alle ultime definizioni di schema e linee guida per mantenere la compatibilità.

Distribuzioni dei modelli

L'elenco dei modelli disponibili per i tuoi utenti è determinato dai raggruppamenti di modelli specificati nella configurazione dell'endpoint azureOpenAI nel tuo file librechat.yaml.

Per esempio:

# Example Azure OpenAI Object Structure
endpoints:
  azureOpenAI:
    groups:
      - group: "my-westus" # arbitrary name
        apiKey: "${WESTUS_API_KEY}"
        instanceName: "actual-instance-name" # name of the resource group or instance
        version: "2023-12-01-preview"
        models:
          gpt-4-vision-preview:
            deploymentName: gpt-4-vision-preview
            version: "2024-02-15-preview"
          gpt-3.5-turbo: true
      - group: "my-eastus"
        apiKey: "${EASTUS_API_KEY}"
        instanceName: "actual-eastus-instance-name"
        deploymentName: gpt-4-turbo
        version: "2024-02-15-preview"
        models:
          gpt-4-turbo: true

La configurazione di cui sopra abiliterà gpt-4-vision-preview, gpt-3.5-turbo e gpt-4-turbo per i tuoi utenti nell'ordine in cui sono stati definiti.

Utilizzo degli Assistants con Azure

Per abilitare l'uso degli Assistants con Azure OpenAI, ci sono 2 passaggi principali.

  1. Imposta il campo assistants, sotto l'endpoint azureOpenAI, ovvero a livello di Endpoint-level su true, in questo modo:
endpoints:
  azureOpenAI:
  # Enable use of Assistants with Azure
    assistants: true
  1. Aggiungi il campo assistants ai gruppi compatibili con l'integrazione dell'Assistants API di Azure.
endpoints:
  azureOpenAI:
    assistants: true
    groups:
      - group: "my-sweden-group"
        apiKey: "${SWEDEN_API_KEY}"
        instanceName: "actual-instance-name"
      # Mark this group as assistants compatible
        assistants: true
      # version must be "2024-02-15-preview" or later
        version: "2024-03-01-preview"
        models:
          # ... (model-level configuration)

Note:

  • Per le credenziali, affidati alle variabili d'ambiente personalizzate specificate nella configurazione di ciascun gruppo compatibile con gli assistants.

  • Se contrassegni più regioni come compatibili con gli assistenti, gli assistenti che creerai verranno aggregati tra le regioni nell'elenco principale di selezione degli assistenti.

  • I file caricati su Azure OpenAI, sia a livello di messaggio che di assistente, saranno disponibili solo nella regione di cui fa parte il modello dell'assistente corrente.

    • Per questo motivo, si consiglia di utilizzare una sola regione o un solo gruppo di risorse per Azure OpenAI Assistants, altrimenti si verificherà un errore.
    • Il caricamento su "OpenAI" è il comportamento predefinito per le funzionalità ufficiali code_interpreter e retrieval.
  • Il download dei file generati dagli assistenti sarà presto supportato.

  • A partire dal 19 maggio 2024, il retrieval e lo streaming non sono ancora supportati tramite Azure OpenAI.

    • Per evitare errori con il retrieval mentre non è supportato, si consiglia di disabilitare completamente la funzionalità tramite la configurazione dell'endpoint azureAssistants:
    endpoints:
      azureOpenAI:
        # ...rest
    
      azureAssistants:
      # "retrieval" omitted.
        capabilities: ["code_interpreter", "actions", "tools"]
    • Per impostazione predefinita, tutte le funzionalità, ad eccezione di retrieval, sono abilitate.

Utilizzo dei plugin con Azure

Per utilizzare l'endpoint Plugins con Azure OpenAI, è necessario un deployment che supporti il function calling. In caso contrario, disattiva "Functions" nelle impostazioni dell'Agent. Quando non si utilizza la modalità "functions", si consiglia di disattivare anche "skip completion", che rappresenta una fase di revisione di quanto generato dall'agent.

Per utilizzare Azure con l'endpoint Plugins, assicurati che il campo plugins sia impostato su true nella configurazione del tuo endpoint Azure OpenAI:

# Example Azure OpenAI Object Structure
endpoints:
  azureOpenAI:
    plugins: true # <------- Set this
    groups:
    # omitted for brevity

La configurazione del campo plugins configurerà i Plugin per utilizzare i modelli Azure.

NOTA: La configurazione attuale tramite librechat.yaml utilizza il modello principale selezionato dal frontend per l'uso dei Plugin, il che solitamente non è il modo in cui funziona senza Azure, dove invece viene utilizzato il modello "Agent". L'impostazione del modello Agent può essere ignorata quando si utilizzano i Plugin tramite Azure.

Utilizzo di un Base URL specificato con Azure

L'URL di base per le richieste API di Azure OpenAI può essere configurato dinamicamente. Questo è utile per servizi di proxy come Cloudflare AI Gateway, o se si desidera sovrascrivere esplicitamente la gestione del baseURL dell'app.

LibreChat utilizzerà il campo baseURL per il raggruppamento dei tuoi modelli Azure, che può includere segnaposto per l'istanza dell'API Azure OpenAI e i nomi delle distribuzioni.

Supporto per il formato del dominio dell'endpoint Azure

Azure OpenAI ora supporta entrambi i formati di dominio endpoint:

  • Nuovo formato: .cognitiveservices.azure.com
  • Formato legacy: .openai.azure.com

Quando si utilizza instanceName senza un dominio completo, viene applicato per impostazione predefinita il formato legacy .openai.azure.com. Se si fornisce un dominio completo (ad esempio, my-instance.cognitiveservices.azure.com), questo verrà utilizzato così com'è. Ciò si applica sia ai campi instanceName che alle configurazioni baseURL.

Nella configurazione, la base URL può essere personalizzata in questo modo:

# librechat.yaml file, under an Azure group:
endpoints:
  azureOpenAI:
    groups:
      - group: "group-with-custom-base-url"
      baseURL: "https://example.azure-api.net/${INSTANCE_NAME}/${DEPLOYMENT_NAME}"

# Legacy format (.openai.azure.com)
      baseURL: "https://${INSTANCE_NAME}.openai.azure.com/openai/deployments/${DEPLOYMENT_NAME}"

# New format (.cognitiveservices.azure.com)
      baseURL: "https://${INSTANCE_NAME}.cognitiveservices.azure.com/openai/deployments/${DEPLOYMENT_NAME}"

# Cloudflare example
      baseURL: "https://gateway.ai.cloudflare.com/v1/ACCOUNT_TAG/GATEWAY/azure-openai/${INSTANCE_NAME}/${DEPLOYMENT_NAME}"

NOTA: ${INSTANCE_NAME} e ${DEPLOYMENT_NAME} sono segnaposto univoci e non corrispondono a variabili d'ambiente, bensì al nome dell'istanza e del deployment del modello attualmente selezionato. Si sconsiglia di utilizzare INSTANCE_NAME e DEPLOYMENT_NAME come nomi di variabili d'ambiente per evitare potenziali conflitti.

Puoi anche omettere completamente i segnaposto e costruire semplicemente la baseURL con le tue credenziali:

      baseURL: "https://gateway.ai.cloudflare.com/v1/ACCOUNT_TAG/GATEWAY/azure-openai/my-secret-instance/my-deployment"

Infine, puoi specificare l'intero baseURL tramite una variabile d'ambiente personalizzata

      baseURL: "${MY_CUSTOM_BASEURL}"

Abilitazione dei titoli generati automaticamente con Azure

Per abilitare la titolazione per Azure, imposta titleConvo su true.

# Example Azure OpenAI Object Structure
endpoints:
  azureOpenAI:
    titleConvo: true # <------- Set this
    groups:
    # omitted for brevity

Puoi anche specificare il modello da utilizzare per la titolazione, con titleModel, a condizione che tu lo abbia configurato nel tuo gruppo (o nei tuoi gruppi).

    titleModel: "gpt-3.5-turbo"

Nota: "gpt-3.5-turbo" è il valore predefinito, quindi puoi ometterlo se desideri utilizzare questo modello specifico e lo hai configurato. Se non è configurato e titleConvo è impostato su true, il processo di titolazione genererà un errore e non verrà creato alcun titolo. Puoi anche impostarlo per utilizzare dinamicamente il modello corrente impostandolo su current_model.

    titleModel: "current_model"

Utilizzo di GPT-4 Vision con Azure

Per utilizzare Vision (analisi delle immagini) con Azure OpenAI, assicurati che gpt-4-vision-preview sia un modello specificato in uno dei tuoi raggruppamenti.

Funziona esattamente come con l'endpoint OpenAI endpoint: non è necessario selezionare il modello vision, poiché verrà commutato automaticamente in background.

Generare immagini con Azure OpenAI Service (DALL-E)

Model IDDisponibilità FunzionalitàRichiesta Max (caratteri)
dalle2East US1000
dalle3Sweden Central4000
  • Per prima cosa devi creare una risorsa Azure che ospiti DALL-E
    • Al momento della stesura di questo documento, dall-e-3 è disponibile nella regione SwedenCentral, mentre dall-e-2 è disponibile nella regione EastUS.
  • Successivamente, è necessario distribuire il modello di generazione di immagini in una delle regioni sopra indicate.
  • Configura le tue variabili d'ambiente in base alle credenziali Azure:

Le opzioni di configurazione di DALL-E:

DALL-E:

Chiavi API:

KeyTypeDescriptionExample
DALLE_API_KEYstringLa chiave API OpenAI per i servizi DALL-E 2 e DALL-E 3.# DALLE_API_KEY=

Chiavi API (Specifiche per versione):

KeyTypeDescriptionExample
DALLE3_API_KEYstringLa chiave API OpenAI per DALL-E 3.# DALLE3_API_KEY=
DALLE2_API_KEYstringLa chiave API OpenAI per DALL-E 2.# DALLE2_API_KEY=

System Prompts:

KeyTypeDescriptionExample
DALLE3_SYSTEM_PROMPTstringIl prompt di sistema per DALL-E 3.# DALLE3_SYSTEM_PROMPT="Your DALL-E-3 System Prompt here"
DALLE2_SYSTEM_PROMPTstringIl system prompt per DALL-E 2.# DALLE2_SYSTEM_PROMPT="Your DALL-E-2 System Prompt here"

Impostazioni del Reverse Proxy:

KeyTypeDescriptionExample
DALLE_REVERSE_PROXYstringL'URL del reverse proxy per le richieste API di DALL-E.# DALLE_REVERSE_PROXY=

URL di base:

KeyTypeDescriptionExample
DALLE3_BASEURLstringL'URL di base per gli endpoint dell'API DALL-E 3. Supporta entrambi i formati di dominio `.openai.azure.com` (legacy) e `.cognitiveservices.azure.com` (nuovo).# DALLE3_BASEURL=https://<AZURE_OPENAI_API_INSTANCE_NAME>.openai.azure.com/openai/deployments/<DALLE3_DEPLOYMENT_NAME>/ # OR # DALLE3_BASEURL=https://<AZURE_OPENAI_API_INSTANCE_NAME>.cognitiveservices.azure.com/openai/deployments/<DALLE3_DEPLOYMENT_NAME>/
DALLE2_BASEURLstringL'URL di base per gli endpoint dell'API DALL-E 2. Supporta entrambi i formati di dominio `.openai.azure.com` (legacy) e `.cognitiveservices.azure.com` (nuovo).# DALLE2_BASEURL=https://<AZURE_OPENAI_API_INSTANCE_NAME>.openai.azure.com/openai/deployments/<DALLE2_DEPLOYMENT_NAME>/ # OR # DALLE2_BASEURL=https://<AZURE_OPENAI_API_INSTANCE_NAME>.cognitiveservices.azure.com/openai/deployments/<DALLE2_DEPLOYMENT_NAME>/

Integrazione Azure OpenAI (Opzionale):

KeyTypeDescriptionExample
DALLE3_AZURE_API_VERSIONstringLa versione API per DALL-E 3 con il servizio Azure OpenAI.# DALLE3_AZURE_API_VERSION=the-api-version # e.g.: 2023-12-01-preview
DALLE2_AZURE_API_VERSIONstringLa versione API per DALL-E 2 con il servizio Azure OpenAI.# DALLE2_AZURE_API_VERSION=the-api-version # e.g.: 2023-12-01-preview

Sostituisci il testo segnaposto con prompt o istruzioni reali e fornisci le tue chiavi API se scegli di includerle direttamente nel file (si consiglia di gestire le chiavi sensibili al di fuori della codebase). Esamina e rispetta le politiche di utilizzo di OpenAI quando incorpori chiavi API nel software.

Nota: se hai impostato PROXY, verrà utilizzato anche per le chiamate DALL-E, il che è universale per l'app.

Endpoint di inferenza serverless

Tramite il file librechat.yaml, è possibile configurare gli endpoint di inferenza serverless di Azure AI Studio per accedere ai modelli da Azure AI Foundry. Sono necessari solo un identificatore di modello, baseURL e apiKey, insieme al campo serverless per indicare la gestione speciale richiesta da questi endpoint.

endpoints:
  azureOpenAI:
    groups:
    - group: "serverless-example"
      apiKey: "${LLAMA318B_API_KEY}"  # arbitrary env var name
      baseURL: "https://example.services.ai.azure.com/models/"
      version: "2024-05-01-preview" # Optional: specify API version
      serverless: true
      models:
        # Must match the deployment name of the model
        Meta-Llama-3.1-8B-Instruct: true

Note:

  • I modelli Azure AI Foundry ora forniscono endpoint sotto /models/chat/completions?api-version=version per l'inferenza serverless.
    • Il campo baseURL deve essere impostato sulla radice dell'endpoint, senza nulla dopo /models/, ovvero il percorso /chat/completions.
    • Esempio: https://example.services.ai.azure.com/models/ per https://example.services.ai.azure.com/models/chat/completions?api-version=2024-05-01-preview
    • Il parametro di query version è facoltativo e può essere specificato nel campo baseURL.
  • Il nome del modello utilizzato nel campo models deve corrispondere al nome della distribuzione del modello in Azure AI Foundry.
  • La compatibilità con LibreChat si basa sulla parità con le specifiche dell'API OpenAI, che al momento della stesura di questo documento sono solitamente implementazioni "Pay-as-you-go" o "Models as a Service" (MaaS) su Azure AI Studio, compatibili con l'SDK di OpenAI e che gestiscono l'endpoint v1/completions o models/chat/completions.
  • Tutti i modelli che offrono distribuzioni serverless ("Serverless APIs") sono compatibili dal catalogo modelli di Azure. È possibile filtrare per "Serverless API" sotto le opzioni di Deployment e "Chat completion" sotto le attività di inferenza per vedere l'elenco completo; tuttavia, i modelli real time endpoint non sono stati testati.
  • Questi endpoint/modelli di inferenza serverless potrebbero supportare o meno la chiamata di funzioni (function calling) secondo le specifiche dell'API OpenAI, il che ne abilita l'utilizzo con gli Agents.

Com’è questa guida?