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.
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
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:
-
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.
Válassza ki az Azure OpenAI-erőforrást. Ha rendelkezik Foundry-erőforrással, létrehozhat egy Foundry-projektet.
A bal oldali panelen válassza a Játszótéri>csevegés lehetőséget.
A Telepítő panelen válassza ki a modell üzembe helyezését.
Válassza az Adatok> hozzáadásaadatforrás hozzáadása lehetőséget.
Az Adatforrás lapon:
Az Adatforrás kiválasztása csoportban válassza a Fájlok feltöltése (előzetes verzió) lehetőséget.
Jótanács
- Ehhez a beállításhoz azure Blob Storage-erőforrásra és Azure AI Search-erőforrásra van szükség az adatok eléréséhez és indexeléséhez. További információ: Adatforrás-beállítások és támogatott fájltípusok és formátumok.
- A hosszú szöveggel rendelkező dokumentumok és adathalmazok esetében javasoljuk, hogy használja az adat-előkészítési szkriptet.
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.
Válassza ki az Azure AI Search-erőforrást.
Adja meg az új index nevét.
Jelölje be az Azure AI Search használatának számlázási hatásait nyugtázó jelölőnégyzetet.
Válassza a Következőlehetőséget.
A Fájlok feltöltése lapon:
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.
Válassza a Fájlok feltöltése lehetőséget.
Válassza a Következőlehetőséget.
Az Adatkezelés lapon:
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.
Válassza a Következőlehetőséget.
Az Adatkapcsolat lapon:
Adja meg, hogy a hitelesítéshez rendszer által hozzárendelt felügyelt identitást vagy API-kulcsot használjon.
Válassza a Következőlehetőséget.
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.
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ü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.
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
- Azure-előfizetés – Hozzon létre egyet ingyenesen.
- Ha nem rendelkezik saját adatokkal, töltse le a példaadatokat a GitHubról.
- A .NET 8 SDK
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:
-
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.
Válassza ki az Azure OpenAI-erőforrást. Ha rendelkezik Foundry-erőforrással, létrehozhat egy Foundry-projektet.
A bal oldali panelen válassza a Játszótéri>csevegés lehetőséget.
A Telepítő panelen válassza ki a modell üzembe helyezését.
Válassza az Adatok> hozzáadásaadatforrás hozzáadása lehetőséget.
Az Adatforrás lapon:
Az Adatforrás kiválasztása csoportban válassza a Fájlok feltöltése (előzetes verzió) lehetőséget.
Jótanács
- Ehhez a beállításhoz azure Blob Storage-erőforrásra és Azure AI Search-erőforrásra van szükség az adatok eléréséhez és indexeléséhez. További információ: Adatforrás-beállítások és támogatott fájltípusok és formátumok.
- A hosszú szöveggel rendelkező dokumentumok és adathalmazok esetében javasoljuk, hogy használja az adat-előkészítési szkriptet.
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.
Válassza ki az Azure AI Search-erőforrást.
Adja meg az új index nevét.
Jelölje be az Azure AI Search használatának számlázási hatásait nyugtázó jelölőnégyzetet.
Válassza a Következőlehetőséget.
A Fájlok feltöltése lapon:
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.
Válassza a Fájlok feltöltése lehetőséget.
Válassza a Következőlehetőséget.
Az Adatkezelés lapon:
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.
Válassza a Következőlehetőséget.
Az Adatkapcsolat lapon:
Adja meg, hogy a hitelesítéshez rendszer által hozzárendelt felügyelt identitást vagy API-kulcsot használjon.
Válassza a Következőlehetőséget.
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.
Előfeltételek
- Azure OpenAI
- Azure Blob-tároló
- Azure AI-keresés
-
Egy Azure OpenAI, vagy egy támogatott régióban és egy támogatott modellel üzembe helyezve.
- Győződjön meg arról, hogy legalább a Cognitive Services közreműködői szerepköre van hozzárendelve az Azure OpenAI-erőforráshoz.
- 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:
-
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.
Válassza ki az Azure OpenAI-erőforrást. Ha rendelkezik Foundry-erőforrással, létrehozhat egy Foundry-projektet.
A bal oldali panelen válassza a Játszótéri>csevegés lehetőséget.
A Telepítő panelen válassza ki a modell üzembe helyezését.
Válassza az Adatok> hozzáadásaadatforrás hozzáadása lehetőséget.
Az Adatforrás lapon:
Az Adatforrás kiválasztása csoportban válassza a Fájlok feltöltése (előzetes verzió) lehetőséget.
Jótanács
- Ehhez a beállításhoz azure Blob Storage-erőforrásra és Azure AI Search-erőforrásra van szükség az adatok eléréséhez és indexeléséhez. További információ: Adatforrás-beállítások és támogatott fájltípusok és formátumok.
- A hosszú szöveggel rendelkező dokumentumok és adathalmazok esetében javasoljuk, hogy használja az adat-előkészítési szkriptet.
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.
Válassza ki az Azure AI Search-erőforrást.
Adja meg az új index nevét.
Jelölje be az Azure AI Search használatának számlázási hatásait nyugtázó jelölőnégyzetet.
Válassza a Következőlehetőséget.
A Fájlok feltöltése lapon:
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.
Válassza a Fájlok feltöltése lehetőséget.
Válassza a Következőlehetőséget.
Az Adatkezelés lapon:
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.
Válassza a Következőlehetőséget.
Az Adatkapcsolat lapon:
Adja meg, hogy a hitelesítéshez rendszer által hozzárendelt felügyelt identitást vagy API-kulcsot használjon.
Válassza a Következőlehetőséget.
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
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>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.
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
Azure-előfizetés – Hozzon létre egyet ingyenesen.
A helyi fejlesztési környezetben a jelszó nélküli hitelesítéshez használt Azure CLI az Azure CLI-vel való bejelentkezéssel hozza létre a szükséges környezetet.
Egy támogatott régióban és egy támogatott modellel üzembe helyezett Azure OpenAI-erőforrás.
Győződjön meg arról, hogy legalább a Cognitive Services közreműködői szerepköre van hozzárendelve az Azure OpenAI-erőforráshoz.
Ha nem rendelkezik saját adatokkal, töltse le a példaadatokat a GitHubról.
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 Userszerepkö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:
-
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.
Válassza ki az Azure OpenAI-erőforrást. Ha rendelkezik Foundry-erőforrással, létrehozhat egy Foundry-projektet.
A bal oldali panelen válassza a Játszótéri>csevegés lehetőséget.
A Telepítő panelen válassza ki a modell üzembe helyezését.
Válassza az Adatok> hozzáadásaadatforrás hozzáadása lehetőséget.
Az Adatforrás lapon:
Az Adatforrás kiválasztása csoportban válassza a Fájlok feltöltése (előzetes verzió) lehetőséget.
Jótanács
- Ehhez a beállításhoz azure Blob Storage-erőforrásra és Azure AI Search-erőforrásra van szükség az adatok eléréséhez és indexeléséhez. További információ: Adatforrás-beállítások és támogatott fájltípusok és formátumok.
- A hosszú szöveggel rendelkező dokumentumok és adathalmazok esetében javasoljuk, hogy használja az adat-előkészítési szkriptet.
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.
Válassza ki az Azure AI Search-erőforrást.
Adja meg az új index nevét.
Jelölje be az Azure AI Search használatának számlázási hatásait nyugtázó jelölőnégyzetet.
Válassza a Következőlehetőséget.
A Fájlok feltöltése lapon:
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.
Válassza a Fájlok feltöltése lehetőséget.
Válassza a Következőlehetőséget.
Az Adatkezelés lapon:
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.
Válassza a Következőlehetőséget.
Az Adatkapcsolat lapon:
Adja meg, hogy a hitelesítéshez rendszer által hozzárendelt felügyelt identitást vagy API-kulcsot használjon.
Válassza a Következőlehetőséget.
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
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-quickstartHozza létre a
package.jsonkövetkező paranccsal:npm init -yTelepítse a JavaScripthez készült OpenAI ügyfélkódtárat a következőkkel:
npm install openaiAz ajánlott jelszó nélküli hitelesítéshez:
npm install @azure/identity
A JavaScript-kód hozzáadása
Hozza létre a
index.jsfá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); });Jelentkezzen be az Azure-ba a következő paranccsal:
az loginFuttassa 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
Azure-előfizetés – Hozzon létre egyet ingyenesen.
A helyi fejlesztési környezetben a jelszó nélküli hitelesítéshez használt Azure CLI az Azure CLI-vel való bejelentkezéssel hozza létre a szükséges környezetet.
Egy támogatott régióban és egy támogatott modellel üzembe helyezett Azure OpenAI-erőforrás.
Győződjön meg arról, hogy legalább a Cognitive Services közreműködői szerepköre van hozzárendelve az Azure OpenAI-erőforráshoz.
Ha nem rendelkezik saját adatokkal, töltse le a példaadatokat a GitHubról.
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 Userszerepkö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:
-
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.
Válassza ki az Azure OpenAI-erőforrást. Ha rendelkezik Foundry-erőforrással, létrehozhat egy Foundry-projektet.
A bal oldali panelen válassza a Játszótéri>csevegés lehetőséget.
A Telepítő panelen válassza ki a modell üzembe helyezését.
Válassza az Adatok> hozzáadásaadatforrás hozzáadása lehetőséget.
Az Adatforrás lapon:
Az Adatforrás kiválasztása csoportban válassza a Fájlok feltöltése (előzetes verzió) lehetőséget.
Jótanács
- Ehhez a beállításhoz azure Blob Storage-erőforrásra és Azure AI Search-erőforrásra van szükség az adatok eléréséhez és indexeléséhez. További információ: Adatforrás-beállítások és támogatott fájltípusok és formátumok.
- A hosszú szöveggel rendelkező dokumentumok és adathalmazok esetében javasoljuk, hogy használja az adat-előkészítési szkriptet.
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.
Válassza ki az Azure AI Search-erőforrást.
Adja meg az új index nevét.
Jelölje be az Azure AI Search használatának számlázási hatásait nyugtázó jelölőnégyzetet.
Válassza a Következőlehetőséget.
A Fájlok feltöltése lapon:
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.
Válassza a Fájlok feltöltése lehetőséget.
Válassza a Következőlehetőséget.
Az Adatkezelés lapon:
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.
Válassza a Következőlehetőséget.
Az Adatkapcsolat lapon:
Adja meg, hogy a hitelesítéshez rendszer által hozzárendelt felügyelt identitást vagy API-kulcsot használjon.
Válassza a Következőlehetőséget.
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
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-quickstartHozza létre a
package.jsonkövetkező paranccsal:npm init -yFrissítse a
package.jsonECMAScriptre a következő paranccsal:npm pkg set type=moduleTelepítse a JavaScripthez készült OpenAI ügyfélkódtárat a következőkkel:
npm install openaiAz ajánlott jelszó nélküli hitelesítéshez:
npm install @azure/identity
TypeScript-kód hozzáadása
Hozza létre a
index.tsfá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); });Hozza létre a fájlt a
tsconfig.jsonTypeScript-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"] }Transpilálás TypeScriptről JavaScriptre.
tscJelentkezzen be az Azure-ba a következő paranccsal:
az loginFuttassa 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
- Azure OpenAI
- Azure Blob-tároló
- Azure AI-keresés
- Egy támogatott régióban és egy támogatott modellel üzembe helyezett Azure OpenAI-erőforrás.
- Győződjön meg arról, hogy legalább a Cognitive Services közreműködői szerepköre van hozzárendelve az Azure OpenAI-erőforráshoz.
- Ha nem rendelkezik saját adatokkal, töltse le a példaadatokat a GitHubról.
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:
-
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.
Válassza ki az Azure OpenAI-erőforrást. Ha rendelkezik Foundry-erőforrással, létrehozhat egy Foundry-projektet.
A bal oldali panelen válassza a Játszótéri>csevegés lehetőséget.
A Telepítő panelen válassza ki a modell üzembe helyezését.
Válassza az Adatok> hozzáadásaadatforrás hozzáadása lehetőséget.
Az Adatforrás lapon:
Az Adatforrás kiválasztása csoportban válassza a Fájlok feltöltése (előzetes verzió) lehetőséget.
Jótanács
- Ehhez a beállításhoz azure Blob Storage-erőforrásra és Azure AI Search-erőforrásra van szükség az adatok eléréséhez és indexeléséhez. További információ: Adatforrás-beállítások és támogatott fájltípusok és formátumok.
- A hosszú szöveggel rendelkező dokumentumok és adathalmazok esetében javasoljuk, hogy használja az adat-előkészítési szkriptet.
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.
Válassza ki az Azure AI Search-erőforrást.
Adja meg az új index nevét.
Jelölje be az Azure AI Search használatának számlázási hatásait nyugtázó jelölőnégyzetet.
Válassza a Következőlehetőséget.
A Fájlok feltöltése lapon:
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.
Válassza a Fájlok feltöltése lehetőséget.
Válassza a Következőlehetőséget.
Az Adatkezelés lapon:
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.
Válassza a Következőlehetőséget.
Az Adatkapcsolat lapon:
Adja meg, hogy a hitelesítéshez rendszer által hozzárendelt felügyelt identitást vagy API-kulcsot használjon.
Válassza a Következőlehetőséget.
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
- 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
- Telepítse a következő Python-kódtárakat:
pip install openai
pip install python-dotenv
A Python-alkalmazás létrehozása
- 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.
- 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
- Azure OpenAI
- Azure Blob-tároló
- Azure AI-keresés
- Egy támogatott régióban és egy támogatott modellel üzembe helyezett Azure OpenAI-erőforrás.
- Győződjön meg arról, hogy legalább a Cognitive Services közreműködői szerepköre van hozzárendelve az Azure OpenAI-erőforráshoz.
- 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:
-
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.
Válassza ki az Azure OpenAI-erőforrást. Ha rendelkezik Foundry-erőforrással, létrehozhat egy Foundry-projektet.
A bal oldali panelen válassza a Játszótéri>csevegés lehetőséget.
A Telepítő panelen válassza ki a modell üzembe helyezését.
Válassza az Adatok> hozzáadásaadatforrás hozzáadása lehetőséget.
Az Adatforrás lapon:
Az Adatforrás kiválasztása csoportban válassza a Fájlok feltöltése (előzetes verzió) lehetőséget.
Jótanács
- Ehhez a beállításhoz azure Blob Storage-erőforrásra és Azure AI Search-erőforrásra van szükség az adatok eléréséhez és indexeléséhez. További információ: Adatforrás-beállítások és támogatott fájltípusok és formátumok.
- A hosszú szöveggel rendelkező dokumentumok és adathalmazok esetében javasoljuk, hogy használja az adat-előkészítési szkriptet.
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.
Válassza ki az Azure AI Search-erőforrást.
Adja meg az új index nevét.
Jelölje be az Azure AI Search használatának számlázási hatásait nyugtázó jelölőnégyzetet.
Válassza a Következőlehetőséget.
A Fájlok feltöltése lapon:
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.
Válassza a Fájlok feltöltése lehetőséget.
Válassza a Következőlehetőséget.
Az Adatkezelés lapon:
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.
Válassza a Következőlehetőséget.
Az Adatkapcsolat lapon:
Adja meg, hogy a hitelesítéshez rendszer által hozzárendelt felügyelt identitást vagy API-kulcsot használjon.
Válassza a Következőlehetőséget.
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
- Azure OpenAI
- Azure Blob-tároló
- Azure AI-keresés
- Egy támogatott régióban és egy támogatott modellel üzembe helyezett Azure OpenAI-erőforrás.
- Győződjön meg arról, hogy legalább a Cognitive Services közreműködői szerepköre van hozzárendelve az Azure OpenAI-erőforráshoz.
- Ha nem rendelkezik saját adatokkal, töltse le a példaadatokat a GitHubról.
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:
-
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.
Válassza ki az Azure OpenAI-erőforrást. Ha rendelkezik Foundry-erőforrással, létrehozhat egy Foundry-projektet.
A bal oldali panelen válassza a Játszótéri>csevegés lehetőséget.
A Telepítő panelen válassza ki a modell üzembe helyezését.
Válassza az Adatok> hozzáadásaadatforrás hozzáadása lehetőséget.
Az Adatforrás lapon:
Az Adatforrás kiválasztása csoportban válassza a Fájlok feltöltése (előzetes verzió) lehetőséget.
Jótanács
- Ehhez a beállításhoz azure Blob Storage-erőforrásra és Azure AI Search-erőforrásra van szükség az adatok eléréséhez és indexeléséhez. További információ: Adatforrás-beállítások és támogatott fájltípusok és formátumok.
- A hosszú szöveggel rendelkező dokumentumok és adathalmazok esetében javasoljuk, hogy használja az adat-előkészítési szkriptet.
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.
Válassza ki az Azure AI Search-erőforrást.
Adja meg az új index nevét.
Jelölje be az Azure AI Search használatának számlázási hatásait nyugtázó jelölőnégyzetet.
Válassza a Következőlehetőséget.
A Fájlok feltöltése lapon:
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.
Válassza a Fájlok feltöltése lehetőséget.
Válassza a Következőlehetőséget.
Az Adatkezelés lapon:
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.
Válassza a Következőlehetőséget.
Az Adatkapcsolat lapon:
Adja meg, hogy a hitelesítéshez rendszer által hozzárendelt felügyelt identitást vagy API-kulcsot használjon.
Válassza a Következőlehetőséget.
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 Userszerepkö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
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-quickstartA 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:
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, ) }Futtassa a következő parancsot egy új Go-modul létrehozásához:
go mod init quickstart.goA szükséges függőségek telepítéséhez futtassa
go mod tidy.go mod tidyFuttassa 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
- Azure OpenAI
- Azure Blob-tároló
- Azure AI-keresés
- Egy támogatott régióban és egy támogatott modellel üzembe helyezett Azure OpenAI-erőforrás.
- Győződjön meg arról, hogy legalább a Cognitive Services közreműködői szerepköre van hozzárendelve az Azure OpenAI-erőforráshoz.
- 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:
-
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.
Válassza ki az Azure OpenAI-erőforrást. Ha rendelkezik Foundry-erőforrással, létrehozhat egy Foundry-projektet.
A bal oldali panelen válassza a Játszótéri>csevegés lehetőséget.
A Telepítő panelen válassza ki a modell üzembe helyezését.
Válassza az Adatok> hozzáadásaadatforrás hozzáadása lehetőséget.
Az Adatforrás lapon:
Az Adatforrás kiválasztása csoportban válassza a Fájlok feltöltése (előzetes verzió) lehetőséget.
Jótanács
- Ehhez a beállításhoz azure Blob Storage-erőforrásra és Azure AI Search-erőforrásra van szükség az adatok eléréséhez és indexeléséhez. További információ: Adatforrás-beállítások és támogatott fájltípusok és formátumok.
- A hosszú szöveggel rendelkező dokumentumok és adathalmazok esetében javasoljuk, hogy használja az adat-előkészítési szkriptet.
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.
Válassza ki az Azure AI Search-erőforrást.
Adja meg az új index nevét.
Jelölje be az Azure AI Search használatának számlázási hatásait nyugtázó jelölőnégyzetet.
Válassza a Következőlehetőséget.
A Fájlok feltöltése lapon:
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.
Válassza a Fájlok feltöltése lehetőséget.
Válassza a Következőlehetőséget.
Az Adatkezelés lapon:
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.
Válassza a Következőlehetőséget.
Az Adatkapcsolat lapon:
Adja meg, hogy a hitelesítéshez rendszer által hozzárendelt felügyelt identitást vagy API-kulcsot használjon.
Válassza a Következőlehetőséget.
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.