Megosztás a következőn keresztül:


Rövid útmutató: Csevegés Azure OpenAI-modellekkel a saját adataival

Megjegyzés:

Ez a dokumentum a Microsoft Foundry (klasszikus) portálra hivatkozik.

🔍Az új portállal kapcsolatos információkért tekintse meg a Microsoft Foundry (új) dokumentációját.

Ebben a rövid útmutatóban saját adatait használja az Azure OpenAI-modellekkel egy hatékony, társalgási AI-platform létrehozásához, amely gyorsabb és pontosabb kommunikációt tesz lehetővé.

Fontos

A beszélgetési megoldások saját adatokkal történő összeállításának új módjai vannak. A legújabb ajánlott megközelítésért tekintse meg a Gyorsútmutató: Ügynöki információ-visszakeresés az Azure AI Searchben.

Előfeltételek

  • Ha nem rendelkezik saját adatokkal, töltse le a példaadatokat a GitHubról.

Adatok hozzáadása a Microsoft Foundry portállal

Jótanács

Másik lehetőségként az Azure Developer CLI használatával programozott módon hozhatja létre az Azure OpenAI-hoz szükséges erőforrásokat az Adatain.

Adatok hozzáadása a portálon:

  1. Jelentkezzen be a Microsoft Foundrybe. Győződjön meg arról, hogy a New Foundry kapcsoló ki van kapcsolva. Ezek a lépések a Foundryre (klasszikus) vonatkoznak.

  2. Válassza ki az Azure OpenAI-erőforrást. Ha rendelkezik Foundry-erőforrással, létrehozhat egy Foundry-projektet.

  3. A bal oldali panelen válassza a Játszótéri>csevegés lehetőséget.

  4. A Telepítő panelen válassza ki a modell üzembe helyezését.

  5. Válassza az Adatok> hozzáadásaadatforrás hozzáadása lehetőséget.

    Képernyőkép a Foundryben található csevegő játszótérről.

  6. Az Adatforrás lapon:

    1. Az Adatforrás kiválasztása csoportban válassza a Fájlok feltöltése (előzetes verzió) lehetőséget.

      Jótanács

    2. A tárfiókhoz való hozzáféréshez az Azure OpenAI számára "több forrásból származó erőforrás-megosztás" (CORS) szükséges. Ha a CORS még nincs engedélyezve az Azure Blob Storage-erőforráshoz, válassza a CORS bekapcsolása lehetőséget.

    3. Válassza ki az Azure AI Search-erőforrást.

    4. Adja meg az új index nevét.

    5. Jelölje be az Azure AI Search használatának számlázási hatásait nyugtázó jelölőnégyzetet.

    6. Válassza a Következőlehetőséget.

    Képernyőkép az adatforrások foundry portálon való kiválasztásának lehetőségeiről.

  7. A Fájlok feltöltése lapon:

    1. Válassza a Tallózás egy fájl keresése lehetőséget, majd válassza ki a saját adatait vagy az előfeltételekből letöltött mintaadatokat.

    2. Válassza a Fájlok feltöltése lehetőséget.

    3. Válassza a Következőlehetőséget.

  8. Az Adatkezelés lapon:

    1. Adja meg, hogy engedélyezi-e a szemantikai keresést vagy a vektorkeresést az indexben.

      Fontos

      • A szemantikai keresésre és a vektorkeresésre további díjszabás vonatkozik. Az Azure AI Search-erőforrásnak alapszintű vagy magasabb szintűnek kell lennie a szemantikai keresés vagy vektorkeresés engedélyezéséhez. További információ: Szint és szolgáltatási korlátokkiválasztása.
      • Az információlekérés és a modellválasz minőségének javítása érdekében javasoljuk, hogy engedélyezze a szemantikai keresést a következő adatforrásnyelvek esetében: angol, francia, spanyol, portugál, olasz, német, kínai (Zh), japán, koreai, orosz és arab.
    2. Válassza a Következőlehetőséget.

  9. Az Adatkapcsolat lapon:

    1. Adja meg, hogy a hitelesítéshez rendszer által hozzárendelt felügyelt identitást vagy API-kulcsot használjon.

    2. Válassza a Következőlehetőséget.

  10. Tekintse át a konfigurációkat, majd válassza a Mentés és bezárás lehetőséget.

    Most már cseveghet a modellel, amely az adataival hozza létre a választ.

Csevegési játszótér

Kezdje el az Azure OpenAI képességeit kód nélküli megközelítéssel a csevegési játszótéren keresztül. Ez egyszerűen egy szövegdoboz, ahol elküldhet egy kérést a befejezés létrehozásához. Ezen a lapon gyorsan iterálhat és kísérletezhet a képességekkel.

Képernyőkép a Microsoft Foundry portál játszótéri oldaláról, kiemelt szakaszokkal.

A játszótér lehetővé teszi a csevegési élmény testreszabását. A felső menüben az Üzembe helyezés lehetőséget választva megállapíthatja, hogy melyik modell hoz létre választ az index keresési eredményei alapján. A jövőbeli válaszok beszélgetési előzményeiként felveendő múltbeli üzenetek számát adja meg. A beszélgetési előzmények kontextust adnak a kapcsolódó válaszok létrehozásához, de növeli a tokenhasználatot. A bemeneti jogkivonat előrehaladási mutatója nyomon követi a beküldött kérdés tokenszámát.

A bal oldalon található Speciális beállításokfuttatókörnyezeti paraméterek, amelyek lehetővé teszik a releváns adatok beolvasását és keresését az adatokból. Hasznos eset, ha meg szeretné győződni arról, hogy a válaszok csak az adatok alapján jönnek létre, vagy ha úgy találja, hogy a modell nem tud olyan választ generálni, amely az adatokon meglévő információkon alapul.

  • A szigorúság határozza meg a rendszer agresszivitását a keresési dokumentumok szűrésében a hasonlósági pontszámok alapján. Az 5-ös szigorúság azt jelzi, hogy a rendszer agresszíven kiszűri a dokumentumokat, és nagyon magas hasonlósági küszöbértéket alkalmaz. A szemantikai keresés ebben a forgatókönyvben hasznos lehet, mert a rangsorolási modellek jobb munkát végeznek a lekérdezés szándékának következtetésében. Az alacsonyabb szintű szigorúság részletesebb válaszokat eredményez, de tartalmazhat olyan információkat is, amelyek nem szerepelnek az indexben. Ez alapértelmezés szerint 3 értékre van állítva.

  • A lekért dokumentumok egy 3, 5, 10 vagy 20 értékre állítható egész szám, amely szabályozza a nagy nyelvi modellnek biztosított dokumentumtömbök számát a végső válasz megfogalmazásához. Alapértelmezés szerint ez az 5 értékre van állítva.

  • Ha engedélyezve van az adatokra adott válaszok korlátozása , a modell csak a dokumentumokra próbál támaszkodni a válaszokra. Ez alapértelmezés szerint igaz értékre van állítva.

Képernyőkép a speciális beállításokról.

Küldje el az első lekérdezést. A csevegési modellek a kérdés- és válaszgyakorlatokban a legjobban teljesítenek. Például: "Mik az elérhető állapotterveim?" vagy "Mi az állapot plusz lehetőség?".

Az adatelemzést igénylő lekérdezések valószínűleg sikertelenek lesznek, például "Melyik állapotterv a legnépszerűbb?". Az összes adatra vonatkozó információt igénylő lekérdezések is valószínűleg sikertelenek lesznek, például :"Hány dokumentumot töltöttem fel?". Ne feledje, hogy a keresőmotor olyan adattömböket keres, amelyek pontos vagy hasonló kifejezésekkel, kifejezésekkel vagy szerkezetekkel rendelkeznek a lekérdezéshez. És bár a modell megértheti a kérdést, ha a keresési eredmények adatkészletből származó adattömbök, nem a megfelelő információ az ilyen típusú kérdések megválaszolásához.

A csevegéseket a válaszban visszaadott dokumentumok (adattömbök) száma korlátozza (az Foundry portál játszóterén 3–20-ra korlátozva). Képzelhető el, hogy "az összes cím" kérdésének megválaszolásához a teljes vektortároló teljes vizsgálata szükséges.

A modell üzembe helyezése

Ha elégedett a felhasználói felülettel, közvetlenül a portálról telepítheti a webalkalmazást az Üzembe helyezés gombra kattintva.

Képernyőkép a modell üzembe helyezésének gombjáról a portálon.

Ez lehetőséget ad arra, hogy vagy önálló webalkalmazásként telepítse, vagy egy copilotot a Copilot Studio-ban (előzetes verzió), amennyiben saját adatait használja a modellen.

Ha például egy webalkalmazás üzembe helyezését választja:

A webalkalmazás első üzembe helyezésekor válassza az Új webalkalmazás létrehozása lehetőséget. Válasszon egy nevet az alkalmazásnak, amely az alkalmazás URL-címének része lesz. Például: https://<appname>.azurewebsites.net.

Válassza ki a közzétett alkalmazás előfizetését, erőforráscsoportját, helyét és díjszabási csomagját. Meglévő alkalmazás frissítéséhez válassza a Közzététel egy meglévő webalkalmazásban lehetőséget, és válassza ki az előző alkalmazás nevét a legördülő menüből.

Ha úgy dönt, hogy üzembe helyez egy webalkalmazást, tekintse meg a használatának fontos szempontjait .

Előfeltételek

Adatok hozzáadása a Microsoft Foundry portállal

Jótanács

Másik lehetőségként az Azure Developer CLI használatával programozott módon hozhatja létre az Azure OpenAI-hoz szükséges erőforrásokat az Adatain.

