Partager via


Bien démarrer avec le bloc de construction de sécurité Azure OpenAI

Cet article vous montre comment créer et utiliser l’exemple de bloc de construction de sécurité Azure OpenAI. L’objectif est de démontrer l’approvisionnement de comptes Azure OpenAI avec le contrôle d’accès en fonction du rôle (RBAC) pour l’authentification sans clé (Microsoft Entra ID) auprès d’Azure OpenAI. Cet exemple d’application de conversation inclut également toute l’infrastructure et la configuration nécessaires pour approvisionner des ressources Azure OpenAI et déployer l’application sur Azure Container Apps à l’aide de l’interface DE ligne de commande du développeur Azure.

En suivant les instructions de cet article, vous allez :

  • Déployez une application de conversation de conteneur Azure sécurisée.
  • Utilisez l’identité managée pour l’accès Azure OpenAI.
  • Discutez avec un modèle de langage large Azure OpenAI (LLM) à l’aide de la bibliothèque OpenAI.

Une fois que vous avez terminé cet article, vous pouvez commencer à modifier le nouveau projet avec votre code et vos données personnalisés.

Remarque

Cet article utilise un ou plusieurs modèles d’application IA comme base pour les exemples et les conseils qu’il contient. Les modèles d’application IA vous fournissent des implémentations de référence bien gérées et faciles à déployer, qui constituent un point de départ de qualité pour vos applications IA.

Vue d’ensemble de l’architecture

Une architecture simple de l’application de conversation est illustrée dans le diagramme suivant : Diagramme montrant l’architecture du client à l’application back-end.

L’application de conversation s’exécute en tant qu’application conteneur Azure. L’application utilise une identité managée via l’ID Microsoft Entra pour s’authentifier auprès d’Azure OpenAI, au lieu d’une clé API. L’application de conversation utilise Azure OpenAI pour générer des réponses aux messages utilisateur.

L’architecture d’application s’appuie sur les services et composants suivants :

  • Azure OpenAI représente le fournisseur d'IA auquel nous envoyons les requêtes de l'utilisateur.
  • Azure Container Apps est l'environnement de conteneurs dans lequel l'application est hébergée.
  • Managed Identity nous aide à garantir une sécurité optimale et élimine la nécessité pour vous en tant que développeur de gérer en toute sécurité un secret.
  • Fichiers Bicep pour l’approvisionnement de ressources Azure, notamment Azure OpenAI, Azure Container Apps, Azure Container Registry, Azure Log Analytics et rôles RBAC.
  • Microsoft AI Chat Protocol fournit des contrats d’API standardisés pour les solutions et les langages d’IA. L’application de chat est conforme au Microsoft AI Chat Protocol, ce qui permet à l’application d’évaluation de fonctionner avec toute application de chat conforme au protocole.
  • Quart Python qui utilise le openai package pour générer des réponses aux messages utilisateur.
  • Frontend HTML/JavaScript de base qui diffuse des réponses du back-end à l’aide de lignes JSON sur un readableStream.
  • Application web TypeScript qui utilise le package openai npm pour générer des réponses aux messages utilisateur.

Cost

Dans une tentative de maintenir la tarification aussi faible que possible dans cet exemple, la plupart des ressources utilisent un niveau tarifaire de base ou de consommation. Modifiez votre niveau selon vos besoins en fonction de votre utilisation prévue. Pour arrêter les frais, supprimez les ressources lorsque vous avez terminé avec l’article.

Prérequis

Un environnement de conteneur de développement est disponible avec toutes les dépendances requises pour terminer cet article. Vous pouvez exécuter le conteneur de développement dans GitHub Codespaces (dans un navigateur) ou localement à l’aide de Visual Studio Code.

Pour utiliser cet article, vous devez remplir les conditions préalables suivantes :

Environnement de développement ouvert

Utilisez les instructions suivantes pour déployer un environnement de développement préconfiguré contenant toutes les dépendances requises pour terminer cet article.

GitHub Codespaces exécute un conteneur de développement géré par GitHub avec Visual Studio Code pour le web comme interface utilisateur. Pour un environnement de développement le plus simple, utilisez GitHub Codespaces pour disposer des outils de développement et des dépendances appropriés préinstallés pour terminer cet article.

Important

Tous les comptes GitHub peuvent utiliser codespaces pendant jusqu’à 60 heures gratuites chaque mois avec 2 instances principales. Pour plus d’informations, consultez Le stockage mensuel inclus et les heures de cœur GitHub Codespaces.

