Condividi tramite


Introduzione al blocco predefinito di sicurezza Di Azure OpenAI

Questo articolo illustra come creare e usare l'esempio di blocco predefinito di sicurezza OpenAI di Azure. Lo scopo è illustrare il provisioning degli account OpenAI di Azure con il controllo degli accessi in base al ruolo per l'autenticazione senza chiave (Microsoft Entra ID) in Azure OpenAI. Questo esempio di app di chat include anche tutta l'infrastruttura e la configurazione necessarie per effettuare il provisioning delle risorse OpenAI di Azure e distribuire l'app in App Contenitore di Azure usando l'interfaccia della riga di comando per sviluppatori di Azure.

Seguendo le istruzioni riportate in questo articolo, potrai:

  • Distribuire un'app di chat di Azure Container sicura.
  • Usare l'identità gestita per l'accesso ad Azure OpenAI.
  • Chattare con un modello di linguaggio Large Language Model (LLM) di Azure OpenAI usando la libreria OpenAI.

Dopo aver completato questo articolo, è possibile iniziare a modificare il nuovo progetto con il codice e i dati personalizzati.

Nota

Questo articolo usa uno o più modelli di app di intelligenza artificiale come base per gli esempi e le linee guida nell’articolo. I modelli di app di intelligenza artificiale offrono implementazioni di riferimento ben gestite e facili da distribuire per garantire un punto di partenza di alta qualità per le app di intelligenza artificiale.

Panoramica dell'architettura

Un'architettura semplice dell'app di chat è illustrata nel diagramma seguente: Diagramma che mostra l'architettura dal client all'app back-end.

L'app di chat viene eseguita come app contenitore di Azure. L'app usa l'identità gestita tramite Microsoft Entra ID per l'autenticazione con Azure OpenAI, anziché con una chiave API. L'app di chat usa Azure OpenAI per generare risposte ai messaggi utente.

L'architettura dell'applicazione si basa sui servizi e sui componenti seguenti:

  • Azure OpenAI rappresenta il provider di intelligenza artificiale a cui si inviano le query dell'utente.
  • App Azure Container è l'ambiente contenitore in cui è ospitata l'applicazione.
  • L'identità gestita consente di garantire la sicurezza ottimale e di eliminare i requisiti per gli sviluppatori per gestire in modo sicuro un segreto.
  • File Bicep per il provisioning delle risorse di Azure, tra cui Azure OpenAI, App Azure Container, Registro Azure Container, Azure Log Analytics e ruoli controllo degli accessi in base al ruolo.
  • Microsoft AI Chat Protocol offre contratti API standardizzati tra soluzioni e linguaggi di intelligenza artificiale. L'app chat è conforme al protocollo Microsoft AI Chat Protocol, che consente l'esecuzione dell'app di valutazione su qualsiasi app di chat conforme al protocollo.
  • Python Quart che usa il openai pacchetto per generare risposte ai messaggi utente.
  • Front-end HTML/JavaScript di base che trasmette le risposte dal back-end usando righe JSON su un flusso leggibile.

Costo

Nel tentativo di mantenere i prezzi il più basso possibile in questo esempio, la maggior parte delle risorse usa un piano tariffario di base o a consumo. Modificare il livello in base alle esigenze in base all'utilizzo previsto. Per interrompere l'addebito degli addebiti, eliminare le risorse al termine dell'articolo.

Altre informazioni sui costi nel repository di esempio.

Altre informazioni sui costi nel repository di esempio.

Altre informazioni sui costi nel repository di esempio.

Prerequisiti

Per completare questo articolo è disponibile un ambiente contenitore di sviluppo con tutte le dipendenze necessarie. Puoi eseguire il contenitore di sviluppo in GitHub Codespaces (in un browser) o in locale usando Visual Studio Code.

Per usare questo articolo, è necessario soddisfare i prerequisiti seguenti:

Ambiente di sviluppo aperto

Usare le istruzioni seguenti per distribuire un ambiente di sviluppo preconfigurato contenente tutte le dipendenze necessarie per completare questo articolo.

