Aan de slag met de bouwsteen beveiliging van Azure OpenAI
In dit artikel leest u hoe u het azure OpenAI-bouwsteenvoorbeeld voor beveiliging maakt en gebruikt. Het doel is om het inrichten van Azure OpenAI-accounts te demonstreren met op rollen gebaseerd toegangsbeheer (RBAC) voor sleutelloze verificatie (Microsoft Entra ID) voor Azure OpenAI. Dit voorbeeld van een chat-app bevat ook alle infrastructuur en configuratie die nodig zijn voor het inrichten van Azure OpenAI-resources en het implementeren van de app in Azure Container Apps met behulp van de Azure Developer CLI.
Door de instructies in dit artikel te volgen, gaat u het volgende doen:
- Implementeer een beveiligde Azure Container-chat-app.
- Beheerde identiteit gebruiken voor Toegang tot Azure OpenAI.
- Chat met een Azure OpenAI Large Language Model (LLM) met behulp van de OpenAI-bibliotheek.
Zodra u dit artikel hebt voltooid, kunt u beginnen met het wijzigen van het nieuwe project met uw aangepaste code en gegevens.
Notitie
In dit artikel worden een of meer AI-app-sjablonen gebruikt als basis voor de voorbeelden en richtlijnen in het artikel. AI-app-sjablonen bieden u een goed onderhouden, eenvoudig te implementeren referentie-implementaties die u helpen een startpunt van hoge kwaliteit voor uw AI-apps te garanderen.
Architectuuroverzicht
In het volgende diagram ziet u een eenvoudige architectuur van de chat-app:
De chat-app wordt uitgevoerd als een Azure Container App. De app gebruikt beheerde identiteit via Microsoft Entra ID om te verifiëren met Azure OpenAI, in plaats van een API-sleutel. De chat-app maakt gebruik van Azure OpenAI om reacties op gebruikersberichten te genereren.
De toepassingsarchitectuur is afhankelijk van de volgende services en onderdelen:
- Azure OpenAI vertegenwoordigt de AI-provider waarnaar we de query's van de gebruiker verzenden.
- Azure Container Apps is de containeromgeving waar de toepassing wordt gehost.
- Managed Identity helpt ons om beveiliging van de beste klasse te garanderen en elimineert de vereiste voor u als ontwikkelaar om een geheim veilig te beheren.
- Bicep-bestanden voor het inrichten van Azure-resources, waaronder Azure OpenAI, Azure Container Apps, Azure Container Registry, Azure Log Analytics en RBAC-rollen.
- Microsoft AI Chat Protocol biedt gestandaardiseerde API-contracten voor AI-oplossingen en -talen. De chat-app voldoet aan het Microsoft AI Chat Protocol, waarmee de evaluaties-app kan worden uitgevoerd op elke chat-app die voldoet aan het protocol.
- Een Python Quart die het
openai
pakket gebruikt om reacties op gebruikersberichten te genereren. - Een eenvoudige HTML-/JavaScript-front-end die reacties van de back-end streamt met behulp van JSON-lijnen via een ReadableStream.
- Een Blazor-web-app die gebruikmaakt van het NuGet-pakket Azure.AI.OpenAI om antwoorden op gebruikersberichten te genereren.
- Een TypeScript-web-app die gebruikmaakt van het openai npm-pakket om antwoorden op gebruikersberichten te genereren.
Kosten
In een poging om prijzen zo laag mogelijk te houden in dit voorbeeld, gebruiken de meeste resources een prijscategorie basis- of verbruiksprijzen. Wijzig het niveau van uw laag indien nodig op basis van het beoogde gebruik. Als u wilt stoppen met het maken van kosten, verwijdert u de resources wanneer u klaar bent met het artikel.
Meer informatie over kosten in de voorbeeldopslagplaats.
Meer informatie over kosten in de voorbeeldopslagplaats.
Meer informatie over kosten in de voorbeeldopslagplaats.
Vereisten
Er is een ontwikkelcontaineromgeving beschikbaar met alle afhankelijkheden die nodig zijn om dit artikel te voltooien. U kunt de ontwikkelcontainer uitvoeren in GitHub Codespaces (in een browser) of lokaal met behulp van Visual Studio Code.
Als u dit artikel wilt gebruiken, moet u voldoen aan de volgende vereisten:
Een Azure-abonnement - Een gratis abonnement maken
Azure-accountmachtigingen: uw Azure-account moet machtigingen hebben
Microsoft.Authorization/roleAssignments/write
, zoals beheerder van gebruikerstoegang of eigenaar.GitHub-account
Open ontwikkelomgeving
Gebruik de volgende instructies om een vooraf geconfigureerde ontwikkelomgeving met alle vereiste afhankelijkheden te implementeren om dit artikel te voltooien.
GitHub Codespaces voert een ontwikkelcontainer uit die wordt beheerd door GitHub met Visual Studio Code voor het web als de gebruikersinterface. Voor de eenvoudigste ontwikkelomgeving gebruikt u GitHub Codespaces zodat u de juiste ontwikkelhulpprogramma's en afhankelijkheden vooraf hebt geïnstalleerd om dit artikel te voltooien.
Belangrijk
Alle GitHub-accounts kunnen Codespaces elke maand maximaal 60 uur gratis gebruiken met 2 kernexemplaren. Zie GitHub Codespaces maandelijks inbegrepen opslag- en kernuren voor meer informatie.
Gebruik de volgende stappen om een nieuwe GitHub Codespace te maken in de main
vertakking van de Azure-Samples/openai-chat-app-quickstart
GitHub-opslagplaats.
Klik met de rechtermuisknop op de volgende knop en selecteer Koppeling openen in een nieuw venster. Met deze actie kunt u beschikken over de ontwikkelomgeving en de documentatie die ter beoordeling beschikbaar is.
Controleer op de pagina Codespace maken en selecteer vervolgens Nieuwe coderuimte maken
Wacht tot de coderuimte is gestart. Dit opstartproces kan enkele minuten duren.
Meld u aan bij Azure met de Azure Developer CLI in de terminal onderaan het scherm.
azd auth login
Kopieer de code uit de terminal en plak deze in een browser. Volg de instructies voor verificatie met uw Azure-account.
De resterende taken in dit artikel vinden plaats in de context van deze ontwikkelingscontainer.
Gebruik de volgende stappen om een nieuwe GitHub Codespace te maken in de main
vertakking van de Azure-Samples/openai-chat-app-quickstart-dotnet
GitHub-opslagplaats.
Klik met de rechtermuisknop op de volgende knop en selecteer Koppeling openen in een nieuw venster. Met deze actie kunt u beschikken over de ontwikkelomgeving en de documentatie die ter beoordeling beschikbaar is.
Controleer op de pagina Codespace maken en selecteer vervolgens Codespace maken
Wacht tot de coderuimte is gestart. Dit opstartproces kan enkele minuten duren.
Meld u aan bij Azure met de Azure Developer CLI in de terminal onderaan het scherm.
azd auth login
Kopieer de code uit de terminal en plak deze in een browser. Volg de instructies voor verificatie met uw Azure-account.
De resterende taken in dit artikel vinden plaats in de context van deze ontwikkelingscontainer.
Gebruik de volgende stappen om een nieuwe GitHub Codespace te maken in de main
vertakking van de Azure-Samples/openai-chat-app-quickstart-javascript
GitHub-opslagplaats.
- Klik met de rechtermuisknop op de volgende knop en selecteer Koppeling openen in een nieuw venster. Met deze actie kunt u beschikken over de ontwikkelomgeving en de documentatie die ter beoordeling beschikbaar is.
Controleer op de pagina Codespace maken en selecteer vervolgens Nieuwe coderuimte maken
Wacht tot de coderuimte is gestart. Dit opstartproces kan enkele minuten duren.
Meld u aan bij Azure met de Azure Developer CLI in de terminal onderaan het scherm.
azd auth login
Kopieer de code uit de terminal en plak deze in een browser. Volg de instructies voor verificatie met uw Azure-account.
De resterende taken in dit artikel vinden plaats in de context van deze ontwikkelingscontainer.
Implementeren en uitvoeren
De voorbeeldopslagplaats bevat alle code- en configuratiebestanden voor de implementatie van de Chat-app in Azure. Met de volgende stappen doorloopt u het azure-implementatieproces van de voorbeeldchat-app.
Chat-app implementeren in Azure
Belangrijk
Voor Azure-resources die in deze sectie zijn gemaakt, worden directe kosten in rekening gebracht. Deze resources kunnen kosten genereren, zelfs als u de opdracht onderbreekt voordat deze volledig wordt uitgevoerd.
Voer de volgende Azure Developer CLI-opdracht uit voor het inrichten van Azure-resources en de implementatie van broncode:
azd up
Gebruik de volgende tabel om de prompts te beantwoorden:
Prompt Antwoord Omgevingsnaam Houd het kort en kleine letters. Voeg uw naam of alias toe. Bijvoorbeeld: secure-chat
. Deze wordt gebruikt als onderdeel van de naam van de resourcegroep.Abonnement Selecteer het abonnement waarin u de resources wilt maken. Locatie (voor hosting) Selecteer een locatie bij u in de buurt in de lijst. Locatie voor het OpenAI-model Selecteer een locatie bij u in de buurt in de lijst. Als dezelfde locatie beschikbaar is als uw eerste locatie, selecteert u die. Wacht totdat de app is geïmplementeerd. De implementatie duurt meestal tussen 5 en 10 minuten.
Chat-app gebruiken om vragen te stellen aan het grote taalmodel
In de terminal wordt een URL weergegeven na een geslaagde implementatie van de toepassing.
Selecteer die URL die is gelabeld
Deploying service web
om de chattoepassing in een browser te openen.Voer in de browser een vraag in, zoals 'Waarom is beheerde identiteit beter dan sleutels?'.
Het antwoord is afkomstig van Azure OpenAI en het resultaat wordt weergegeven.
De voorbeeldcode verkennen
Hoewel OpenAI en Azure OpenAI Service afhankelijk zijn van een algemene Python-clientbibliotheek, zijn kleine codewijzigingen nodig bij het gebruik van Azure OpenAI-eindpunten. Laten we eens kijken hoe dit voorbeeld sleutelloze verificatie configureert met Microsoft Entra ID en communiceert met Azure OpenAI.
Verificatie configureren met beheerde identiteit
In dit voorbeeld begint het bestand met het src\quartapp\chat.py
configureren van sleutelloze verificatie.
In het volgende codefragment wordt de module azure.identity.aio gebruikt om een asynchrone Microsoft Entra-verificatiestroom te maken.
In het volgende codefragment wordt de AZURE_CLIENT_ID
azd
omgevingsvariabele gebruikt om een ManagedIdentityCredential-exemplaar te maken dat kan worden geverifieerd via door de gebruiker toegewezen beheerde identiteit.
user_assigned_managed_identity_credential = ManagedIdentityCredential(client_id=os.getenv("AZURE_CLIENT_ID"))
Notitie
De azd
resourceomgevingsvariabelen worden ingericht tijdens azd
de implementatie van de app.
In het volgende codefragment wordt een resourceomgevingsvariabele gebruikt AZURE_TENANT_ID
azd
om een AzureDeveloperCliCredential-exemplaar te maken dat kan worden geverifieerd met de huidige Microsoft Entra-tenant.
azure_dev_cli_credential = AzureDeveloperCliCredential(tenant_id=os.getenv("AZURE_TENANT_ID"), process_timeout=60)
De Azure Identity-clientbibliotheek biedt referenties: openbare klassen die het TokenCredential-protocol van de Azure Core-bibliotheek implementeren. Een referentie vertegenwoordigt een afzonderlijke verificatiestroom voor het verkrijgen van een toegangstoken van Microsoft Entra-id. Deze referenties kunnen worden gekoppeld om een geordende reeks verificatiemechanismen te vormen die moeten worden geprobeerd.
Het volgende codefragment maakt een ChainedTokenCredential
met behulp van een ManagedIdentityCredential
en een AzureDeveloperCliCredential
:
- Het
ManagedIdentityCredential
wordt gebruikt voor Azure Functions en Azure-app Service. Een door de gebruiker toegewezen beheerde identiteit wordt ondersteund door declient_id
gebruiker door te geven aanManagedIdentityCredential
. - De
AzureDeveloperCliCredential
wordt gebruikt voor lokale ontwikkeling. Deze is eerder ingesteld op basis van de Microsoft Entra-tenant die moet worden gebruikt.
azure_credential = ChainedTokenCredential(
user_assigned_managed_identity_credential,
azure_dev_cli_credential
)
Tip
De volgorde van de referenties is belangrijk, omdat het eerste geldige Microsoft Entra-toegangstoken wordt gebruikt. Raadpleeg het artikel ChainedTokenCredential Overview voor meer informatie.
Met het volgende codefragment wordt de Azure OpenAI-tokenprovider opgehaald op basis van de geselecteerde Azure-referentie. Deze waarde wordt verkregen door de azure.identity.aio.get_bearer_token_provider aan te roepen met twee argumenten:
azure_credential
: hetChainedTokenCredential
exemplaar dat u eerder hebt gemaakt om de aanvraag te verifiëren.https://cognitiveservices.azure.com/.default
: Vereist een of meer bearer-tokenbereiken. In dit geval het Azure Cognitive Services-eindpunt .
token_provider = get_bearer_token_provider(
azure_credential, "https://cognitiveservices.azure.com/.default"
)
De volgende regels controleren op de vereiste AZURE_OPENAI_ENDPOINT
en AZURE_OPENAI_CHATGPT_DEPLOYMENT
azd
resourceomgevingsvariabelen die tijdens de implementatie van de app worden ingericht azd
. Er wordt een fout gegenereerd als er geen waarde aanwezig is.
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")
Met dit fragment wordt de Azure OpenAI-client geïnitialiseerd, de api_version
parameters , azure_endpoint
en azure_ad_token_provider
(client_args
) ingesteld:
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,
)
Met de volgende regel stelt u de implementatienaam van het Azure OpenAI-model in voor gebruik in API-aanroepen:
bp.openai_model = os.getenv("AZURE_OPENAI_CHATGPT_DEPLOYMENT")
Notitie
OpenAI gebruikt het model
trefwoordargument om op te geven welk model moet worden gebruikt. Azure OpenAI heeft het concept van unieke modelimplementaties. Wanneer u Azure OpenAI gebruikt, model
moet u verwijzen naar de onderliggende implementatienaam die is gekozen tijdens de implementatie van het Azure OpenAI-model.
Zodra deze functie is voltooid, is de client correct geconfigureerd en klaar om te communiceren met Azure OpenAI-services.
Antwoordstroom met behulp van de OpenAI-client en het model
De response_stream
chat-voltooiingsoproep wordt verwerkt in de route. Het volgende codefragment laat zien hoe openai_client
en model
worden gebruikt.
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,
)
De voorbeeldcode verkennen
.NET-toepassingen zijn afhankelijk van de Azure.AI.OpenAI-clientbibliotheek om te communiceren met Azure OpenAI-services, die afhankelijk zijn van de OpenAI-bibliotheek . De voorbeeld-app configureert sleutelloze verificatie met behulp van Microsoft Entra ID om te communiceren met Azure OpenAI.
Verificatie en serviceregistratie configureren
In dit voorbeeld wordt sleutelloze verificatie geconfigureerd in het program.cs
bestand. In het volgende codefragment wordt de AZURE_CLIENT_ID
omgevingsvariabele gebruikt die is ingesteld om azd
een ManagedIdentityCredential-exemplaar te maken dat kan worden geverifieerd via door de gebruiker toegewezen beheerde identiteit.
var userAssignedIdentityCredential =
new ManagedIdentityCredential(builder.Configuration.GetValue<string>("AZURE_CLIENT_ID"));
Notitie
De azd
resourceomgevingsvariabelen worden ingericht tijdens azd
de implementatie van de app.
In het volgende codefragment wordt de AZURE_TENANT_ID
omgevingsvariabele gebruikt die is ingesteld om azd
een AzureDeveloperCliCredential-exemplaar te maken dat lokaal kan worden geverifieerd met behulp van het account dat is azd
aangemeld.
var azureDevCliCredential = new AzureDeveloperCliCredential(
new AzureDeveloperCliCredentialOptions()
{
TenantId = builder.Configuration.GetValue<string>("AZURE_TENANT_ID")
});
De Azure Identity-clientbibliotheek biedt referentieklassen waarmee het TokenCredential-protocol van de Azure Core-bibliotheek wordt geïmplementeerd. Een referentie vertegenwoordigt een afzonderlijke verificatiestroom voor het verkrijgen van een toegangstoken van Microsoft Entra-id. Deze referenties kunnen worden gekoppeld met behulp van ChainedTokenCredential
een geordende reeks verificatiemechanismen die moeten worden geprobeerd.
Het volgende codefragment registreert de AzureOpenAIClient
voor afhankelijkheidsinjectie en maakt een ChainedTokenCredential
met een ManagedIdentityCredential
en een AzureDeveloperCliCredential
:
- Het
ManagedIdentityCredential
wordt gebruikt voor Azure Functions en Azure-app Service. Een door de gebruiker toegewezen beheerde identiteit wordt ondersteund met behulp van deAZURE_CLIENT_ID
identiteit die aan deManagedIdentityCredential
. - De
AzureDeveloperCliCredential
wordt gebruikt voor lokale ontwikkeling. Deze is eerder ingesteld op basis van de Microsoft Entra-tenant die moet worden gebruikt.
builder.Services.AddAzureClients(
clientBuilder => {
clientBuilder.AddClient<AzureOpenAIClient, AzureOpenAIClientOptions>((options, _, _)
=> new AzureOpenAIClient(
new Uri(endpoint),
new ChainedTokenCredential(
userAssignedIdentityCredential, azureDevCliCredential), options));
});
Tip
De volgorde van de referenties is belangrijk, omdat het eerste geldige Microsoft Entra-toegangstoken wordt gebruikt. Raadpleeg het artikel ChainedTokenCredential Overview voor meer informatie.
Chatvoltooien ophalen met behulp van de Azure OpenAI-client
De Blazor-web-app injecteert de geregistreerde AzureOpenAIClient
gegevens boven aan het Home.Razor
onderdeel:
@inject AzureOpenAIClient azureOpenAIClient
Wanneer de gebruiker het formulier verzendt, wordt de AzureOpenAIClient
prompt naar het OpenAI-model verzonden om een voltooiing te genereren:
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));
De voorbeeldcode verkennen
Hoewel OpenAI en De Azure OpenAI-service afhankelijk zijn van een openai (algemene JavaScript-clientbibliotheek), zijn kleine codewijzigingen nodig bij het gebruik van Azure OpenAI-eindpunten. Laten we eens kijken hoe dit voorbeeld sleutelloze verificatie configureert met Microsoft Entra ID en communiceert met Azure OpenAI.
Sleutelloze verificatie voor elke omgeving
De Azure Identity-clientbibliotheek biedt referentieklassen waarmee het TokenCredential-protocol van de Azure Core-bibliotheek wordt geïmplementeerd. Een referentie vertegenwoordigt een afzonderlijke verificatiestroom voor het verkrijgen van een toegangstoken van Microsoft Entra-id. Deze referenties kunnen worden gekoppeld met behulp van ChainedTokenCredential
een geordende reeks verificatiemechanismen die moeten worden geprobeerd. Hiermee kunt u dezelfde code implementeren in zowel productie- als lokale ontwikkelomgevingen.
Verificatie configureren met beheerde identiteit
In dit voorbeeld biedt de ./src/azure-authentication.ts
functie verschillende functies voor sleutelloze verificatie voor Azure OpenAI.
De eerste functie, getChainedCredential()
retourneert de eerste geldige Azure-referentie die in de keten is gevonden.
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 wordt eerst geprobeerd. Deze is ingesteld met de AZURE_CLIENT_ID omgevingsvariabele in de productieruntime en kan worden geverifieerd via door de gebruiker toegewezen beheerde identiteit.
- AzureDeveloperCliCredential wordt een tweede poging uitgevoerd. Deze wordt ingesteld wanneer een ontwikkelinterface zich aanmeldt met Azure CLI
az login
.
Tip
De volgorde van de referenties is belangrijk, omdat het eerste geldige Microsoft Entra-toegangstoken wordt gebruikt. Raadpleeg het artikel ChainedTokenCredential Overview voor meer informatie.
Bearer-token ophalen voor OpenAI
De tweede functie ./src/azure-authentication.ts
is getTokenProvider()
, die een callback retourneert die een bearer-token biedt dat is gericht op het Azure Cognitive Services-eindpunt .
function getTokenProvider(): () => Promise<string> {
const credential = getChainedCredential();
const scope = "https://cognitiveservices.azure.com/.default";
return getBearerTokenProvider(credential, scope);
}
Het voorgaande codefragment gebruikt getBearerTokenProvider
om de referentie en het bereik te nemen en retourneert vervolgens een callback die een bearer-token biedt.
Geverifieerde Azure OpenAI-client maken
De derde functie is ./src/azure-authentication.ts
getOpenAiClient()
, waarmee de Azure OpenAI-client wordt geretourneerd.
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);
}
}
Deze code gebruikt de opties, inclusief het correct scoped token, en maakt de AzureOpenAI
client
Chatantwoord streamen met Azure OpenAI
Gebruik de volgende Fastify-routehandler om ./src/openai-chat-api.ts
een bericht naar Azure OpenAI te verzenden en het antwoord te streamen.
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()
}
De functie haalt het chatgesprek op, inclusief eventuele eerdere berichten, en verzendt deze naar Azure OpenAI. Wanneer de streamsegmenten worden geretourneerd vanuit Azure OpenAI, worden de segmenten naar de client verzonden.
Andere beveiligingsoverwegingen
In dit artikel ziet u hoe het voorbeeld wordt gebruikt ChainedTokenCreadential
voor verificatie bij de Azure OpenAI-service.
Het voorbeeld bevat ook een GitHub-actie waarmee de bestanden met infrastructuur als code worden gescand en een rapport wordt gegenereerd met gedetecteerde problemen. Om ervoor te zorgen dat de aanbevolen procedures in uw eigen opslagplaats worden voortgezet, is het raadzaam dat iedereen die oplossingen maakt op basis van onze sjablonen, ervoor zorgt dat de instelling voor het scannen van gitHub-geheimen is ingeschakeld.
Overweeg andere beveiligingsmaatregelen, zoals:
Beperk de toegang tot de juiste set app-gebruikers met Behulp van Microsoft Entra.
Het Azure Container Apps-exemplaar beveiligen met een firewall en/of virtueel netwerk.
Resources opschonen
Azure-resources opschonen
De Azure-resources die in dit artikel zijn gemaakt, worden gefactureerd voor uw Azure-abonnement. Als u deze resources in de toekomst niet meer nodig hebt, verwijdert u deze om te voorkomen dat er meer kosten in rekening worden gebracht.
Als u de Azure-resources wilt verwijderen en de broncode wilt verwijderen, voert u de volgende Azure Developer CLI-opdracht uit:
azd down --purge
GitHub Codespaces opschonen
Als u de GitHub Codespaces-omgeving verwijdert, zorgt u ervoor dat u de hoeveelheid gratis rechten per kernuren kunt maximaliseren die u voor uw account krijgt.
Belangrijk
Zie GitHub Codespaces maandelijks inbegrepen opslag- en kernuren voor meer informatie over de rechten van uw GitHub-account.
Meld u aan bij het GitHub Codespaces-dashboard (https://github.com/codespaces).
Zoek uw momenteel uitgevoerde Codespaces die afkomstig zijn uit de
Azure-Samples/openai-chat-app-quickstart
GitHub-opslagplaats.Open het contextmenu voor de coderuimte en selecteer Vervolgens Verwijderen.
Meld u aan bij het GitHub Codespaces-dashboard (https://github.com/codespaces).
Zoek uw momenteel uitgevoerde Codespaces die afkomstig zijn uit de
Azure-Samples/openai-chat-app-quickstart-dotnet
GitHub-opslagplaats.Open het contextmenu voor de coderuimte en selecteer Vervolgens Verwijderen.
Meld u aan bij het GitHub Codespaces-dashboard (https://github.com/codespaces).
Zoek uw momenteel uitgevoerde Codespaces die afkomstig zijn uit de
Azure-Samples/openai-chat-app-quickstart-javascript
GitHub-opslagplaats.Open het contextmenu voor de coderuimte en selecteer Vervolgens Verwijderen.
Hulp vragen
Als uw probleem niet is opgelost, meldt u het probleem aan bij de problemen van de opslagplaats.
Volgende stappen
Als uw probleem niet is opgelost, meldt u het probleem aan bij de problemen van de opslagplaats.
Als uw probleem niet is opgelost, meldt u het probleem aan bij de problemen van de opslagplaats.