Rychlý start: Chatování s modely Azure OpenAI s využitím vlastních dat
V tomto rychlém startu můžete použít vlastní data s modely Azure OpenAI. Použití modelů Azure OpenAI na vašich datech vám může poskytnout výkonnou konverzační platformu AI, která umožňuje rychlejší a přesnější komunikaci.
Požadavky
Následující zdroje informací:
- Azure OpenAI
- Azure Blob Storage
- Azure AI Search
- Prostředek Azure OpenAI nasazený v podporované oblasti a s podporovaným modelem.
- Ujistěte se, že máte přiřazenou alespoň roli Přispěvatel služeb Cognitive Services pro prostředek Azure OpenAI.
- Pokud nemáte vlastní data, stáhněte si ukázková data z GitHubu .
Přidání dat pomocí nástroje Azure OpenAI Studio
Tip
Azure Developer CLI můžete použít k programovému vytvoření prostředků potřebných pro Azure OpenAI ve vašich datech.
Přejděte do Azure AI Foundry a přihlaste se pomocí přihlašovacích údajů, které mají přístup k vašemu prostředku Azure OpenAI.
Projekt Azure AI Foundry můžete vytvořit kliknutím na Vytvořit projekt nebo pokračovat přímo kliknutím na tlačítko na dlaždici Prioritní služba Azure OpenAI.
V levé navigační nabídce vyberte Chat v části Dětské hřiště a vyberte nasazení modelu.
V chatovacím hřišti vyberte Přidat data a pak přidejte zdroj dat.
V zobrazeném podokně vyberte Nahrát soubory (Preview) v části Vybrat zdroj dat. Azure OpenAI potřebuje prostředek úložiště i vyhledávací prostředek pro přístup k datům a jeho indexování.
Tip
- Další informace najdete v následujícím zdroji:
- U dokumentů a datových sad s dlouhým textem doporučujeme použít dostupný skript pro přípravu dat.
Aby služba Azure OpenAI přistupovala k vašemu účtu úložiště, budete muset zapnout sdílení prostředků mezi zdroji (CORS). Pokud cors ještě není pro prostředek Azure Blob Storage zapnutý, vyberte Zapnout CORS.
Vyberte prostředek Služby Azure AI Search a vyberte potvrzení, že připojení k němu bude mít na vašem účtu využití. Pak vyberte Další.
V podokně Nahrát soubory vyberte Vyhledat soubor a vyberte soubory, které jste stáhli v části Požadavky, nebo vlastní data. Pak vyberte Nahrát soubory. Pak vyberte Další.
V podokně Správa dat můžete zvolit, jestli chcete povolit sémantické vyhledávání nebo vektorové vyhledávání indexu.
Důležité
- Sémantické vyhledávání a vektorové vyhledávání se řídí dalšími cenami. Pokud chcete povolit sémantické vyhledávání nebo vektorové vyhledávání, musíte zvolit skladovou položku Basic nebo vyšší. Další informace najdete v cenových úrovních a omezeních služeb.
- Pokud chcete zlepšit kvalitu načítání informací a odpovědí modelu, doporučujeme povolit sémantické vyhledávání pro následující jazyky zdrojů dat: angličtina, francouzština, španělština, portugalština, italština, Německo, čínština (Zh), japonština, korejština, ruština a arabština.
Zkontrolujte zadané podrobnosti a vyberte Uložit a zavřít. Teď můžete chatovat s modelem a k vytvoření odpovědi budou používat informace z vašich dat.
Chatovací hřiště
Začněte zkoumat funkce Azure OpenAI pomocí přístupu bez kódu prostřednictvím chatovacího hřiště. Jedná se o textové pole, do kterého můžete odeslat výzvu k vygenerování dokončení. Na této stránce můžete rychle iterovat a experimentovat s možnostmi.
Dětské hřiště nabízí možnosti pro přizpůsobení chatu. V horní nabídce můžete vybrat Nasadit a určit, který model vygeneruje odpověď pomocí výsledků hledání z indexu. Zvolíte počet minulých zpráv, které se mají zahrnout jako historie konverzací pro budoucí generované odpovědi. Historie konverzací poskytuje kontext pro generování souvisejících odpovědí, ale také využívá využití tokenů. Indikátor průběhu vstupního tokenu sleduje počet tokenů zadané otázky.
Rozšířená nastavení na levé straně jsou parametry modulu runtime, které vám umožňují řídit načítání a vyhledávání relevantních informací z vašich dat. Dobrým případem použití je, když chcete zajistit, aby se odpovědi vygenerovaly jenom na základě vašich dat, nebo když zjistíte, že model nemůže vygenerovat odpověď na základě informací o datech.
Striktnost určuje agresivitu systému při filtrování vyhledávacích dokumentů na základě skóre podobnosti. Nastavení striktnosti na hodnotu 5 značí, že systém agresivně odfiltruje dokumenty a použije velmi vysokou prahovou hodnotu podobnosti. Sémantické vyhledávání může být v tomto scénáři užitečné, protože modely řazení dělají lepší úlohu odvození záměru dotazu. Nižší úrovně striktnosti vytvářejí podrobnější odpovědi, ale můžou také obsahovat informace, které nejsou v indexu. Ve výchozím nastavení je tato hodnota nastavená na hodnotu 3.
Načtené dokumenty jsou celé číslo, které lze nastavit na 3, 5, 10 nebo 20 a řídí počet bloků dokumentů zadaných pro velký jazykový model pro formulaci konečné odpovědi. Ve výchozím nastavení je nastavená hodnota 5.
Pokud je povolená možnost Omezit odpovědi na vaše data , model se pokusí spoléhat jenom na vaše dokumenty pro odpovědi. Ve výchozím nastavení je tato hodnota nastavená na true.
Odešlete první dotaz. Modely chatu fungují nejlépe ve cvičeních pro otázky a odpovědi. Například"Co jsou moje dostupné plány stavu?" nebo "Co je možnost plus stav?".
Dotazy, které vyžadují analýzu dat, pravděpodobně selžou, například "Který plán stavu je nejoblíbenější?". Dotazy, které vyžadují informace o všech datech, pravděpodobně selžou, například "Kolik dokumentů jsem nahrál?". Nezapomeňte, že vyhledávací web hledá bloky dat, které mají přesné nebo podobné termíny, fráze nebo výstavbu dotazu. I když model může otázku pochopit, pokud jsou výsledky hledání bloky dat ze sady dat, nejedná se o správné informace pro odpověď na tento druh otázky.
Chaty jsou omezené počtem dokumentů (bloků dat) vrácených v odpovědi (omezeno na 3–20 v dětském hřišti Azure OpenAI Studio). Jak si můžete představit, pokládání otázky týkající se "všech názvů" vyžaduje úplnou kontrolu celého úložiště vektorů.
Nasazení modelu
Jakmile budete spokojeni s prostředím v nástroji Azure OpenAI Studio, můžete webovou aplikaci nasadit přímo ze studia výběrem tlačítka Nasadit do .
To vám dává možnost buď nasadit do samostatné webové aplikace, nebo kopírovat v copilot Studiu (Preview), pokud používáte vlastní data v modelu.
Pokud se například rozhodnete nasadit webovou aplikaci:
Při prvním nasazení webové aplikace byste měli vybrat Vytvořit novou webovou aplikaci. Zvolte název aplikace, který se stane součástí adresy URL aplikace. Například https://<appname>.azurewebsites.net
.
Vyberte předplatné, skupinu prostředků, umístění a cenový plán publikované aplikace. Pokud chcete aktualizovat existující aplikaci, vyberte Publikovat do existující webové aplikace a v rozevírací nabídce zvolte název předchozí aplikace.
Pokud se rozhodnete nasadit webovou aplikaci, podívejte se na důležité aspekty jeho použití.
Požadavky
Následující zdroje informací:
- Azure OpenAI
- Azure Blob Storage
- Azure AI Search
- Prostředek Azure OpenAI nasazený v podporované oblasti a s podporovaným modelem.
- Ujistěte se, že máte přiřazenou alespoň roli Přispěvatel služeb Cognitive Services pro prostředek Azure OpenAI.
- Pokud nemáte vlastní data, stáhněte si ukázková data z GitHubu .
- Sada .NET 8 SDK
Přidání dat pomocí nástroje Azure OpenAI Studio
Tip
Azure Developer CLI můžete použít k programovému vytvoření prostředků potřebných pro Azure OpenAI ve vašich datech.
Přejděte do Azure AI Foundry a přihlaste se pomocí přihlašovacích údajů, které mají přístup k vašemu prostředku Azure OpenAI.
Projekt Azure AI Foundry můžete vytvořit kliknutím na Vytvořit projekt nebo pokračovat přímo kliknutím na tlačítko na dlaždici Prioritní služba Azure OpenAI.
V levé navigační nabídce vyberte Chat v části Dětské hřiště a vyberte nasazení modelu.
V chatovacím hřišti vyberte Přidat data a pak přidejte zdroj dat.
V zobrazeném podokně vyberte Nahrát soubory (Preview) v části Vybrat zdroj dat. Azure OpenAI potřebuje prostředek úložiště i vyhledávací prostředek pro přístup k datům a jeho indexování.
Tip
- Další informace najdete v následujícím zdroji:
- U dokumentů a datových sad s dlouhým textem doporučujeme použít dostupný skript pro přípravu dat.
Aby služba Azure OpenAI přistupovala k vašemu účtu úložiště, budete muset zapnout sdílení prostředků mezi zdroji (CORS). Pokud cors ještě není pro prostředek Azure Blob Storage zapnutý, vyberte Zapnout CORS.
Vyberte prostředek Služby Azure AI Search a vyberte potvrzení, že připojení k němu bude mít na vašem účtu využití. Pak vyberte Další.
V podokně Nahrát soubory vyberte Vyhledat soubor a vyberte soubory, které jste stáhli v části Požadavky, nebo vlastní data. Pak vyberte Nahrát soubory. Pak vyberte Další.
V podokně Správa dat můžete zvolit, jestli chcete povolit sémantické vyhledávání nebo vektorové vyhledávání indexu.
Důležité
- Sémantické vyhledávání a vektorové vyhledávání se řídí dalšími cenami. Pokud chcete povolit sémantické vyhledávání nebo vektorové vyhledávání, musíte zvolit skladovou položku Basic nebo vyšší. Další informace najdete v cenových úrovních a omezeních služeb.
- Pokud chcete zlepšit kvalitu načítání informací a odpovědí modelu, doporučujeme povolit sémantické vyhledávání pro následující jazyky zdrojů dat: angličtina, francouzština, španělština, portugalština, italština, Německo, čínština (Zh), japonština, korejština, ruština a arabština.
Zkontrolujte zadané podrobnosti a vyberte Uložit a zavřít. Teď můžete chatovat s modelem a k vytvoření odpovědi budou používat informace z vašich dat.
Načtení požadovaných proměnných
K úspěšnému volání azure OpenAI potřebujete následující proměnné. V tomto rychlém startu se předpokládá, že jste data nahráli do účtu služby Azure Blob Storage a vytvořili jste index služby Azure AI Search. Viz Přidání dat pomocí Azure AI Foundry
Název proměnné | Hodnota |
---|---|
AZURE_OPENAI_ENDPOINT |
Tuto hodnotu najdete v části Klíče a koncový bod při zkoumání prostředku Azure OpenAI na webu Azure Portal. Případně můžete hodnotu najít v zobrazení kódu chatového hřiště>Azure AI Foundry>. Ukázkový koncový bod je: https://my-resoruce.openai.azure.com . |
AZURE_OPENAI_API_KEY |
Tuto hodnotu najdete v části Klíče správy>prostředků a koncový bod při zkoumání prostředku Azure OpenAI na webu Azure Portal. Použít můžete předponu KEY1 nebo KEY2 . Vždy mít dva klíče vám umožní bezpečně otáčet a znovu vygenerovat klíče, aniž by to způsobilo přerušení služeb. |
AZURE_OPENAI_DEPLOYMENT_ID |
Tato hodnota odpovídá vlastnímu názvu, který jste zvolili pro vaše nasazení při nasazení modelu. Tuto hodnotu najdete v části Nasazení správy>prostředků na webu Azure Portal nebo v části Nasazení správy>na portálu Azure AI Foundry. |
AZURE_AI_SEARCH_ENDPOINT |
Tuto hodnotu najdete v části Přehled při zkoumání prostředku Azure AI Search na webu Azure Portal. |
AZURE_AI_SEARCH_API_KEY |
Tuto hodnotu najdete v části Klíče nastavení>při zkoumání prostředku Azure AI Search na webu Azure Portal. Můžete použít primární klíč správce nebo sekundární klíč správce. Vždy mít dva klíče vám umožní bezpečně otáčet a znovu vygenerovat klíče, aniž by to způsobilo přerušení služeb. |
AZURE_AI_SEARCH_INDEX |
Tato hodnota odpovídá názvu indexu, který jste vytvořili pro ukládání dat. Najdete ho v části Přehled při zkoumání prostředku Azure AI Search na webu Azure Portal. |
Proměnné prostředí
Vytvořte a přiřaďte trvalé proměnné prostředí pro klíč a koncový bod.
Důležité
Pokud používáte klíč rozhraní API, uložte ho bezpečně někam jinam, například ve službě Azure Key Vault. Nezahrnujte klíč rozhraní API přímo do kódu a nikdy ho nevštěvujte veřejně.
Další informace o zabezpečení služeb AI najdete v tématu Ověřování požadavků na služby Azure AI.
setx AZURE_OPENAI_ENDPOINT REPLACE_WITH_YOUR_AOAI_ENDPOINT_VALUE_HERE
setx AZURE_OPENAI_API_KEY REPLACE_WITH_YOUR_AOAI_KEY_VALUE_HERE
setx AZURE_OPENAI_DEPLOYMENT_ID REPLACE_WITH_YOUR_AOAI_DEPLOYMENT_VALUE_HERE
setx AZURE_AI_SEARCH_ENDPOINT REPLACE_WITH_YOUR_AZURE_SEARCH_RESOURCE_VALUE_HERE
setx AZURE_AI_SEARCH_API_KEY REPLACE_WITH_YOUR_AZURE_SEARCH_RESOURCE_KEY_VALUE_HERE
setx AZURE_AI_SEARCH_INDEX REPLACE_WITH_YOUR_INDEX_NAME_HERE
Vytvoření nové aplikace .NET Core
V okně konzoly (například cmd, PowerShell nebo Bash) pomocí dotnet new
příkazu vytvořte novou konzolovou aplikaci s názvem azure-openai-quickstart
. Tento příkaz vytvoří jednoduchý projekt Hello World s jedním zdrojovým souborem jazyka C#: Program.cs.
dotnet new console -n azure-openai-quickstart
Změňte adresář na nově vytvořenou složku aplikace. Aplikaci můžete sestavit pomocí následujících:
dotnet build
Výstup sestavení by neměl obsahovat žádná upozornění ani chyby.
...
Build succeeded.
0 Warning(s)
0 Error(s)
...
Nainstalujte klientskou knihovnu OpenAI .NET pomocí:
dotnet add package Azure.AI.OpenAI --prerelease
V adresáři projektu otevřete soubor Program.cs a nahraďte jeho obsah následujícím kódem:
Bez streamování odpovědí
using Azure;
using Azure.AI.OpenAI;
using Azure.AI.OpenAI.Chat;
using OpenAI.Chat;
using System.Text.Json;
using static System.Environment;
string azureOpenAIEndpoint = GetEnvironmentVariable("AZURE_OPENAI_ENDPOINT");
string azureOpenAIKey = GetEnvironmentVariable("AZURE_OPENAI_API_KEY");
string deploymentName = GetEnvironmentVariable("AZURE_OPENAI_DEPLOYMENT_ID");
string searchEndpoint = GetEnvironmentVariable("AZURE_AI_SEARCH_ENDPOINT");
string searchKey = GetEnvironmentVariable("AZURE_AI_SEARCH_API_KEY");
string searchIndex = GetEnvironmentVariable("AZURE_AI_SEARCH_INDEX");
#pragma warning disable AOAI001
AzureOpenAIClient azureClient = new(
new Uri(azureOpenAIEndpoint),
new AzureKeyCredential(azureOpenAIKey));
ChatClient chatClient = azureClient.GetChatClient(deploymentName);
ChatCompletionOptions options = new();
options.AddDataSource(new AzureSearchChatDataSource()
{
Endpoint = new Uri(searchEndpoint),
IndexName = searchIndex,
Authentication = DataSourceAuthentication.FromApiKey(searchKey),
});
ChatCompletion completion = chatClient.CompleteChat(
[
new UserChatMessage("What are my available health plans?"),
], options);
Console.WriteLine(completion.Content[0].Text);
AzureChatMessageContext onYourDataContext = completion.GetAzureMessageContext();
if (onYourDataContext?.Intent is not null)
{
Console.WriteLine($"Intent: {onYourDataContext.Intent}");
}
foreach (AzureChatCitation citation in onYourDataContext?.Citations ?? [])
{
Console.WriteLine($"Citation: {citation.Content}");
}
Důležité
V produkčním prostředí použijte bezpečný způsob ukládání přihlašovacích údajů a přístupu k vašim přihlašovacím údajům, jako je Azure Key Vault. Další informace o zabezpečení přihlašovacích údajů najdete v článku zabezpečení služeb Azure AI.
dotnet run program.cs
Výstup
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
Před tiskem výsledků bude model čekat, až model vygeneruje celou odpověď. Pokud chcete asynchronně streamovat odpověď a vytisknout výsledky, můžete obsah Program.cs nahradit kódem v dalším příkladu.
Asynchronní s využitím streamování
using Azure;
using Azure.AI.OpenAI;
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_ID");
string searchEndpoint = GetEnvironmentVariable("AZURE_AI_SEARCH_ENDPOINT");
string searchKey = GetEnvironmentVariable("AZURE_AI_SEARCH_API_KEY");
string searchIndex = GetEnvironmentVariable("AZURE_AI_SEARCH_INDEX");
#pragma warning disable AOAI001
AzureOpenAIClient azureClient = new(
new Uri(azureOpenAIEndpoint),
new AzureKeyCredential(azureOpenAIKey));
ChatClient chatClient = azureClient.GetChatClient(deploymentName);
ChatCompletionOptions options = new();
options.AddDataSource(new AzureSearchChatDataSource()
{
Endpoint = new Uri(searchEndpoint),
IndexName = searchIndex,
Authentication = DataSourceAuthentication.FromApiKey(searchKey),
});
var chatUpdates = chatClient.CompleteChatStreamingAsync(
[
new UserChatMessage("What are my available health plans?"),
], options);
AzureChatMessageContext onYourDataContext = null;
await foreach (var chatUpdate in chatUpdates)
{
if (chatUpdate.Role.HasValue)
{
Console.WriteLine($"{chatUpdate.Role}: ");
}
foreach (var contentPart in chatUpdate.ContentUpdate)
{
Console.Write(contentPart.Text);
}
if (onYourDataContext == null)
{
onYourDataContext = chatUpdate.GetAzureMessageContext();
}
}
Console.WriteLine();
if (onYourDataContext?.Intent is not null)
{
Console.WriteLine($"Intent: {onYourDataContext.Intent}");
}
foreach (AzureChatCitation citation in onYourDataContext?.Citations ?? [])
{
Console.Write($"Citation: {citation.Content}");
}
Požadavky
Následující zdroje informací:
- Azure OpenAI
- Azure Blob Storage
- Azure AI Search
- Prostředek Azure OpenAI nasazený v podporované oblasti a s podporovaným modelem.
- Ujistěte se, že máte přiřazenou alespoň roli Přispěvatel služeb Cognitive Services pro prostředek Azure OpenAI.
- Pokud nemáte vlastní data, stáhněte si ukázková data z GitHubu .
Přidání dat pomocí nástroje Azure OpenAI Studio
Tip
Azure Developer CLI můžete použít k programovému vytvoření prostředků potřebných pro Azure OpenAI ve vašich datech.
Přejděte do Azure AI Foundry a přihlaste se pomocí přihlašovacích údajů, které mají přístup k vašemu prostředku Azure OpenAI.
Projekt Azure AI Foundry můžete vytvořit kliknutím na Vytvořit projekt nebo pokračovat přímo kliknutím na tlačítko na dlaždici Prioritní služba Azure OpenAI.
V levé navigační nabídce vyberte Chat v části Dětské hřiště a vyberte nasazení modelu.
V chatovacím hřišti vyberte Přidat data a pak přidejte zdroj dat.
V zobrazeném podokně vyberte Nahrát soubory (Preview) v části Vybrat zdroj dat. Azure OpenAI potřebuje prostředek úložiště i vyhledávací prostředek pro přístup k datům a jeho indexování.
Tip
- Další informace najdete v následujícím zdroji:
- U dokumentů a datových sad s dlouhým textem doporučujeme použít dostupný skript pro přípravu dat.
Aby služba Azure OpenAI přistupovala k vašemu účtu úložiště, budete muset zapnout sdílení prostředků mezi zdroji (CORS). Pokud cors ještě není pro prostředek Azure Blob Storage zapnutý, vyberte Zapnout CORS.
Vyberte prostředek Služby Azure AI Search a vyberte potvrzení, že připojení k němu bude mít na vašem účtu využití. Pak vyberte Další.
V podokně Nahrát soubory vyberte Vyhledat soubor a vyberte soubory, které jste stáhli v části Požadavky, nebo vlastní data. Pak vyberte Nahrát soubory. Pak vyberte Další.
V podokně Správa dat můžete zvolit, jestli chcete povolit sémantické vyhledávání nebo vektorové vyhledávání indexu.
Důležité
- Sémantické vyhledávání a vektorové vyhledávání se řídí dalšími cenami. Pokud chcete povolit sémantické vyhledávání nebo vektorové vyhledávání, musíte zvolit skladovou položku Basic nebo vyšší. Další informace najdete v cenových úrovních a omezeních služeb.
- Pokud chcete zlepšit kvalitu načítání informací a odpovědí modelu, doporučujeme povolit sémantické vyhledávání pro následující jazyky zdrojů dat: angličtina, francouzština, španělština, portugalština, italština, Německo, čínština (Zh), japonština, korejština, ruština a arabština.
Zkontrolujte zadané podrobnosti a vyberte Uložit a zavřít. Teď můžete chatovat s modelem a k vytvoření odpovědi budou používat informace z vašich dat.
Načtení požadovaných proměnných
K úspěšnému volání azure OpenAI potřebujete následující proměnné. V tomto rychlém startu se předpokládá, že jste data nahráli do účtu služby Azure Blob Storage a vytvořili jste index služby Azure AI Search. Další informace najdete v tématu Přidání dat pomocí Azure AI Foundry.
Název proměnné | Hodnota |
---|---|
AZURE_OPENAI_ENDPOINT |
Tuto hodnotu najdete v části Klíče a koncový bod při zkoumání prostředku Azure OpenAI z webu Azure Portal. Případně můžete hodnotu najít v zobrazení kódu chatového hřiště>Azure AI Foundry>. Ukázkový koncový bod je: https://my-resource.openai.azure.com . |
AZURE_OPENAI_API_KEY |
Tuto hodnotu najdete v části Klíče správy>prostředků a koncový bod při zkoumání prostředku Azure OpenAI z webu Azure Portal. Použít můžete předponu KEY1 nebo KEY2 . Vždy mít dva klíče vám umožní bezpečně otáčet a znovu vygenerovat klíče, aniž by to způsobilo přerušení služeb. |
AZURE_OPEN_AI_DEPLOYMENT_ID |
Tato hodnota odpovídá vlastnímu názvu, který jste zvolili pro vaše nasazení při nasazení modelu. Tuto hodnotu najdete v části Nasazení správy>prostředků na webu Azure Portal nebo v části Nasazení správy>na portálu Azure AI Foundry. |
AZURE_AI_SEARCH_ENDPOINT |
Tuto hodnotu najdete v části Přehled při zkoumání prostředku Azure AI Search na webu Azure Portal. |
AZURE_AI_SEARCH_API_KEY |
Tuto hodnotu najdete v části Klíče nastavení>při zkoumání prostředku Azure AI Search z webu Azure Portal. Můžete použít primární klíč správce nebo sekundární klíč správce. Vždy mít dva klíče vám umožní bezpečně otáčet a znovu vygenerovat klíče, aniž by to způsobilo přerušení služeb. |
AZURE_AI_SEARCH_INDEX |
Tato hodnota odpovídá názvu indexu, který jste vytvořili pro ukládání dat. Najdete ho v části Přehled při zkoumání prostředku Azure AI Search na webu Azure Portal. |
Proměnné prostředí
Vytvořte a přiřaďte trvalé proměnné prostředí pro klíč a koncový bod.
Důležité
Pokud používáte klíč rozhraní API, uložte ho bezpečně někam jinam, například ve službě Azure Key Vault. Nezahrnujte klíč rozhraní API přímo do kódu a nikdy ho nevštěvujte veřejně.
Další informace o zabezpečení služeb AI najdete v tématu Ověřování požadavků na služby Azure AI.
Poznámka:
Spring AI ve výchozím nastavení nastaví název modelu na gpt-35-turbo
. Hodnotu je nutné zadat SPRING_AI_AZURE_OPENAI_MODEL
jenom v případě, že jste nasadili model s jiným názvem.
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
Vytvoření nové aplikace Spring
Spring AI v současné době nepodporuje AzureCognitiveSearchChatExtensionConfiguration
možnosti, které umožňují dotazu Azure AI zapouzdřit metodu Retrieval Augmented Generation (RAG) a skrýt podrobnosti od uživatele. Jako alternativu můžete metodu RAG vyvolat přímo ve vaší aplikaci k dotazování dat v indexu Azure AI Search a k rozšíření dotazu použít načtené dokumenty.
Spring AI podporuje abstrakci VectorStore a službu Azure AI Search můžete zabalit do implementace Spring AI VectorStore pro dotazování vlastních dat. Následující projekt implementuje vlastní VectorStore zálohovaný službou Azure AI Search a přímo provádí operace RAG.
V okně Bash vytvořte pro aplikaci nový adresář a přejděte na něj.
mkdir ai-custom-data-demo && cd ai-custom-data-demo
spring init
Spusťte příkaz z pracovního adresáře. Tento příkaz vytvoří standardní adresářovou strukturu projektu Spring, včetně hlavního zdrojového souboru třídy Java a souboru pom.xml používaného ke správě projektů založených na Mavenu.
spring init -a ai-custom-data-demo -n AICustomData --force --build maven -x
Vygenerované soubory a složky se podobají následující struktuře:
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
Upravit aplikaci Spring
Upravte soubor pom.xml.
V kořenovém adresáři projektu otevřete soubor pom.xml v preferovaném editoru nebo integrovaném vývojovém prostředí (IDE) a přepište soubor následujícím obsahem:
<?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>
Ve složce src/main/java/com/example/aicustomdatademo otevřete AiCustomDataApplication.java v preferovaném editoru nebo integrovaném vývojovém prostředí a vložte následující kód:
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 AI service. 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; } }
Důležité
V produkčním prostředí použijte bezpečný způsob ukládání přihlašovacích údajů a přístupu k vašim přihlašovacím údajům, jako je Azure Key Vault. Další informace o zabezpečení přihlašovacích údajů najdete v článku zabezpečení služeb Azure AI.
Přejděte zpět do kořenové složky projektu a spusťte aplikaci pomocí následujícího příkazu:
./mvnw spring-boot:run
Výstup
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: 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 AI service. 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.
Požadavky
Předplatné Azure – Vytvořte si ho zdarma.
Azure CLI , které se používá k ověřování bez hesla v místním vývojovém prostředí, vytvořte potřebný kontext přihlášením pomocí Azure CLI.
Prostředek Azure OpenAI nasazený v podporované oblasti a s podporovaným modelem.
Ujistěte se, že máte přiřazenou alespoň roli Přispěvatel služeb Cognitive Services pro prostředek Azure OpenAI.
Pokud nemáte vlastní data, stáhněte si ukázková data z GitHubu .
Referenční dokumentace | – ukázky balíčku zdrojového kódu | (npm) |
Přidání dat pomocí nástroje Azure OpenAI Studio
Tip
Azure Developer CLI můžete použít k programovému vytvoření prostředků potřebných pro Azure OpenAI ve vašich datech.
Přejděte do Azure AI Foundry a přihlaste se pomocí přihlašovacích údajů, které mají přístup k vašemu prostředku Azure OpenAI.
Projekt Azure AI Foundry můžete vytvořit kliknutím na Vytvořit projekt nebo pokračovat přímo kliknutím na tlačítko na dlaždici Prioritní služba Azure OpenAI.
V levé navigační nabídce vyberte Chat v části Dětské hřiště a vyberte nasazení modelu.
V chatovacím hřišti vyberte Přidat data a pak přidejte zdroj dat.
V zobrazeném podokně vyberte Nahrát soubory (Preview) v části Vybrat zdroj dat. Azure OpenAI potřebuje prostředek úložiště i vyhledávací prostředek pro přístup k datům a jeho indexování.
Tip
- Další informace najdete v následujícím zdroji:
- U dokumentů a datových sad s dlouhým textem doporučujeme použít dostupný skript pro přípravu dat.
Aby služba Azure OpenAI přistupovala k vašemu účtu úložiště, budete muset zapnout sdílení prostředků mezi zdroji (CORS). Pokud cors ještě není pro prostředek Azure Blob Storage zapnutý, vyberte Zapnout CORS.
Vyberte prostředek Služby Azure AI Search a vyberte potvrzení, že připojení k němu bude mít na vašem účtu využití. Pak vyberte Další.
V podokně Nahrát soubory vyberte Vyhledat soubor a vyberte soubory, které jste stáhli v části Požadavky, nebo vlastní data. Pak vyberte Nahrát soubory. Pak vyberte Další.
V podokně Správa dat můžete zvolit, jestli chcete povolit sémantické vyhledávání nebo vektorové vyhledávání indexu.
Důležité
- Sémantické vyhledávání a vektorové vyhledávání se řídí dalšími cenami. Pokud chcete povolit sémantické vyhledávání nebo vektorové vyhledávání, musíte zvolit skladovou položku Basic nebo vyšší. Další informace najdete v cenových úrovních a omezeních služeb.
- Pokud chcete zlepšit kvalitu načítání informací a odpovědí modelu, doporučujeme povolit sémantické vyhledávání pro následující jazyky zdrojů dat: angličtina, francouzština, španělština, portugalština, italština, Německo, čínština (Zh), japonština, korejština, ruština a arabština.
Zkontrolujte zadané podrobnosti a vyberte Uložit a zavřít. Teď můžete chatovat s modelem a k vytvoření odpovědi budou používat informace z vašich dat.
Načtení požadovaných proměnných
K úspěšnému volání azure OpenAI potřebujete následující proměnné. V tomto rychlém startu se předpokládá, že jste data nahráli do účtu služby Azure Blob Storage a vytvořili jste index služby Azure AI Search. Viz Přidání dat pomocí Azure AI Foundry
Název proměnné | Hodnota |
---|---|
AZURE_OPENAI_ENDPOINT |
Tuto hodnotu najdete v části Klíče a koncový bod při zkoumání prostředku Azure OpenAI na webu Azure Portal. Případně můžete hodnotu najít v zobrazení kódu chatového hřiště>Azure AI Foundry>. Ukázkový koncový bod je: https://my-resoruce.openai.azure.com . |
AZURE_OPENAI_API_KEY |
Tuto hodnotu najdete v části Klíče správy>prostředků a koncový bod při zkoumání prostředku Azure OpenAI na webu Azure Portal. Použít můžete předponu KEY1 nebo KEY2 . Vždy mít dva klíče vám umožní bezpečně otáčet a znovu vygenerovat klíče, aniž by to způsobilo přerušení služeb. |
AZURE_OPENAI_DEPLOYMENT_ID |
Tato hodnota odpovídá vlastnímu názvu, který jste zvolili pro vaše nasazení při nasazení modelu. Tuto hodnotu najdete v části Nasazení správy>prostředků na webu Azure Portal nebo v části Nasazení správy>na portálu Azure AI Foundry. |
AZURE_AI_SEARCH_ENDPOINT |
Tuto hodnotu najdete v části Přehled při zkoumání prostředku Azure AI Search na webu Azure Portal. |
AZURE_AI_SEARCH_API_KEY |
Tuto hodnotu najdete v části Klíče nastavení>při zkoumání prostředku Azure AI Search na webu Azure Portal. Můžete použít primární klíč správce nebo sekundární klíč správce. Vždy mít dva klíče vám umožní bezpečně otáčet a znovu vygenerovat klíče, aniž by to způsobilo přerušení služeb. |
AZURE_AI_SEARCH_INDEX |
Tato hodnota odpovídá názvu indexu, který jste vytvořili pro ukládání dat. Najdete ho v části Přehled při zkoumání prostředku Azure AI Search na webu Azure Portal. |
Proměnné prostředí
Vytvořte a přiřaďte trvalé proměnné prostředí pro klíč a koncový bod.
Důležité
Pokud používáte klíč rozhraní API, uložte ho bezpečně někam jinam, například ve službě Azure Key Vault. Nezahrnujte klíč rozhraní API přímo do kódu a nikdy ho nevštěvujte veřejně.
Další informace o zabezpečení služeb AI najdete v tématu Ověřování požadavků na služby Azure AI.
setx AZURE_OPENAI_ENDPOINT REPLACE_WITH_YOUR_AOAI_ENDPOINT_VALUE_HERE
setx AZURE_OPENAI_API_KEY REPLACE_WITH_YOUR_AOAI_KEY_VALUE_HERE
setx AZURE_OPENAI_DEPLOYMENT_ID REPLACE_WITH_YOUR_AOAI_DEPLOYMENT_VALUE_HERE
setx AZURE_AI_SEARCH_ENDPOINT REPLACE_WITH_YOUR_AZURE_SEARCH_RESOURCE_VALUE_HERE
setx AZURE_AI_SEARCH_API_KEY REPLACE_WITH_YOUR_AZURE_SEARCH_RESOURCE_KEY_VALUE_HERE
setx AZURE_AI_SEARCH_INDEX REPLACE_WITH_YOUR_INDEX_NAME_HERE
Inicializace Node.js aplikace
V okně konzoly (například cmd, PowerShell nebo Bash) vytvořte pro vaši aplikaci nový adresář a přejděte do něj. Potom spuštěním npm init
příkazu vytvořte aplikaci uzlu se souborem package.json .
npm init
Instalace klientské knihovny
Nainstalujte klienta Azure OpenAI a knihovny identit Azure pro JavaScript pomocí npm:
npm install @azure/openai @azure/identity
Soubor package.json vaší aplikace se aktualizuje o závislosti.
Přidání kódu JavaScriptu
Otevřete příkazový řádek, na kterém chcete nový projekt, a vytvořte nový soubor s názvem
ChatWithOwnData.js
. Zkopírujte doChatWithOwnData.js
souboru následující kód.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"]; const searchEndpoint = process.env["AZURE_AI_SEARCH_ENDPOINT"]; const searchIndex = process.env["AZURE_AI_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 = "gpt-4"; const apiVersion = "2024-07-01-preview"; 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); });
Spusťte aplikaci pomocí následujícího příkazu:
node ChatWithOwnData.js
Důležité
V produkčním prostředí použijte bezpečný způsob ukládání přihlašovacích údajů a přístupu k vašim přihlašovacím údajům, jako je Azure Key Vault. Další informace o zabezpečení přihlašovacích údajů najdete v článku zabezpečení služeb Azure AI.
Výstup
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.
Požadavky
Předplatné Azure – Vytvořte si ho zdarma.
Azure CLI , které se používá k ověřování bez hesla v místním vývojovém prostředí, vytvořte potřebný kontext přihlášením pomocí Azure CLI.
Prostředek Azure OpenAI nasazený v podporované oblasti a s podporovaným modelem.
Ujistěte se, že máte přiřazenou alespoň roli Přispěvatel služeb Cognitive Services pro prostředek Azure OpenAI.
Pokud nemáte vlastní data, stáhněte si ukázková data z GitHubu .
Referenční dokumentace | – ukázky balíčku zdrojového kódu | (npm) |
Přidání dat pomocí nástroje Azure OpenAI Studio
Tip
Azure Developer CLI můžete použít k programovému vytvoření prostředků potřebných pro Azure OpenAI ve vašich datech.
Přejděte do Azure AI Foundry a přihlaste se pomocí přihlašovacích údajů, které mají přístup k vašemu prostředku Azure OpenAI.
Projekt Azure AI Foundry můžete vytvořit kliknutím na Vytvořit projekt nebo pokračovat přímo kliknutím na tlačítko na dlaždici Prioritní služba Azure OpenAI.
V levé navigační nabídce vyberte Chat v části Dětské hřiště a vyberte nasazení modelu.
V chatovacím hřišti vyberte Přidat data a pak přidejte zdroj dat.
V zobrazeném podokně vyberte Nahrát soubory (Preview) v části Vybrat zdroj dat. Azure OpenAI potřebuje prostředek úložiště i vyhledávací prostředek pro přístup k datům a jeho indexování.
Tip
- Další informace najdete v následujícím zdroji:
- U dokumentů a datových sad s dlouhým textem doporučujeme použít dostupný skript pro přípravu dat.
Aby služba Azure OpenAI přistupovala k vašemu účtu úložiště, budete muset zapnout sdílení prostředků mezi zdroji (CORS). Pokud cors ještě není pro prostředek Azure Blob Storage zapnutý, vyberte Zapnout CORS.
Vyberte prostředek Služby Azure AI Search a vyberte potvrzení, že připojení k němu bude mít na vašem účtu využití. Pak vyberte Další.
V podokně Nahrát soubory vyberte Vyhledat soubor a vyberte soubory, které jste stáhli v části Požadavky, nebo vlastní data. Pak vyberte Nahrát soubory. Pak vyberte Další.
V podokně Správa dat můžete zvolit, jestli chcete povolit sémantické vyhledávání nebo vektorové vyhledávání indexu.
Důležité
- Sémantické vyhledávání a vektorové vyhledávání se řídí dalšími cenami. Pokud chcete povolit sémantické vyhledávání nebo vektorové vyhledávání, musíte zvolit skladovou položku Basic nebo vyšší. Další informace najdete v cenových úrovních a omezeních služeb.
- Pokud chcete zlepšit kvalitu načítání informací a odpovědí modelu, doporučujeme povolit sémantické vyhledávání pro následující jazyky zdrojů dat: angličtina, francouzština, španělština, portugalština, italština, Německo, čínština (Zh), japonština, korejština, ruština a arabština.
Zkontrolujte zadané podrobnosti a vyberte Uložit a zavřít. Teď můžete chatovat s modelem a k vytvoření odpovědi budou používat informace z vašich dat.
Načtení požadovaných proměnných
K úspěšnému volání azure OpenAI potřebujete následující proměnné. V tomto rychlém startu se předpokládá, že jste data nahráli do účtu služby Azure Blob Storage a vytvořili jste index služby Azure AI Search. Viz Přidání dat pomocí Azure AI Foundry
Název proměnné | Hodnota |
---|---|
AZURE_OPENAI_ENDPOINT |
Tuto hodnotu najdete v části Klíče a koncový bod při zkoumání prostředku Azure OpenAI na webu Azure Portal. Případně můžete hodnotu najít v zobrazení kódu chatového hřiště>Azure AI Foundry>. Ukázkový koncový bod je: https://my-resoruce.openai.azure.com . |
AZURE_OPENAI_API_KEY |
Tuto hodnotu najdete v části Klíče správy>prostředků a koncový bod při zkoumání prostředku Azure OpenAI na webu Azure Portal. Použít můžete předponu KEY1 nebo KEY2 . Vždy mít dva klíče vám umožní bezpečně otáčet a znovu vygenerovat klíče, aniž by to způsobilo přerušení služeb. |
AZURE_OPENAI_DEPLOYMENT_ID |
Tato hodnota odpovídá vlastnímu názvu, který jste zvolili pro vaše nasazení při nasazení modelu. Tuto hodnotu najdete v části Nasazení správy>prostředků na webu Azure Portal nebo v části Nasazení správy>na portálu Azure AI Foundry. |
AZURE_AI_SEARCH_ENDPOINT |
Tuto hodnotu najdete v části Přehled při zkoumání prostředku Azure AI Search na webu Azure Portal. |
AZURE_AI_SEARCH_API_KEY |
Tuto hodnotu najdete v části Klíče nastavení>při zkoumání prostředku Azure AI Search na webu Azure Portal. Můžete použít primární klíč správce nebo sekundární klíč správce. Vždy mít dva klíče vám umožní bezpečně otáčet a znovu vygenerovat klíče, aniž by to způsobilo přerušení služeb. |
AZURE_AI_SEARCH_INDEX |
Tato hodnota odpovídá názvu indexu, který jste vytvořili pro ukládání dat. Najdete ho v části Přehled při zkoumání prostředku Azure AI Search na webu Azure Portal. |
Proměnné prostředí
Vytvořte a přiřaďte trvalé proměnné prostředí pro klíč a koncový bod.
Důležité
Pokud používáte klíč rozhraní API, uložte ho bezpečně někam jinam, například ve službě Azure Key Vault. Nezahrnujte klíč rozhraní API přímo do kódu a nikdy ho nevštěvujte veřejně.
Další informace o zabezpečení služeb AI najdete v tématu Ověřování požadavků na služby Azure AI.
setx AZURE_OPENAI_ENDPOINT REPLACE_WITH_YOUR_AOAI_ENDPOINT_VALUE_HERE
setx AZURE_OPENAI_API_KEY REPLACE_WITH_YOUR_AOAI_KEY_VALUE_HERE
setx AZURE_OPENAI_DEPLOYMENT_ID REPLACE_WITH_YOUR_AOAI_DEPLOYMENT_VALUE_HERE
setx AZURE_AI_SEARCH_ENDPOINT REPLACE_WITH_YOUR_AZURE_SEARCH_RESOURCE_VALUE_HERE
setx AZURE_AI_SEARCH_API_KEY REPLACE_WITH_YOUR_AZURE_SEARCH_RESOURCE_KEY_VALUE_HERE
setx AZURE_AI_SEARCH_INDEX REPLACE_WITH_YOUR_INDEX_NAME_HERE
Inicializace Node.js aplikace
V okně konzoly (například cmd, PowerShell nebo Bash) vytvořte pro vaši aplikaci nový adresář a přejděte do něj. Potom spuštěním npm init
příkazu vytvořte aplikaci uzlu se souborem package.json .
npm init
Instalace klientské knihovny
Nainstalujte klienta Azure OpenAI a knihovny identit Azure pro JavaScript pomocí npm:
npm install openai @azure/identity @azure/openai
Součástí @azure/openai/types
závislosti je rozšíření modelu Azure OpenAI pro data_sources
vlastnost. Tento import je nezbytný pouze pro TypeScript.
Soubor package.json vaší aplikace se aktualizuje o závislosti.
Přidání kódu TypeScriptu
Otevřete příkazový řádek, na kterém chcete nový projekt, a vytvořte nový soubor s názvem
ChatWithOwnData.ts
. Zkopírujte doChatWithOwnData.ts
souboru následující kód.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"]; const searchEndpoint = process.env["AZURE_AI_SEARCH_ENDPOINT"]; const searchIndex = process.env["AZURE_AI_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 = "gpt-4"; const apiVersion = "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); });
Sestavte aplikaci pomocí následujícího příkazu:
tsc
Spusťte aplikaci pomocí následujícího příkazu:
node ChatWithOwnData.js
Důležité
V produkčním prostředí použijte bezpečný způsob ukládání přihlašovacích údajů a přístupu k vašim přihlašovacím údajům, jako je Azure Key Vault. Další informace o zabezpečení přihlašovacích údajů najdete v článku zabezpečení služeb Azure AI.
Výstup
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.
Požadavky
Následující zdroje informací:
- Azure OpenAI
- Azure Blob Storage
- Azure AI Search
- Prostředek Azure OpenAI nasazený v podporované oblasti a s podporovaným modelem.
- Ujistěte se, že máte přiřazenou alespoň roli Přispěvatel služeb Cognitive Services pro prostředek Azure OpenAI.
- Pokud nemáte vlastní data, stáhněte si ukázková data z GitHubu .
Ukázky balíčku zdrojového kódu | odkazu | (pypi) |
Tyto odkazy odkazují na rozhraní OPENAI API pro Python. Neexistuje žádná sada OpenAI Python SDK specifická pro Azure. Naučte se přepínat mezi službami OpenAI a službami Azure OpenAI.
Přidání dat pomocí nástroje Azure OpenAI Studio
Tip
Azure Developer CLI můžete použít k programovému vytvoření prostředků potřebných pro Azure OpenAI ve vašich datech.
Přejděte do Azure AI Foundry a přihlaste se pomocí přihlašovacích údajů, které mají přístup k vašemu prostředku Azure OpenAI.
Projekt Azure AI Foundry můžete vytvořit kliknutím na Vytvořit projekt nebo pokračovat přímo kliknutím na tlačítko na dlaždici Prioritní služba Azure OpenAI.
V levé navigační nabídce vyberte Chat v části Dětské hřiště a vyberte nasazení modelu.
V chatovacím hřišti vyberte Přidat data a pak přidejte zdroj dat.
V zobrazeném podokně vyberte Nahrát soubory (Preview) v části Vybrat zdroj dat. Azure OpenAI potřebuje prostředek úložiště i vyhledávací prostředek pro přístup k datům a jeho indexování.
Tip
- Další informace najdete v následujícím zdroji:
- U dokumentů a datových sad s dlouhým textem doporučujeme použít dostupný skript pro přípravu dat.
Aby služba Azure OpenAI přistupovala k vašemu účtu úložiště, budete muset zapnout sdílení prostředků mezi zdroji (CORS). Pokud cors ještě není pro prostředek Azure Blob Storage zapnutý, vyberte Zapnout CORS.
Vyberte prostředek Služby Azure AI Search a vyberte potvrzení, že připojení k němu bude mít na vašem účtu využití. Pak vyberte Další.
V podokně Nahrát soubory vyberte Vyhledat soubor a vyberte soubory, které jste stáhli v části Požadavky, nebo vlastní data. Pak vyberte Nahrát soubory. Pak vyberte Další.
V podokně Správa dat můžete zvolit, jestli chcete povolit sémantické vyhledávání nebo vektorové vyhledávání indexu.
Důležité
- Sémantické vyhledávání a vektorové vyhledávání se řídí dalšími cenami. Pokud chcete povolit sémantické vyhledávání nebo vektorové vyhledávání, musíte zvolit skladovou položku Basic nebo vyšší. Další informace najdete v cenových úrovních a omezeních služeb.
- Pokud chcete zlepšit kvalitu načítání informací a odpovědí modelu, doporučujeme povolit sémantické vyhledávání pro následující jazyky zdrojů dat: angličtina, francouzština, španělština, portugalština, italština, Německo, čínština (Zh), japonština, korejština, ruština a arabština.
Zkontrolujte zadané podrobnosti a vyberte Uložit a zavřít. Teď můžete chatovat s modelem a k vytvoření odpovědi budou používat informace z vašich dat.
Načtení požadovaných proměnných
K úspěšnému volání azure OpenAI potřebujete následující proměnné. V tomto rychlém startu se předpokládá, že jste data nahráli do účtu služby Azure Blob Storage a vytvořili jste index služby Azure AI Search. Viz Přidání dat pomocí Azure AI Foundry
Název proměnné | Hodnota |
---|---|
AZURE_OPENAI_ENDPOINT |
Tuto hodnotu najdete v části Klíče a koncový bod při zkoumání prostředku Azure OpenAI na webu Azure Portal. Případně můžete hodnotu najít v zobrazení kódu chatového hřiště>Azure AI Foundry>. Ukázkový koncový bod je: https://my-resoruce.openai.azure.com . |
AZURE_OPENAI_API_KEY |
Tuto hodnotu najdete v části Klíče správy>prostředků a koncový bod při zkoumání prostředku Azure OpenAI na webu Azure Portal. Použít můžete předponu KEY1 nebo KEY2 . Vždy mít dva klíče vám umožní bezpečně otáčet a znovu vygenerovat klíče, aniž by to způsobilo přerušení služeb. |
AZURE_OPENAI_DEPLOYMENT_ID |
Tato hodnota odpovídá vlastnímu názvu, který jste zvolili pro vaše nasazení při nasazení modelu. Tuto hodnotu najdete v části Nasazení správy>prostředků na webu Azure Portal nebo v části Nasazení správy>na portálu Azure AI Foundry. |
AZURE_AI_SEARCH_ENDPOINT |
Tuto hodnotu najdete v části Přehled při zkoumání prostředku Azure AI Search na webu Azure Portal. |
AZURE_AI_SEARCH_API_KEY |
Tuto hodnotu najdete v části Klíče nastavení>při zkoumání prostředku Azure AI Search na webu Azure Portal. Můžete použít primární klíč správce nebo sekundární klíč správce. Vždy mít dva klíče vám umožní bezpečně otáčet a znovu vygenerovat klíče, aniž by to způsobilo přerušení služeb. |
AZURE_AI_SEARCH_INDEX |
Tato hodnota odpovídá názvu indexu, který jste vytvořili pro ukládání dat. Najdete ho v části Přehled při zkoumání prostředku Azure AI Search na webu Azure Portal. |
Proměnné prostředí
Vytvořte a přiřaďte trvalé proměnné prostředí pro klíč a koncový bod.
Důležité
Pokud používáte klíč rozhraní API, uložte ho bezpečně někam jinam, například ve službě Azure Key Vault. Nezahrnujte klíč rozhraní API přímo do kódu a nikdy ho nevštěvujte veřejně.
Další informace o zabezpečení služeb AI najdete v tématu Ověřování požadavků na služby Azure AI.
setx AZURE_OPENAI_ENDPOINT REPLACE_WITH_YOUR_AOAI_ENDPOINT_VALUE_HERE
setx AZURE_OPENAI_API_KEY REPLACE_WITH_YOUR_AOAI_KEY_VALUE_HERE
setx AZURE_OPENAI_DEPLOYMENT_ID REPLACE_WITH_YOUR_AOAI_DEPLOYMENT_VALUE_HERE
setx AZURE_AI_SEARCH_ENDPOINT REPLACE_WITH_YOUR_AZURE_SEARCH_RESOURCE_VALUE_HERE
setx AZURE_AI_SEARCH_API_KEY REPLACE_WITH_YOUR_AZURE_SEARCH_RESOURCE_KEY_VALUE_HERE
setx AZURE_AI_SEARCH_INDEX REPLACE_WITH_YOUR_INDEX_NAME_HERE
Vytvoření prostředí Pythonu
- Vytvořte novou složku s názvem openai-python pro váš projekt a nový soubor kódu Pythonu s názvem main.py. Přejděte do adresáře:
mkdir openai-python
cd openai-python
- Nainstalujte následující knihovny Pythonu:
pip install openai
pip install python-dotenv
Vytvoření aplikace v Pythonu
- V adresáři projektu otevřete soubor main.py a přidejte následující kód:
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_ID")
client = openai.AzureOpenAI(
azure_endpoint=endpoint,
api_key=api_key,
api_version="2024-02-01",
)
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(completion.model_dump_json(indent=2))
Důležité
V produkčním prostředí použijte bezpečný způsob ukládání přihlašovacích údajů a přístupu k vašim přihlašovacím údajům, jako je Azure Key Vault. Další informace o zabezpečení přihlašovacích údajů najdete v článku zabezpečení služeb Azure AI.
- Spusťte následující příkaz:
python main.py
Aplikace vytiskne odpověď ve formátu JSON vhodném pro použití v mnoha scénářích. Obsahuje odpovědi na váš dotaz i citace z nahraných souborů.
Požadavky
Následující zdroje informací:
- Azure OpenAI
- Azure Blob Storage
- Azure AI Search
- Prostředek Azure OpenAI nasazený v podporované oblasti a s podporovaným modelem.
- Ujistěte se, že máte přiřazenou alespoň roli Přispěvatel služeb Cognitive Services pro prostředek Azure OpenAI.
- Pokud nemáte vlastní data, stáhněte si ukázková data z GitHubu .
Přidání dat pomocí nástroje Azure OpenAI Studio
Tip
Azure Developer CLI můžete použít k programovému vytvoření prostředků potřebných pro Azure OpenAI ve vašich datech.
Přejděte do Azure AI Foundry a přihlaste se pomocí přihlašovacích údajů, které mají přístup k vašemu prostředku Azure OpenAI.
Projekt Azure AI Foundry můžete vytvořit kliknutím na Vytvořit projekt nebo pokračovat přímo kliknutím na tlačítko na dlaždici Prioritní služba Azure OpenAI.
V levé navigační nabídce vyberte Chat v části Dětské hřiště a vyberte nasazení modelu.
V chatovacím hřišti vyberte Přidat data a pak přidejte zdroj dat.
V zobrazeném podokně vyberte Nahrát soubory (Preview) v části Vybrat zdroj dat. Azure OpenAI potřebuje prostředek úložiště i vyhledávací prostředek pro přístup k datům a jeho indexování.
Tip
- Další informace najdete v následujícím zdroji:
- U dokumentů a datových sad s dlouhým textem doporučujeme použít dostupný skript pro přípravu dat.
Aby služba Azure OpenAI přistupovala k vašemu účtu úložiště, budete muset zapnout sdílení prostředků mezi zdroji (CORS). Pokud cors ještě není pro prostředek Azure Blob Storage zapnutý, vyberte Zapnout CORS.
Vyberte prostředek Služby Azure AI Search a vyberte potvrzení, že připojení k němu bude mít na vašem účtu využití. Pak vyberte Další.
V podokně Nahrát soubory vyberte Vyhledat soubor a vyberte soubory, které jste stáhli v části Požadavky, nebo vlastní data. Pak vyberte Nahrát soubory. Pak vyberte Další.
V podokně Správa dat můžete zvolit, jestli chcete povolit sémantické vyhledávání nebo vektorové vyhledávání indexu.
Důležité
- Sémantické vyhledávání a vektorové vyhledávání se řídí dalšími cenami. Pokud chcete povolit sémantické vyhledávání nebo vektorové vyhledávání, musíte zvolit skladovou položku Basic nebo vyšší. Další informace najdete v cenových úrovních a omezeních služeb.
- Pokud chcete zlepšit kvalitu načítání informací a odpovědí modelu, doporučujeme povolit sémantické vyhledávání pro následující jazyky zdrojů dat: angličtina, francouzština, španělština, portugalština, italština, Německo, čínština (Zh), japonština, korejština, ruština a arabština.
Zkontrolujte zadané podrobnosti a vyberte Uložit a zavřít. Teď můžete chatovat s modelem a k vytvoření odpovědi budou používat informace z vašich dat.
Načtení požadovaných proměnných
K úspěšnému volání azure OpenAI potřebujete následující proměnné. V tomto rychlém startu se předpokládá, že jste data nahráli do účtu služby Azure Blob Storage a vytvořili jste index služby Azure AI Search. Viz Přidání dat pomocí Azure AI Foundry
Název proměnné | Hodnota |
---|---|
AZURE_OPENAI_ENDPOINT |
Tuto hodnotu najdete v části Klíče a koncový bod při zkoumání prostředku Azure OpenAI na webu Azure Portal. Případně můžete hodnotu najít v zobrazení kódu chatového hřiště>Azure AI Foundry>. Ukázkový koncový bod je: https://my-resoruce.openai.azure.com . |
AZURE_OPENAI_API_KEY |
Tuto hodnotu najdete v části Klíče správy>prostředků a koncový bod při zkoumání prostředku Azure OpenAI na webu Azure Portal. Použít můžete předponu KEY1 nebo KEY2 . Vždy mít dva klíče vám umožní bezpečně otáčet a znovu vygenerovat klíče, aniž by to způsobilo přerušení služeb. |
AZURE_OPENAI_DEPLOYMENT_ID |
Tato hodnota odpovídá vlastnímu názvu, který jste zvolili pro vaše nasazení při nasazení modelu. Tuto hodnotu najdete v části Nasazení správy>prostředků na webu Azure Portal nebo v části Nasazení správy>na portálu Azure AI Foundry. |
AZURE_AI_SEARCH_ENDPOINT |
Tuto hodnotu najdete v části Přehled při zkoumání prostředku Azure AI Search na webu Azure Portal. |
AZURE_AI_SEARCH_API_KEY |
Tuto hodnotu najdete v části Klíče nastavení>při zkoumání prostředku Azure AI Search na webu Azure Portal. Můžete použít primární klíč správce nebo sekundární klíč správce. Vždy mít dva klíče vám umožní bezpečně otáčet a znovu vygenerovat klíče, aniž by to způsobilo přerušení služeb. |
AZURE_AI_SEARCH_INDEX |
Tato hodnota odpovídá názvu indexu, který jste vytvořili pro ukládání dat. Najdete ho v části Přehled při zkoumání prostředku Azure AI Search na webu Azure Portal. |
Proměnné prostředí
Vytvořte a přiřaďte trvalé proměnné prostředí pro klíč a koncový bod.
Důležité
Pokud používáte klíč rozhraní API, uložte ho bezpečně někam jinam, například ve službě Azure Key Vault. Nezahrnujte klíč rozhraní API přímo do kódu a nikdy ho nevštěvujte veřejně.
Další informace o zabezpečení služeb AI najdete v tématu Ověřování požadavků na služby Azure AI.
setx AZURE_OPENAI_ENDPOINT REPLACE_WITH_YOUR_AOAI_ENDPOINT_VALUE_HERE
setx AZURE_OPENAI_API_KEY REPLACE_WITH_YOUR_AOAI_KEY_VALUE_HERE
setx AZURE_OPENAI_DEPLOYMENT_ID REPLACE_WITH_YOUR_AOAI_DEPLOYMENT_VALUE_HERE
setx AZURE_AI_SEARCH_ENDPOINT REPLACE_WITH_YOUR_AZURE_SEARCH_RESOURCE_VALUE_HERE
setx AZURE_AI_SEARCH_API_KEY REPLACE_WITH_YOUR_AZURE_SEARCH_RESOURCE_KEY_VALUE_HERE
setx AZURE_AI_SEARCH_INDEX REPLACE_WITH_YOUR_INDEX_NAME_HERE
Příklady příkazů PowerShellu
Modely chatu Azure OpenAI jsou optimalizované pro práci se vstupy formátovanými jako konverzace. Proměnná messages
předává pole slovníků s různými rolemi v konverzaci vypisované systémem, uživatelem, nástrojem a asistentem. Proměnná dataSources
se připojí k indexu služby Azure Cognitive Search a umožňuje modelům Azure OpenAI reagovat pomocí vašich dat.
Pokud chcete aktivovat odpověď z modelu, měli byste ukončit zprávu uživatele, která indikuje, že se jedná o pomocnou odpověď.
Tip
Existuje několik parametrů, které můžete použít ke změně odpovědi modelu, například temperature
top_p
. Další informace najdete v referenční dokumentaci .
# 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říklad výstupu
The available health plans in the Contoso Electronics plan and benefit packages are the Northwind Health Plus and Northwind Standard plans.
Důležité
V produkčním prostředí použijte zabezpečený způsob ukládání a přístupu k přihlašovacím údajům, jako je správa tajných kódů PowerShellu pomocí služby Azure Key Vault. Další informace o zabezpečení přihlašovacích údajů najdete v článku zabezpečení služeb Azure AI.
Chatování s modelem pomocí webové aplikace
Pokud chcete začít chatovat s modelem Azure OpenAI, který používá vaše data, můžete nasadit webovou aplikaci pomocí nástroje Azure OpenAI Studio nebo ukázkového kódu, který poskytujeme na GitHubu. Tato aplikace se nasadí pomocí služby Azure App Service a poskytuje uživatelské rozhraní pro odesílání dotazů. Tuto aplikaci můžete použít s modely Azure OpenAI, které používají vaše data, nebo modely, které vaše data nepoužívají. Pokyny k požadavkům, nastavení a nasazení najdete v souboru readme v úložišti. Volitelně můžete přizpůsobit front-endovou a back-endovou logiku webové aplikace provedením změn ve zdrojovém kódu.
Požadavky
Následující zdroje informací:
- Azure OpenAI
- Azure Blob Storage
- Azure AI Search
- Prostředek Azure OpenAI nasazený v podporované oblasti a s podporovaným modelem.
- Ujistěte se, že máte přiřazenou alespoň roli Přispěvatel služeb Cognitive Services pro prostředek Azure OpenAI.
- Pokud nemáte vlastní data, stáhněte si ukázková data z GitHubu .
Ukázky balíčku zdrojového kódu | odkazu | (Go) |
Přidání dat pomocí nástroje Azure OpenAI Studio
Tip
Azure Developer CLI můžete použít k programovému vytvoření prostředků potřebných pro Azure OpenAI ve vašich datech.
Přejděte do Azure AI Foundry a přihlaste se pomocí přihlašovacích údajů, které mají přístup k vašemu prostředku Azure OpenAI.
Projekt Azure AI Foundry můžete vytvořit kliknutím na Vytvořit projekt nebo pokračovat přímo kliknutím na tlačítko na dlaždici Prioritní služba Azure OpenAI.
V levé navigační nabídce vyberte Chat v části Dětské hřiště a vyberte nasazení modelu.
V chatovacím hřišti vyberte Přidat data a pak přidejte zdroj dat.
V zobrazeném podokně vyberte Nahrát soubory (Preview) v části Vybrat zdroj dat. Azure OpenAI potřebuje prostředek úložiště i vyhledávací prostředek pro přístup k datům a jeho indexování.
Tip
- Další informace najdete v následujícím zdroji:
- U dokumentů a datových sad s dlouhým textem doporučujeme použít dostupný skript pro přípravu dat.
Aby služba Azure OpenAI přistupovala k vašemu účtu úložiště, budete muset zapnout sdílení prostředků mezi zdroji (CORS). Pokud cors ještě není pro prostředek Azure Blob Storage zapnutý, vyberte Zapnout CORS.
Vyberte prostředek Služby Azure AI Search a vyberte potvrzení, že připojení k němu bude mít na vašem účtu využití. Pak vyberte Další.
V podokně Nahrát soubory vyberte Vyhledat soubor a vyberte soubory, které jste stáhli v části Požadavky, nebo vlastní data. Pak vyberte Nahrát soubory. Pak vyberte Další.
V podokně Správa dat můžete zvolit, jestli chcete povolit sémantické vyhledávání nebo vektorové vyhledávání indexu.
Důležité
- Sémantické vyhledávání a vektorové vyhledávání se řídí dalšími cenami. Pokud chcete povolit sémantické vyhledávání nebo vektorové vyhledávání, musíte zvolit skladovou položku Basic nebo vyšší. Další informace najdete v cenových úrovních a omezeních služeb.
- Pokud chcete zlepšit kvalitu načítání informací a odpovědí modelu, doporučujeme povolit sémantické vyhledávání pro následující jazyky zdrojů dat: angličtina, francouzština, španělština, portugalština, italština, Německo, čínština (Zh), japonština, korejština, ruština a arabština.
Zkontrolujte zadané podrobnosti a vyberte Uložit a zavřít. Teď můžete chatovat s modelem a k vytvoření odpovědi budou používat informace z vašich dat.
Načtení požadovaných proměnných
K úspěšnému volání azure OpenAI potřebujete následující proměnné. V tomto rychlém startu se předpokládá, že jste data nahráli do účtu služby Azure Blob Storage a vytvořili jste index služby Azure AI Search. Viz Přidání dat pomocí Azure AI Foundry
Název proměnné | Hodnota |
---|---|
AZURE_OPENAI_ENDPOINT |
Tuto hodnotu najdete v části Klíče a koncový bod při zkoumání prostředku Azure OpenAI na webu Azure Portal. Případně můžete hodnotu najít v zobrazení kódu chatového hřiště>Azure AI Foundry>. Ukázkový koncový bod je: https://my-resoruce.openai.azure.com . |
AZURE_OPENAI_API_KEY |
Tuto hodnotu najdete v části Klíče správy>prostředků a koncový bod při zkoumání prostředku Azure OpenAI na webu Azure Portal. Použít můžete předponu KEY1 nebo KEY2 . Vždy mít dva klíče vám umožní bezpečně otáčet a znovu vygenerovat klíče, aniž by to způsobilo přerušení služeb. |
AZURE_OPENAI_DEPLOYMENT_ID |
Tato hodnota odpovídá vlastnímu názvu, který jste zvolili pro vaše nasazení při nasazení modelu. Tuto hodnotu najdete v části Nasazení správy>prostředků na webu Azure Portal nebo v části Nasazení správy>na portálu Azure AI Foundry. |
AZURE_AI_SEARCH_ENDPOINT |
Tuto hodnotu najdete v části Přehled při zkoumání prostředku Azure AI Search na webu Azure Portal. |
AZURE_AI_SEARCH_API_KEY |
Tuto hodnotu najdete v části Klíče nastavení>při zkoumání prostředku Azure AI Search na webu Azure Portal. Můžete použít primární klíč správce nebo sekundární klíč správce. Vždy mít dva klíče vám umožní bezpečně otáčet a znovu vygenerovat klíče, aniž by to způsobilo přerušení služeb. |
AZURE_AI_SEARCH_INDEX |
Tato hodnota odpovídá názvu indexu, který jste vytvořili pro ukládání dat. Najdete ho v části Přehled při zkoumání prostředku Azure AI Search na webu Azure Portal. |
Proměnné prostředí
Vytvořte a přiřaďte trvalé proměnné prostředí pro klíč a koncový bod.
Důležité
Pokud používáte klíč rozhraní API, uložte ho bezpečně někam jinam, například ve službě Azure Key Vault. Nezahrnujte klíč rozhraní API přímo do kódu a nikdy ho nevštěvujte veřejně.
Další informace o zabezpečení služeb AI najdete v tématu Ověřování požadavků na služby Azure AI.
setx AZURE_OPENAI_ENDPOINT REPLACE_WITH_YOUR_AOAI_ENDPOINT_VALUE_HERE
setx AZURE_OPENAI_API_KEY REPLACE_WITH_YOUR_AOAI_KEY_VALUE_HERE
setx AZURE_OPENAI_DEPLOYMENT_ID REPLACE_WITH_YOUR_AOAI_DEPLOYMENT_VALUE_HERE
setx AZURE_AI_SEARCH_ENDPOINT REPLACE_WITH_YOUR_AZURE_SEARCH_RESOURCE_VALUE_HERE
setx AZURE_AI_SEARCH_API_KEY REPLACE_WITH_YOUR_AZURE_SEARCH_RESOURCE_KEY_VALUE_HERE
setx AZURE_AI_SEARCH_INDEX REPLACE_WITH_YOUR_INDEX_NAME_HERE
Vytvoření prostředí Go
Vytvořte novou složku s názvem openai-go pro váš projekt a nový soubor kódu Go s názvem sample.go. Přejděte do adresáře:
mkdir openai-go cd openai-go
Nainstalujte následující balíčky Go:
go get github.com/Azure/azure-sdk-for-go/sdk/ai/azopenai
Povolte sledování závislostí pro váš kód.
go mod init example/azure-openai
Vytvoření aplikace Go
V adresáři projektu otevřete soubor sample.go a přidejte následující kód:
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() { azureOpenAIKey := os.Getenv("AZURE_OPENAI_API_KEY") modelDeploymentID := os.Getenv("AZURE_OPENAI_DEPLOYMENT_ID") // Ex: "https://<your-azure-openai-host>.openai.azure.com" azureOpenAIEndpoint := os.Getenv("AZURE_OPENAI_ENDPOINT") // 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 azureOpenAIKey == "" || modelDeploymentID == "" || azureOpenAIEndpoint == "" || searchIndex == "" || searchEndpoint == "" || searchAPIKey == "" { fmt.Fprintf(os.Stderr, "Skipping example, environment variables missing\n") return } keyCredential := azcore.NewKeyCredential(azureOpenAIKey) // In Azure OpenAI you must deploy a model before you can use it in your client. For more information // see here: https://learn.microsoft.com/azure/cognitive-services/openai/how-to/create-resource client, err := azopenai.NewClientWithKeyCredential(azureOpenAIEndpoint, keyCredential, nil) if err != nil { // TODO: Update the following line with your application specific error handling logic log.Fatalf("ERROR: %s", err) } 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. // // > Because the model has access to, and can reference specific sources to support its responses, answers are not only based on its pretrained knowledge // > but also on the latest information available in the designated data source. This grounding data also helps the model avoid generating responses // > based on outdated or incorrect information. // // Quote from here: https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/use-your-data Parameters: &azopenai.AzureSearchChatExtensionParameters{ Endpoint: &searchEndpoint, IndexName: &searchIndex, Authentication: &azopenai.OnYourDataAPIKeyAuthenticationOptions{ Key: &searchAPIKey, }, }, }, }, DeploymentName: &modelDeploymentID, }, nil) if err != nil { // TODO: Update the following line with your application specific error handling logic log.Fatalf("ERROR: %s", err) } 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, ) }
Důležité
V produkčním prostředí použijte bezpečný způsob ukládání přihlašovacích údajů a přístupu k vašim přihlašovacím údajům, jako je Azure Key Vault. Další informace o zabezpečení přihlašovacích údajů najdete v článku zabezpečení služeb Azure AI.
Spusťte následující příkaz:
go run sample.go
Aplikace vytiskne odpověď včetně odpovědí na váš dotaz i citací z nahraných souborů.
Požadavky
Následující zdroje informací:
- Azure OpenAI
- Azure Blob Storage
- Azure AI Search
- Prostředek Azure OpenAI nasazený v podporované oblasti a s podporovaným modelem.
- Ujistěte se, že máte přiřazenou alespoň roli Přispěvatel služeb Cognitive Services pro prostředek Azure OpenAI.
- Pokud nemáte vlastní data, stáhněte si ukázková data z GitHubu .
Přidání dat pomocí nástroje Azure OpenAI Studio
Tip
Azure Developer CLI můžete použít k programovému vytvoření prostředků potřebných pro Azure OpenAI ve vašich datech.
Přejděte do Azure AI Foundry a přihlaste se pomocí přihlašovacích údajů, které mají přístup k vašemu prostředku Azure OpenAI.
Projekt Azure AI Foundry můžete vytvořit kliknutím na Vytvořit projekt nebo pokračovat přímo kliknutím na tlačítko na dlaždici Prioritní služba Azure OpenAI.
V levé navigační nabídce vyberte Chat v části Dětské hřiště a vyberte nasazení modelu.
V chatovacím hřišti vyberte Přidat data a pak přidejte zdroj dat.
V zobrazeném podokně vyberte Nahrát soubory (Preview) v části Vybrat zdroj dat. Azure OpenAI potřebuje prostředek úložiště i vyhledávací prostředek pro přístup k datům a jeho indexování.
Tip
- Další informace najdete v následujícím zdroji:
- U dokumentů a datových sad s dlouhým textem doporučujeme použít dostupný skript pro přípravu dat.
Aby služba Azure OpenAI přistupovala k vašemu účtu úložiště, budete muset zapnout sdílení prostředků mezi zdroji (CORS). Pokud cors ještě není pro prostředek Azure Blob Storage zapnutý, vyberte Zapnout CORS.
Vyberte prostředek Služby Azure AI Search a vyberte potvrzení, že připojení k němu bude mít na vašem účtu využití. Pak vyberte Další.
V podokně Nahrát soubory vyberte Vyhledat soubor a vyberte soubory, které jste stáhli v části Požadavky, nebo vlastní data. Pak vyberte Nahrát soubory. Pak vyberte Další.
V podokně Správa dat můžete zvolit, jestli chcete povolit sémantické vyhledávání nebo vektorové vyhledávání indexu.
Důležité
- Sémantické vyhledávání a vektorové vyhledávání se řídí dalšími cenami. Pokud chcete povolit sémantické vyhledávání nebo vektorové vyhledávání, musíte zvolit skladovou položku Basic nebo vyšší. Další informace najdete v cenových úrovních a omezeních služeb.
- Pokud chcete zlepšit kvalitu načítání informací a odpovědí modelu, doporučujeme povolit sémantické vyhledávání pro následující jazyky zdrojů dat: angličtina, francouzština, španělština, portugalština, italština, Německo, čínština (Zh), japonština, korejština, ruština a arabština.
Zkontrolujte zadané podrobnosti a vyberte Uložit a zavřít. Teď můžete chatovat s modelem a k vytvoření odpovědi budou používat informace z vašich dat.
Načtení požadovaných proměnných
K úspěšnému volání azure OpenAI potřebujete následující proměnné. V tomto rychlém startu se předpokládá, že jste data nahráli do účtu služby Azure Blob Storage a vytvořili jste index služby Azure AI Search. Viz Přidání dat pomocí Azure AI Foundry
Název proměnné | Hodnota |
---|---|
AZURE_OPENAI_ENDPOINT |
Tuto hodnotu najdete v části Klíče a koncový bod při zkoumání prostředku Azure OpenAI na webu Azure Portal. Případně můžete hodnotu najít v zobrazení kódu chatového hřiště>Azure AI Foundry>. Ukázkový koncový bod je: https://my-resoruce.openai.azure.com . |
AZURE_OPENAI_API_KEY |
Tuto hodnotu najdete v části Klíče správy>prostředků a koncový bod při zkoumání prostředku Azure OpenAI na webu Azure Portal. Použít můžete předponu KEY1 nebo KEY2 . Vždy mít dva klíče vám umožní bezpečně otáčet a znovu vygenerovat klíče, aniž by to způsobilo přerušení služeb. |
AZURE_OPENAI_DEPLOYMENT_ID |
Tato hodnota odpovídá vlastnímu názvu, který jste zvolili pro vaše nasazení při nasazení modelu. Tuto hodnotu najdete v části Nasazení správy>prostředků na webu Azure Portal nebo v části Nasazení správy>na portálu Azure AI Foundry. |
AZURE_AI_SEARCH_ENDPOINT |
Tuto hodnotu najdete v části Přehled při zkoumání prostředku Azure AI Search na webu Azure Portal. |
AZURE_AI_SEARCH_API_KEY |
Tuto hodnotu najdete v části Klíče nastavení>při zkoumání prostředku Azure AI Search na webu Azure Portal. Můžete použít primární klíč správce nebo sekundární klíč správce. Vždy mít dva klíče vám umožní bezpečně otáčet a znovu vygenerovat klíče, aniž by to způsobilo přerušení služeb. |
AZURE_AI_SEARCH_INDEX |
Tato hodnota odpovídá názvu indexu, který jste vytvořili pro ukládání dat. Najdete ho v části Přehled při zkoumání prostředku Azure AI Search na webu Azure Portal. |
Proměnné prostředí
Vytvořte a přiřaďte trvalé proměnné prostředí pro klíč a koncový bod.
Důležité
Pokud používáte klíč rozhraní API, uložte ho bezpečně někam jinam, například ve službě Azure Key Vault. Nezahrnujte klíč rozhraní API přímo do kódu a nikdy ho nevštěvujte veřejně.
Další informace o zabezpečení služeb AI najdete v tématu Ověřování požadavků na služby Azure AI.
setx AZURE_OPENAI_ENDPOINT REPLACE_WITH_YOUR_AOAI_ENDPOINT_VALUE_HERE
setx AZURE_OPENAI_API_KEY REPLACE_WITH_YOUR_AOAI_KEY_VALUE_HERE
setx AZURE_OPENAI_DEPLOYMENT_ID REPLACE_WITH_YOUR_AOAI_DEPLOYMENT_VALUE_HERE
setx AZURE_AI_SEARCH_ENDPOINT REPLACE_WITH_YOUR_AZURE_SEARCH_RESOURCE_VALUE_HERE
setx AZURE_AI_SEARCH_API_KEY REPLACE_WITH_YOUR_AZURE_SEARCH_RESOURCE_KEY_VALUE_HERE
setx AZURE_AI_SEARCH_INDEX REPLACE_WITH_YOUR_INDEX_NAME_HERE
Příklady příkazů cURL
Modely chatu Azure OpenAI jsou optimalizované pro práci se vstupy formátovanými jako konverzace. Proměnná messages
předává pole slovníků s různými rolemi v konverzaci vypisované systémem, uživatelem, nástrojem a asistentem. Proměnná dataSources
se připojí k indexu Azure AI Search a umožní modelům Azure OpenAI reagovat na vaše data.
Pokud chcete aktivovat odpověď z modelu, měli byste ukončit zprávu uživatele, která indikuje, že se jedná o pomocnou odpověď.
Tip
Existuje několik parametrů, které můžete použít ke změně odpovědi modelu, například temperature
top_p
. Další informace najdete v referenční dokumentaci .
curl -i -X POST $AZURE_OPENAI_ENDPOINT/openai/deployments/$AZURE_OPENAI_DEPLOYMENT_ID/chat/completions?api-version=2024-02-15-preview \
-H "Content-Type: application/json" \
-H "api-key: $AZURE_OPENAI_API_KEY" \
-d \
'
{
"data_sources": [
{
"type": "azure_search",
"parameters": {
"endpoint": "'$AZURE_AI_SEARCH_ENDPOINT'",
"key": "'$AZURE_AI_SEARCH_API_KEY'",
"index_name": "'$AZURE_AI_SEARCH_INDEX'"
}
}
],
"messages": [
{
"role": "user",
"content": "What are my available health plans?"
}
]
}
'
Příklad výstupu
{
"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
}
}
Chatování s modelem pomocí webové aplikace
Pokud chcete začít chatovat s modelem Azure OpenAI, který používá vaše data, můžete nasadit webovou aplikaci pomocí nástroje Azure OpenAI Studio nebo ukázkového kódu, který poskytujeme na GitHubu. Tato aplikace se nasadí pomocí služby Azure App Service a poskytuje uživatelské rozhraní pro odesílání dotazů. Tuto aplikaci můžete použít s modely Azure OpenAI, které používají vaše data, nebo modely, které vaše data nepoužívají. Pokyny k požadavkům, nastavení a nasazení najdete v souboru readme v úložišti. Volitelně můžete přizpůsobit front-endovou a back-endovou logiku webové aplikace provedením změn ve zdrojovém kódu.
Vyčištění prostředků
Pokud chcete vyčistit a odebrat prostředek Azure OpenAI nebo Azure AI Search, můžete prostředek nebo skupinu prostředků odstranit. Odstraněním skupiny prostředků se odstraní také všechny ostatní prostředky, které jsou k ní přidružené.