Procédez comme suit pour créer un espace de code GitHub sur la main branche du Azure-Samples/openai-chat-app-quickstart dépôt GitHub.

  1. Cliquez avec le bouton droit sur le bouton suivant, puis sélectionnez Ouvrir le lien dans la nouvelle fenêtre. Cette action vous permet d’avoir l’environnement de développement et la documentation disponible pour révision.

  2. Dans la page Créer un espace de code, passez en revue, puis sélectionnez Créer un espace de code

    Capture d’écran de l’écran de confirmation avant de créer un nouveau codespace.

  3. Attendez que le codespace démarre. Ce processus de démarrage peut prendre quelques minutes.

  4. Connectez-vous à Azure avec Azure Developer CLI dans le terminal en bas de l’écran.

    azd auth login
    
  5. Copiez le code à partir du terminal, puis collez-le dans un navigateur. Suivez les instructions pour vous authentifier avec votre compte Azure.

Les tâches restantes de cet article s’effectuent dans ce conteneur de développement.

Procédez comme suit pour créer un espace de code GitHub sur la main branche du Azure-Samples/openai-chat-app-quickstart-dotnet dépôt GitHub.

  1. Cliquez avec le bouton droit sur le bouton suivant, puis sélectionnez Ouvrir le lien dans la nouvelle fenêtre. Cette action vous permet d’avoir l’environnement de développement et la documentation disponible pour révision.

  2. Dans la page Créer un espace de code, passez en revue, puis sélectionnez Créer un espace de code

    Capture d’écran de l’écran de confirmation avant de créer un nouveau codespace.

  3. Attendez que le codespace démarre. Ce processus de démarrage peut prendre quelques minutes.

  4. Connectez-vous à Azure avec Azure Developer CLI dans le terminal en bas de l’écran.

    azd auth login
    
  5. Copiez le code à partir du terminal, puis collez-le dans un navigateur. Suivez les instructions pour vous authentifier avec votre compte Azure.

Les tâches restantes de cet article s’effectuent dans ce conteneur de développement.

Procédez comme suit pour créer un espace de code GitHub sur la main branche du Azure-Samples/openai-chat-app-quickstart-javascript dépôt GitHub.

  1. Cliquez avec le bouton droit sur le bouton suivant, puis sélectionnez Ouvrir le lien dans la nouvelle fenêtre. Cette action vous permet d’avoir l’environnement de développement et la documentation disponible pour révision.

Ouvrir dans un GitHub Codespaces

  1. Dans la page Créer un espace de code, passez en revue, puis sélectionnez Créer un espace de code

    Capture d’écran de l’écran de confirmation avant de créer un nouveau codespace.

  2. Attendez que le codespace démarre. Ce processus de démarrage peut prendre quelques minutes.

  3. Connectez-vous à Azure avec Azure Developer CLI dans le terminal en bas de l’écran.

    azd auth login
    
  4. Copiez le code à partir du terminal, puis collez-le dans un navigateur. Suivez les instructions pour vous authentifier avec votre compte Azure.

Les tâches restantes de cet article s’effectuent dans ce conteneur de développement.

Déployer et exécuter

L’exemple de référentiel contient tous les fichiers de code et de configuration pour le déploiement Azure de l’application de conversation. Les étapes suivantes vous guident dans l’exemple de processus de déploiement Azure de l’application de conversation.

Déployer une application de conversation sur Azure

Important

Les ressources Azure créées dans cette section entraînent des coûts immédiats. Ces ressources peuvent entraîner des coûts même si vous interrompez la commande avant la fin de exécution.

  1. Exécutez la commande AZURE Developer CLI suivante pour le provisionnement de ressources Azure et le déploiement de code source :

    azd up
    
  2. Utilisez le tableau suivant pour répondre aux invites :

    Prompt Réponse
    Nom de l’environnement Gardez-le court et en minuscules. Ajoutez votre nom ou votre pseudo. Par exemple : secure-chat. Il est utilisé comme partie du nom du groupe de ressources.
    Abonnement Sélectionnez l’abonnement pour créer les ressources.
    Emplacement (pour l’hébergement) Sélectionnez un emplacement près de chez vous dans la liste.
    Emplacement pour le modèle OpenAI Sélectionnez un emplacement près de chez vous dans la liste. Si le premier emplacement choisi est également disponible, sélectionnez-le.
  3. Attendez que l’application soit déployée. Le déploiement prend généralement entre 5 et 10 minutes.