Adatok hozzáadása a portálon:

  1. Jelentkezzen be a Microsoft Foundrybe. Győződjön meg arról, hogy a New Foundry kapcsoló ki van kapcsolva. Ezek a lépések a Foundryre (klasszikus) vonatkoznak.

  2. Válassza ki az Azure OpenAI-erőforrást. Ha rendelkezik Foundry-erőforrással, létrehozhat egy Foundry-projektet.

  3. A bal oldali panelen válassza a Játszótéri>csevegés lehetőséget.

  4. A Telepítő panelen válassza ki a modell üzembe helyezését.

  5. Válassza az Adatok> hozzáadásaadatforrás hozzáadása lehetőséget.

    Képernyőkép a Foundryben található csevegő játszótérről.

  6. Az Adatforrás lapon:

    1. Az Adatforrás kiválasztása csoportban válassza a Fájlok feltöltése (előzetes verzió) lehetőséget.

      Jótanács

    2. A tárfiókhoz való hozzáféréshez az Azure OpenAI számára "több forrásból származó erőforrás-megosztás" (CORS) szükséges. Ha a CORS még nincs engedélyezve az Azure Blob Storage-erőforráshoz, válassza a CORS bekapcsolása lehetőséget.

    3. Válassza ki az Azure AI Search-erőforrást.

    4. Adja meg az új index nevét.

    5. Jelölje be az Azure AI Search használatának számlázási hatásait nyugtázó jelölőnégyzetet.

    6. Válassza a Következőlehetőséget.

    Képernyőkép az adatforrások foundry portálon való kiválasztásának lehetőségeiről.

  7. A Fájlok feltöltése lapon:

    1. Válassza a Tallózás egy fájl keresése lehetőséget, majd válassza ki a saját adatait vagy az előfeltételekből letöltött mintaadatokat.

    2. Válassza a Fájlok feltöltése lehetőséget.

    3. Válassza a Következőlehetőséget.

  8. Az Adatkezelés lapon:

    1. Adja meg, hogy engedélyezi-e a szemantikai keresést vagy a vektorkeresést az indexben.

      Fontos

      • A szemantikai keresésre és a vektorkeresésre további díjszabás vonatkozik. Az Azure AI Search-erőforrásnak alapszintű vagy magasabb szintűnek kell lennie a szemantikai keresés vagy vektorkeresés engedélyezéséhez. További információ: Szint és szolgáltatási korlátokkiválasztása.
      • Az információlekérés és a modellválasz minőségének javítása érdekében javasoljuk, hogy engedélyezze a szemantikai keresést a következő adatforrásnyelvek esetében: angol, francia, spanyol, portugál, olasz, német, kínai (Zh), japán, koreai, orosz és arab.
    2. Válassza a Következőlehetőséget.

  9. Az Adatkapcsolat lapon:

    1. Adja meg, hogy a hitelesítéshez rendszer által hozzárendelt felügyelt identitást vagy API-kulcsot használjon.

    2. Válassza a Következőlehetőséget.

  10. Tekintse át a konfigurációkat, majd válassza a Mentés és bezárás lehetőséget.

    Most már cseveghet a modellel, amely az adataival hozza létre a választ.

Erőforrásadatok lekérése

Az alkalmazás Azure OpenAI-erőforrással való hitelesítéséhez le kell kérnie a következő adatokat. Ez a rövid útmutató feltételezi, hogy feltöltötte az adatokat egy Azure Blob Storage-fiókba, és létrehozott egy Azure AI Search-indexet. Lásd : Adatok hozzáadása a Microsoft Foundry portálon.

Változó neve Érték
AZURE_OPENAI_ENDPOINT Ez az érték a Kulcsok & végpont szakaszban található, amikor az Azure Portalról vizsgálja meg az Azure OpenAI-erőforrást. Példavégpont: https://my-resource.openai.azure.com.
AZURE_OPENAI_DEPLOYMENT_NAME Ez az érték a modell üzembe helyezésekor az üzembe helyezéshez választott egyéni névnek felel meg. Ez az érték az Azure Portálon a Resource Management>Deployments részben található.
AZURE_AI_SEARCH_ENDPOINT Ez az érték az Áttekintés szakaszban található, amikor az Azure Portalról vizsgálja meg az Azure AI Search-erőforrást.
AZURE_AI_SEARCH_INDEX Ez az érték az adatok tárolásához létrehozott index nevének felel meg. Az Azure portálon az Azure AI Search erőforrás áttekintésekor az Áttekintés szakaszban található.

További információ a kulcs nélküli hitelesítésről és a környezeti változók beállításáról.

Nyissa meg a Program.cs fájlt a projektkönyvtárban, és cserélje le annak tartalmát a következő kódra:

using System;
using Azure.AI.OpenAI;
using System.ClientModel;
using Azure.AI.OpenAI.Chat;
using OpenAI.Chat;
using static System.Environment;

string azureOpenAIEndpoint = GetEnvironmentVariable("AZURE_OPENAI_ENDPOINT");
string azureOpenAIKey = GetEnvironmentVariable("AZURE_OPENAI_API_KEY");
string deploymentName = GetEnvironmentVariable("AZURE_OPENAI_DEPLOYMENT_NAME");
string searchEndpoint = GetEnvironmentVariable("AZURE_AI_SEARCH_ENDPOINT");
string searchKey = GetEnvironmentVariable("AZURE_AI_SEARCH_API_KEY");
string searchIndex = GetEnvironmentVariable("AZURE_AI_SEARCH_INDEX");

AzureOpenAIClient openAIClient = new(
			new Uri(azureOpenAIEndpoint),
			new ApiKeyCredential(azureOpenAIKey));
ChatClient chatClient = openAIClient.GetChatClient(deploymentName);

// Extension methods to use data sources with options are subject to SDK surface changes. Suppress the
// warning to acknowledge and this and use the subject-to-change AddDataSource method.
#pragma warning disable AOAI001

ChatCompletionOptions options = new();
options.AddDataSource(new AzureSearchChatDataSource()
{
	Endpoint = new Uri(searchEndpoint),
	IndexName = searchIndex,
	Authentication = DataSourceAuthentication.FromApiKey(searchKey),
});

ChatCompletion completion = chatClient.CompleteChat(
	[
		new UserChatMessage("What health plans are available?"),
			],
	options);

ChatMessageContext onYourDataContext = completion.GetMessageContext();

if (onYourDataContext?.Intent is not null)
{
	Console.WriteLine($"Intent: {onYourDataContext.Intent}");
}
foreach (ChatCitation citation in onYourDataContext?.Citations ?? [])
{
	Console.WriteLine($"Citation: {citation.Content}");
}

Fontos

A termelési környezetben használjon biztonságos módszert a hitelesítő adatok tárolására és elérésére, például az Azure Key Vaultot. A hitelesítő adatok biztonságáról további információt ebben a biztonsági cikkben talál.

dotnet run Program.cs

Kimenet

Contoso Electronics offers two health plans: Northwind Health Plus and Northwind Standard [doc1]. Northwind Health Plus is a comprehensive plan that provides coverage for medical, vision, and dental services, prescription drug coverage, mental health and substance abuse coverage, and coverage for preventive care services. It also offers coverage for emergency services, both in-network and out-of-network. On the other hand, Northwind Standard is a basic plan that provides coverage for medical, vision, and dental services, prescription drug coverage, and coverage for preventive care services. However, it does not offer coverage for emergency services, mental health and substance abuse coverage, or out-of-network services [doc1].

Intent: ["What are the available health plans?", "List of health plans available", "Health insurance options", "Types of health plans offered"]

Citation:
Contoso Electronics plan and benefit packages

Thank you for your interest in the Contoso electronics plan and benefit packages. Use this document to

learn more about the various options available to you...// Omitted for brevity

Ez megvárja, amíg a modell a teljes választ generálja az eredmények nyomtatása előtt.

Forráskód| Forráskód | Minta

Előfeltételek

Adatok hozzáadása a Microsoft Foundry portállal

Jótanács

Másik lehetőségként az Azure Developer CLI használatával programozott módon hozhatja létre az Azure OpenAI-hoz szükséges erőforrásokat az Adatain.

Adatok hozzáadása a portálon:

  1. Jelentkezzen be a Microsoft Foundrybe. Győződjön meg arról, hogy a New Foundry kapcsoló ki van kapcsolva. Ezek a lépések a Foundryre (klasszikus) vonatkoznak.

  2. Válassza ki az Azure OpenAI-erőforrást. Ha rendelkezik Foundry-erőforrással, létrehozhat egy Foundry-projektet.

  3. A bal oldali panelen válassza a Játszótéri>csevegés lehetőséget.

  4. A Telepítő panelen válassza ki a modell üzembe helyezését.

  5. Válassza az Adatok> hozzáadásaadatforrás hozzáadása lehetőséget.

    Képernyőkép a Foundryben található csevegő játszótérről.

  6. Az Adatforrás lapon:

    1. Az Adatforrás kiválasztása csoportban válassza a Fájlok feltöltése (előzetes verzió) lehetőséget.

      Jótanács

    2. A tárfiókhoz való hozzáféréshez az Azure OpenAI számára "több forrásból származó erőforrás-megosztás" (CORS) szükséges. Ha a CORS még nincs engedélyezve az Azure Blob Storage-erőforráshoz, válassza a CORS bekapcsolása lehetőséget.

    3. Válassza ki az Azure AI Search-erőforrást.

    4. Adja meg az új index nevét.

    5. Jelölje be az Azure AI Search használatának számlázási hatásait nyugtázó jelölőnégyzetet.

    6. Válassza a Következőlehetőséget.

    Képernyőkép az adatforrások foundry portálon való kiválasztásának lehetőségeiről.

  7. A Fájlok feltöltése lapon:

    1. Válassza a Tallózás egy fájl keresése lehetőséget, majd válassza ki a saját adatait vagy az előfeltételekből letöltött mintaadatokat.

    2. Válassza a Fájlok feltöltése lehetőséget.

    3. Válassza a Következőlehetőséget.

  8. Az Adatkezelés lapon:

    1. Adja meg, hogy engedélyezi-e a szemantikai keresést vagy a vektorkeresést az indexben.

      Fontos

      • A szemantikai keresésre és a vektorkeresésre további díjszabás vonatkozik. Az Azure AI Search-erőforrásnak alapszintű vagy magasabb szintűnek kell lennie a szemantikai keresés vagy vektorkeresés engedélyezéséhez. További információ: Szint és szolgáltatási korlátokkiválasztása.
      • Az információlekérés és a modellválasz minőségének javítása érdekében javasoljuk, hogy engedélyezze a szemantikai keresést a következő adatforrásnyelvek esetében: angol, francia, spanyol, portugál, olasz, német, kínai (Zh), japán, koreai, orosz és arab.
    2. Válassza a Következőlehetőséget.

  9. Az Adatkapcsolat lapon:

    1. Adja meg, hogy a hitelesítéshez rendszer által hozzárendelt felügyelt identitást vagy API-kulcsot használjon.

    2. Válassza a Következőlehetőséget.

  10. Tekintse át a konfigurációkat, majd válassza a Mentés és bezárás lehetőséget.

    Most már cseveghet a modellel, amely az adataival hozza létre a választ.

A szükséges változók lekérése

Az Azure OpenAI-ra való sikeres híváshoz a következő változókra van szükség. Ez a rövid útmutató feltételezi, hogy feltöltötte az adatokat egy Azure Blob Storage-fiókba, és létrehozott egy Azure AI Search-indexet. További információ: Adatok hozzáadása a Microsoft Foundry használatával.

Változó neve Érték
AZURE_OPENAI_ENDPOINT Ezt az értéket a Kulcsok & végpont szakaszban találja, amikor az Azure Portalról vizsgálja meg az Azure OpenAI-erőforrást. Az értéket a Foundry>Chat playground>Code nézetében is megtalálhatja. Példavégpont: https://my-resource.openai.azure.com.
AZURE_OPENAI_API_KEY Ezt az értéket az Erőforrás-kezelési>kulcsok & végpont szakaszban találja, amikor az Azure Portalról vizsgálja meg az Azure OpenAI-erőforrást. A következők bármelyikét használhatja: KEY1 vagy KEY2. A két kulcs mindig lehetővé teszi a kulcsok biztonságos elforgatását és újragenerálását anélkül, hogy szolgáltatáskimaradást okoz.
AZURE_OPEN_AI_DEPLOYMENT_ID Ez az érték a modell üzembe helyezésekor az üzembe helyezéshez választott egyéni névnek felel meg. Ezt az értéket az Azure Portal erőforrás-kezelési>üzembe helyezései vagy a Foundry-portál felügyeleti>üzembe helyezései alatt találja.
AZURE_AI_SEARCH_ENDPOINT Ezt az értéket az Áttekintés szakaszban találja, amikor az Azure Portalról vizsgálja meg az Azure AI Search-erőforrást.
AZURE_AI_SEARCH_API_KEY Ezt az értéket a Beállítások>kulcsok szakaszban találja, amikor az Azure Portalról vizsgálja meg az Azure AI Search-erőforrást. Használhatja az elsődleges rendszergazdai kulcsot vagy a másodlagos rendszergazdai kulcsot. A két kulcs mindig lehetővé teszi a kulcsok biztonságos elforgatását és újragenerálását anélkül, hogy szolgáltatáskimaradást okoz.
AZURE_AI_SEARCH_INDEX Ez az érték az adatok tárolásához létrehozott index nevének felel meg. Az Azure portálon az Azure AI Search erőforrás áttekintésekor az Áttekintés szakaszban található.

