Sdílet prostřednictvím


Začínáme s stavebním blokem zabezpečení Azure OpenAI

V tomto článku se dozvíte, jak vytvořit a používat ukázku stavebního bloku zabezpečení Azure OpenAI. Účelem je předvést zřizování účtů Azure OpenAI pomocí řízení přístupu na základě role (RBAC) pro ověřování bez klíčů (Microsoft Entra ID) pro Azure OpenAI. Tato ukázka chatovací aplikace zahrnuje také veškerou infrastrukturu a konfiguraci potřebnou ke zřízení prostředků Azure OpenAI a nasazení aplikace do Azure Container Apps pomocí Azure Developer CLI.

Postupujte podle pokynů v tomto článku:

  • Nasaďte zabezpečenou chatovací aplikaci Azure Container.
  • Použití spravované identity pro přístup k Azure OpenAI
  • Chatujte s velkým jazykovým modelem Azure OpenAI (LLM) pomocí knihovny OpenAI.

Po dokončení tohoto článku můžete začít upravovat nový projekt pomocí vlastního kódu a dat.

Poznámka:

Tento článek používá jednu nebo více šablon aplikací AI jako základ pro příklady a pokyny v tomto článku. Šablony aplikací AI poskytují dobře udržované a snadno použitelné referenční implementace, které pomáhají zajistit vysoce kvalitní výchozí bod pro vaše aplikace AI.

Přehled architektury

Jednoduchá architektura chatovací aplikace je znázorněná v následujícím diagramu: Diagram znázorňující architekturu z klienta do back-endové aplikace

Chatovací aplikace běží jako aplikace kontejneru Azure. Aplikace používá spravovanou identitu prostřednictvím ID Microsoft Entra k ověření pomocí Azure OpenAI místo klíče rozhraní API. Chatovací aplikace používá Azure OpenAI k vygenerování odpovědí na zprávy uživatelů.

Architektura aplikace spoléhá na následující služby a komponenty:

  • Azure OpenAI představuje poskytovatele AI, kterému posíláme dotazy uživatele.
  • Azure Container Apps je prostředí kontejneru, ve kterém je aplikace hostovaná.
  • Spravovaná identita nám pomáhá zajistit zabezpečení na nejvyšší úrovni a eliminuje požadavek, aby vy jako vývojář bezpečně spravoval tajný klíč.
  • Soubory Bicep pro zřizování prostředků Azure, včetně rolí Azure OpenAI, Azure Container Apps, Azure Container Registry, Azure Log Analytics a RBAC
  • Protokol Microsoft AI Chat Protocol poskytuje standardizované kontrakty rozhraní API napříč řešeními a jazyky AI. Chatovací aplikace odpovídá protokolu Microsoft AI Chat Protocol, který umožňuje, aby zkušební aplikace běžela proti jakékoli chatovací aplikaci, která odpovídá protokolu.
  • Python Quart , který používá openai balíček k vygenerování odpovědí na zprávy uživatelů.
  • Základní front-end HTML/JavaScript, který streamuje odpovědi z back-endu pomocí řádků JSON přes readableStream.
  • Webová aplikace TypeScript, která používá balíček openai npm k vygenerování odpovědí na uživatelské zprávy.

Náklady

Při pokusu o co nejnižší ceny v této ukázce používá většina prostředků cenovou úroveň Basic nebo Consumption. Podle potřeby upravte úroveň úrovně na základě zamýšleného využití. Pokud chcete přestat účtovat poplatky, odstraňte prostředky, až budete s článkem hotovi.

Přečtěte si další informace o nákladech v ukázkovém úložišti.

Přečtěte si další informace o nákladech v ukázkovém úložišti.

Přečtěte si další informace o nákladech v ukázkovém úložišti.

Požadavky

Vývojové prostředí kontejneru je k dispozici se všemi závislostmi potřebnými k dokončení tohoto článku. Vývojový kontejner můžete spustit v GitHub Codespaces (v prohlížeči) nebo místně pomocí editoru Visual Studio Code.

Pokud chcete tento článek použít, musíte splnit následující požadavky:

Otevřené vývojové prostředí

Podle následujících pokynů nasaďte předkonfigurované vývojové prostředí obsahující všechny požadované závislosti pro dokončení tohoto článku.

GitHub Codespaces spouští vývojový kontejner spravovaný GitHubem pomocí editoru Visual Studio Code pro web jako uživatelského rozhraní. Pro nejjednodušší vývojové prostředí použijte GitHub Codespaces, abyste měli předinstalované správné vývojářské nástroje a závislosti k dokončení tohoto článku.