GitHub Codespaces esegue un contenitore di sviluppo gestito da GitHub con Visual Studio Code per il Web come interfaccia utente. Per l'ambiente di sviluppo più semplice, usa GitHub Codespaces per avere gli strumenti di sviluppo e le dipendenze corretti preinstallati per completare questo articolo.

Importante

Tutti gli account GitHub possono usare Codespaces per un massimo di 60 ore gratuite ogni mese con 2 istanze di core. Per altre informazioni, vedere Spazio di archiviazione e ore core mensili inclusi in GitHub Codespaces.

Usare la procedura seguente per creare un nuovo GitHub Codespace nel main ramo del Azure-Samples/openai-chat-app-quickstart repository GitHub.

  1. Fare clic con il pulsante destro del mouse sul pulsante seguente e scegliere Apri collegamento in una nuova finestra. Questa azione consente di avere l'ambiente di sviluppo e la documentazione disponibile per la revisione.

  2. Nella pagina Crea spazio codici esaminare e quindi selezionare Crea nuovo spazio di codice

    Screenshot della schermata di conferma prima di creare un nuovo codespace.

  3. Attendere l'avvio del codespace. Questo processo di avvio può richiedere alcuni minuti.

  4. Accedere ad Azure con l'interfaccia della riga di comando per sviluppatori di Azure nel terminale nella parte inferiore della schermata.

    azd auth login
    
  5. Copia il codice dal terminale e incollalo in un browser. Segui le istruzioni per eseguire l'autenticazione con l'account Azure.

Le attività rimanenti in questo articolo vengono eseguite nel contesto di questo contenitore di sviluppo.

Usare la procedura seguente per creare un nuovo GitHub Codespace nel main ramo del Azure-Samples/openai-chat-app-quickstart-dotnet repository GitHub.

  1. Fare clic con il pulsante destro del mouse sul pulsante seguente e scegliere Apri collegamento in una nuova finestra. Questa azione consente di avere l'ambiente di sviluppo e la documentazione disponibile per la revisione.

  2. Nella pagina Crea spazio codici esaminare e quindi selezionare Crea spazio di codice

    Screenshot della schermata di conferma prima di creare un nuovo codespace.

  3. Attendere l'avvio del codespace. Questo processo di avvio può richiedere alcuni minuti.

  4. Accedere ad Azure con l'interfaccia della riga di comando per sviluppatori di Azure nel terminale nella parte inferiore della schermata.

    azd auth login
    
  5. Copia il codice dal terminale e incollalo in un browser. Segui le istruzioni per eseguire l'autenticazione con l'account Azure.

Le attività rimanenti in questo articolo vengono eseguite nel contesto di questo contenitore di sviluppo.

Usare la procedura seguente per creare un nuovo GitHub Codespace nel main ramo del Azure-Samples/openai-chat-app-quickstart-javascript repository GitHub.

  1. Fare clic con il pulsante destro del mouse sul pulsante seguente e scegliere Apri collegamento in una nuova finestra. Questa azione consente di avere l'ambiente di sviluppo e la documentazione disponibile per la revisione.

Aprire in GitHub Codespaces

  1. Nella pagina Crea spazio codici esaminare e quindi selezionare Crea nuovo spazio di codice

    Screenshot della schermata di conferma prima di creare un nuovo codespace.

  2. Attendere l'avvio del codespace. Questo processo di avvio può richiedere alcuni minuti.

  3. Accedere ad Azure con l'interfaccia della riga di comando per sviluppatori di Azure nel terminale nella parte inferiore della schermata.

    azd auth login
    
  4. Copia il codice dal terminale e incollalo in un browser. Segui le istruzioni per eseguire l'autenticazione con l'account Azure.

Le attività rimanenti in questo articolo vengono eseguite nel contesto di questo contenitore di sviluppo.

Distribuire ed eseguire

Il repository di esempio contiene tutti i file di codice e configurazione per la distribuzione di Azure dell'app chat. I passaggi seguenti illustrano il processo di distribuzione di Azure dell'app chat di esempio.