Környezeti változók

Állandó környezeti változók létrehozása és hozzárendelése a kulcshoz és a végponthoz.

Fontos

Óvatosan használja az API-kulcsokat. Ne foglalja bele közvetlenül az API-kulcsot a kódba, és soha ne tegye közzé nyilvánosan. Ha API-kulcsot használ, tárolja azt biztonságosan az Azure Key Vaultban. További információ az API-kulcsok biztonságos használatáról az alkalmazásokban: API-kulcsok az Azure Key Vaulttal.

Az AI-szolgáltatások biztonságáról további információt az Azure AI-szolgáltatásokhoz érkező kérelmek hitelesítése című témakörben talál.

Megjegyzés:

A Spring AI alapértelmezés szerint a modell nevét adja meg gpt-35-turbo. Csak akkor kell megadni az SPRING_AI_AZURE_OPENAI_MODEL értéket, ha egy másik nevű modellt telepített.

export SPRING_AI_AZURE_OPENAI_ENDPOINT=REPLACE_WITH_YOUR_AOAI_ENDPOINT_VALUE_HERE
export SPRING_AI_AZURE_OPENAI_API_KEY=REPLACE_WITH_YOUR_AOAI_KEY_VALUE_HERE
export SPRING_AI_AZURE_COGNITIVE_SEARCH_ENDPOINT=REPLACE_WITH_YOUR_AZURE_SEARCH_RESOURCE_VALUE_HERE
export SPRING_AI_AZURE_COGNITIVE_SEARCH_API_KEY=REPLACE_WITH_YOUR_AZURE_SEARCH_RESOURCE_KEY_VALUE_HERE
export SPRING_AI_AZURE_COGNITIVE_SEARCH_INDEX=REPLACE_WITH_YOUR_INDEX_NAME_HERE
export SPRING_AI_AZURE_OPENAI_MODEL=REPLACE_WITH_YOUR_MODEL_NAME_HERE

Új Spring-alkalmazás létrehozása

A Spring AI jelenleg nem támogatja azokat a AzureCognitiveSearchChatExtensionConfiguration beállításokat, amelyek lehetővé teszik, hogy egy Azure AI-lekérdezés beágyazza a beolvasási kiterjesztett generációs (RAG) metódust , és elrejtse a részleteket a felhasználó elől. Alternatív megoldásként továbbra is meghívhatja a RAG metódust közvetlenül az alkalmazásban az Azure AI Search-indexben lévő adatok lekérdezéséhez, valamint a lekért dokumentumok használatával bővítheti a lekérdezést.

A Spring AI támogatja a VectorStore absztrakciót, és az Azure AI Search becsomagolható egy Spring AI VectorStore-implementációba az egyéni adatok lekérdezéséhez. Az alábbi projekt az Azure AI Search által támogatott egyéni VectorStore-t implementálja, és közvetlenül végrehajtja a RAG-műveleteket.

Egy Bash-ablakban hozzon létre egy új könyvtárat az alkalmazáshoz, és navigáljon hozzá.

mkdir ai-custom-data-demo && cd ai-custom-data-demo

Futtassa a spring init parancsot a munkakönyvtárból kiindulva. Ez a parancs létrehoz egy standard könyvtárstruktúrát a Spring-projekthez, beleértve a Fő Java-osztály forrásfájlját és a Maven-alapú projektek kezeléséhez használt pom.xml fájlt.

spring init -a ai-custom-data-demo -n AICustomData --force --build maven -x

A létrehozott fájlok és mappák a következő struktúrához hasonlítanak:

ai-custom-data-demo/
|-- pom.xml
|-- mvn
|-- mvn.cmd
|-- HELP.md
|-- src/
    |-- main/
    |   |-- resources/
    |   |   |-- application.properties
    |   |-- java/
    |       |-- com/
    |           |-- example/
    |               |-- aicustomdatademo/
    |                   |-- AiCustomDataApplication.java
    |-- test/
        |-- java/
            |-- com/
                |-- example/
                    |-- aicustomdatademo/
                        |-- AiCustomDataApplicationTests.java

Spring-alkalmazás szerkesztése

  1. Szerkessze a pom.xml fájlt.

    A projektkönyvtár gyökeréből nyissa meg a pom.xml fájlt az előnyben részesített szerkesztőben vagy IDE-ben, és írja felül a fájlt a következő tartalommal:

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>3.2.0</version>
            <relativePath/> <!-- lookup parent from repository -->
        </parent>
        <groupId>com.example</groupId>
        <artifactId>ai-custom-data-demo</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <name>AICustomData</name>
        <description>Demo project for Spring Boot</description>
        <properties>
            <java.version>17</java.version>
        </properties>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.experimental.ai</groupId>
                <artifactId>spring-ai-azure-openai-spring-boot-starter</artifactId>
                <version>0.7.0-SNAPSHOT</version>
            </dependency>
            <dependency>
                <groupId>com.azure</groupId>
                <artifactId>azure-search-documents</artifactId>
                <version>11.6.0-beta.10</version>
                <exclusions>
                    <!-- exclude this to avoid changing the default serializer and the null-value behavior -->
                    <exclusion>
                        <groupId>com.azure</groupId>
                        <artifactId>azure-core-serializer-json-jackson</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <optional>true</optional>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
        </dependencies>
    
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
        </build>
        <repositories>
            <repository>
                <id>spring-snapshots</id>
                <name>Spring Snapshots</name>
                <url>https://repo.spring.io/snapshot</url>
                <releases>
                    <enabled>false</enabled>
                </releases>
            </repository>
        </repositories>
    </project>
    
  2. Az src/main/java/com/example/aicustomdatademo mappában nyissa meg a AiCustomDataApplication.java az előnyben részesített szerkesztőben vagy IDE-ben, és illessze be a következő kódba:

    package com.example.aicustomdatademo;
    
    import java.util.Collections;
    import java.util.List;
    import java.util.Map;
    import java.util.Optional;
    import java.util.stream.Collectors;
    
    import org.springframework.ai.client.AiClient;
    import org.springframework.ai.document.Document;
    import org.springframework.ai.embedding.EmbeddingClient;
    import org.springframework.ai.prompt.Prompt;
    import org.springframework.ai.prompt.SystemPromptTemplate;
    import org.springframework.ai.prompt.messages.MessageType;
    import org.springframework.ai.prompt.messages.UserMessage;
    import org.springframework.ai.vectorstore.VectorStore;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.boot.CommandLineRunner;
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.context.annotation.Bean;
    
    import com.azure.core.credential.AzureKeyCredential;
    import com.azure.core.util.Context;
    import com.azure.search.documents.SearchClient;
    import com.azure.search.documents.SearchClientBuilder;
    import com.azure.search.documents.models.IndexingResult;
    import com.azure.search.documents.models.SearchOptions;
    import com.azure.search.documents.models.RawVectorQuery;
    
    import lombok.AllArgsConstructor;
    import lombok.NoArgsConstructor;
    import lombok.Builder;
    import lombok.Data;
    import lombok.extern.jackson.Jacksonized;
    
    @SpringBootApplication
    public class AiCustomDataApplication implements CommandLineRunner
    {
        private static final String ROLE_INFO_KEY = "role";
    
        private static final String template = """
                You are a helpful assistant. Use the information from the DOCUMENTS section to augment answers.
    
                DOCUMENTS:
                {documents}
                """;
    
        @Value("${spring.ai.azure.cognitive-search.endpoint}")
        private String acsEndpoint;
    
        @Value("${spring.ai.azure.cognitive-search.api-key}")
        private String acsApiKey;
    
        @Value("${spring.ai.azure.cognitive-search.index}")
        private String acsIndexName;
    
        @Autowired
        private AiClient aiClient;
    
        @Autowired
        private EmbeddingClient embeddingClient;
    
        public static void main(String[] args) {
            SpringApplication.run(AiCustomDataApplication.class, args);
        }
    
        @Override
        public void run(String... args) throws Exception
        {
            System.out.println(String.format("Sending custom data prompt to Foundry Tool. One moment please...\r\n"));
    
            final var store = vectorStore(embeddingClient);
    
            final String question = "What are my available health plans?";
    
            final var candidateDocs = store.similaritySearch(question);
    
            final var userMessage = new UserMessage(question);
    
            final String docPrompts =
                    candidateDocs.stream().map(entry -> entry.getContent()).collect(Collectors.joining("\n"));
    
            final SystemPromptTemplate promptTemplate = new SystemPromptTemplate(template);
            final var systemMessage = promptTemplate.createMessage(Map.of("documents", docPrompts));
    
            final var prompt = new Prompt(List.of(systemMessage, userMessage));
    
            final var resps = aiClient.generate(prompt);
    
            System.out.println(String.format("Prompt created %d generated response(s).", resps.getGenerations().size()));
    
            resps.getGenerations().stream()
              .forEach(gen -> {
                  final var role = gen.getInfo().getOrDefault(ROLE_INFO_KEY, MessageType.ASSISTANT.getValue());
    
                  System.out.println(String.format("Generated respose from \"%s\": %s", role, gen.getText()));
              });
    
        }
    
        @Bean
        public VectorStore vectorStore(EmbeddingClient embeddingClient)
        {
            final SearchClient searchClient = new SearchClientBuilder()
                    .endpoint(acsEndpoint)
                    .credential(new AzureKeyCredential(acsApiKey))
                    .indexName(acsIndexName)
                    .buildClient();
            return new AzureCognitiveSearchVectorStore(searchClient, embeddingClient);
        }
    
        public static class AzureCognitiveSearchVectorStore implements VectorStore
        {
            private static final int DEFAULT_TOP_K = 4;
    
            private static final Double DEFAULT_SIMILARITY_THRESHOLD = 0.0;
    
            private SearchClient searchClient;
    
            private final EmbeddingClient embeddingClient;
    
            public AzureCognitiveSearchVectorStore(SearchClient searchClient, EmbeddingClient embeddingClient)
            {
                this.searchClient = searchClient;
                this.embeddingClient = embeddingClient;
            }
    
            @Override
            public void add(List<Document> documents)
            {
                final var docs = documents.stream().map(document -> {
    
                    final var embeddings = embeddingClient.embed(document);
    
                    return new DocEntry(document.getId(), "", document.getContent(), embeddings);
    
                }).toList();
    
                searchClient.uploadDocuments(docs);
            }
    
            @Override
            public Optional<Boolean> delete(List<String> idList)
            {
                final List<DocEntry> docIds = idList.stream().map(id -> DocEntry.builder().id(id).build())
                    .toList();
    
                var results = searchClient.deleteDocuments(docIds);
    
                boolean resSuccess = true;
    
                for (IndexingResult result : results.getResults())
                    if (!result.isSucceeded()) {
                        resSuccess = false;
                        break;
                    }
    
                return Optional.of(resSuccess);
            }
    
            @Override
            public List<Document> similaritySearch(String query)
            {
                return similaritySearch(query, DEFAULT_TOP_K);
            }
    
            @Override
            public List<Document> similaritySearch(String query, int k)
            {
                return similaritySearch(query, k, DEFAULT_SIMILARITY_THRESHOLD);
            }
    
            @Override
            public List<Document> similaritySearch(String query, int k, double threshold)
            {
                final var searchQueryVector = new RawVectorQuery()
                        .setVector(toFloatList(embeddingClient.embed(query)))
                        .setKNearestNeighborsCount(k)
                        .setFields("contentVector");
    
                final var searchResults = searchClient.search(null,
                        new SearchOptions().setVectorQueries(searchQueryVector), Context.NONE);
    
                return searchResults.stream()
                        .filter(r -> r.getScore() >= threshold)
                        .map(r -> {
    
                            final DocEntry entry = r.getDocument(DocEntry.class);
    
                            final Document doc = new Document(entry.getId(), entry.getContent(), Collections.emptyMap());
                            doc.setEmbedding(entry.getContentVector());
    
                            return doc;
                        })
                        .collect(Collectors.toList());
            }
    
            private List<Float> toFloatList(List<Double> doubleList)
            {
                return doubleList.stream().map(Double::floatValue).toList();
            }
    
        }
    
        @Data
        @Builder
        @Jacksonized
        @AllArgsConstructor
        @NoArgsConstructor
        static class DocEntry
        {
            private String id;
    
            private String hash;
    
            private String content;
    
            private List<Double> contentVector;
        }
    
    }
    

    Fontos

    A termelési környezetben használjon biztonságos módszert a hitelesítő adatok tárolására és elérésére, például az Azure Key Vaultot. A hitelesítő adatok biztonságáról további információt ebben a biztonsági cikkben talál.

  3. Lépjen vissza a projekt gyökérmappájához, és futtassa az alkalmazást az alábbi paranccsal:

    ./mvnw spring-boot:run
    