Důležité

Všechny účty GitHubu můžou každý měsíc používat Codespaces až 60 hodin zdarma se 2 jádrovými instancemi. Další informace najdete v tématu GitHub Codespaces měsíčně zahrnuté úložiště a hodiny jádra.

Pomocí následujícího postupu vytvořte nový GitHub Codespace ve main větvi Azure-Samples/openai-chat-app-quickstart úložiště GitHub.

  1. Klikněte pravým tlačítkem myši na následující tlačítko a vyberte Otevřít odkaz v novém okně. Tato akce umožňuje mít vývojové prostředí a dokumentaci k dispozici ke kontrole.

  2. Na stránce Create codespace (Vytvořit kódový prostor) zkontrolujte a pak vyberte Create new codespace (Vytvořit nový prostor kódu).

    Snímek obrazovky s potvrzením před vytvořením nového prostoru kódu

  3. Počkejte, až se prostor kódu spustí. Tento proces spuštění může trvat několik minut.

  4. Přihlaste se k Azure pomocí Azure Developer CLI v terminálu v dolní části obrazovky.

    azd auth login
    
  5. Zkopírujte kód z terminálu a vložte ho do prohlížeče. Postupujte podle pokynů k ověření pomocí účtu Azure.

Zbývající úlohy v tomto článku probíhají v kontextu tohoto vývojového kontejneru.

Pomocí následujícího postupu vytvořte nový GitHub Codespace ve main větvi Azure-Samples/openai-chat-app-quickstart-dotnet úložiště GitHub.

  1. Klikněte pravým tlačítkem myši na následující tlačítko a vyberte Otevřít odkaz v novém okně. Tato akce umožňuje mít vývojové prostředí a dokumentaci k dispozici ke kontrole.

  2. Na stránce Create codespace (Vytvořit kódový prostor) zkontrolujte a pak vyberte Create codespace (Vytvořit prostor kódu).

    Snímek obrazovky s potvrzením před vytvořením nového prostoru kódu

  3. Počkejte, až se prostor kódu spustí. Tento proces spuštění může trvat několik minut.

  4. Přihlaste se k Azure pomocí Azure Developer CLI v terminálu v dolní části obrazovky.

    azd auth login
    
  5. Zkopírujte kód z terminálu a vložte ho do prohlížeče. Postupujte podle pokynů k ověření pomocí účtu Azure.

Zbývající úlohy v tomto článku probíhají v kontextu tohoto vývojového kontejneru.

Pomocí následujícího postupu vytvořte nový GitHub Codespace ve main větvi Azure-Samples/openai-chat-app-quickstart-javascript úložiště GitHub.

  1. Klikněte pravým tlačítkem myši na následující tlačítko a vyberte Otevřít odkaz v novém okně. Tato akce umožňuje mít vývojové prostředí a dokumentaci k dispozici ke kontrole.

Otevřít v GitHub Codespaces

  1. Na stránce Create codespace (Vytvořit kódový prostor) zkontrolujte a pak vyberte Create new codespace (Vytvořit nový prostor kódu).

    Snímek obrazovky s potvrzením před vytvořením nového prostoru kódu

  2. Počkejte, až se prostor kódu spustí. Tento proces spuštění může trvat několik minut.

  3. Přihlaste se k Azure pomocí Azure Developer CLI v terminálu v dolní části obrazovky.

    azd auth login
    
  4. Zkopírujte kód z terminálu a vložte ho do prohlížeče. Postupujte podle pokynů k ověření pomocí účtu Azure.

Zbývající úlohy v tomto článku probíhají v kontextu tohoto vývojového kontejneru.

Nasazení a spuštění

Ukázkové úložiště obsahuje všechny soubory kódu a konfigurace pro nasazení chatovací aplikace Azure. Následující kroky vás provedou procesem nasazení ukázkové chatovací aplikace Azure.

Nasazení chatovací aplikace do Azure

Důležité

Prostředky Azure vytvořené v této části účtují okamžité náklady. Tyto prostředky můžou nabíhání nákladů i v případě, že příkaz přerušíte před jeho úplným spuštěním.

  1. Spusťte následující příkaz Azure Developer CLI pro zřizování prostředků Azure a nasazení zdrojového kódu:

    azd up
    
  2. Pomocí následující tabulky odpovězte na výzvy:

    Instrukce Odpověď
    Název prostředí Nechte ho krátkým a malými písmeny. Přidejte svoje jméno nebo alias. Například secure-chat. Používá se jako součást názvu skupiny prostředků.
    Předplatné Vyberte předplatné, ve které chcete prostředky vytvořit.
    Umístění (pro hostování) V seznamu vyberte umístění blízko vás.
    Umístění modelu OpenAI V seznamu vyberte umístění blízko vás. Pokud je stejné umístění dostupné jako vaše první umístění, vyberte ho.
  3. Počkejte, až se aplikace nasadí. Dokončení nasazení obvykle trvá 5 až 10 minut.