Utiliser l’application de conversation pour poser des questions au modèle de langage volumineux

  1. Le terminal affiche une URL après le déploiement réussi de l’application.

  2. Sélectionnez cette URL étiquetée Deploying service web pour ouvrir l’application de conversation dans un navigateur.

    Capture d’écran de l’application de conversation dans le navigateur montrant plusieurs suggestions d’entrée de conversation et la zone de texte de conversation pour entrer une question.

  3. Dans le navigateur, entrez une question telle que « Pourquoi l’identité managée est-elle mieux que les clés ? ».

  4. La réponse provient d’Azure OpenAI et le résultat s’affiche.

Exploration de l’exemple de code

Bien qu’OpenAI et Azure OpenAI Service s’appuient sur une bibliothèque de client Python commune, de petites modifications de code sont nécessaires lors de l’utilisation de points de terminaison Azure OpenAI. Voyons comment cet exemple configure l’authentification sans clé avec l’ID Microsoft Entra et communique avec Azure OpenAI.

Configurer l’authentification avec une identité managée

Dans cet exemple, le fichier commence par la configuration de l’authentification src\quartapp\chat.py sans clé.

L’extrait de code suivant utilise le module azure.identity.aio pour créer un flux d’authentification Microsoft Entra asynchrone.

L’extrait de code suivant utilise la AZURE_CLIENT_IDazd variable d’environnement pour créer une instance ManagedIdentityCredential capable de s’authentifier via une identité managée affectée par l’utilisateur.

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

Remarque

Les azd variables d’environnement de ressources sont approvisionnées pendant le azd déploiement de l’application.

L’extrait de code suivant utilise AZURE_TENANT_IDazd la variable d’environnement de ressource pour créer une instance AzureDeveloperCliCredential capable d’être authentifiée avec le locataire Microsoft Entra actuel.

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

La bibliothèque cliente Azure Identity fournit des informations d’identification : des classes publiques qui implémentent le protocole TokenCredential de la bibliothèque Azure Core. Les informations d’identification représentent un flux d’authentification distinct pour l’acquisition d’un jeton d’accès à partir de l’ID Microsoft Entra. Ces informations d’identification peuvent être chaînées pour former une séquence ordonnée de mécanismes d’authentification à essayer.

L’extrait de code suivant crée un ChainedTokenCredential code à l’aide d’un et d’un ManagedIdentityCredentialAzureDeveloperCliCredential:

  • Il ManagedIdentityCredential est utilisé pour Azure Functions et Azure App Service. Une identité managée affectée par l’utilisateur est prise en charge par le passage à client_idManagedIdentityCredential.
  • Il AzureDeveloperCliCredential est utilisé pour le développement local. Il a été défini précédemment en fonction du locataire Microsoft Entra à utiliser.
azure_credential = ChainedTokenCredential(
    user_assigned_managed_identity_credential,
    azure_dev_cli_credential
)

Conseil

L’ordre des informations d’identification est important, car le premier jeton d’accès Microsoft Entra valide est utilisé. Pour plus d’informations, consultez l’article ChainedTokenCredential Overview .

L’extrait de code suivant obtient le fournisseur de jetons Azure OpenAI en fonction des informations d’identification Azure sélectionnées. Cette valeur est obtenue en appelant le azure.identity.aio.get_bearer_token_provider avec deux arguments :

  • azure_credential: instance ChainedTokenCredential créée précédemment pour authentifier la requête.

  • https://cognitiveservices.azure.com/.default: étendues de jeton du porteur requises. Dans ce cas, le point de terminaison Azure Cognitive Services .

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

Les lignes suivantes vérifient les variables d’environnement requises AZURE_OPENAI_ENDPOINT et AZURE_OPENAI_CHATGPT_DEPLOYMENTazd d’environnement de ressources, qui sont provisionnées pendant azd le déploiement de l’application. Une erreur est levée si une valeur n’est pas présente.

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")

Cet extrait de code initialise le client Azure OpenAI, en définissant les api_versionparamètres , azure_endpointet 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 ligne suivante définit le nom de déploiement du modèle Azure OpenAI à utiliser dans les appels d’API :

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

Remarque

OpenAI utilise l’argument de mot clé model pour spécifier le modèle à utiliser. Azure OpenAI établit le concept de déploiements de modèles uniques. Lorsque vous utilisez Azure OpenAI, model reportez-vous au nom de déploiement sous-jacent choisi lors du déploiement du modèle Azure OpenAI.

Une fois cette fonction terminée, le client est correctement configuré et prêt à interagir avec les services Azure OpenAI.