Kimenet

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::                (v3.1.5)

2023-11-07T14:40:45.250-06:00  INFO 18557 --- [           main] c.e.a.AiCustomDataApplication            : No active profile set, falling back to 1 default profile: "default"
2023-11-07T14:40:46.035-06:00  INFO 18557 --- [           main] c.e.a.AiCustomDataApplication            : Started AiCustomDataApplication in 1.095 seconds (process running for 1.397)
Sending custom data prompt to Foundry Tool. One moment please...

Prompt created 1 generated response(s).
Generated response from "assistant": The available health plans in the Contoso Electronics plan and benefit packages are the Northwind Health Plus and Northwind Standard plans.

Referenciadokumentáció | Forráskód | Csomag (npm) | Példák

Előfeltételek

A Microsoft Entra ID előfeltételei

A Microsoft Entra-azonosítóval javasolt kulcs nélküli hitelesítéshez a következőket kell elvégeznie:

  • Telepítse a Kulcs nélküli hitelesítéshez használt Azure CLI-t a Microsoft Entra-azonosítóval.
  • Rendelje hozzá a Cognitive Services User szerepkört a felhasználói fiókjához. Szerepköröket az Azure Portalon rendelhet hozzá a Hozzáférés-vezérlés (IAM)>Szerepkör-hozzárendelés hozzáadása területen.

Adatok hozzáadása a Microsoft Foundry portállal

Jótanács

Másik lehetőségként az Azure Developer CLI használatával programozott módon hozhatja létre az Azure OpenAI-hoz szükséges erőforrásokat az Adatain.

Adatok hozzáadása a portálon:

  1. Jelentkezzen be a Microsoft Foundrybe. Győződjön meg arról, hogy a New Foundry kapcsoló ki van kapcsolva. Ezek a lépések a Foundryre (klasszikus) vonatkoznak.

  2. Válassza ki az Azure OpenAI-erőforrást. Ha rendelkezik Foundry-erőforrással, létrehozhat egy Foundry-projektet.

  3. A bal oldali panelen válassza a Játszótéri>csevegés lehetőséget.

  4. A Telepítő panelen válassza ki a modell üzembe helyezését.

  5. Válassza az Adatok> hozzáadásaadatforrás hozzáadása lehetőséget.

    Képernyőkép a Foundryben található csevegő játszótérről.

  6. Az Adatforrás lapon:

    1. Az Adatforrás kiválasztása csoportban válassza a Fájlok feltöltése (előzetes verzió) lehetőséget.

      Jótanács

    2. A tárfiókhoz való hozzáféréshez az Azure OpenAI számára "több forrásból származó erőforrás-megosztás" (CORS) szükséges. Ha a CORS még nincs engedélyezve az Azure Blob Storage-erőforráshoz, válassza a CORS bekapcsolása lehetőséget.

    3. Válassza ki az Azure AI Search-erőforrást.

    4. Adja meg az új index nevét.

    5. Jelölje be az Azure AI Search használatának számlázási hatásait nyugtázó jelölőnégyzetet.

    6. Válassza a Következőlehetőséget.

    Képernyőkép az adatforrások foundry portálon való kiválasztásának lehetőségeiről.

  7. A Fájlok feltöltése lapon:

    1. Válassza a Tallózás egy fájl keresése lehetőséget, majd válassza ki a saját adatait vagy az előfeltételekből letöltött mintaadatokat.

    2. Válassza a Fájlok feltöltése lehetőséget.

    3. Válassza a Következőlehetőséget.

  8. Az Adatkezelés lapon:

    1. Adja meg, hogy engedélyezi-e a szemantikai keresést vagy a vektorkeresést az indexben.

      Fontos

      • A szemantikai keresésre és a vektorkeresésre további díjszabás vonatkozik. Az Azure AI Search-erőforrásnak alapszintű vagy magasabb szintűnek kell lennie a szemantikai keresés vagy vektorkeresés engedélyezéséhez. További információ: Szint és szolgáltatási korlátokkiválasztása.
      • Az információlekérés és a modellválasz minőségének javítása érdekében javasoljuk, hogy engedélyezze a szemantikai keresést a következő adatforrásnyelvek esetében: angol, francia, spanyol, portugál, olasz, német, kínai (Zh), japán, koreai, orosz és arab.
    2. Válassza a Következőlehetőséget.

  9. Az Adatkapcsolat lapon:

    1. Adja meg, hogy a hitelesítéshez rendszer által hozzárendelt felügyelt identitást vagy API-kulcsot használjon.

    2. Válassza a Következőlehetőséget.

  10. Tekintse át a konfigurációkat, majd válassza a Mentés és bezárás lehetőséget.

    Most már cseveghet a modellel, amely az adataival hozza létre a választ.

Erőforrásadatok lekérése

Az alkalmazás Azure OpenAI-erőforrással való hitelesítéséhez le kell kérnie a következő adatokat. Ez a rövid útmutató feltételezi, hogy feltöltötte az adatokat egy Azure Blob Storage-fiókba, és létrehozott egy Azure AI Search-indexet. Lásd : Adatok hozzáadása a Microsoft Foundry portálon.

Változó neve Érték
AZURE_OPENAI_ENDPOINT Ez az érték a Kulcsok & végpont szakaszban található, amikor az Azure Portalról vizsgálja meg az Azure OpenAI-erőforrást. Példavégpont: https://my-resource.openai.azure.com.
AZURE_OPENAI_DEPLOYMENT_NAME Ez az érték a modell üzembe helyezésekor az üzembe helyezéshez választott egyéni névnek felel meg. Ez az érték az Azure Portálon a Resource Management>Deployments részben található.
AZURE_AI_SEARCH_ENDPOINT Ez az érték az Áttekintés szakaszban található, amikor az Azure Portalról vizsgálja meg az Azure AI Search-erőforrást.
AZURE_AI_SEARCH_INDEX Ez az érték az adatok tárolásához létrehozott index nevének felel meg. Az Azure portálon az Azure AI Search erőforrás áttekintésekor az Áttekintés szakaszban található.

További információ a kulcs nélküli hitelesítésről és a környezeti változók beállításáról.

Beállítás

  1. Hozzon létre egy új mappát use-data-quickstart, és lépjen a rövid útmutató mappába a következő paranccsal:

    mkdir use-data-quickstart && cd use-data-quickstart
    
  2. Hozza létre a package.json következő paranccsal:

    npm init -y
    
  3. Telepítse a JavaScripthez készült OpenAI ügyfélkódtárat a következőkkel:

    npm install openai
    
  4. Az ajánlott jelszó nélküli hitelesítéshez:

    npm install @azure/identity
    

A JavaScript-kód hozzáadása

  1. Hozza létre a index.js fájlt a következő kóddal:

    const { DefaultAzureCredential, getBearerTokenProvider } = require("@azure/identity");
    const { AzureOpenAI } = require("openai");
    
    // Set the Azure and AI Search values from environment variables
    const endpoint = process.env.AZURE_OPENAI_ENDPOINT || "Your endpoint";
    const searchEndpoint = process.env.AZURE_AI_SEARCH_ENDPOINT || "Your search endpoint";
    const searchIndex = process.env.AZURE_AI_SEARCH_INDEX || "Your search index";
    
    // keyless authentication    
    const credential = new DefaultAzureCredential();
    const scope = "https://cognitiveservices.azure.com/.default";
    const azureADTokenProvider = getBearerTokenProvider(credential, scope);
    
    // Required Azure OpenAI deployment name and API version
    const deploymentName = process.env.AZURE_OPENAI_DEPLOYMENT_NAME || "gpt-4";
    const apiVersion = process.env.OPENAI_API_VERSION || "2024-10-21";
    
    function getClient() {
      return new AzureOpenAI({
        endpoint,
        azureADTokenProvider,
        deployment: deploymentName,
        apiVersion,
      });
    }
    
    async function main() {
      const client = getClient();
    
      const messages = [
        { role: "user", content: "What are my available health plans?" },
      ];
    
      console.log(`Message: ${messages.map((m) => m.content).join("\n")}`);
    
      const events = await client.chat.completions.create({
        stream: true,
        messages: [
          {
            role: "user",
            content:
              "What's the most common feedback we received from our customers about the product?",
          },
        ],
        max_tokens: 128,
        model: "",
        data_sources: [
          {
            type: "azure_search",
            parameters: {
              endpoint: searchEndpoint,
              index_name: searchIndex,
              authentication: {
                type: "api_key",
                key: searchKey,
              },
            },
          },
        ],
      });
    
      let response = "";
      for await (const event of events) {
        for (const choice of event.choices) {
          const newText = choice.delta?.content;
          if (newText) {
            response += newText;
            // To see streaming results as they arrive, uncomment line below
            // console.log(newText);
          }
        }
      }
      console.log(response);
    }
    
    main().catch((err) => {
      console.error("The sample encountered an error:", err);
    });
    
  2. Jelentkezzen be az Azure-ba a következő paranccsal:

    az login
    
  3. Futtassa a JavaScript-fájlt.

    node index.js
    