Použití chatovací aplikace k kladení otázek do velkého jazykového modelu

  1. V terminálu se po úspěšném nasazení aplikace zobrazí adresa URL.

  2. Výběrem této adresy URL otevřete Deploying service web chatovací aplikaci v prohlížeči.

    Snímek obrazovky chatovací aplikace v prohlížeči s několika návrhy pro vstup chatu a textovým polem chatu pro zadání otázky

  3. V prohlížeči zadejte otázku, například "Proč je spravovaná identita lepší než klíče?".

  4. Odpověď pochází z Azure OpenAI a výsledek se zobrazí.

Prozkoumání ukázkového kódu

I když služba OpenAI a Azure OpenAI využívají společnou klientskou knihovnu Pythonu, při používání koncových bodů Azure OpenAI se vyžadují malé změny kódu. Pojďme se podívat, jak tato ukázka konfiguruje ověřování bez klíčů s ID Microsoft Entra a komunikuje s Azure OpenAI.

Konfigurace ověřování pomocí spravované identity

V této ukázce src\quartapp\chat.py začíná soubor konfigurací ověřování bez klíčů.

Následující fragment kódu používá modul azure.identity.aio k vytvoření asynchronního toku ověřování Microsoft Entra.

Následující fragment kódu používá proměnnou AZURE_CLIENT_IDazd prostředí k vytvoření instance ManagedIdentityCredential schopné ověřování prostřednictvím spravované identity přiřazené uživatelem.

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

Poznámka:

azd Proměnné prostředí prostředků se zřizují během azd nasazování aplikace.

Následující fragment kódu používá AZURE_TENANT_IDazd proměnnou prostředí prostředků k vytvoření instance AzureDeveloperCliCredential schopné ověřování s aktuálním tenantem Microsoft Entra.

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

Klientská knihovna Azure Identity poskytuje přihlašovací údaje – veřejné třídy, které implementují protokol TokenCredential knihovny Azure Core. Přihlašovací údaje představují jedinečný tok ověřování pro získání přístupového tokenu z ID Microsoft Entra. Tyto přihlašovací údaje je možné zřetězeny dohromady a vytvořit seřazenou posloupnost ověřovacích mechanismů, které se mají pokusit.

Následující fragment kódu vytvoří ChainedTokenCredential pomocí ManagedIdentityCredential příkazu a:AzureDeveloperCliCredential

  • Používá se ManagedIdentityCredential pro Azure Functions a Aplikace Azure Service. Spravovaná identita přiřazená uživatelem je podporována předáním objektu client_idManagedIdentityCredential.
  • Používá AzureDeveloperCliCredential se pro místní vývoj. Byla nastavena dříve na základě tenanta Microsoft Entra, který se má použít.
azure_credential = ChainedTokenCredential(
    user_assigned_managed_identity_credential,
    azure_dev_cli_credential
)

Tip

Pořadí přihlašovacích údajů je důležité, protože se používá první platný přístupový token Microsoft Entra. Další informace najdete v článku ChainedTokenCredential Overview .

Následující fragment kódu získá zprostředkovatele tokenu Azure OpenAI na základě vybraných přihlašovacích údajů Azure. Tato hodnota se získá voláním azure.identity.aio.get_bearer_token_provider se dvěma argumenty:

  • azure_credential: Instance ChainedTokenCredential vytvořená dříve pro ověření požadavku.

  • https://cognitiveservices.azure.com/.default: Vyžaduje se jeden nebo více oborů nosných tokenů. V tomto případě koncový bod služby Azure Cognitive Services .

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

Následující řádky kontrolují požadované AZURE_OPENAI_ENDPOINT proměnné prostředí a AZURE_OPENAI_CHATGPT_DEPLOYMENTazd proměnné prostředí prostředků, které se zřizují během azd nasazování aplikace. Pokud hodnota není k dispozici, vyvolá se chyba.

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

Tento fragment kódu inicializuje klienta Azure OpenAI, nastaví api_versionparametry , azure_endpointa 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,
)  

Následující řádek nastaví název nasazení modelu Azure OpenAI pro použití ve voláních rozhraní API:

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