Flux de réponse à l’aide du client et du modèle OpenAI

Gère response_stream l’appel de saisie semi-automatique de conversation dans l’itinéraire. L’extrait de code suivant montre comment openai_client et model sont utilisés.

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,
    )

Explorer l’exemple de code

Les applications .NET s’appuient sur la bibliothèque cliente Azure.AI.OpenAI pour communiquer avec les services Azure OpenAI , ce qui dépend de la bibliothèque OpenAI . L’exemple d’application configure l’authentification sans clé à l’aide de l’ID Microsoft Entra pour communiquer avec Azure OpenAI.

Configurer l’authentification et l’inscription de service

Dans cet exemple, l’authentification sans clé est configurée dans le program.cs fichier. L’extrait de code suivant utilise la AZURE_CLIENT_ID variable d’environnement définie pour azd créer une instance ManagedIdentityCredential capable d’s’authentifier via une identité managée affectée par l’utilisateur.

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

Remarque

Les azd variables d’environnement de ressources sont approvisionnées pendant le azd déploiement de l’application.

L’extrait de code suivant utilise la AZURE_TENANT_ID variable d’environnement définie par azd pour créer une instance AzureDeveloperCliCredential capable d’s’authentifier localement à l’aide du compte connecté à azd.

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

La bibliothèque cliente Azure Identity fournit des classes d’informations d’identification qui implémentent le protocole TokenCredential de la bibliothèque Azure Core. Les informations d’identification représentent un flux d’authentification distinct pour l’acquisition d’un jeton d’accès à partir de l’ID Microsoft Entra. Ces informations d’identification peuvent être chaînées à l’aide ChainedTokenCredential d’une séquence ordonnée de mécanismes d’authentification à essayer.

L’extrait de code suivant inscrit l’injection de dépendances et crée un code à l’aide AzureOpenAIClient d’un et d’un ChainedTokenCredentialManagedIdentityCredential:AzureDeveloperCliCredential

  • Il ManagedIdentityCredential est utilisé pour Azure Functions et Azure App Service. Une identité managée affectée par l’utilisateur est prise en charge à l’aide de celle AZURE_CLIENT_IDManagedIdentityCredentialqui a été fournie au .
  • Il AzureDeveloperCliCredential est utilisé pour le développement local. Il a été défini précédemment en fonction du locataire Microsoft Entra à utiliser.
builder.Services.AddAzureClients(
    clientBuilder => {
        clientBuilder.AddClient<AzureOpenAIClient, AzureOpenAIClientOptions>((options, _, _)
            => new AzureOpenAIClient(
                new Uri(endpoint),
                new ChainedTokenCredential(
                    userAssignedIdentityCredential, azureDevCliCredential), options));
    });

Conseil

L’ordre des informations d’identification est important, car le premier jeton d’accès Microsoft Entra valide est utilisé. Pour plus d’informations, consultez l’article ChainedTokenCredential Overview .

Obtenir des achèvements de conversation à l’aide du client Azure OpenAI

L’application web Blazor injecte l’inscription AzureOpenAIClient en haut du Home.Razor composant :

@inject AzureOpenAIClient azureOpenAIClient

Lorsque l’utilisateur envoie le formulaire, il AzureOpenAIClient envoie son invite au modèle OpenAI pour générer une saisie semi-automatique :

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));

Explorer l’exemple de code

Bien que OpenAI et Azure OpenAI Service s’appuient sur un openai (bibliothèque de client JavaScript commune), de petites modifications de code sont nécessaires lors de l’utilisation de points de terminaison Azure OpenAI. Voyons comment cet exemple configure l’authentification sans clé avec l’ID Microsoft Entra et communique avec Azure OpenAI.

Authentification sans clé pour chaque environnement

La bibliothèque cliente Azure Identity fournit des classes d’informations d’identification qui implémentent le protocole TokenCredential de la bibliothèque Azure Core. Les informations d’identification représentent un flux d’authentification distinct pour l’acquisition d’un jeton d’accès à partir de l’ID Microsoft Entra. Ces informations d’identification peuvent être chaînées à l’aide ChainedTokenCredential d’une séquence ordonnée de mécanismes d’authentification à essayer. Cela vous permet de déployer le même code dans les environnements de production et de développement local.

Diagramme montrant les deux informations d’identification dans le flux où l’identité managée est essayée en premier, les informations d’identification Azure par défaut sont essayées.

Configurer l’authentification avec une identité managée

