Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Ez a cikk bemutatja, hogyan hozhatja létre és használhatja az Azure OpenAI biztonsági építőelem-mintáját. A cél az Azure OpenAI-fiók szerepköralapú hozzáférés-vezérléssel (RBAC) történő kiépítésének bemutatása az Azure OpenAI-ba történő kulcs nélküli (Microsoft Entra ID) hitelesítéshez. Ez a csevegőalkalmazás-minta tartalmazza az Azure OpenAI-erőforrások kiépítéséhez és az Azure Container Appsben az Azure Developer CLI használatával történő üzembe helyezéséhez szükséges összes infrastruktúrát és konfigurációt.
A cikkben található utasításokat követve a következőket fogja követni:
- Biztonságos Azure Container-csevegőalkalmazás üzembe helyezése.
- Felügyelt identitás használata az Azure OpenAI-hozzáféréshez.
- Csevegjen egy Nagy Méretű Azure OpenAI-modellel (LLM) az OpenAI-kódtár használatával.
A cikk befejezése után megkezdheti az új projekt módosítását az egyéni kóddal és adatokkal.
Feljegyzés
Ez a cikk egy vagy több AI-alkalmazássablont használ a cikkben szereplő példák és útmutatók alapjául. Az AI-alkalmazássablonok jól karbantartott, könnyen üzembe helyezhető referencia-implementációkat biztosítanak, amelyek segítenek magas színvonalú kiindulópontot biztosítani az AI-alkalmazások számára.
Architekturális áttekintés
A csevegőalkalmazás egyszerű architektúrája az alábbi ábrán látható:
A csevegőalkalmazás Azure Container-alkalmazásként fut. Az alkalmazás a Microsoft Entra ID-val felügyelt identitást használ az Azure OpenAI-val való hitelesítéshez API-kulcs helyett. A csevegőalkalmazás az Azure OpenAI használatával hoz létre válaszokat a felhasználói üzenetekre.
Az alkalmazásarchitektúra a következő szolgáltatásokra és összetevőkre támaszkodik:
- Az Azure OpenAI azt az AI-szolgáltatót jelöli, amelybe a felhasználó lekérdezéseit küldjük.
- Az Azure Container Apps az a tárolókörnyezet, ahol az alkalmazás üzemel.
- A felügyelt identitás segít a legjobb szintű biztonság biztosításában, és kiküszöböli azt a követelményt, hogy Ön fejlesztőként biztonságosan kezelje a titkos kulcsokat.
- Bicep-fájlok Azure-erőforrások kiépítéséhez, beleértve az Azure OpenAI, az Azure Container Apps, az Azure Container Registry, az Azure Log Analytics és az RBAC-szerepköröket.
- A Microsoft AI Chat Protocol szabványos API-szerződéseket biztosít AI-megoldások és nyelvek között. A csevegőalkalmazás megfelel a Microsoft AI csevegési protokolljának, amely lehetővé teszi, hogy a kiértékelési alkalmazás a protokollnak megfelelő csevegőalkalmazásokkal fusson.
- Egy Python Quart , amely a csomagot használja a
openaifelhasználói üzenetekre adott válaszok létrehozásához. - Egy egyszerű HTML/JavaScript-előtér, amely JSON-vonalak használatával streameli a válaszokat a háttérrendszerből egy olvasható adatfolyamon keresztül.
- Egy Blazor-webalkalmazás, amely az Azure.AI.OpenAI NuGet-csomagot használja a felhasználói üzenetekre adott válaszok létrehozásához.
- Egy TypeScript-webalkalmazás, amely az OpenAI npm-csomagot használja a felhasználói üzenetekre adott válaszok létrehozásához.
Költség
Annak érdekében, hogy a díjszabás a lehető legalacsonyabb legyen ebben a mintában, a legtöbb erőforrás alapszintű vagy fogyasztási tarifacsomagot használ. Szükség szerint módosítsa a rétegszintet a kívánt használat alapján. Ha le szeretné állítani a díjakat, törölje az erőforrásokat, amikor végzett a cikkel.
További információ a költségekről a mintaadattárban.
További információ a költségekről a mintaadattárban.
További információ a költségekről a mintaadattárban.
Előfeltételek
A cikk elvégzéséhez szükséges összes függőséget tartalmazó fejlesztői tárolókörnyezet érhető el. A fejlesztői tárolót a GitHub Codespacesben (böngészőben) vagy helyileg is futtathatja a Visual Studio Code használatával.
A cikk használatához teljesítenie kell a következő előfeltételeket:
Azure-előfizetés – Ingyenes létrehozás
Azure-fiókengedélyek – Az Azure-fióknak rendelkeznie
Microsoft.Authorization/roleAssignments/writekell engedélyekkel, például felhasználói hozzáférési rendszergazdával vagy tulajdonosokkal.GitHub-fiók
Nyílt fejlesztési környezet
A cikk elvégzéséhez használja az alábbi utasításokat egy előre konfigurált fejlesztési környezet üzembe helyezéséhez, amely tartalmazza az összes szükséges függőséget.
A GitHub Codespaces egy, a GitHub által felügyelt fejlesztői tárolót futtat a Webes Visual Studio Code-tal felhasználói felületként. A legegyszerűbb fejlesztési környezethez használja a GitHub Codespacest, hogy a megfelelő fejlesztői eszközökkel és függőségekkel rendelkezzen a cikk elvégzéséhez.
Fontos
Minden GitHub-fiók legfeljebb 60 órán át használhatja a Codespace-eket havonta 2 magpéldánysal. További információ: GitHub Codespaces havonta tartalmazza a tárterületet és az alapórákat.
Az alábbi lépésekkel hozzon létre egy új GitHub-kódteret a mainAzure-Samples/openai-chat-app-quickstart GitHub-adattár ágán.
Kattintson a jobb gombbal a következő gombra, és válassza a Hivatkozás megnyitása lehetőséget az új ablakban. Ez a művelet lehetővé teszi a fejlesztési környezet és a dokumentáció áttekintését.
A Kódtér létrehozása lapon tekintse át, majd válassza az Új kódtér létrehozása lehetőséget
Várja meg, amíg a kódtér elindul. Ez az indítási folyamat eltarthat néhány percig.
Jelentkezzen be az Azure-ba az Azure Developer CLI-vel a képernyő alján található terminálon.
azd auth loginMásolja ki a kódot a terminálból, majd illessze be egy böngészőbe. Kövesse az utasításokat az Azure-fiókkal való hitelesítéshez.
A cikkben szereplő fennmaradó feladatok ennek a fejlesztési tárolónak a kontextusában történnek.
Az alábbi lépésekkel hozzon létre egy új GitHub-kódteret a mainAzure-Samples/openai-chat-app-quickstart-dotnet GitHub-adattár ágán.
Kattintson a jobb gombbal a következő gombra, és válassza a Hivatkozás megnyitása lehetőséget az új ablakban. Ez a művelet lehetővé teszi a fejlesztési környezet és a dokumentáció áttekintését.
A Kódtér létrehozása lapon tekintse át, majd válassza a Kódtér létrehozása lehetőséget
Várja meg, amíg a kódtér elindul. Ez az indítási folyamat eltarthat néhány percig.
Jelentkezzen be az Azure-ba az Azure Developer CLI-vel a képernyő alján található terminálon.
azd auth loginMásolja ki a kódot a terminálból, majd illessze be egy böngészőbe. Kövesse az utasításokat az Azure-fiókkal való hitelesítéshez.
A cikkben szereplő fennmaradó feladatok ennek a fejlesztési tárolónak a kontextusában történnek.
Az alábbi lépésekkel hozzon létre egy új GitHub-kódteret a mainAzure-Samples/openai-chat-app-quickstart-javascript GitHub-adattár ágán.
- Kattintson a jobb gombbal a következő gombra, és válassza a Hivatkozás megnyitása lehetőséget az új ablakban. Ez a művelet lehetővé teszi a fejlesztési környezet és a dokumentáció áttekintését.
A Kódtér létrehozása lapon tekintse át, majd válassza az Új kódtér létrehozása lehetőséget
Várja meg, amíg a kódtér elindul. Ez az indítási folyamat eltarthat néhány percig.
Jelentkezzen be az Azure-ba az Azure Developer CLI-vel a képernyő alján található terminálon.
azd auth loginMásolja ki a kódot a terminálból, majd illessze be egy böngészőbe. Kövesse az utasításokat az Azure-fiókkal való hitelesítéshez.
A cikkben szereplő fennmaradó feladatok ennek a fejlesztési tárolónak a kontextusában történnek.
Üzembe helyezés és futtatás
A mintaadattár tartalmazza a csevegőalkalmazás Azure-beli üzembe helyezéséhez szükséges összes kódot és konfigurációs fájlt. Az alábbi lépések végigvezetik a minta csevegőalkalmazás Azure üzembe helyezési folyamatán.
Csevegőalkalmazás üzembe helyezése az Azure-ban
Fontos
Az ebben a szakaszban létrehozott Azure-erőforrások azonnali költségekkel járnak. Ezek az erőforrások akkor is költségekkel járhatnak, ha a parancsot a teljes végrehajtás előtt megszakítja.
Futtassa a következő Azure Developer CLI-parancsot az Azure-erőforrások kiépítéséhez és a forráskód üzembe helyezéséhez:
azd upAz alábbi táblázat segítségével válaszolhat a kérdésekre:
Felszólítás Válasz Környezet neve Tartsa rövid és kisbetűs. Adja hozzá a nevét vagy aliasát. Például: secure-chat. Az erőforráscsoport nevének részeként használják.Előfizetés Válassza ki az előfizetést az erőforrások létrehozásához. Hely (üzemeltetéshez) Válasszon ki egy Önhöz közeli helyet a listából. Az OpenAI-modell helye Válasszon ki egy Önhöz közeli helyet a listából. Ha ugyanaz a hely érhető el, mint az első hely, válassza ezt. Várja meg az alkalmazás üzembe helyezését. Az üzembe helyezés általában 5–10 percet vesz igénybe.
A csevegőalkalmazással kérdéseket tehet fel a nagy nyelvi modellel kapcsolatban
A terminál egy URL-címet jelenít meg az alkalmazás sikeres üzembe helyezése után.
Válassza ki a címkével ellátott URL-címet
Deploying service weba csevegőalkalmazás böngészőben való megnyitásához.A böngészőben írjon be egy kérdést, például: "Miért jobb a felügyelt identitás, mint a kulcsok?".
A válasz az Azure OpenAI-tól származik, és megjelenik az eredmény.
A mintakód felfedezése
Bár az OpenAI és az Azure OpenAI szolgáltatás egy gyakori Python-ügyfélkódtárra támaszkodik, az Azure OpenAI-végpontok használatakor kis kódmódosításokra van szükség. Lássuk, hogyan konfigurálja ez a minta a kulcs nélküli hitelesítést a Microsoft Entra-azonosítóval, és hogyan kommunikál az Azure OpenAI-val.
Hitelesítés konfigurálása felügyelt identitással
Ebben a mintában a fájl a src\quartapp\chat.py kulcs nélküli hitelesítés konfigurálásával kezdődik.
Az alábbi kódrészlet az azure.identity.aio modullal hoz létre egy aszinkron Microsoft Entra hitelesítési folyamatot.
A következő kódrészlet a AZURE_CLIENT_IDazd környezeti változó használatával hoz létre egy ManagedIdentityCredential-példányt , amely a felhasználó által hozzárendelt felügyelt identitáson keresztül hitelesíthető.
user_assigned_managed_identity_credential = ManagedIdentityCredential(client_id=os.getenv("AZURE_CLIENT_ID"))
Feljegyzés
Az azd erőforrás-környezeti változók ki vannak építve az alkalmazás üzembe helyezése során azd .
Az alábbi kódrészlet erőforrás-környezeti változót használ AZURE_TENANT_IDazd egy AzureDeveloperCliCredential-példány létrehozásához, amely képes hitelesíteni az aktuális Microsoft Entra-bérlővel.
azure_dev_cli_credential = AzureDeveloperCliCredential(tenant_id=os.getenv("AZURE_TENANT_ID"), process_timeout=60)
Az Azure Identity-ügyfélkódtár hitelesítő adatokat biztosít – az Azure Core-kódtár TokenCredential protokollját implementáló nyilvános osztályok. A hitelesítő adatok egy különálló hitelesítési folyamatot jelentenek a hozzáférési jogkivonat Microsoft Entra-azonosítóból való beszerzéséhez. Ezek a hitelesítő adatok összefűzhetők, hogy a megkísérlendő hitelesítési mechanizmusok rendezett sorozatát alakíthassák ki.
Az alábbi kódrészlet egy és egy ChainedTokenCredentialManagedIdentityCredentialAzureDeveloperCliCredential:
- Ez
ManagedIdentityCredentialaz Azure Functions és Azure-alkalmazás szolgáltatáshoz használatos. A felhasználó által hozzárendelt felügyelt identitások a címzettnek való átadássalclient_idtámogatottakManagedIdentityCredential. - A
AzureDeveloperCliCredentialhelyi fejlesztéshez használatos. Korábban a Microsoft Entra-bérlő alapján lett beállítva.
azure_credential = ChainedTokenCredential(
user_assigned_managed_identity_credential,
azure_dev_cli_credential
)
Tipp.
A hitelesítő adatok sorrendje fontos, mivel a rendszer az első érvényes Microsoft Entra hozzáférési jogkivonatot használja. További információ: ChainedTokenCredential Overview (LáncoltTokenCredential Overview ) című cikk.
Az alábbi kódrészlet lekéri az Azure OpenAI-jogkivonat-szolgáltatót a kiválasztott Azure-hitelesítő adatok alapján. Ez az érték a azure.identity.aio.get_bearer_token_provider két argumentummal való meghívásával érhető el:
azure_credential: AChainedTokenCredentialkérelem hitelesítéséhez korábban létrehozott példány.https://cognitiveservices.azure.com/.default: Kötelező egy vagy több tulajdonosi jogkivonat-hatókör. Ebben az esetben az Azure Cognitive Services végpontja.
token_provider = get_bearer_token_provider(
azure_credential, "https://cognitiveservices.azure.com/.default"
)
Az alábbi sorok ellenőrzik az alkalmazás üzembe helyezése során AZURE_OPENAI_ENDPOINT kiépített kötelező AZURE_OPENAI_CHATGPT_DEPLOYMENT és azdazd erőforrás-környezeti változókat. Ha egy érték nem jelenik meg, hibaüzenet jelenik meg.
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")
Ez a kódrészlet inicializálja az Azure OpenAI-ügyfelet, és beállítja a api_version, azure_endpointés azure_ad_token_provider (client_args) paramétereket:
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,
)
Az alábbi sor az Azure OpenAI-modell üzembehelyezési nevét állítja be az API-hívásokban való használatra:
bp.openai_model = os.getenv("AZURE_OPENAI_CHATGPT_DEPLOYMENT")
Feljegyzés
Az OpenAI a kulcsszóargumentumot használja a model használni kívánt modell megadásához. Az Azure OpenAI az egyedi modellek üzembe helyezésének fogalmával rendelkezik. Az Azure OpenAI model használatakor az Azure OpenAI-modell üzembe helyezése során választott mögöttes üzembe helyezési névre kell hivatkoznia.
A függvény befejeződése után az ügyfél megfelelően van konfigurálva, és készen áll az Azure OpenAI-szolgáltatások kezelésére.
Válaszfolyam az OpenAI-ügyfél és -modell használatával
Az response_stream útvonalon a csevegés befejező hívását kezeli. Az alábbi kódrészlet bemutatja a használat módját openai_client és model használatát.
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 OpenAI takes the deployment name as the model name
model=bp.openai_model,
messages=all_messages,
stream=True,
)
A mintakód megismerése
A .NET-alkalmazások az Azure.AI.OpenAI ügyfélkódtárra támaszkodnak az Azure OpenAI-szolgáltatásokkal való kommunikációhoz, amely függőséget vesz igénybe az OpenAI-kódtártól . A mintaalkalmazás a Microsoft Entra ID használatával konfigurálja a kulcs nélküli hitelesítést az Azure OpenAI-val való kommunikációhoz.
Hitelesítés és szolgáltatásregisztráció konfigurálása
Ebben a mintában a kulcs nélküli hitelesítés konfigurálva van a program.cs fájlban. Az alábbi kódrészlet a AZURE_CLIENT_ID beállított környezeti változót azd használja egy managedIdentityCredential-példány létrehozásához, amely képes hitelesítésre a felhasználó által hozzárendelt felügyelt identitáson keresztül.
var userAssignedIdentityCredential =
new ManagedIdentityCredential(builder.Configuration.GetValue<string>("AZURE_CLIENT_ID"));
Feljegyzés
Az azd erőforrás-környezeti változók ki vannak építve az alkalmazás üzembe helyezése során azd .
Az alábbi kódrészlet a AZURE_TENANT_ID beállított környezeti változóval azd hoz létre egy AzureDeveloperCliCredential-példányt , amely képes helyileg hitelesíteni a bejelentkezett azdfiók használatával.
var azureDevCliCredential = new AzureDeveloperCliCredential(
new AzureDeveloperCliCredentialOptions()
{
TenantId = builder.Configuration.GetValue<string>("AZURE_TENANT_ID")
});
Az Azure Identity ügyfélkódtár olyan hitelesítő osztályokat biztosít, amelyek implementálják az Azure Core-kódtár TokenCredential protokollját. A hitelesítő adatok egy különálló hitelesítési folyamatot jelentenek a hozzáférési jogkivonat Microsoft Entra-azonosítóból való beszerzéséhez. Ezek a hitelesítő adatok összekapcsolhatók ChainedTokenCredential a megkísérlendő hitelesítési mechanizmusok rendezett sorozatának létrehozásához.
Az alábbi kódrészlet regisztrálja a AzureOpenAIClient függőséginjektálást, és létrehoz egy ChainedTokenCredential és egy ManagedIdentityCredentialAzureDeveloperCliCredential:
- Ez
ManagedIdentityCredentialaz Azure Functions és Azure-alkalmazás szolgáltatáshoz használatos. A felhasználó által hozzárendelt felügyelt identitások a megadottakAZURE_CLIENT_IDhasználatávalManagedIdentityCredentialtámogatottak. - A
AzureDeveloperCliCredentialhelyi fejlesztéshez használatos. Korábban a Microsoft Entra-bérlő alapján lett beállítva.
builder.Services.AddAzureClients(
clientBuilder => {
clientBuilder.AddClient<AzureOpenAIClient, AzureOpenAIClientOptions>((options, _, _)
=> new AzureOpenAIClient(
new Uri(endpoint),
new ChainedTokenCredential(
userAssignedIdentityCredential, azureDevCliCredential), options));
});
Tipp.
A hitelesítő adatok sorrendje fontos, mivel a rendszer az első érvényes Microsoft Entra hozzáférési jogkivonatot használja. További információ: ChainedTokenCredential Overview (LáncoltTokenCredential Overview ) című cikk.
Csevegés befejezésének lekérése az Azure OpenAI-ügyféllel
A Blazor webalkalmazás az összetevő tetején lévő regisztráltakat AzureOpenAIClient injektálja Home.Razor :
@inject AzureOpenAIClient azureOpenAIClient
Amikor a felhasználó elküldi az űrlapot, a rendszer elküldi a AzureOpenAIClient kérést az OpenAI-modellnek a befejezés létrehozásához:
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));
A mintakód megismerése
Bár az OpenAI és az Azure OpenAI szolgáltatás openai (gyakori JavaScript-ügyfélkódtár) szolgáltatásra támaszkodik, az Azure OpenAI-végpontok használatakor kis kódmódosításokra van szükség. Lássuk, hogyan konfigurálja ez a minta a kulcs nélküli hitelesítést a Microsoft Entra-azonosítóval, és hogyan kommunikál az Azure OpenAI-val.
Kulcs nélküli hitelesítés minden környezethez
Az Azure Identity ügyfélkódtár olyan hitelesítő osztályokat biztosít, amelyek implementálják az Azure Core-kódtár protokollját TokenCredential . A hitelesítő adatok egy különálló hitelesítési folyamatot jelentenek a hozzáférési jogkivonat Microsoft Entra-azonosítóból való beszerzéséhez. Ezek a hitelesítő adatok egy LáncoltTokenCredential használatával összefűzhetők, hogy a megkísérelni kívánt hitelesítési mechanizmusok rendezett sorozatát alakíthassák ki. Ez lehetővé teszi, hogy ugyanazt a kódot éles és helyi fejlesztési környezetekben is üzembe helyezze.
Hitelesítés konfigurálása felügyelt identitással
Ebben a mintában a ./src/azure-authentication.ts rendszer számos függvényt biztosít az Azure OpenAI kulcs nélküli hitelesítéséhez.
Az első függvény a getChainedCredential()láncban található első érvényes Azure-hitelesítő adatot adja vissza.
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
})
);
}
- A ManagedIdentityCredential először megkísérlésére kerül sor. Az éles futtatókörnyezetben a AZURE_CLIENT_ID környezeti változóval van beállítva, és képes a felhasználó által hozzárendelt felügyelt identitáson keresztüli hitelesítésre.
-
Az AzureDeveloperCliCredential a második kísérlet. Ez akkor van beállítva, amikor egy fejlesztés bejelentkezik az Azure CLI-vel
az login.
Tipp.
A hitelesítő adatok sorrendje fontos, mivel a rendszer az első érvényes Microsoft Entra hozzáférési jogkivonatot használja. További információ: ChainedTokenCredential Overview (LáncoltTokenCredential Overview ) című cikk.
Tulajdonosi jogkivonat lekérése az OpenAI-hoz
A második függvény az ./src/azure-authentication.tsgetTokenProvider(), amely egy visszahívást ad vissza, amely egy tulajdonosi jogkivonatot biztosít, amely az Azure Cognitive Services-végpontra terjed ki.
function getTokenProvider(): () => Promise<string> {
const credential = getChainedCredential();
const scope = "https://cognitiveservices.azure.com/.default";
return getBearerTokenProvider(credential, scope);
}
Az előző kódrészlet a hitelesítő adatok és a hatókör figyelembevételére szolgál getBearerTokenProvider , majd visszaad egy visszahívást, amely egy tulajdonosi jogkivonatot biztosít.
Hitelesített Azure OpenAI-ügyfél létrehozása
A harmadik függvény az ./src/azure-authentication.tsgetOpenAiClient(), amely az Azure OpenAI-ügyfelet adja vissza.
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);
}
}
Ez a kód felveszi a beállításokat, beleértve a megfelelően hatókörbe tartozó jogkivonatot is, és létrehozza az ügyfelet AzureOpenAI
Csevegési válasz streamelése az Azure OpenAI-val
A következő Fastify útvonalkezelő ./src/openai-chat-api.ts használatával küldjön üzenetet az Azure OpenAI-nak, és streamelje a választ.
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()
}
A függvény lekéri a csevegést, beleértve a korábbi üzeneteket is, és elküldi őket az Azure OpenAI-nak. Mivel a stream adattömbök az Azure OpenAI-ból érkeznek vissza, a rendszer elküldi azokat az ügyfélnek.
Egyéb biztonsági szempontok
Ez a cikk bemutatja, hogyan használja ChainedTokenCredential a minta az Azure OpenAI szolgáltatáshoz való hitelesítést.
A mintában található egy GitHub-művelet is, amely ellenőrzi az infrastruktúra kódkénti fájljait, és létrehoz egy jelentést, amely tartalmazza az észlelt problémákat. A folyamatos ajánlott eljárások biztosítása érdekében javasoljuk, hogy mindenki, aki sablonjaink alapján hoz létre megoldásokat, győződjön meg arról, hogy a GitHub titkos kulcskeresési beállítása engedélyezve van.
Fontolja meg az egyéb biztonsági intézkedéseket, például:
A Microsoft Entra használatával korlátozhatja a megfelelő alkalmazásfelhasználókhoz való hozzáférést.
Az Azure Container Apps-példány védelme tűzfallal és/vagy virtuális hálózattal.
Az erőforrások eltávolítása
Azure-erőforrások tisztítása
A cikkben létrehozott Azure-erőforrások számlázása az Azure-előfizetésbe kerül. Ha a jövőben nem lesz szüksége ezekre az erőforrásokra, törölje őket, hogy elkerülje a további költségek felmerülését.
Az Azure-erőforrások törléséhez és a forráskód eltávolításához futtassa a következő Azure Developer CLI-parancsot:
azd down --purge
GitHub-kódterek eltávolítása
A GitHub Codespaces-környezet törlése biztosítja, hogy maximálisan kihasználható legyen a fiókhoz tartozó ingyenes óránkénti jogosultság.
Fontos
A GitHub-fiók jogosultságairól további információt a GitHub Codespaces havi tartalmazza a tárterületet és az alapórákat.
Jelentkezzen be a GitHub Codespaces vezérlőpultjára.
Keresse meg a Jelenleg futó, a
Azure-Samples/openai-chat-app-quickstartGitHub-adattárból származó kódtereket.Nyissa meg a kódtér helyi menüjét, majd válassza a Törlés lehetőséget.
Jelentkezzen be a GitHub Codespaces vezérlőpultjára.
Keresse meg a Jelenleg futó, a
Azure-Samples/openai-chat-app-quickstart-dotnetGitHub-adattárból származó kódtereket.Nyissa meg a kódtér helyi menüjét, majd válassza a Törlés lehetőséget.
Jelentkezzen be a GitHub Codespaces vezérlőpultjára.
Keresse meg a Jelenleg futó, a
Azure-Samples/openai-chat-app-quickstart-javascriptGitHub-adattárból származó kódtereket.Nyissa meg a kódtér helyi menüjét, majd válassza a Törlés lehetőséget.
Segítség kérése
Ha a probléma nem oldja meg a problémát, jelentkezzen be az adattár problémáiba.
Következő lépések
Ha a probléma nem oldja meg a problémát, jelentkezzen be az adattár problémáiba.
Ha a probléma nem oldja meg a problémát, jelentkezzen be az adattár problémáiba.