Kimenet

Message: What are my available health plans?
The available health plans in the Contoso Electronics plan and benefit packages are the Northwind Health Plus and Northwind Standard plans.

Referenciadokumentáció | Forráskód | Csomag (npm) | Példák

Előfeltételek

A Microsoft Entra ID előfeltételei

A Microsoft Entra-azonosítóval javasolt kulcs nélküli hitelesítéshez a következőket kell elvégeznie:

  • Telepítse a Kulcs nélküli hitelesítéshez használt Azure CLI-t a Microsoft Entra-azonosítóval.
  • Rendelje hozzá a Cognitive Services User szerepkört a felhasználói fiókjához. Szerepköröket az Azure Portalon rendelhet hozzá a Hozzáférés-vezérlés (IAM)>Szerepkör-hozzárendelés hozzáadása területen.

Adatok hozzáadása a Microsoft Foundry portállal

Jótanács

Másik lehetőségként az Azure Developer CLI használatával programozott módon hozhatja létre az Azure OpenAI-hoz szükséges erőforrásokat az Adatain.

Adatok hozzáadása a portálon:

  1. Jelentkezzen be a Microsoft Foundrybe. Győződjön meg arról, hogy a New Foundry kapcsoló ki van kapcsolva. Ezek a lépések a Foundryre (klasszikus) vonatkoznak.

  2. Válassza ki az Azure OpenAI-erőforrást. Ha rendelkezik Foundry-erőforrással, létrehozhat egy Foundry-projektet.

  3. A bal oldali panelen válassza a Játszótéri>csevegés lehetőséget.

  4. A Telepítő panelen válassza ki a modell üzembe helyezését.

  5. Válassza az Adatok> hozzáadásaadatforrás hozzáadása lehetőséget.

    Képernyőkép a Foundryben található csevegő játszótérről.

  6. Az Adatforrás lapon:

    1. Az Adatforrás kiválasztása csoportban válassza a Fájlok feltöltése (előzetes verzió) lehetőséget.

      Jótanács

    2. A tárfiókhoz való hozzáféréshez az Azure OpenAI számára "több forrásból származó erőforrás-megosztás" (CORS) szükséges. Ha a CORS még nincs engedélyezve az Azure Blob Storage-erőforráshoz, válassza a CORS bekapcsolása lehetőséget.

    3. Válassza ki az Azure AI Search-erőforrást.

    4. Adja meg az új index nevét.

    5. Jelölje be az Azure AI Search használatának számlázási hatásait nyugtázó jelölőnégyzetet.

    6. Válassza a Következőlehetőséget.

    Képernyőkép az adatforrások foundry portálon való kiválasztásának lehetőségeiről.

  7. A Fájlok feltöltése lapon:

    1. Válassza a Tallózás egy fájl keresése lehetőséget, majd válassza ki a saját adatait vagy az előfeltételekből letöltött mintaadatokat.

    2. Válassza a Fájlok feltöltése lehetőséget.

    3. Válassza a Következőlehetőséget.

  8. Az Adatkezelés lapon:

    1. Adja meg, hogy engedélyezi-e a szemantikai keresést vagy a vektorkeresést az indexben.

      Fontos

      • A szemantikai keresésre és a vektorkeresésre további díjszabás vonatkozik. Az Azure AI Search-erőforrásnak alapszintű vagy magasabb szintűnek kell lennie a szemantikai keresés vagy vektorkeresés engedélyezéséhez. További információ: Szint és szolgáltatási korlátokkiválasztása.
      • Az információlekérés és a modellválasz minőségének javítása érdekében javasoljuk, hogy engedélyezze a szemantikai keresést a következő adatforrásnyelvek esetében: angol, francia, spanyol, portugál, olasz, német, kínai (Zh), japán, koreai, orosz és arab.
    2. Válassza a Következőlehetőséget.

  9. Az Adatkapcsolat lapon:

    1. Adja meg, hogy a hitelesítéshez rendszer által hozzárendelt felügyelt identitást vagy API-kulcsot használjon.

    2. Válassza a Következőlehetőséget.

  10. Tekintse át a konfigurációkat, majd válassza a Mentés és bezárás lehetőséget.

    Most már cseveghet a modellel, amely az adataival hozza létre a választ.

Erőforrásadatok lekérése

Az alkalmazás Azure OpenAI-erőforrással való hitelesítéséhez le kell kérnie a következő adatokat. Ez a rövid útmutató feltételezi, hogy feltöltötte az adatokat egy Azure Blob Storage-fiókba, és létrehozott egy Azure AI Search-indexet. Lásd : Adatok hozzáadása a Microsoft Foundry portálon.

Változó neve Érték
AZURE_OPENAI_ENDPOINT Ez az érték a Kulcsok & végpont szakaszban található, amikor az Azure Portalról vizsgálja meg az Azure OpenAI-erőforrást. Példavégpont: https://my-resource.openai.azure.com.
AZURE_OPENAI_DEPLOYMENT_NAME Ez az érték a modell üzembe helyezésekor az üzembe helyezéshez választott egyéni névnek felel meg. Ez az érték az Azure Portálon a Resource Management>Deployments részben található.
AZURE_AI_SEARCH_ENDPOINT Ez az érték az Áttekintés szakaszban található, amikor az Azure Portalról vizsgálja meg az Azure AI Search-erőforrást.
AZURE_AI_SEARCH_INDEX Ez az érték az adatok tárolásához létrehozott index nevének felel meg. Az Azure portálon az Azure AI Search erőforrás áttekintésekor az Áttekintés szakaszban található.

További információ a kulcs nélküli hitelesítésről és a környezeti változók beállításáról.

Beállítás

  1. Hozzon létre egy új mappát use-data-quickstart, és lépjen a rövid útmutató mappába a következő paranccsal:

    mkdir use-data-quickstart && cd use-data-quickstart
    
  2. Hozza létre a package.json következő paranccsal:

    npm init -y
    
  3. Frissítse a package.json ECMAScriptre a következő paranccsal:

    npm pkg set type=module
    
  4. Telepítse a JavaScripthez készült OpenAI ügyfélkódtárat a következőkkel:

    npm install openai
    
  5. Az ajánlott jelszó nélküli hitelesítéshez:

    npm install @azure/identity
    

TypeScript-kód hozzáadása

  1. Hozza létre a index.ts fájlt a következő kóddal:

    import { AzureOpenAI } from "openai";
    import { DefaultAzureCredential, getBearerTokenProvider } from "@azure/identity";
    import "@azure/openai/types";
    
    // Set the Azure and AI Search values from environment variables
    const endpoint = process.env.AZURE_OPENAI_ENDPOINT || "Your endpoint";
    const searchEndpoint = process.env.AZURE_AI_SEARCH_ENDPOINT || "Your search endpoint";
    const searchIndex = process.env.AZURE_AI_SEARCH_INDEX || "Your search index";
    
    // keyless authentication    
    const credential = new DefaultAzureCredential();
    const scope = "https://cognitiveservices.azure.com/.default";
    const azureADTokenProvider = getBearerTokenProvider(credential, scope);
    
    // Required Azure OpenAI deployment name and API version
    const deploymentName = process.env.AZURE_OPENAI_DEPLOYMENT_NAME || "gpt-4";
    const apiVersion = process.env.OPENAI_API_VERSION || "2024-07-01-preview";
    
    function getClient(): AzureOpenAI {
      return new AzureOpenAI({
        endpoint,
        azureADTokenProvider,
        deployment: deploymentName,
        apiVersion,
      });
    }
    
    async function main() {
      const client = getClient();
    
      const messages = [
        { role: "user", content: "What are my available health plans?" },
      ];
    
      console.log(`Message: ${messages.map((m) => m.content).join("\n")}`);
    
      const events = await client.chat.completions.create({
        stream: true,
        messages: [
          {
            role: "user",
            content:
              "What's the most common feedback we received from our customers about the product?",
          },
        ],
        max_tokens: 128,
        model: "",
        data_sources: [
          {
            type: "azure_search",
            parameters: {
              endpoint: searchEndpoint,
              index_name: searchIndex,
              authentication: {
                type: "api_key",
                key: searchKey,
              },
            },
          },
        ],
      });
    
      let response = "";
      for await (const event of events) {
        for (const choice of event.choices) {
          const newText = choice.delta?.content;
          if (newText) {
            response += newText;
            // To see streaming results as they arrive, uncomment line below
            // console.log(newText);
          }
        }
      }
      console.log(response);
    }
    
    main().catch((err) => {
      console.error("The sample encountered an error:", err);
    });
    
  2. Hozza létre a fájlt a tsconfig.json TypeScript-kód fordításához, és másolja a következő kódot az ECMAScripthez.

    {
        "compilerOptions": {
          "module": "NodeNext",
          "target": "ES2022", // Supports top-level await
          "moduleResolution": "NodeNext",
          "skipLibCheck": true, // Avoid type errors from node_modules
          "strict": true // Enable strict type-checking options
        },
        "include": ["*.ts"]
    }
    
  3. Transpilálás TypeScriptről JavaScriptre.

    tsc
    
  4. Jelentkezzen be az Azure-ba a következő paranccsal:

    az login
    
  5. Futtassa a kódot a következő paranccsal:

    node index.js
    

Fontos

A termelési környezetben használjon biztonságos módszert a hitelesítő adatok tárolására és elérésére, például az Azure Key Vaultot. A hitelesítő adatok biztonságáról további információt ebben a biztonsági cikkben talál.

Kimenet

Message: What are my available health plans?
The available health plans in the Contoso Electronics plan and benefit packages are the Northwind Health Plus and Northwind Standard plans.

Előfeltételek

Hivatkozás | Forráskód | Csomag (PyPI) | Minták

Ezek a hivatkozások a Pythonhoz készült OpenAI API-ra hivatkoznak. Nincs Azure-specifikus OpenAI Python SDK. Megtudhatja, hogyan válthat az OpenAI-szolgáltatások és az Azure OpenAI között.

Adatok hozzáadása a Microsoft Foundry portállal

Jótanács

Másik lehetőségként az Azure Developer CLI használatával programozott módon hozhatja létre az Azure OpenAI-hoz szükséges erőforrásokat az Adatain.

