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:
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 Blazor, která používá balíček NuGet Azure.AI.OpenAI k vygenerování odpovědí na zprávy uživatelů.
- 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:
Předplatné Azure – Vytvoření předplatného zdarma
Oprávnění účtu Azure – Váš účet Azure musí mít
Microsoft.Authorization/roleAssignments/write
oprávnění, jako je správce uživatelských přístupů nebo vlastník.Účet GitHub
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.
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.
Na stránce Create codespace (Vytvořit kódový prostor) zkontrolujte a pak vyberte Create new codespace (Vytvořit nový prostor kódu).
Počkejte, až se prostor kódu spustí. Tento proces spuštění může trvat několik minut.
Přihlaste se k Azure pomocí Azure Developer CLI v terminálu v dolní části obrazovky.
azd auth login
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.
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.
Na stránce Create codespace (Vytvořit kódový prostor) zkontrolujte a pak vyberte Create codespace (Vytvořit prostor kódu).
Počkejte, až se prostor kódu spustí. Tento proces spuštění může trvat několik minut.
Přihlaste se k Azure pomocí Azure Developer CLI v terminálu v dolní části obrazovky.
azd auth login
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.
- 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.
Na stránce Create codespace (Vytvořit kódový prostor) zkontrolujte a pak vyberte Create new codespace (Vytvořit nový prostor kódu).
Počkejte, až se prostor kódu spustí. Tento proces spuštění může trvat několik minut.
Přihlaste se k Azure pomocí Azure Developer CLI v terminálu v dolní části obrazovky.
azd auth login
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.
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
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. 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
V terminálu se po úspěšném nasazení aplikace zobrazí adresa URL.
Výběrem této adresy URL otevřete
Deploying service web
chatovací aplikaci v prohlížeči.V prohlížeči zadejte otázku, například "Proč je spravovaná identita lepší než klíče?".
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_ID
azd
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_ID
azd
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 objektuclient_id
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.
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
: InstanceChainedTokenCredential
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_DEPLOYMENT
azd
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_version
parametry , azure_endpoint
a 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é identityManagedIdentityCredential
. - 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í.
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
})
);
}
- Nejprve se pokusíte o ManagedIdentityCredential . Je nastavená pomocí proměnné prostředí AZURE_CLIENT_ID v produkčním modulu runtime a dokáže se ověřovat prostřednictvím spravované identity přiřazené uživatelem.
-
AzureDeveloperCliCredential se pokusí o sekundu. Nastaví se při vývoji přihlášení pomocí Azure CLI
az login
.
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:
Omezte přístup k příslušné sadě uživatelů aplikací pomocí Microsoft Entra.
Ochrana instance Azure Container Apps pomocí brány firewall nebo virtuální sítě
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.
Přihlaste se k řídicímu panelu GitHub Codespaces (https://github.com/codespaces).
Vyhledejte aktuálně spuštěné Codespaces zdrojové z
Azure-Samples/openai-chat-app-quickstart
úložiště GitHub.Otevřete místní nabídku pro codespace a pak vyberte Odstranit.
Přihlaste se k řídicímu panelu GitHub Codespaces (https://github.com/codespaces).
Vyhledejte aktuálně spuštěné Codespaces zdrojové z
Azure-Samples/openai-chat-app-quickstart-dotnet
úložiště GitHub.Otevřete místní nabídku pro codespace a pak vyberte Odstranit.
Přihlaste se k řídicímu panelu GitHub Codespaces (https://github.com/codespaces).
Vyhledejte aktuálně spuštěné Codespaces zdrojové z
Azure-Samples/openai-chat-app-quickstart-javascript
úložiště GitHub.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ě.