Dans cet exemple, plusieurs ./src/azure-authentication.ts fonctions permettent de fournir une authentification sans clé à Azure OpenAI.

La première fonction, retourne getChainedCredential()les premières informations d’identification Azure valides trouvées dans la chaîne.

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 est tenté en premier. Il est configuré avec la variable d’environnement AZURE_CLIENT_ID dans le runtime de production et peut s’authentifier via l’identité managée affectée par l’utilisateur.
  • AzureDeveloperCliCredential est tenté deuxième. Il est configuré lorsqu’un développement se connecte avec Azure CLI az login.

Conseil

L’ordre des informations d’identification est important, car le premier jeton d’accès Microsoft Entra valide est utilisé. Pour plus d’informations, consultez l’article ChainedTokenCredential Overview .

Obtenir le jeton du porteur pour OpenAI

La deuxième fonction est ./src/azure-authentication.tsgetTokenProvider(), qui retourne un rappel qui fournit un jeton du porteur délimité au point de terminaison Azure Cognitive Services .

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

L’extrait de code précédent utilise getBearerTokenProvider pour prendre les informations d’identification et l’étendue, puis retourne un rappel qui fournit un jeton du porteur.

Créer un client Azure OpenAI authentifié

La troisième fonction est ./src/azure-authentication.tsgetOpenAiClient(), qui retourne le client Azure OpenAI.

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);
    }
}

Ce code prend les options, y compris le jeton correctement délimité, et crée le AzureOpenAI client

Diffuser en continu une réponse de conversation avec Azure OpenAI

Utilisez le gestionnaire de routage Fastify suivant pour ./src/openai-chat-api.ts envoyer un message à Azure OpenAI et diffuser en continu la réponse.

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 fonction obtient la conversation de conversation, y compris les messages précédents, et les envoie à Azure OpenAI. À mesure que les blocs de flux sont retournés à partir d’Azure OpenAI, ils sont envoyés au client.

Autres considérations relatives à la sécurité

Cet article montre comment l’exemple utilise ChainedTokenCredential pour l’authentification auprès du service Azure OpenAI.

L’exemple comporte également une action GitHub qui analyse les fichiers infrastructure-as-code et génère un rapport contenant tous les problèmes détectés. Pour garantir la poursuite des meilleures pratiques dans votre propre référentiel, nous vous recommandons que toute personne créant des solutions basées sur nos modèles vérifie que le paramètre d’analyse des secrets GitHub est activé.

Envisagez d’autres mesures de sécurité, telles que :

Nettoyer les ressources

Nettoyage des ressources Azure

Les ressources Azure créées dans cet article sont facturées dans votre abonnement Azure. Si vous pensez ne plus avoir besoin de ces ressources, supprimez-les pour éviter des frais supplémentaires.

Pour supprimer les ressources Azure et supprimer le code source, exécutez la commande CLI Azure Developer suivante :

azd down --purge

Nettoyer GitHub Codespaces

La suppression de l’environnement GitHub Codespaces vous permet d’optimiser le nombre d’heures gratuites par cœur que vous obtenez pour votre compte.

Important

Pour plus d’informations sur les droits de votre compte GitHub, consultez GitHub Codespaces mensuel inclus stockage et heures principales.

  1. Connectez-vous au tableau de bord GitHub Codespaces (https://github.com/codespaces).

  2. Localisez vos codespaces en cours d’exécution provenant du référentiel GitHub Azure-Samples/openai-chat-app-quickstart.

  3. Ouvrez le menu contextuel du codespace, puis sélectionnez Supprimer.

  1. Connectez-vous au tableau de bord GitHub Codespaces (https://github.com/codespaces).

  2. Localisez vos codespaces en cours d’exécution provenant du référentiel GitHub Azure-Samples/openai-chat-app-quickstart-dotnet.

  3. Ouvrez le menu contextuel du codespace, puis sélectionnez Supprimer.

  1. Connectez-vous au tableau de bord GitHub Codespaces (https://github.com/codespaces).

  2. Localisez vos codespaces en cours d’exécution provenant du référentiel GitHub Azure-Samples/openai-chat-app-quickstart-javascript.

  3. Ouvrez le menu contextuel du codespace, puis sélectionnez Supprimer.

Obtenir de l’aide

Si votre problème n’est pas résolu, consignez votre problème dans les Problèmes du référentiel.

Étapes suivantes

Si votre problème n’est pas résolu, consignez votre problème dans les Problèmes du référentiel.

Si votre problème n’est pas résolu, consignez votre problème dans les Problèmes du référentiel.