Poznámka:

OpenAI používá argument klíčového model slova k určení modelu, který se má použít. Azure OpenAI má koncept jedinečných nasazení modelu. Při použití Azure OpenAI model by se měl odkazovat na základní název nasazení zvolený během nasazení modelu Azure OpenAI.

Po dokončení této funkce je klient správně nakonfigurovaný a připravený k interakci se službami Azure OpenAI.

Stream odpovědí s využitím klienta OpenAI a modelu

Zpracovává response_stream hovor dokončení chatu v trase. Následující fragment kódu ukazuje, jak openai_client a model jak se používají.

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

Prozkoumání ukázkového kódu

Aplikace .NET spoléhají na klientskou knihovnu Azure.AI.OpenAI ke komunikaci se službami Azure OpenAI, což závisí na knihovně OpenAI . Ukázková aplikace konfiguruje ověřování bez klíčů pomocí ID Microsoft Entra ke komunikaci s Azure OpenAI.

Konfigurace ověřování a registrace služby

V této ukázce je v souboru nakonfigurované program.cs ověřování bez klíčů. Následující fragment kódu používá AZURE_CLIENT_ID proměnnou prostředí nastavenou vytvořením azd instance ManagedIdentityCredential umožňující ověřování prostřednictvím spravované identity přiřazené uživatelem.

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

Poznámka:

azd Proměnné prostředí prostředků se zřizují během azd nasazování aplikace.

Následující fragment kódu používá AZURE_TENANT_ID proměnnou prostředí nastavenou azd k vytvoření instance AzureDeveloperCliCredential schopné ověřování místně pomocí přihlášeného azdúčtu .

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

Klientská knihovna Azure Identity poskytuje třídy přihlašovacích údajů, které implementují protokol TokenCredential knihovny Azure Core. Přihlašovací údaje představují jedinečný tok ověřování pro získání přístupového tokenu z ID Microsoft Entra. Tyto přihlašovací údaje je možné zřetězeny pomocí ChainedTokenCredential seřazené posloupnosti ověřovacích mechanismů, které se mají pokusit.

Následující fragment kódu zaregistruje AzureOpenAIClient injektáž závislostí a vytvoří ChainedTokenCredential pomocí ManagedIdentityCredential příkazu a:AzureDeveloperCliCredential

  • Používá se ManagedIdentityCredential pro Azure Functions a Aplikace Azure Service. Spravovaná identita přiřazená uživatelem se podporuje pomocí AZURE_CLIENT_ID poskytnuté identity ManagedIdentityCredential.
  • Používá AzureDeveloperCliCredential se pro místní vývoj. Byla nastavena dříve na základě tenanta Microsoft Entra, který se má použít.
builder.Services.AddAzureClients(
    clientBuilder => {
        clientBuilder.AddClient<AzureOpenAIClient, AzureOpenAIClientOptions>((options, _, _)
            => new AzureOpenAIClient(
                new Uri(endpoint),
                new ChainedTokenCredential(
                    userAssignedIdentityCredential, azureDevCliCredential), options));
    });

Tip

Pořadí přihlašovacích údajů je důležité, protože se používá první platný přístupový token Microsoft Entra. Další informace najdete v článku ChainedTokenCredential Overview .

Získání dokončování chatu pomocí klienta Azure OpenAI

Webová aplikace Blazor vloží zaregistrovanou AzureOpenAIClient v horní části Home.Razor komponenty:

@inject AzureOpenAIClient azureOpenAIClient

Když uživatel odešle formulář, AzureOpenAIClient odešle jeho výzvu k vygenerování dokončení modelu OpenAI:

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

Prozkoumání ukázkového kódu

I když služba OpenAI a Azure OpenAI využívají openai (běžnou klientskou knihovnu JavaScriptu), při používání koncových bodů Azure OpenAI se vyžadují malé změny kódu. Pojďme se podívat, jak tato ukázka konfiguruje ověřování bez klíčů s ID Microsoft Entra a komunikuje s Azure OpenAI.

Ověřování bez klíčů pro každé prostředí

Klientská knihovna Azure Identity poskytuje třídy přihlašovacích údajů, které implementují protokol TokenCredential knihovny Azure Core. Přihlašovací údaje představují jedinečný tok ověřování pro získání přístupového tokenu z ID Microsoft Entra. Tyto přihlašovací údaje je možné zřetězeny pomocí ChainedTokenCredential seřazené posloupnosti ověřovacích mechanismů, které se mají pokusit. To vám umožní nasadit stejný kód v produkčním i místním vývojovém prostředí.