Adatok hozzáadása a portálon:

  1. Jelentkezzen be a Microsoft Foundrybe. Győződjön meg arról, hogy a New Foundry kapcsoló ki van kapcsolva. Ezek a lépések a Foundryre (klasszikus) vonatkoznak.

  2. Válassza ki az Azure OpenAI-erőforrást. Ha rendelkezik Foundry-erőforrással, létrehozhat egy Foundry-projektet.

  3. A bal oldali panelen válassza a Játszótéri>csevegés lehetőséget.

  4. A Telepítő panelen válassza ki a modell üzembe helyezését.

  5. Válassza az Adatok> hozzáadásaadatforrás hozzáadása lehetőséget.

    Képernyőkép a Foundryben található csevegő játszótérről.

  6. Az Adatforrás lapon:

    1. Az Adatforrás kiválasztása csoportban válassza a Fájlok feltöltése (előzetes verzió) lehetőséget.

      Jótanács

    2. A tárfiókhoz való hozzáféréshez az Azure OpenAI számára "több forrásból származó erőforrás-megosztás" (CORS) szükséges. Ha a CORS még nincs engedélyezve az Azure Blob Storage-erőforráshoz, válassza a CORS bekapcsolása lehetőséget.

    3. Válassza ki az Azure AI Search-erőforrást.

    4. Adja meg az új index nevét.

    5. Jelölje be az Azure AI Search használatának számlázási hatásait nyugtázó jelölőnégyzetet.

    6. Válassza a Következőlehetőséget.

    Képernyőkép az adatforrások foundry portálon való kiválasztásának lehetőségeiről.

  7. A Fájlok feltöltése lapon:

    1. Válassza a Tallózás egy fájl keresése lehetőséget, majd válassza ki a saját adatait vagy az előfeltételekből letöltött mintaadatokat.

    2. Válassza a Fájlok feltöltése lehetőséget.

    3. Válassza a Következőlehetőséget.

  8. Az Adatkezelés lapon:

    1. Adja meg, hogy engedélyezi-e a szemantikai keresést vagy a vektorkeresést az indexben.

      Fontos

      • A szemantikai keresésre és a vektorkeresésre további díjszabás vonatkozik. Az Azure AI Search-erőforrásnak alapszintű vagy magasabb szintűnek kell lennie a szemantikai keresés vagy vektorkeresés engedélyezéséhez. További információ: Szint és szolgáltatási korlátokkiválasztása.
      • Az információlekérés és a modellválasz minőségének javítása érdekében javasoljuk, hogy engedélyezze a szemantikai keresést a következő adatforrásnyelvek esetében: angol, francia, spanyol, portugál, olasz, német, kínai (Zh), japán, koreai, orosz és arab.
    2. Válassza a Következőlehetőséget.

  9. Az Adatkapcsolat lapon:

    1. Adja meg, hogy a hitelesítéshez rendszer által hozzárendelt felügyelt identitást vagy API-kulcsot használjon.

    2. Válassza a Következőlehetőséget.

  10. Tekintse át a konfigurációkat, majd válassza a Mentés és bezárás lehetőséget.

    Most már cseveghet a modellel, amely az adataival hozza létre a választ.

Erőforrásadatok lekérése

Az alkalmazás Azure OpenAI-erőforrással való hitelesítéséhez le kell kérnie a következő adatokat. Ez a rövid útmutató feltételezi, hogy feltöltötte az adatokat egy Azure Blob Storage-fiókba, és létrehozott egy Azure AI Search-indexet. Lásd : Adatok hozzáadása a Microsoft Foundry portálon.

Változó neve Érték
AZURE_OPENAI_ENDPOINT Ez az érték a Kulcsok & végpont szakaszban található, amikor az Azure Portalról vizsgálja meg az Azure OpenAI-erőforrást. Példavégpont: https://my-resource.openai.azure.com.
AZURE_OPENAI_DEPLOYMENT_NAME Ez az érték a modell üzembe helyezésekor az üzembe helyezéshez választott egyéni névnek felel meg. Ez az érték az Azure Portálon a Resource Management>Deployments részben található.
AZURE_AI_SEARCH_ENDPOINT Ez az érték az Áttekintés szakaszban található, amikor az Azure Portalról vizsgálja meg az Azure AI Search-erőforrást.
AZURE_AI_SEARCH_INDEX Ez az érték az adatok tárolásához létrehozott index nevének felel meg. Az Azure portálon az Azure AI Search erőforrás áttekintésekor az Áttekintés szakaszban található.

További információ a kulcs nélküli hitelesítésről és a környezeti változók beállításáról.

Python-környezet létrehozása

  1. Hozzon létre egy openai-python nevű új mappát a projekthez, és hozzon létre egy új Python-kódfájlt main.py. Váltás erre a könyvtárra:
mkdir openai-python
cd openai-python
  1. Telepítse a következő Python-kódtárakat:
pip install openai
pip install python-dotenv

A Python-alkalmazás létrehozása

  1. Nyissa meg a main.py fájlt a projektkönyvtárban, és adja hozzá a következő kódot:
import os
import openai
import dotenv

dotenv.load_dotenv()

endpoint = os.environ.get("AZURE_OPENAI_ENDPOINT")
api_key = os.environ.get("AZURE_OPENAI_API_KEY")
deployment = os.environ.get("AZURE_OPENAI_DEPLOYMENT_NAME")

client = openai.AzureOpenAI(
    azure_endpoint=endpoint,
    api_key=api_key,
    api_version="2024-10-21",
)

completion = client.chat.completions.create(
    model=deployment,
    messages=[
        {
            "role": "user",
            "content": "What are my available health plans?",
        },
    ],
    extra_body={
        "data_sources":[
            {
                "type": "azure_search",
                "parameters": {
                    "endpoint": os.environ["AZURE_AI_SEARCH_ENDPOINT"],
                    "index_name": os.environ["AZURE_AI_SEARCH_INDEX"],
                    "authentication": {
                        "type": "api_key",
                        "key": os.environ["AZURE_AI_SEARCH_API_KEY"],
                    }
                }
            }
        ],
    }
)

print(f"{completion.choices[0].message.role}: {completion.choices[0].message.content}")

Fontos

A termelési környezetben használjon biztonságos módszert a hitelesítő adatok tárolására és elérésére, például az Azure Key Vaultot. A hitelesítő adatok biztonságáról további információt ebben a biztonsági cikkben talál.

  1. Hajtsa végre a következő parancsot:
python main.py

Az alkalmazás a választ JSON formátumban nyomtatja ki, amely számos forgatókönyvben használható. A lekérdezésre adott válaszokat és a feltöltött fájlokból származó idézeteket is tartalmazza.

Előfeltételek

Adatok hozzáadása a Microsoft Foundry portállal

Jótanács

Másik lehetőségként az Azure Developer CLI használatával programozott módon hozhatja létre az Azure OpenAI-hoz szükséges erőforrásokat az Adatain.

Adatok hozzáadása a portálon:

  1. Jelentkezzen be a Microsoft Foundrybe. Győződjön meg arról, hogy a New Foundry kapcsoló ki van kapcsolva. Ezek a lépések a Foundryre (klasszikus) vonatkoznak.

  2. Válassza ki az Azure OpenAI-erőforrást. Ha rendelkezik Foundry-erőforrással, létrehozhat egy Foundry-projektet.

  3. A bal oldali panelen válassza a Játszótéri>csevegés lehetőséget.

  4. A Telepítő panelen válassza ki a modell üzembe helyezését.

  5. Válassza az Adatok> hozzáadásaadatforrás hozzáadása lehetőséget.

    Képernyőkép a Foundryben található csevegő játszótérről.

  6. Az Adatforrás lapon:

    1. Az Adatforrás kiválasztása csoportban válassza a Fájlok feltöltése (előzetes verzió) lehetőséget.

      Jótanács

    2. A tárfiókhoz való hozzáféréshez az Azure OpenAI számára "több forrásból származó erőforrás-megosztás" (CORS) szükséges. Ha a CORS még nincs engedélyezve az Azure Blob Storage-erőforráshoz, válassza a CORS bekapcsolása lehetőséget.

    3. Válassza ki az Azure AI Search-erőforrást.

    4. Adja meg az új index nevét.

    5. Jelölje be az Azure AI Search használatának számlázási hatásait nyugtázó jelölőnégyzetet.

    6. Válassza a Következőlehetőséget.

    Képernyőkép az adatforrások foundry portálon való kiválasztásának lehetőségeiről.

  7. A Fájlok feltöltése lapon:

    1. Válassza a Tallózás egy fájl keresése lehetőséget, majd válassza ki a saját adatait vagy az előfeltételekből letöltött mintaadatokat.

    2. Válassza a Fájlok feltöltése lehetőséget.

    3. Válassza a Következőlehetőséget.

  8. Az Adatkezelés lapon:

    1. Adja meg, hogy engedélyezi-e a szemantikai keresést vagy a vektorkeresést az indexben.

      Fontos

      • A szemantikai keresésre és a vektorkeresésre további díjszabás vonatkozik. Az Azure AI Search-erőforrásnak alapszintű vagy magasabb szintűnek kell lennie a szemantikai keresés vagy vektorkeresés engedélyezéséhez. További információ: Szint és szolgáltatási korlátokkiválasztása.
      • Az információlekérés és a modellválasz minőségének javítása érdekében javasoljuk, hogy engedélyezze a szemantikai keresést a következő adatforrásnyelvek esetében: angol, francia, spanyol, portugál, olasz, német, kínai (Zh), japán, koreai, orosz és arab.
    2. Válassza a Következőlehetőséget.

  9. Az Adatkapcsolat lapon:

    1. Adja meg, hogy a hitelesítéshez rendszer által hozzárendelt felügyelt identitást vagy API-kulcsot használjon.

    2. Válassza a Következőlehetőséget.

  10. Tekintse át a konfigurációkat, majd válassza a Mentés és bezárás lehetőséget.

    Most már cseveghet a modellel, amely az adataival hozza létre a választ.

Erőforrásadatok lekérése

Az alkalmazás Azure OpenAI-erőforrással való hitelesítéséhez le kell kérnie a következő adatokat. Ez a rövid útmutató feltételezi, hogy feltöltötte az adatokat egy Azure Blob Storage-fiókba, és létrehozott egy Azure AI Search-indexet. Lásd : Adatok hozzáadása a Microsoft Foundry portálon.

Változó neve Érték
AZURE_OPENAI_ENDPOINT Ez az érték a Kulcsok & végpont szakaszban található, amikor az Azure Portalról vizsgálja meg az Azure OpenAI-erőforrást. Példavégpont: https://my-resource.openai.azure.com.
AZURE_OPENAI_DEPLOYMENT_NAME Ez az érték a modell üzembe helyezésekor az üzembe helyezéshez választott egyéni névnek felel meg. Ez az érték az Azure Portálon a Resource Management>Deployments részben található.
AZURE_AI_SEARCH_ENDPOINT Ez az érték az Áttekintés szakaszban található, amikor az Azure Portalról vizsgálja meg az Azure AI Search-erőforrást.
AZURE_AI_SEARCH_INDEX Ez az érték az adatok tárolásához létrehozott index nevének felel meg. Az Azure portálon az Azure AI Search erőforrás áttekintésekor az Áttekintés szakaszban található.

További információ a kulcs nélküli hitelesítésről és a környezeti változók beállításáról.

Példa PowerShell-parancsok