Distribuire l'app di chat in Azure

Importante

Le risorse di Azure create in questa sezione comportano costi immediati. Queste risorse possono accumulare costi anche se si interrompe il comando prima che venga eseguito completamente.

  1. Eseguire il comando seguente dell'interfaccia della riga di comando per sviluppatori di Azure per il provisioning delle risorse di Azure e la distribuzione del codice sorgente:

    azd up
    
  2. Usare la tabella seguente per rispondere alle richieste:

    Richiesta Risposta
    Nome ambiente Tienila breve e minuscola. Aggiungere il nome o l'alias. Ad esempio: secure-chat. Viene usato come parte del nome del gruppo di risorse.
    Abbonamento Selezionare la sottoscrizione in cui creare le risorse.
    Località (per l'hosting) Selezionare una località vicina all'elenco.
    Percorso del modello OpenAI Selezionare una località vicina all'elenco. Se la stessa posizione è disponibile come prima posizione, selezionala.
  3. Attendi la distribuzione dell'app. Il completamento della distribuzione richiede in genere tra 5 e 10 minuti.

Usare l'app chat per porre domande al modello linguistico di grandi dimensioni

  1. Il terminale visualizza un URL dopo la corretta distribuzione dell'applicazione.

  2. Seleziona l'URL etichettato Deploying service web per aprire l'applicazione di chat in un browser.

    Screenshot dell'app di chat nel browser che mostra diversi suggerimenti per l'inserimento in chat e la casella di testo della chat per inserire una domanda.

  3. Nel browser immettere una domanda, ad esempio "Perché l'identità gestita è migliore delle chiavi?".

  4. La risposta proviene da Azure OpenAI e il risultato viene visualizzato.

Esplorazione del codice di esempio

Mentre OpenAI e il servizio Azure OpenAI si basano su una libreria client Python comune, quando si usano gli endpoint OpenAI di Azure sono necessarie piccole modifiche al codice. Vediamo come questo esempio configura l'autenticazione senza chiave con l'ID Entra Di Microsoft e comunica con Azure OpenAI.

Configurare l'autenticazione con l'identità gestita

In questo esempio il src\quartapp\chat.py file inizia con la configurazione dell'autenticazione senza chiave.

Il frammento di codice seguente usa il modulo azure.identity.aio per creare un flusso di autenticazione asincrono di Microsoft Entra.

Il frammento di codice seguente usa la AZURE_CLIENT_IDazd variabile di ambiente per creare un'istanza managedIdentityCredential in grado di eseguire l'autenticazione tramite l'identità gestita assegnata dall'utente.

user_assigned_managed_identity_credential = ManagedIdentityCredential(client_id=os.getenv("AZURE_CLIENT_ID")) 

Nota

Il provisioning delle azd variabili di ambiente delle risorse viene effettuato durante la azd distribuzione dell'app.

Il frammento di codice seguente usa la AZURE_TENANT_IDazd variabile di ambiente delle risorse per creare un'istanza di AzureDeveloperCliCredential in grado di eseguire l'autenticazione con il tenant Microsoft Entra corrente.

azure_dev_cli_credential = AzureDeveloperCliCredential(tenant_id=os.getenv("AZURE_TENANT_ID"), process_timeout=60)  

La libreria client di Identità di Azure fornisce le credenziali, ovvero classi pubbliche che implementano il protocollo TokenCredential della libreria Core di Azure. Una credenziale rappresenta un flusso di autenticazione distinto per l'acquisizione di un token di accesso da Microsoft Entra ID. Queste credenziali si possono concatenare per formare una sequenza ordinata di meccanismi di autenticazione da tentare.

Il frammento di codice seguente crea un ChainedTokenCredential oggetto utilizzando un ManagedIdentityCredential e un AzureDeveloperCliCredential:

  • Viene ManagedIdentityCredential usato per Funzioni di Azure e app Azure Servizio. Un'identità gestita assegnata dall'utente è supportata passando a client_idManagedIdentityCredential.
  • Viene AzureDeveloperCliCredential utilizzato per lo sviluppo locale. È stato impostato in precedenza in base al tenant di Microsoft Entra da usare.
azure_credential = ChainedTokenCredential(
    user_assigned_managed_identity_credential,
    azure_dev_cli_credential
)

Suggerimento

L'ordine delle credenziali è importante, perché viene usato il primo token di accesso Valido di Microsoft Entra. Per altre informazioni, vedere l'articolo ChainedTokenCredential Overview (Panoramica di ChainedTokenCredential).

Il frammento di codice seguente ottiene il provider di token OpenAI di Azure in base alle credenziali di Azure selezionate. Questo valore viene ottenuto chiamando il azure.identity.aio.get_bearer_token_provider con due argomenti:

  • azure_credential ChainedTokenCredential: istanza creata in precedenza per autenticare la richiesta.

  • https://cognitiveservices.azure.com/.default: obbligatorio uno o più ambiti di token di connessione. In questo caso, l'endpoint di Servizi cognitivi di Azure.

token_provider = get_bearer_token_provider(
    azure_credential, "https://cognitiveservices.azure.com/.default"
)

Le righe seguenti controllano le variabili di ambiente necessarie AZURE_OPENAI_ENDPOINT e AZURE_OPENAI_CHATGPT_DEPLOYMENTazd di risorse di cui viene effettuato il provisioning durante azd la distribuzione dell'app. Se un valore non è presente, viene generato un errore.

if not os.getenv("AZURE_OPENAI_ENDPOINT"):
    raise ValueError("AZURE_OPENAI_ENDPOINT is required for Azure OpenAI")
if not os.getenv("AZURE_OPENAI_CHATGPT_DEPLOYMENT"):
    raise ValueError("AZURE_OPENAI_CHATGPT_DEPLOYMENT is required for Azure OpenAI")

Questo frammento di codice inizializza il client OpenAI di Azure, impostando i api_versionparametri , azure_endpointe azure_ad_token_provider (client_args):

bp.openai_client = AsyncAzureOpenAI(
    api_version=os.getenv("AZURE_OPENAI_API_VERSION") or "2024-02-15-preview",
    azure_endpoint=os.getenv("AZURE_OPENAI_ENDPOINT"),
    azure_ad_token_provider=token_provider,
)  

La riga seguente imposta il nome di distribuzione del modello OpenAI di Azure da usare nelle chiamate API:

bp.openai_model = os.getenv("AZURE_OPENAI_CHATGPT_DEPLOYMENT")

Nota

OpenAI usa l'argomento della parola chiave model per specificare il modello da usare. Azure OpenAI usa il concetto di distribuzioni di modelli univoci. Quando si usa Azure OpenAI, model fare riferimento al nome della distribuzione sottostante scelto durante la distribuzione del modello OpenAI di Azure.

Al termine di questa funzione, il client è configurato correttamente e pronto per interagire con i servizi OpenAI di Azure.

Flusso di risposta con il client OpenAI e il modello

response_stream Gestisce la chiamata di completamento della chat nella route. Il frammento di codice seguente mostra come openai_client e model vengono usati.

async def response_stream():
    # This sends all messages, so API request may exceed token limits
    all_messages = [
        {"role": "system", "content": "You are a helpful assistant."},
    ] + request_messages

    chat_coroutine = bp.openai_client.chat.completions.create(
        # Azure Open AI takes the deployment name as the model name
        model=bp.openai_model,
        messages=all_messages,
        stream=True,
    )

Esplorare il codice di esempio

Le applicazioni .NET si basano sulla libreria client Azure.AI.OpenAI per comunicare con i servizi OpenAI di Azure, che dipendono dalla libreria OpenAI . L'app di esempio configura l'autenticazione senza chiave usando Microsoft Entra ID per comunicare con Azure OpenAI.

Configurare l'autenticazione e la registrazione del servizio

In questo esempio l'autenticazione senza chiave viene configurata nel program.cs file . Il frammento di codice seguente usa la AZURE_CLIENT_ID variabile di ambiente impostata da azd per creare un'istanza managedIdentityCredential in grado di eseguire l'autenticazione tramite l'identità gestita assegnata dall'utente.

var userAssignedIdentityCredential = 
    new ManagedIdentityCredential(builder.Configuration.GetValue<string>("AZURE_CLIENT_ID"));

Nota

Il provisioning delle azd variabili di ambiente delle risorse viene effettuato durante la azd distribuzione dell'app.

Il frammento di codice seguente usa la AZURE_TENANT_ID variabile di ambiente impostata da azd per creare un'istanza di AzureDeveloperCliCredential in grado di autenticarsi localmente usando l'account connesso a azd.

var azureDevCliCredential = new AzureDeveloperCliCredential(
    new AzureDeveloperCliCredentialOptions()
    { 
        TenantId = builder.Configuration.GetValue<string>("AZURE_TENANT_ID") 
    });

La libreria client di Identità di Azure fornisce classi di credenziali che implementano il protocollo TokenCredential della libreria Core di Azure. Una credenziale rappresenta un flusso di autenticazione distinto per l'acquisizione di un token di accesso da Microsoft Entra ID. Queste credenziali possono essere concatenate usando ChainedTokenCredential per formare una sequenza ordinata di meccanismi di autenticazione da tentare.

Il frammento di codice seguente registra per l'inserimento AzureOpenAIClient delle dipendenze e crea un ChainedTokenCredential oggetto usando un ManagedIdentityCredential e un AzureDeveloperCliCredential:

  • Viene ManagedIdentityCredential usato per Funzioni di Azure e app Azure Servizio. Un'identità gestita assegnata dall'utente è supportata usando l'oggetto AZURE_CLIENT_ID fornito a ManagedIdentityCredential.
  • Viene AzureDeveloperCliCredential utilizzato per lo sviluppo locale. È stato impostato in precedenza in base al tenant di Microsoft Entra da usare.
builder.Services.AddAzureClients(
    clientBuilder => {
        clientBuilder.AddClient<AzureOpenAIClient, AzureOpenAIClientOptions>((options, _, _)
            => new AzureOpenAIClient(
                new Uri(endpoint),
                new ChainedTokenCredential(
                    userAssignedIdentityCredential, azureDevCliCredential), options));
    });

Suggerimento

L'ordine delle credenziali è importante, perché viene usato il primo token di accesso Valido di Microsoft Entra. Per altre informazioni, vedere l'articolo ChainedTokenCredential Overview (Panoramica di ChainedTokenCredential).

Ottenere i completamenti della chat usando il client OpenAI di Azure

L'app Web Blazor inserisce l'oggetto registrato AzureOpenAIClient nella parte superiore del Home.Razor componente:

@inject AzureOpenAIClient azureOpenAIClient

Quando l'utente invia il modulo, invia AzureOpenAIClient la richiesta al modello OpenAI di generare un completamento:

ChatClient chatClient = azureOpenAIClient.GetChatClient("gpt-4o-mini");

messages.Add(new UserChatMessage(model.UserMessage));

ChatCompletion completion = await chatClient.CompleteChatAsync(messages);
    messages.Add(new SystemChatMessage(completion.Content[0].Text));

Esplorare il codice di esempio

Mentre OpenAI e il servizio Azure OpenAI si basano su una libreria client Openai (comune libreria client JavaScript), sono necessarie piccole modifiche al codice quando si usano gli endpoint OpenAI di Azure. Vediamo come questo esempio configura l'autenticazione senza chiave con l'ID Entra Di Microsoft e comunica con Azure OpenAI.

Autenticazione senza chiave per ogni ambiente

La libreria client di Identità di Azure fornisce classi di credenziali che implementano il protocollo TokenCredential della libreria Core di Azure. Una credenziale rappresenta un flusso di autenticazione distinto per l'acquisizione di un token di accesso da Microsoft Entra ID. Queste credenziali possono essere concatenate usando ChainedTokenCredential per formare una sequenza ordinata di meccanismi di autenticazione da tentare. In questo modo è possibile distribuire lo stesso codice sia in ambienti di produzione che in ambienti di sviluppo locali.

Diagramma che mostra le due credenziali nel flusso in cui viene tentata prima l'identità gestita, quindi viene tentata la credenziale di Azure predefinita.

Configurare l'autenticazione con l'identità gestita

In questo esempio, ./src/azure-authentication.ts fornisce diverse funzioni per fornire l'autenticazione senza chiave ad Azure OpenAI.

La prima funzione, getChainedCredential(), restituisce la prima credenziale di Azure valida trovata nella catena.

function getChainedCredential() {

    return new ChainedTokenCredential(
        new ManagedIdentityCredential(process.env.AZURE_CLIENT_ID!), 
        new AzureDeveloperCliCredential({
            tenantId: process.env.AZURE_TENANT_ID! ? process.env.AZURE_TENANT_ID! : undefined
          })
    );
}
  • ManagedIdentityCredential viene tentata per prima. Viene configurato con la variabile di ambiente AZURE_CLIENT_ID nel runtime di produzione ed è in grado di eseguire l'autenticazione tramite l'identità gestita assegnata dall'utente.
  • Il tentativo di AzureDeveloperCliCredential è il secondo. Viene configurato quando uno sviluppo accede con l'interfaccia della riga di comando az logindi Azure.

Suggerimento

L'ordine delle credenziali è importante, perché viene usato il primo token di accesso Valido di Microsoft Entra. Per altre informazioni, vedere l'articolo ChainedTokenCredential Overview (Panoramica di ChainedTokenCredential).

Ottenere il token di connessione per OpenAI

La seconda funzione in ./src/azure-authentication.ts è getTokenProvider(), che restituisce un callback che fornisce un token di connessione con ambito all'endpoint di Servizi cognitivi di Azure.

function getTokenProvider(): () => Promise<string> {
    const credential  = getChainedCredential();
    const scope = "https://cognitiveservices.azure.com/.default";
    return getBearerTokenProvider(credential, scope);
}

Il frammento di codice precedente usa getBearerTokenProvider per accettare le credenziali e l'ambito, quindi restituisce un callback che fornisce un token di connessione.

Creare un client Azure OpenAI autenticato

La terza funzione in ./src/azure-authentication.ts è getOpenAiClient(), che restituisce il client OpenAI di Azure.

export function getOpenAiClient(): AzureOpenAI | undefined{
    try {

        if (!process.env.AZURE_OPENAI_ENDPOINT) {
            throw new Error("AZURE_OPENAI_ENDPOINT is required for Azure OpenAI");
        }
        if (!process.env.AZURE_OPENAI_CHAT_DEPLOYMENT) {
            throw new Error("AZURE_OPENAI_CHAT_DEPLOYMENT is required for Azure OpenAI");
        }

        const options = { 
            azureADTokenProvider: getTokenProvider(), 
            deployment: process.env.AZURE_OPENAI_CHAT_DEPLOYMENT!, 
            apiVersion: process.env.AZURE_OPENAI_API_VERSION! || "2024-02-15-preview",
            endpoint: process.env.AZURE_OPENAI_ENDPOINT!
        }

        // Create the Asynchronous Azure OpenAI client
        return new AzureOpenAI (options);

    } catch (error) {
        console.error('Error getting Azure OpenAI client: ', error);
    }
}

Questo codice accetta le opzioni, incluso il token con ambito corretto, e crea il AzureOpenAI client

Rispondere alla chat di streaming con Azure OpenAI

Usare il gestore di route Fastify seguente in per ./src/openai-chat-api.ts inviare un messaggio ad Azure OpenAI e trasmettere la risposta.

import { FastifyReply, FastifyRequest } from 'fastify';
import { AzureOpenAI } from "openai";
import { getOpenAiClient } from './azure-authentication.js';
import { ChatCompletionChunk, ChatCompletionMessageParam } from 'openai/resources/chat/completions';

interface ChatRequestBody {
    messages: ChatCompletionMessageParam [];
  }

export async function chatRoute (request: FastifyRequest<{ Body: ChatRequestBody }>, reply: FastifyReply) {

    const requestMessages: ChatCompletionMessageParam[] = request?.body?.messages;
    const openaiClient: AzureOpenAI | undefined = getOpenAiClient();

    if (!openaiClient) {
      throw new Error("Azure OpenAI client is not configured");
    }

    const allMessages = [
      { role: "system", content: "You are a helpful assistant."},
      ...requestMessages
    ] as ChatCompletionMessageParam [];

    const chatCompletionChunks = await openaiClient.chat.completions.create({
      // Azure Open AI takes the deployment name as the model name
      model: process.env.AZURE_OPENAI_CHAT_DEPLOYMENT_MODEL || "gpt-4o-mini",
      messages: allMessages,
      stream: true

    })
    reply.raw.setHeader('Content-Type', 'text/html; charset=utf-8');
    reply.raw.setHeader('Cache-Control', 'no-cache');
    reply.raw.setHeader('Connection', 'keep-alive');
    reply.raw.flushHeaders();

    for await (const chunk of chatCompletionChunks as AsyncIterable<ChatCompletionChunk>) {
      for (const choice of chunk.choices) {
        reply.raw.write(JSON.stringify(choice) + "\n")
      }
    }

    reply.raw.end()

}

La funzione ottiene la conversazione di chat, inclusi i messaggi precedenti e li invia ad Azure OpenAI. Man mano che i blocchi di flusso vengono restituiti da Azure OpenAI, vengono inviati al client.

Altre considerazioni sulla sicurezza

Questo articolo illustra come viene usato ChainedTokenCredential l'esempio per l'autenticazione nel servizio OpenAI di Azure.

L'esempio include anche un'azione GitHub che analizza i file di infrastruttura come codice e genera un report contenente eventuali problemi rilevati. Per garantire procedure consigliate continue nel proprio repository, è consigliabile che chiunque crei soluzioni in base ai modelli garantisca che l'impostazione di analisi dei segreti gitHub sia abilitata.

Prendere in considerazione altre misure di sicurezza, ad esempio:

Pulire le risorse

Pulire le risorse di Azure

Le risorse di Azure create in questo articolo vengono fatturate alla sottoscrizione di Azure. Se prevedi che queste risorse non ti servano in futuro, eliminale per evitare di incorrere in costi aggiuntivi.

Per eliminare le risorse di Azure e rimuovere il codice sorgente, eseguire il comando seguente dell'interfaccia della riga di comando per sviluppatori di Azure:

azd down --purge

Pulire GitHub Codespaces

L'eliminazione dell'ambiente GitHub Codespaces offre la possibilità di aumentare le ore gratuite per core a cui si ha diritto per l'account.

Importante

Per altre informazioni sui diritti dell'account GitHub, vedere Ore di archiviazione e di core mensili incluse in GitHub Codespaces.

  1. Accedere al dashboard di GitHub Codespaces (https://github.com/codespaces).

  2. Individuare i codespace attualmente in esecuzione provenienti dal repository GitHub Azure-Samples/openai-chat-app-quickstart.

  3. Aprire il menu di scelta rapida per il codespace e selezionare Elimina.

  1. Accedere al dashboard di GitHub Codespaces (https://github.com/codespaces).

  2. Individuare i codespace attualmente in esecuzione provenienti dal repository GitHub Azure-Samples/openai-chat-app-quickstart-dotnet.

  3. Aprire il menu di scelta rapida per il codespace e selezionare Elimina.

  1. Accedere al dashboard di GitHub Codespaces (https://github.com/codespaces).

  2. Individuare i codespace attualmente in esecuzione provenienti dal repository GitHub Azure-Samples/openai-chat-app-quickstart-javascript.

  3. Aprire il menu di scelta rapida per il codespace e selezionare Elimina.

Come ottenere assistenza

Se il problema non viene risolto, registralo nei Problemi del repository.

Passaggi successivi

Se il problema non viene risolto, registralo nei Problemi del repository.

Se il problema non viene risolto, registralo nei Problemi del repository.