Diagram znázorňující dvě přihlašovací údaje v toku, kde se spravovaná identita zkouší jako první, pak se zkusí výchozí přihlašovací údaje Azure.

Konfigurace ověřování pomocí spravované identity

V této ukázce ./src/azure-authentication.ts poskytuje několik funkcí, které poskytují ověřování bez klíčů pro Azure OpenAI.

První funkce getChainedCredential()vrátí první platné přihlašovací údaje Azure nalezené v řetězci.

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

Tip

Pořadí přihlašovacích údajů je důležité, protože se používá první platný přístupový token Microsoft Entra. Další informace najdete v článku ChainedTokenCredential Overview .

Získání nosný token pro OpenAI

Druhá funkce ./src/azure-authentication.ts je , která vrací zpětné volání, které poskytuje nosný token vymezený na getTokenProvider().

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

Předchozí fragment kódu používá getBearerTokenProvider k převzetí přihlašovacích údajů a oboru a poté vrátí zpětné volání, které poskytuje nosný token.

Vytvoření ověřeného klienta Azure OpenAI

Třetí funkcí ./src/azure-authentication.ts je getOpenAiClient(), která vrací klienta 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);
    }
}

Tento kód přebírá možnosti, včetně správného tokenu s vymezeným oborem, a vytvoří klienta.AzureOpenAI

Streamování odpovědí na chat pomocí Azure OpenAI

Pomocí následující obslužné rutiny ./src/openai-chat-api.ts trasy Fastify odešlete zprávu do Azure OpenAI a streamujte odpověď.

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

}

Funkce získá chatovou konverzaci, včetně všech předchozích zpráv, a odešle je do Azure OpenAI. Vzhledem k tomu, že se bloky streamu vrací z Azure OpenAI, odešlou se klientovi.

Další aspekty zabezpečení

Tento článek ukazuje, jak ukázka používá ChainedTokenCredential k ověřování ve službě Azure OpenAI.

Ukázka má také akci GitHubu , která prohledá soubory infrastruktury jako kódu a vygeneruje sestavu obsahující všechny zjištěné problémy. Pokud chcete zajistit trvalé osvědčené postupy ve vašem vlastním úložišti, doporučujeme, aby každý, kdo vytváří řešení na základě našich šablon, zajistil, že je povolené nastavení kontroly tajných kódů GitHubu.

Zvažte další bezpečnostní opatření, například:

Vyčištění prostředků

Vyčištění prostředků Azure

Prostředky Azure vytvořené v tomto článku se fakturují k vašemu předplatnému Azure. Pokud v budoucnu tyto prostředky nepotřebujete, odstraňte je, abyste se vyhnuli účtování dalších poplatků.

Pokud chcete odstranit prostředky Azure a odebrat zdrojový kód, spusťte následující příkaz Azure Developer CLI:

azd down --purge

Vyčištění služby GitHub Codespaces

Odstraněním prostředí GitHub Codespaces zajistíte, že můžete maximalizovat nárok na počet bezplatných hodin za jádro, které získáte pro svůj účet.

Důležité

Další informace o oprávněních účtu GitHub najdete v tématu GitHub Codespaces měsíčně zahrnuté hodiny úložiště a jádra.

  1. Přihlaste se k řídicímu panelu GitHub Codespaces (https://github.com/codespaces).

  2. Vyhledejte aktuálně spuštěné Codespaces zdrojové z Azure-Samples/openai-chat-app-quickstart úložiště GitHub.

  3. Otevřete místní nabídku pro codespace a pak vyberte Odstranit.

  1. Přihlaste se k řídicímu panelu GitHub Codespaces (https://github.com/codespaces).

  2. Vyhledejte aktuálně spuštěné Codespaces zdrojové z Azure-Samples/openai-chat-app-quickstart-dotnet úložiště GitHub.

  3. Otevřete místní nabídku pro codespace a pak vyberte Odstranit.

  1. Přihlaste se k řídicímu panelu GitHub Codespaces (https://github.com/codespaces).

  2. Vyhledejte aktuálně spuštěné Codespaces zdrojové z Azure-Samples/openai-chat-app-quickstart-javascript úložiště GitHub.

  3. Otevřete místní nabídku pro codespace a pak vyberte Odstranit.

Získání pomoci

Pokud se váš problém nevyřeší, zapište problém do problémů úložiště.

Další kroky

Pokud se váš problém nevyřeší, zapište problém do problémů úložiště.

Pokud se váš problém nevyřeší, zapište problém do problémů úložiště.