Az Azure OpenAI-csevegőmodellek úgy vannak optimalizálva, hogy beszélgetésként formázott bemenetekkel működjenek. A messages változó különböző szerepkörökkel rendelkező szótárakat ad át a rendszer, a felhasználó, az eszköz és az asszisztens által meghatározott beszélgetésben. A dataSources változó csatlakozik az Azure Cognitive Search-indexhez, és lehetővé teszi, hogy az Azure OpenAI-modellek válaszoljanak az adataival.

A modell válaszának aktiválásához egy felhasználói üzenetnek kell véget vetnie, amely jelzi, hogy az asszisztens válasza a sor.

Jótanács

A modell válaszának módosításához számos paraméter használható, például temperature vagy top_p. További információért tekintse meg a referenciadokumentációt .

# Azure OpenAI metadata variables
   $openai = @{
       api_key     = $Env:AZURE_OPENAI_API_KEY
       api_base    = $Env:AZURE_OPENAI_ENDPOINT # your endpoint should look like the following https://YOUR_RESOURCE_NAME.openai.azure.com/
       api_version = '2023-07-01-preview' # this may change in the future
       name        = 'YOUR-DEPLOYMENT-NAME-HERE' #This will correspond to the custom name you chose for your deployment when you deployed a model.
   }

   $acs = @{
       search_endpoint     = 'YOUR ACS ENDPOINT' # your endpoint should look like the following https://YOUR_RESOURCE_NAME.search.windows.net/
       search_key    = 'YOUR-ACS-KEY-HERE' # or use the Get-Secret cmdlet to retrieve the value
       search_index = 'YOUR-INDEX-NAME-HERE' # the name of your ACS index
   }

   # Completion text
   $body = @{
    dataSources = @(
        @{
            type = 'AzureCognitiveSearch'
            parameters = @{
                    endpoint = $acs.search_endpoint
                    key = $acs.search_key
                    indexName = $acs.search_index
                }
        }
    )
    messages = @(
            @{
                role = 'user'
                content = 'What are my available health plans?'
            }
    )
   } | convertto-json -depth 5

   # Header for authentication
   $headers = [ordered]@{
       'api-key' = $openai.api_key
   }

   # Send a completion call to generate an answer
   $url = "$($openai.api_base)/openai/deployments/$($openai.name)/extensions/chat/completions?api-version=$($openai.api_version)"

   $response = Invoke-RestMethod -Uri $url -Headers $headers -Body $body -Method Post -ContentType 'application/json'
   return $response.choices.messages[1].content

Példa kimenet

The available health plans in the Contoso Electronics plan and benefit packages are the Northwind Health Plus and Northwind Standard plans.

Fontos

Éles környezetben használjon biztonságos módszert a hitelesítő adatok tárolására és elérésére, például a PowerShell Secret Management az Azure Key Vaulttal. A hitelesítő adatok biztonságáról további információt ebben a biztonsági cikkben talál.

Csevegés a modellel webalkalmazás használatával

Ha az adatokat használó Azure OpenAI-modellel szeretne csevegni, üzembe helyezhet egy webalkalmazást a Microsoft Foundry portál vagy a GitHubon megadott példakód használatával. Ez az alkalmazás az Azure App Service használatával települ, és felhasználói felületet biztosít a lekérdezések küldéséhez. Ez az alkalmazás olyan Azure OpenAI-modellekkel használható, amelyek az Ön adatait használják, vagy azokat a modelleket, amelyek nem használják az adatokat. A követelményekkel, a beállítással és az üzembe helyezéssel kapcsolatos utasításokért tekintse meg az adattár olvasófájlját. A forráskód módosításával igény szerint testre szabhatja a webalkalmazás előtér- és háttérlogikát .

Előfeltételek

Referencia | Forráskód | Csomag (Go) | Példák

Adatok hozzáadása a Microsoft Foundry portállal

Jótanács

Másik lehetőségként az Azure Developer CLI használatával programozott módon hozhatja létre az Azure OpenAI-hoz szükséges erőforrásokat az Adatain.

Adatok hozzáadása a portálon:

  1. Jelentkezzen be a Microsoft Foundrybe. Győződjön meg arról, hogy a New Foundry kapcsoló ki van kapcsolva. Ezek a lépések a Foundryre (klasszikus) vonatkoznak.

  2. Válassza ki az Azure OpenAI-erőforrást. Ha rendelkezik Foundry-erőforrással, létrehozhat egy Foundry-projektet.

  3. A bal oldali panelen válassza a Játszótéri>csevegés lehetőséget.

  4. A Telepítő panelen válassza ki a modell üzembe helyezését.

  5. Válassza az Adatok> hozzáadásaadatforrás hozzáadása lehetőséget.

    Képernyőkép a Foundryben található csevegő játszótérről.

  6. Az Adatforrás lapon:

    1. Az Adatforrás kiválasztása csoportban válassza a Fájlok feltöltése (előzetes verzió) lehetőséget.

      Jótanács

    2. A tárfiókhoz való hozzáféréshez az Azure OpenAI számára "több forrásból származó erőforrás-megosztás" (CORS) szükséges. Ha a CORS még nincs engedélyezve az Azure Blob Storage-erőforráshoz, válassza a CORS bekapcsolása lehetőséget.

    3. Válassza ki az Azure AI Search-erőforrást.

    4. Adja meg az új index nevét.

    5. Jelölje be az Azure AI Search használatának számlázási hatásait nyugtázó jelölőnégyzetet.

    6. Válassza a Következőlehetőséget.

    Képernyőkép az adatforrások foundry portálon való kiválasztásának lehetőségeiről.

  7. A Fájlok feltöltése lapon:

    1. Válassza a Tallózás egy fájl keresése lehetőséget, majd válassza ki a saját adatait vagy az előfeltételekből letöltött mintaadatokat.

    2. Válassza a Fájlok feltöltése lehetőséget.

    3. Válassza a Következőlehetőséget.

  8. Az Adatkezelés lapon:

    1. Adja meg, hogy engedélyezi-e a szemantikai keresést vagy a vektorkeresést az indexben.

      Fontos

      • A szemantikai keresésre és a vektorkeresésre további díjszabás vonatkozik. Az Azure AI Search-erőforrásnak alapszintű vagy magasabb szintűnek kell lennie a szemantikai keresés vagy vektorkeresés engedélyezéséhez. További információ: Szint és szolgáltatási korlátokkiválasztása.
      • Az információlekérés és a modellválasz minőségének javítása érdekében javasoljuk, hogy engedélyezze a szemantikai keresést a következő adatforrásnyelvek esetében: angol, francia, spanyol, portugál, olasz, német, kínai (Zh), japán, koreai, orosz és arab.
    2. Válassza a Következőlehetőséget.

  9. Az Adatkapcsolat lapon:

    1. Adja meg, hogy a hitelesítéshez rendszer által hozzárendelt felügyelt identitást vagy API-kulcsot használjon.

    2. Válassza a Következőlehetőséget.

  10. Tekintse át a konfigurációkat, majd válassza a Mentés és bezárás lehetőséget.

    Most már cseveghet a modellel, amely az adataival hozza létre a választ.

A Microsoft Entra ID előfeltételei

A Microsoft Entra-azonosítóval javasolt kulcs nélküli hitelesítéshez a következőket kell elvégeznie:

  • Telepítse a Kulcs nélküli hitelesítéshez használt Azure CLI-t a Microsoft Entra-azonosítóval.
  • Rendelje hozzá a Cognitive Services User szerepkört a felhasználói fiókjához. Szerepköröket az Azure Portalon rendelhet hozzá a Hozzáférés-vezérlés (IAM)>Szerepkör-hozzárendelés hozzáadása területen.

Beállítás

  1. Hozzon létre egy új mappát dall-e-quickstart, és lépjen a rövid útmutató mappába a következő paranccsal:

     mkdir dall-e-quickstart && cd dall-e-quickstart
    
  2. A Microsoft Entra ID-val javasolt kulcs nélküli hitelesítéshez jelentkezzen be az Azure-ba a következő paranccsal:

     az login
    

Erőforrásadatok lekérése

Az alkalmazás Azure OpenAI-erőforrással való hitelesítéséhez le kell kérnie a következő adatokat. Ez a rövid útmutató feltételezi, hogy feltöltötte az adatokat egy Azure Blob Storage-fiókba, és létrehozott egy Azure AI Search-indexet. Lásd : Adatok hozzáadása a Microsoft Foundry portálon.

Változó neve Érték
AZURE_OPENAI_ENDPOINT Ez az érték a Kulcsok & végpont szakaszban található, amikor az Azure Portalról vizsgálja meg az Azure OpenAI-erőforrást. Példavégpont: https://my-resource.openai.azure.com.
AZURE_OPENAI_DEPLOYMENT_NAME Ez az érték a modell üzembe helyezésekor az üzembe helyezéshez választott egyéni névnek felel meg. Ez az érték az Azure Portálon a Resource Management>Deployments részben található.
AZURE_AI_SEARCH_ENDPOINT Ez az érték az Áttekintés szakaszban található, amikor az Azure Portalról vizsgálja meg az Azure AI Search-erőforrást.
AZURE_AI_SEARCH_INDEX Ez az érték az adatok tárolásához létrehozott index nevének felel meg. Az Azure portálon az Azure AI Search erőforrás áttekintésekor az Áttekintés szakaszban található.

További információ a kulcs nélküli hitelesítésről és a környezeti változók beállításáról.

A gyors kezdés futtatása

A rövid útmutatóban szereplő mintakód a Microsoft Entra-azonosítót használja az ajánlott kulcs nélküli hitelesítéshez. Ha inkább API-kulcsot szeretne használni, lecserélheti az implementációt a NewDefaultAzureCredential következőre NewKeyCredential: .

azureOpenAIEndpoint := os.Getenv("AZURE_OPENAI_ENDPOINT")
credential, err := azidentity.NewDefaultAzureCredential(nil)
client, err := azopenai.NewClient(azureOpenAIEndpoint, credential, nil)

A minta futtatásához:

  1. Hozzon létre egy quickstart.go nevű új fájlt. Másolja a következő kódot a quickstart.go fájlba .

    package main
    
    import (
     "context"
     "fmt"
     "log"
     "os"
    
     "github.com/Azure/azure-sdk-for-go/sdk/ai/azopenai"
     "github.com/Azure/azure-sdk-for-go/sdk/azcore"
     "github.com/Azure/azure-sdk-for-go/sdk/azcore/to"
    )
    
    func main() {
     azureOpenAIEndpoint := os.Getenv("AZURE_OPENAI_ENDPOINT")
     credential, err := azidentity.NewDefaultAzureCredential(nil)
     client, err := azopenai.NewClient(azureOpenAIEndpoint, credential, nil)
    
     modelDeploymentID := os.Getenv("AZURE_OPENAI_DEPLOYMENT_NAME")
    
     // Azure AI Search configuration
     searchIndex := os.Getenv("AZURE_AI_SEARCH_INDEX")
     searchEndpoint := os.Getenv("AZURE_AI_SEARCH_ENDPOINT")
     searchAPIKey := os.Getenv("AZURE_AI_SEARCH_API_KEY")
    
     if modelDeploymentID == "" || azureOpenAIEndpoint == "" || searchIndex == "" || searchEndpoint == "" || searchAPIKey == "" {
     	fmt.Fprintf(os.Stderr, "Skipping example, environment variables missing\n")
     	return
     }
    
     client, err := azopenai.NewClientWithKeyCredential(azureOpenAIEndpoint, credential, nil)
    
     if err != nil {
     	// Implement application specific error handling logic.
     	log.Printf("ERROR: %s", err)
     	return
     }
    
     resp, err := client.GetChatCompletions(context.TODO(), azopenai.ChatCompletionsOptions{
     	Messages: []azopenai.ChatRequestMessageClassification{
     		&azopenai.ChatRequestUserMessage{Content: azopenai.NewChatRequestUserMessageContent("What are my available health plans?")},
     	},
     	MaxTokens: to.Ptr[int32](512),
     	AzureExtensionsOptions: []azopenai.AzureChatExtensionConfigurationClassification{
     		&azopenai.AzureSearchChatExtensionConfiguration{
     			// This allows Azure OpenAI to use an Azure AI Search index.
     			// Answers are based on the model's pretrained knowledge
     			// and the latest information available in the designated data source. 
     			Parameters: &azopenai.AzureSearchChatExtensionParameters{
     				Endpoint:  &searchEndpoint,
     				IndexName: &searchIndex,
     				Authentication: &azopenai.OnYourDataAPIKeyAuthenticationOptions{
     					Key: &searchAPIKey,
     				},
     			},
     		},
     	},
     	DeploymentName: &modelDeploymentID,
     }, nil)
    
     if err != nil {
     	// Implement application specific error handling logic.
     	log.Printf("ERROR: %s", err)
     	return
     }
    
     fmt.Fprintf(os.Stderr, "Extensions Context Role: %s\nExtensions Context (length): %d\n",
     	*resp.Choices[0].Message.Role,
     	len(*resp.Choices[0].Message.Content))
    
     fmt.Fprintf(os.Stderr, "ChatRole: %s\nChat content: %s\n",
     	*resp.Choices[0].Message.Role,
     	*resp.Choices[0].Message.Content,
     )
    }
    
  2. Futtassa a következő parancsot egy új Go-modul létrehozásához:

     go mod init quickstart.go
    
  3. A szükséges függőségek telepítéséhez futtassa go mod tidy.

     go mod tidy
    
  4. Futtassa a következő parancsot a minta futtatásához:

     go run quickstart.go
    

Az alkalmazás kinyomtatja a választ, beleértve a lekérdezésre adott válaszokat és a feltöltött fájlokból származó idézeteket is.

Előfeltételek

Adatok hozzáadása a Microsoft Foundry portállal

Jótanács

Másik lehetőségként az Azure Developer CLI használatával programozott módon hozhatja létre az Azure OpenAI-hoz szükséges erőforrásokat az Adatain.

Adatok hozzáadása a portálon:

  1. Jelentkezzen be a Microsoft Foundrybe. Győződjön meg arról, hogy a New Foundry kapcsoló ki van kapcsolva. Ezek a lépések a Foundryre (klasszikus) vonatkoznak.

  2. Válassza ki az Azure OpenAI-erőforrást. Ha rendelkezik Foundry-erőforrással, létrehozhat egy Foundry-projektet.

  3. A bal oldali panelen válassza a Játszótéri>csevegés lehetőséget.

  4. A Telepítő panelen válassza ki a modell üzembe helyezését.

  5. Válassza az Adatok> hozzáadásaadatforrás hozzáadása lehetőséget.

    Képernyőkép a Foundryben található csevegő játszótérről.

  6. Az Adatforrás lapon:

    1. Az Adatforrás kiválasztása csoportban válassza a Fájlok feltöltése (előzetes verzió) lehetőséget.

      Jótanács

    2. A tárfiókhoz való hozzáféréshez az Azure OpenAI számára "több forrásból származó erőforrás-megosztás" (CORS) szükséges. Ha a CORS még nincs engedélyezve az Azure Blob Storage-erőforráshoz, válassza a CORS bekapcsolása lehetőséget.

    3. Válassza ki az Azure AI Search-erőforrást.

    4. Adja meg az új index nevét.

    5. Jelölje be az Azure AI Search használatának számlázási hatásait nyugtázó jelölőnégyzetet.

    6. Válassza a Következőlehetőséget.

    Képernyőkép az adatforrások foundry portálon való kiválasztásának lehetőségeiről.

  7. A Fájlok feltöltése lapon:

    1. Válassza a Tallózás egy fájl keresése lehetőséget, majd válassza ki a saját adatait vagy az előfeltételekből letöltött mintaadatokat.

    2. Válassza a Fájlok feltöltése lehetőséget.

    3. Válassza a Következőlehetőséget.

  8. Az Adatkezelés lapon:

    1. Adja meg, hogy engedélyezi-e a szemantikai keresést vagy a vektorkeresést az indexben.

      Fontos

      • A szemantikai keresésre és a vektorkeresésre további díjszabás vonatkozik. Az Azure AI Search-erőforrásnak alapszintű vagy magasabb szintűnek kell lennie a szemantikai keresés vagy vektorkeresés engedélyezéséhez. További információ: Szint és szolgáltatási korlátokkiválasztása.
      • Az információlekérés és a modellválasz minőségének javítása érdekében javasoljuk, hogy engedélyezze a szemantikai keresést a következő adatforrásnyelvek esetében: angol, francia, spanyol, portugál, olasz, német, kínai (Zh), japán, koreai, orosz és arab.
    2. Válassza a Következőlehetőséget.

  9. Az Adatkapcsolat lapon:

    1. Adja meg, hogy a hitelesítéshez rendszer által hozzárendelt felügyelt identitást vagy API-kulcsot használjon.

    2. Válassza a Következőlehetőséget.

  10. Tekintse át a konfigurációkat, majd válassza a Mentés és bezárás lehetőséget.

    Most már cseveghet a modellel, amely az adataival hozza létre a választ.

Erőforrásadatok lekérése

Az alkalmazás Azure OpenAI-erőforrással való hitelesítéséhez le kell kérnie a következő adatokat. Ez a rövid útmutató feltételezi, hogy feltöltötte az adatokat egy Azure Blob Storage-fiókba, és létrehozott egy Azure AI Search-indexet. Lásd : Adatok hozzáadása a Microsoft Foundry portálon.

Változó neve Érték
AZURE_OPENAI_ENDPOINT Ez az érték a Kulcsok & végpont szakaszban található, amikor az Azure Portalról vizsgálja meg az Azure OpenAI-erőforrást. Példavégpont: https://my-resource.openai.azure.com.
AZURE_OPENAI_DEPLOYMENT_NAME Ez az érték a modell üzembe helyezésekor az üzembe helyezéshez választott egyéni névnek felel meg. Ez az érték az Azure Portálon a Resource Management>Deployments részben található.
AZURE_AI_SEARCH_ENDPOINT Ez az érték az Áttekintés szakaszban található, amikor az Azure Portalról vizsgálja meg az Azure AI Search-erőforrást.
AZURE_AI_SEARCH_INDEX Ez az érték az adatok tárolásához létrehozott index nevének felel meg. Az Azure portálon az Azure AI Search erőforrás áttekintésekor az Áttekintés szakaszban található.

További információ a kulcs nélküli hitelesítésről és a környezeti változók beállításáról.

Példa cURL-parancsok

Az Azure OpenAI-csevegőmodellek úgy vannak optimalizálva, hogy beszélgetésként formázott bemenetekkel működjenek. A messages változó különböző szerepkörökkel rendelkező szótárakat ad át a rendszer, a felhasználó, az eszköz és az asszisztens által meghatározott beszélgetésben. A dataSources változó csatlakozik az Azure AI Search-indexhez, és lehetővé teszi, hogy az Azure OpenAI-modellek válaszoljanak az adataival.

A modell válaszának aktiválásához egy felhasználói üzenetnek kell véget vetnie, amely jelzi, hogy az asszisztens válasza a sor.

Jótanács

A modell válaszának módosításához számos paraméter használható, például temperature vagy top_p. További információért tekintse meg a referenciadokumentációt .

curl -i -X POST $AZURE_OPENAI_ENDPOINT/openai/deployments/$AZURE_OPENAI_DEPLOYMENT_NAME/chat/completions?api-version=2024-10-21 \
-H "Content-Type: application/json" \
-H "api-key: $AZURE_OPENAI_API_KEY" \
-d \
'
{
    "data_sources": [
        {
            "type": "azure_search",
            "parameters": {
                "endpoint": "'$AZURE_AI_SEARCH_ENDPOINT'",
                "index_name": "'$AZURE_AI_SEARCH_INDEX'",
                "authentication": {
                    "type": "api_key",
                    "key": "'$AZURE_AI_SEARCH_API_KEY'"
                }
            }
        }
    ],
    "messages": [
        {
            "role": "user",
            "content": "What are my available health plans?"
        }
    ]
}
'

Példa kimenet

{
    "id": "12345678-1a2b-3c4e5f-a123-12345678abcd",
    "model": "gpt-4",
    "created": 1709835345,
    "object": "extensions.chat.completion",
    "choices": [
        {
            "index": 0,
            "finish_reason": "stop",
            "message": {
                "role": "assistant",
                "content": "The available health plans in the Contoso Electronics plan and benefit packages are the Northwind Health Plus and Northwind Standard plans. [doc1].",
                "end_turn": true,
                "context": {
                    "citations": [
                        {
                            "content": "...",
                            "title": "...",
                            "url": "https://mysearch.blob.core.windows.net/xyz/001.txt",
                            "filepath": "001.txt",
                            "chunk_id": "0"
                        }
                    ],
                    "intent": "[\"Available health plans\"]"
                }
            }
        }
    ],
    "usage": {
        "prompt_tokens": 3779,
        "completion_tokens": 105,
        "total_tokens": 3884
    },
    "system_fingerprint": "fp_65792305e4"
}

Csevegés a modellel webalkalmazás használatával

Ha az adatokat használó Azure OpenAI-modellel szeretne csevegni, üzembe helyezhet egy webalkalmazást a Microsoft Foundry portál vagy a GitHubon megadott példakód használatával. Ez az alkalmazás az Azure App Service használatával települ, és felhasználói felületet biztosít a lekérdezések küldéséhez. Ez az alkalmazás olyan Azure OpenAI-modellekkel használható, amelyek az Ön adatait használják, vagy azokat a modelleket, amelyek nem használják az adatokat. A követelményekkel, a beállítással és az üzembe helyezéssel kapcsolatos utasításokért tekintse meg az adattár olvasófájlját. A forráskód módosításával igény szerint testre szabhatja a webalkalmazás előtér- és háttérlogikát .

Erőforrások tisztítása

Ha törölni és eltávolítani szeretne egy Azure OpenAI- vagy Azure AI Search-erőforrást, törölheti az erőforrást vagy az erőforráscsoportot. A forráscsoport törlése azt is eredményezi, hogy bármely hozzá tartozó egyéb erőforrás is törlésre kerül.

Következő lépések