Szybki start: czat z modelami usługi Azure OpenAI przy użyciu własnych danych
W tym przewodniku Szybki start możesz używać własnych danych z modelami usługi Azure OpenAI. Korzystanie z modeli usługi Azure OpenAI na danych może zapewnić zaawansowaną platformę konwersacyjnej sztucznej inteligencji, która umożliwia szybszą i dokładniejszą komunikację.
Wymagania wstępne
Następujące zasoby:
- Azure OpenAI
- Azure Blob Storage
- Azure AI Search
- Zasób usługi Azure OpenAI wdrożony w obsługiwanym regionie i z obsługiwanym modelem.
- Upewnij się, że masz przypisaną co najmniej rolę Współautor usług Cognitive Services dla zasobu Azure OpenAI.
- Pobierz przykładowe dane z usługi GitHub , jeśli nie masz własnych danych.
Dodawanie danych przy użyciu programu Azure OpenAI Studio
Napiwek
Interfejs wiersza polecenia dla deweloperów platformy Azure umożliwia programowe tworzenie zasobów potrzebnych do korzystania z usługi Azure OpenAI On Your Data
Przejdź do usługi Azure AI Foundry i zaloguj się przy użyciu poświadczeń, które mają dostęp do zasobu usługi Azure OpenAI.
Możesz utworzyć projekt usługi Azure AI Foundry, klikając pozycję Utwórz projekt lub klikając przycisk bezpośrednio na kafelku Koncentruje się na usłudze Azure OpenAI Service .
Wybierz pozycję Czat w obszarze Place zabaw w menu nawigacji po lewej stronie i wybierz wdrożenie modelu.
Na placu zabaw czatu wybierz pozycję Dodaj dane, a następnie pozycję Dodaj źródło danych
W wyświetlonym okienku wybierz pozycję Przekaż pliki (wersja zapoznawcza) w obszarze Wybierz źródło danych. Usługa Azure OpenAI wymaga zarówno zasobu magazynu, jak i zasobu wyszukiwania w celu uzyskania dostępu do danych i indeksowania ich.
Napiwek
- Aby uzyskać więcej informacji, zobacz następujący zasób:
- W przypadku dokumentów i zestawów danych z długim tekstem zalecamy użycie dostępnego skryptu przygotowywania danych.
Aby usługa Azure OpenAI uzyskiwała dostęp do konta magazynu, należy włączyć współużytkowanie zasobów między źródłami (CORS). Jeśli mechanizm CORS nie jest jeszcze włączony dla zasobu usługi Azure Blob Storage, wybierz pozycję Włącz mechanizm CORS.
Wybierz zasób usługi Azure AI Search i wybierz potwierdzenie, że połączenie spowoduje naliczenie użycia na twoim koncie. Następnie kliknij przycisk Dalej.
W okienku Przekazywanie plików wybierz pozycję Przeglądaj dla pliku i wybierz pliki pobrane z sekcji wymagań wstępnych lub własne dane. Następnie wybierz pozycję Przekaż pliki. Następnie kliknij przycisk Dalej.
W okienku Zarządzanie danymi możesz wybrać, czy włączyć wyszukiwanie semantyczne, czy wektorowe wyszukiwanie indeksu.
Ważne
- Wyszukiwanie semantyczne i wyszukiwanie wektorów podlegają dodatkowym cenom. Aby włączyć wyszukiwanie semantyczne lub wyszukiwanie wektorów, musisz wybrać jednostkę SKU Podstawowa lub nowsza jednostka SKU . Aby uzyskać więcej informacji, zobacz różnice w warstwie cenowej i limity usług.
- Aby poprawić jakość pobierania informacji i odpowiedzi modelu, zalecamy włączenie semantycznego wyszukiwania następujących języków źródła danych: angielski, francuski, hiszpański, portugalski, włoski, niemiecki, chiński (Zh), japoński, koreański, rosyjski i arabski.
Przejrzyj wprowadzone szczegóły, a następnie wybierz pozycję Zapisz i zamknij. Teraz możesz porozmawiać z modelem i będzie używać informacji z danych do konstruowania odpowiedzi.
Czat — plac zabaw
Zacznij eksplorować możliwości usługi Azure OpenAI przy użyciu podejścia bez kodu za pośrednictwem placu zabaw czatu. Jest to po prostu pole tekstowe, w którym można przesłać monit o wygenerowanie ukończenia. Na tej stronie można szybko iterować i eksperymentować z możliwościami.
Plac zabaw oferuje opcje dostosowywania środowiska czatu. W górnym menu możesz wybrać pozycję Wdróż , aby określić, który model generuje odpowiedź przy użyciu wyników wyszukiwania z indeksu. Możesz wybrać liczbę wcześniejszych wiadomości, które mają być uwzględniane jako historia konwersacji dla przyszłych wygenerowanych odpowiedzi. Historia konwersacji udostępnia kontekst generowania powiązanych odpowiedzi, ale także używa użycia tokenu. Wskaźnik postępu tokenu wejściowego śledzi liczbę przesłanych tokenów.
Ustawienia zaawansowane po lewej stronie to parametry środowiska uruchomieniowego, które zapewniają kontrolę nad pobieraniem i wyszukiwaniem odpowiednich informacji z danych. Dobrym przypadkiem użycia jest to, że chcesz upewnić się, że odpowiedzi są generowane tylko na podstawie danych lub model nie może wygenerować odpowiedzi na podstawie istniejących informacji o danych.
Ścisłość określa agresywność systemu w filtrowaniu dokumentów wyszukiwania na podstawie ich wyników podobieństwa. Ustawienie ścisłej wartości 5 oznacza, że system będzie agresywnie filtrować dokumenty, stosując bardzo wysoki próg podobieństwa. Wyszukiwanie semantyczne może być przydatne w tym scenariuszu, ponieważ modele klasyfikacji wykonują lepszą pracę wywnioskowania intencji zapytania. Niższe poziomy ścisłości dają bardziej pełne odpowiedzi, ale mogą również zawierać informacje, które nie znajdują się w indeksie. Ta wartość jest domyślnie ustawiona na 3.
Pobrane dokumenty to liczba całkowita, która może być ustawiona na 3, 5, 10 lub 20 i kontroluje liczbę fragmentów dokumentu dostarczonych do dużego modelu językowego na potrzeby formułowania końcowej odpowiedzi. Domyślnie jest ustawiona wartość 5.
Po włączeniu opcji Ogranicz odpowiedzi na dane model próbuje polegać tylko na dokumentach na potrzeby odpowiedzi. Ta wartość jest domyślnie ustawiona na wartość true.
Wyślij pierwsze zapytanie. Modele czatów najlepiej działają w ćwiczeniach pytań i odpowiedzi. Na przykład "Co to są moje dostępne plany zdrowotne?", lub "Co to jest opcja kondycji plus?".
Zapytania wymagające analizy danych prawdopodobnie zakończyłyby się niepowodzeniem, na przykład "Który plan kondycji jest najbardziej popularny?". Zapytania, które wymagają informacji o wszystkich danych, również prawdopodobnie kończą się niepowodzeniem, na przykład "Ile dokumentów zostało przekazanych?". Pamiętaj, że wyszukiwarka szuka fragmentów z dokładnymi lub podobnymi terminami, frazami lub konstrukcją zapytania. I choć model może zrozumieć pytanie, jeśli wyniki wyszukiwania są fragmentami z zestawu danych, nie jest to właściwe informacje, aby odpowiedzieć na tego rodzaju pytanie.
Czaty są ograniczone przez liczbę dokumentów (fragmentów) zwracanych w odpowiedzi (ograniczonych do 3–20 w placu zabaw usługi Azure OpenAI Studio). Jak można sobie wyobrazić, pozowanie pytania o "wszystkie tytuły" wymaga pełnego skanowania całego magazynu wektorów.
Wdrażanie modelu
Gdy środowisko w usłudze Azure OpenAI Studio jest zadowalające, możesz wdrożyć aplikację internetową bezpośrednio z poziomu programu Studio, wybierając przycisk Wdróż do .
Umożliwia to wdrożenie w autonomicznej aplikacji internetowej lub copilot w programie Copilot Studio (wersja zapoznawcza), jeśli używasz własnych danych w modelu.
Jeśli na przykład zdecydujesz się wdrożyć aplikację internetową:
Przy pierwszym wdrożeniu aplikacji internetowej należy wybrać pozycję Utwórz nową aplikację internetową. Wybierz nazwę aplikacji, która stanie się częścią adresu URL aplikacji. Na przykład https://<appname>.azurewebsites.net
.
Wybierz subskrypcję, grupę zasobów, lokalizację i plan cenowy opublikowanej aplikacji. Aby zaktualizować istniejącą aplikację, wybierz pozycję Publikuj w istniejącej aplikacji internetowej i wybierz nazwę poprzedniej aplikacji z menu rozwijanego.
Jeśli zdecydujesz się wdrożyć aplikację internetową, zapoznaj się z ważnymi zagadnieniami dotyczącymi korzystania z niej.
Wymagania wstępne
Następujące zasoby:
- Azure OpenAI
- Azure Blob Storage
- Azure AI Search
- Zasób usługi Azure OpenAI wdrożony w obsługiwanym regionie i z obsługiwanym modelem.
- Upewnij się, że masz przypisaną co najmniej rolę Współautor usług Cognitive Services dla zasobu Azure OpenAI.
- Pobierz przykładowe dane z usługi GitHub , jeśli nie masz własnych danych.
- Zestaw SDK platformy .NET 8
Dodawanie danych przy użyciu programu Azure OpenAI Studio
Napiwek
Interfejs wiersza polecenia dla deweloperów platformy Azure umożliwia programowe tworzenie zasobów potrzebnych do korzystania z usługi Azure OpenAI On Your Data
Przejdź do usługi Azure AI Foundry i zaloguj się przy użyciu poświadczeń, które mają dostęp do zasobu usługi Azure OpenAI.
Możesz utworzyć projekt usługi Azure AI Foundry, klikając pozycję Utwórz projekt lub klikając przycisk bezpośrednio na kafelku Koncentruje się na usłudze Azure OpenAI Service .
Wybierz pozycję Czat w obszarze Place zabaw w menu nawigacji po lewej stronie i wybierz wdrożenie modelu.
Na placu zabaw czatu wybierz pozycję Dodaj dane, a następnie pozycję Dodaj źródło danych
W wyświetlonym okienku wybierz pozycję Przekaż pliki (wersja zapoznawcza) w obszarze Wybierz źródło danych. Usługa Azure OpenAI wymaga zarówno zasobu magazynu, jak i zasobu wyszukiwania w celu uzyskania dostępu do danych i indeksowania ich.
Napiwek
- Aby uzyskać więcej informacji, zobacz następujący zasób:
- W przypadku dokumentów i zestawów danych z długim tekstem zalecamy użycie dostępnego skryptu przygotowywania danych.
Aby usługa Azure OpenAI uzyskiwała dostęp do konta magazynu, należy włączyć współużytkowanie zasobów między źródłami (CORS). Jeśli mechanizm CORS nie jest jeszcze włączony dla zasobu usługi Azure Blob Storage, wybierz pozycję Włącz mechanizm CORS.
Wybierz zasób usługi Azure AI Search i wybierz potwierdzenie, że połączenie spowoduje naliczenie użycia na twoim koncie. Następnie kliknij przycisk Dalej.
W okienku Przekazywanie plików wybierz pozycję Przeglądaj dla pliku i wybierz pliki pobrane z sekcji wymagań wstępnych lub własne dane. Następnie wybierz pozycję Przekaż pliki. Następnie kliknij przycisk Dalej.
W okienku Zarządzanie danymi możesz wybrać, czy włączyć wyszukiwanie semantyczne, czy wektorowe wyszukiwanie indeksu.
Ważne
- Wyszukiwanie semantyczne i wyszukiwanie wektorów podlegają dodatkowym cenom. Aby włączyć wyszukiwanie semantyczne lub wyszukiwanie wektorów, musisz wybrać jednostkę SKU Podstawowa lub nowsza jednostka SKU . Aby uzyskać więcej informacji, zobacz różnice w warstwie cenowej i limity usług.
- Aby poprawić jakość pobierania informacji i odpowiedzi modelu, zalecamy włączenie semantycznego wyszukiwania następujących języków źródła danych: angielski, francuski, hiszpański, portugalski, włoski, niemiecki, chiński (Zh), japoński, koreański, rosyjski i arabski.
Przejrzyj wprowadzone szczegóły, a następnie wybierz pozycję Zapisz i zamknij. Teraz możesz porozmawiać z modelem i będzie używać informacji z danych do konstruowania odpowiedzi.
Pobieranie wymaganych zmiennych
Aby pomyślnie wykonać wywołanie usługi Azure OpenAI, potrzebne są następujące zmienne. W tym przewodniku Szybki start założono, że dane zostały przekazane na konto usługi Azure Blob Storage i utworzono indeks usługi Azure AI Search. Zobacz Dodawanie danych przy użyciu rozwiązania Azure AI Foundry
Nazwa zmiennej | Wartość |
---|---|
AZURE_OPENAI_ENDPOINT |
Tę wartość można znaleźć w sekcji Klucze i punkt końcowy podczas badania zasobu usługi Azure OpenAI w witrynie Azure Portal. Alternatywnie możesz znaleźć wartość w widoku kodu platformy>Azure AI Foundry>Chat. Przykładowy punkt końcowy to: https://my-resoruce.openai.azure.com . |
AZURE_OPENAI_API_KEY |
Tę wartość można znaleźć w sekcji Klucze zarządzania>zasobami i punkt końcowy podczas badania zasobu usługi Azure OpenAI w witrynie Azure Portal. Możesz użyć wartości KEY1 lub KEY2 . Zawsze posiadanie dwóch kluczy umożliwia bezpieczne obracanie i ponowne generowanie kluczy bez powodowania zakłóceń usługi. |
AZURE_OPENAI_DEPLOYMENT_ID |
Ta wartość odpowiada nazwie niestandardowej wybranej dla wdrożenia podczas wdrażania modelu. Tę wartość można znaleźć w obszarze Wdrożenia zarządzania>zasobami w witrynie Azure Portal lub alternatywnie w obszarze Wdrożenia zarządzania>w portalu usługi Azure AI Foundry. |
AZURE_AI_SEARCH_ENDPOINT |
Tę wartość można znaleźć w sekcji Przegląd podczas badania zasobu usługi Azure AI Search w witrynie Azure Portal. |
AZURE_AI_SEARCH_API_KEY |
Tę wartość można znaleźć w sekcji Klucze ustawień>podczas badania zasobu usługi Azure AI Search w witrynie Azure Portal. Możesz użyć podstawowego klucza administratora lub pomocniczego klucza administratora. Zawsze posiadanie dwóch kluczy umożliwia bezpieczne obracanie i ponowne generowanie kluczy bez powodowania zakłóceń usługi. |
AZURE_AI_SEARCH_INDEX |
Ta wartość odpowiada nazwie utworzonego indeksu do przechowywania danych. Tę pozycję można znaleźć w sekcji Przegląd podczas badania zasobu usługi Azure AI Search w witrynie Azure Portal. |
Zmienne środowiskowe
Tworzenie i przypisywanie trwałych zmiennych środowiskowych dla klucza i punktu końcowego.
Ważne
Jeśli używasz klucza interfejsu API, zapisz go bezpiecznie w innym miejscu, na przykład w usłudze Azure Key Vault. Nie dołączaj klucza interfejsu API bezpośrednio do kodu i nigdy nie publikuj go publicznie.
Aby uzyskać więcej informacji na temat zabezpieczeń usług sztucznej inteligencji, zobacz Uwierzytelnianie żądań w usługach 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
Tworzenie nowej aplikacji .NET Core
W oknie konsoli (takim jak cmd, PowerShell lub Bash) użyj dotnet new
polecenia , aby utworzyć nową aplikację konsolową o nazwie azure-openai-quickstart
. To polecenie tworzy prosty projekt "Hello World" z pojedynczym plikiem źródłowym języka C#: Program.cs.
dotnet new console -n azure-openai-quickstart
Zmień katalog na nowo utworzony folder aplikacji. Aplikację można skompilować za pomocą następujących funkcji:
dotnet build
Dane wyjściowe kompilacji nie powinny zawierać żadnych ostrzeżeń ani błędów.
...
Build succeeded.
0 Warning(s)
0 Error(s)
...
Zainstaluj bibliotekę klienta platformy .NET openAI za pomocą następujących funkcji:
dotnet add package Azure.AI.OpenAI --prerelease
W katalogu projektu otwórz plik Program.cs i zastąp jego zawartość następującym kodem:
Bez przesyłania strumieniowego odpowiedzi
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}");
}
Ważne
W przypadku środowiska produkcyjnego użyj bezpiecznego sposobu przechowywania i uzyskiwania dostępu do poświadczeń, takich jak usługa Azure Key Vault. Aby uzyskać więcej informacji na temat zabezpieczeń poświadczeń, zobacz artykuł Zabezpieczenia usług Azure AI.
dotnet run program.cs
Wyjście
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
Będzie to czekać, aż model wygenerował całą odpowiedź przed wydrukowanie wyników. Alternatywnie, jeśli chcesz asynchronicznie przesłać strumieniowo odpowiedź i wydrukować wyniki, możesz zastąpić zawartość Program.cs kodem w następnym przykładzie.
Async z przesyłaniem strumieniowym
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}");
}
Przykład kodu źródłowego kodu| | źródłowego
Wymagania wstępne
Następujące zasoby:
- Azure OpenAI
- Azure Blob Storage
- Azure AI Search
- Zasób usługi Azure OpenAI wdrożony w obsługiwanym regionie i z obsługiwanym modelem.
- Upewnij się, że masz przypisaną co najmniej rolę Współautor usług Cognitive Services dla zasobu Azure OpenAI.
- Pobierz przykładowe dane z usługi GitHub , jeśli nie masz własnych danych.
Dodawanie danych przy użyciu programu Azure OpenAI Studio
Napiwek
Interfejs wiersza polecenia dla deweloperów platformy Azure umożliwia programowe tworzenie zasobów potrzebnych do korzystania z usługi Azure OpenAI On Your Data
Przejdź do usługi Azure AI Foundry i zaloguj się przy użyciu poświadczeń, które mają dostęp do zasobu usługi Azure OpenAI.
Możesz utworzyć projekt usługi Azure AI Foundry, klikając pozycję Utwórz projekt lub klikając przycisk bezpośrednio na kafelku Koncentruje się na usłudze Azure OpenAI Service .
Wybierz pozycję Czat w obszarze Place zabaw w menu nawigacji po lewej stronie i wybierz wdrożenie modelu.
Na placu zabaw czatu wybierz pozycję Dodaj dane, a następnie pozycję Dodaj źródło danych
W wyświetlonym okienku wybierz pozycję Przekaż pliki (wersja zapoznawcza) w obszarze Wybierz źródło danych. Usługa Azure OpenAI wymaga zarówno zasobu magazynu, jak i zasobu wyszukiwania w celu uzyskania dostępu do danych i indeksowania ich.
Napiwek
- Aby uzyskać więcej informacji, zobacz następujący zasób:
- W przypadku dokumentów i zestawów danych z długim tekstem zalecamy użycie dostępnego skryptu przygotowywania danych.
Aby usługa Azure OpenAI uzyskiwała dostęp do konta magazynu, należy włączyć współużytkowanie zasobów między źródłami (CORS). Jeśli mechanizm CORS nie jest jeszcze włączony dla zasobu usługi Azure Blob Storage, wybierz pozycję Włącz mechanizm CORS.
Wybierz zasób usługi Azure AI Search i wybierz potwierdzenie, że połączenie spowoduje naliczenie użycia na twoim koncie. Następnie kliknij przycisk Dalej.
W okienku Przekazywanie plików wybierz pozycję Przeglądaj dla pliku i wybierz pliki pobrane z sekcji wymagań wstępnych lub własne dane. Następnie wybierz pozycję Przekaż pliki. Następnie kliknij przycisk Dalej.
W okienku Zarządzanie danymi możesz wybrać, czy włączyć wyszukiwanie semantyczne, czy wektorowe wyszukiwanie indeksu.
Ważne
- Wyszukiwanie semantyczne i wyszukiwanie wektorów podlegają dodatkowym cenom. Aby włączyć wyszukiwanie semantyczne lub wyszukiwanie wektorów, musisz wybrać jednostkę SKU Podstawowa lub nowsza jednostka SKU . Aby uzyskać więcej informacji, zobacz różnice w warstwie cenowej i limity usług.
- Aby poprawić jakość pobierania informacji i odpowiedzi modelu, zalecamy włączenie semantycznego wyszukiwania następujących języków źródła danych: angielski, francuski, hiszpański, portugalski, włoski, niemiecki, chiński (Zh), japoński, koreański, rosyjski i arabski.
Przejrzyj wprowadzone szczegóły, a następnie wybierz pozycję Zapisz i zamknij. Teraz możesz porozmawiać z modelem i będzie używać informacji z danych do konstruowania odpowiedzi.
Pobieranie wymaganych zmiennych
Aby pomyślnie wykonać wywołanie usługi Azure OpenAI, potrzebne są następujące zmienne. W tym przewodniku Szybki start założono, że dane zostały przekazane na konto usługi Azure Blob Storage i utworzono indeks usługi Azure AI Search. Aby uzyskać więcej informacji, zobacz Dodawanie danych przy użyciu usługi Azure AI Foundry.
Nazwa zmiennej | Wartość |
---|---|
AZURE_OPENAI_ENDPOINT |
Tę wartość można znaleźć w sekcji Klucze i punkt końcowy podczas badania zasobu usługi Azure OpenAI w witrynie Azure Portal. Alternatywnie możesz znaleźć wartość w widoku kodu platformy>Azure AI Foundry>Chat. Przykładowy punkt końcowy to: https://my-resource.openai.azure.com . |
AZURE_OPENAI_API_KEY |
Tę wartość można znaleźć w sekcji Klucze zarządzania>zasobami i punkt końcowy podczas badania zasobu usługi Azure OpenAI w witrynie Azure Portal. Możesz użyć wartości KEY1 lub KEY2 . Zawsze posiadanie dwóch kluczy umożliwia bezpieczne obracanie i ponowne generowanie kluczy bez powodowania zakłóceń usługi. |
AZURE_OPEN_AI_DEPLOYMENT_ID |
Ta wartość odpowiada nazwie niestandardowej wybranej dla wdrożenia podczas wdrażania modelu. Tę wartość można znaleźć w obszarze Wdrożenia zarządzania>zasobami w witrynie Azure Portal lub alternatywnie w obszarze Wdrożenia zarządzania>w portalu usługi Azure AI Foundry. |
AZURE_AI_SEARCH_ENDPOINT |
Tę wartość można znaleźć w sekcji Przegląd podczas badania zasobu usługi Azure AI Search w witrynie Azure Portal. |
AZURE_AI_SEARCH_API_KEY |
Tę wartość można znaleźć w sekcji Klucze ustawień>podczas badania zasobu usługi Azure AI Search w witrynie Azure Portal. Możesz użyć podstawowego klucza administratora lub pomocniczego klucza administratora. Zawsze posiadanie dwóch kluczy umożliwia bezpieczne obracanie i ponowne generowanie kluczy bez powodowania zakłóceń usługi. |
AZURE_AI_SEARCH_INDEX |
Ta wartość odpowiada nazwie utworzonego indeksu do przechowywania danych. Tę pozycję można znaleźć w sekcji Przegląd podczas badania zasobu usługi Azure AI Search w witrynie Azure Portal. |
Zmienne środowiskowe
Tworzenie i przypisywanie trwałych zmiennych środowiskowych dla klucza i punktu końcowego.
Ważne
Jeśli używasz klucza interfejsu API, zapisz go bezpiecznie w innym miejscu, na przykład w usłudze Azure Key Vault. Nie dołączaj klucza interfejsu API bezpośrednio do kodu i nigdy nie publikuj go publicznie.
Aby uzyskać więcej informacji na temat zabezpieczeń usług sztucznej inteligencji, zobacz Uwierzytelnianie żądań w usługach Azure AI.
Uwaga
Platforma Spring AI domyślnie określa nazwę modelu na gpt-35-turbo
. Należy podać SPRING_AI_AZURE_OPENAI_MODEL
wartość tylko wtedy, gdy wdrożono model o innej nazwie.
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
Tworzenie nowej aplikacji Spring
Platforma Spring AI obecnie nie obsługuje AzureCognitiveSearchChatExtensionConfiguration
opcji, które umożliwiają hermetyzację metody retrieval Augmented Generation (RAG) zapytania usługi Azure AI i ukrywanie szczegółów użytkownika. Alternatywnie możesz wywołać metodę RAG bezpośrednio w aplikacji, aby wysyłać zapytania o dane w indeksie usługi Azure AI Search i używać pobranych dokumentów w celu rozszerzenia zapytania.
Platforma Spring AI obsługuje abstrakcję VectorStore i można opakować usługę Azure AI Search w implementacji Spring AI VectorStore na potrzeby wykonywania zapytań dotyczących danych niestandardowych. Poniższy projekt implementuje niestandardowy magazyn VectorStore wspierany przez usługę Azure AI Search i wykonuje bezpośrednio operacje RAG.
W oknie powłoki Bash utwórz nowy katalog dla aplikacji i przejdź do niego.
mkdir ai-custom-data-demo && cd ai-custom-data-demo
spring init
Uruchom polecenie z katalogu roboczego. To polecenie tworzy standardową strukturę katalogów dla projektu Spring, w tym główny plik źródłowy klasy Java i plik pom.xml używany do zarządzania projektami opartymi na programie Maven.
spring init -a ai-custom-data-demo -n AICustomData --force --build maven -x
Wygenerowane pliki i foldery przypominają następującą strukturę:
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
Edytowanie aplikacji Spring
Edytuj plik pom.xml.
W katalogu głównym katalogu projektu otwórz plik pom.xml w preferowanym edytorze lub środowisku IDE i zastąp plik następującym zawartością:
<?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>
W folderze src/main/java/com/example/aicustomdatademo otwórz AiCustomDataApplication.java w preferowanym edytorze lub środowisku IDE i wklej następujący kod:
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; } }
Ważne
W przypadku środowiska produkcyjnego użyj bezpiecznego sposobu przechowywania i uzyskiwania dostępu do poświadczeń, takich jak usługa Azure Key Vault. Aby uzyskać więcej informacji na temat zabezpieczeń poświadczeń, zobacz artykuł Zabezpieczenia usług Azure AI.
Wróć do folderu głównego projektu i uruchom aplikację przy użyciu następującego polecenia:
./mvnw spring-boot:run
Wyjście
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: 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.
Wymagania wstępne
Subskrypcja platformy Azure — utwórz bezpłatnie.
Interfejs wiersza polecenia platformy Azure używany do uwierzytelniania bez hasła w lokalnym środowisku projektowym, utwórz niezbędny kontekst, logując się przy użyciu interfejsu wiersza polecenia platformy Azure.
Zasób usługi Azure OpenAI wdrożony w obsługiwanym regionie i z obsługiwanym modelem.
Upewnij się, że masz przypisaną co najmniej rolę Współautor usług Cognitive Services dla zasobu Azure OpenAI.
Pobierz przykładowe dane z usługi GitHub , jeśli nie masz własnych danych.
Dokumentacja dokumentacji | źródłowej pakietu kodu | źródłowego (npm)Samples |
Dodawanie danych przy użyciu programu Azure OpenAI Studio
Napiwek
Interfejs wiersza polecenia dla deweloperów platformy Azure umożliwia programowe tworzenie zasobów potrzebnych do korzystania z usługi Azure OpenAI On Your Data
Przejdź do usługi Azure AI Foundry i zaloguj się przy użyciu poświadczeń, które mają dostęp do zasobu usługi Azure OpenAI.
Możesz utworzyć projekt usługi Azure AI Foundry, klikając pozycję Utwórz projekt lub klikając przycisk bezpośrednio na kafelku Koncentruje się na usłudze Azure OpenAI Service .
Wybierz pozycję Czat w obszarze Place zabaw w menu nawigacji po lewej stronie i wybierz wdrożenie modelu.
Na placu zabaw czatu wybierz pozycję Dodaj dane, a następnie pozycję Dodaj źródło danych
W wyświetlonym okienku wybierz pozycję Przekaż pliki (wersja zapoznawcza) w obszarze Wybierz źródło danych. Usługa Azure OpenAI wymaga zarówno zasobu magazynu, jak i zasobu wyszukiwania w celu uzyskania dostępu do danych i indeksowania ich.
Napiwek
- Aby uzyskać więcej informacji, zobacz następujący zasób:
- W przypadku dokumentów i zestawów danych z długim tekstem zalecamy użycie dostępnego skryptu przygotowywania danych.
Aby usługa Azure OpenAI uzyskiwała dostęp do konta magazynu, należy włączyć współużytkowanie zasobów między źródłami (CORS). Jeśli mechanizm CORS nie jest jeszcze włączony dla zasobu usługi Azure Blob Storage, wybierz pozycję Włącz mechanizm CORS.
Wybierz zasób usługi Azure AI Search i wybierz potwierdzenie, że połączenie spowoduje naliczenie użycia na twoim koncie. Następnie kliknij przycisk Dalej.
W okienku Przekazywanie plików wybierz pozycję Przeglądaj dla pliku i wybierz pliki pobrane z sekcji wymagań wstępnych lub własne dane. Następnie wybierz pozycję Przekaż pliki. Następnie kliknij przycisk Dalej.
W okienku Zarządzanie danymi możesz wybrać, czy włączyć wyszukiwanie semantyczne, czy wektorowe wyszukiwanie indeksu.
Ważne
- Wyszukiwanie semantyczne i wyszukiwanie wektorów podlegają dodatkowym cenom. Aby włączyć wyszukiwanie semantyczne lub wyszukiwanie wektorów, musisz wybrać jednostkę SKU Podstawowa lub nowsza jednostka SKU . Aby uzyskać więcej informacji, zobacz różnice w warstwie cenowej i limity usług.
- Aby poprawić jakość pobierania informacji i odpowiedzi modelu, zalecamy włączenie semantycznego wyszukiwania następujących języków źródła danych: angielski, francuski, hiszpański, portugalski, włoski, niemiecki, chiński (Zh), japoński, koreański, rosyjski i arabski.
Przejrzyj wprowadzone szczegóły, a następnie wybierz pozycję Zapisz i zamknij. Teraz możesz porozmawiać z modelem i będzie używać informacji z danych do konstruowania odpowiedzi.
Pobieranie wymaganych zmiennych
Aby pomyślnie wykonać wywołanie usługi Azure OpenAI, potrzebne są następujące zmienne. W tym przewodniku Szybki start założono, że dane zostały przekazane na konto usługi Azure Blob Storage i utworzono indeks usługi Azure AI Search. Zobacz Dodawanie danych przy użyciu rozwiązania Azure AI Foundry
Nazwa zmiennej | Wartość |
---|---|
AZURE_OPENAI_ENDPOINT |
Tę wartość można znaleźć w sekcji Klucze i punkt końcowy podczas badania zasobu usługi Azure OpenAI w witrynie Azure Portal. Alternatywnie możesz znaleźć wartość w widoku kodu platformy>Azure AI Foundry>Chat. Przykładowy punkt końcowy to: https://my-resoruce.openai.azure.com . |
AZURE_OPENAI_API_KEY |
Tę wartość można znaleźć w sekcji Klucze zarządzania>zasobami i punkt końcowy podczas badania zasobu usługi Azure OpenAI w witrynie Azure Portal. Możesz użyć wartości KEY1 lub KEY2 . Zawsze posiadanie dwóch kluczy umożliwia bezpieczne obracanie i ponowne generowanie kluczy bez powodowania zakłóceń usługi. |
AZURE_OPENAI_DEPLOYMENT_ID |
Ta wartość odpowiada nazwie niestandardowej wybranej dla wdrożenia podczas wdrażania modelu. Tę wartość można znaleźć w obszarze Wdrożenia zarządzania>zasobami w witrynie Azure Portal lub alternatywnie w obszarze Wdrożenia zarządzania>w portalu usługi Azure AI Foundry. |
AZURE_AI_SEARCH_ENDPOINT |
Tę wartość można znaleźć w sekcji Przegląd podczas badania zasobu usługi Azure AI Search w witrynie Azure Portal. |
AZURE_AI_SEARCH_API_KEY |
Tę wartość można znaleźć w sekcji Klucze ustawień>podczas badania zasobu usługi Azure AI Search w witrynie Azure Portal. Możesz użyć podstawowego klucza administratora lub pomocniczego klucza administratora. Zawsze posiadanie dwóch kluczy umożliwia bezpieczne obracanie i ponowne generowanie kluczy bez powodowania zakłóceń usługi. |
AZURE_AI_SEARCH_INDEX |
Ta wartość odpowiada nazwie utworzonego indeksu do przechowywania danych. Tę pozycję można znaleźć w sekcji Przegląd podczas badania zasobu usługi Azure AI Search w witrynie Azure Portal. |
Zmienne środowiskowe
Tworzenie i przypisywanie trwałych zmiennych środowiskowych dla klucza i punktu końcowego.
Ważne
Jeśli używasz klucza interfejsu API, zapisz go bezpiecznie w innym miejscu, na przykład w usłudze Azure Key Vault. Nie dołączaj klucza interfejsu API bezpośrednio do kodu i nigdy nie publikuj go publicznie.
Aby uzyskać więcej informacji na temat zabezpieczeń usług sztucznej inteligencji, zobacz Uwierzytelnianie żądań w usługach 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
Inicjowanie aplikacji Node.js
W oknie konsoli (na przykład cmd, PowerShell lub Bash) utwórz nowy katalog dla aplikacji i przejdź do niego. Następnie uruchom polecenie , npm init
aby utworzyć aplikację węzła z plikiem package.json .
npm init
Instalowanie biblioteki klienta
Zainstaluj klienta usługi Azure OpenAI i biblioteki tożsamości platformy Azure dla języka JavaScript za pomocą narzędzia npm:
npm install @azure/openai @azure/identity
Plik package.json aplikacji zostanie zaktualizowany o zależności.
Dodawanie kodu JavaScript
Otwórz wiersz polecenia, w którym chcesz utworzyć nowy projekt, i utwórz nowy plik o nazwie
ChatWithOwnData.js
. Skopiuj następujący kod doChatWithOwnData.js
pliku.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); });
Uruchom aplikację za pomocą następującego polecenia:
node ChatWithOwnData.js
Ważne
W przypadku środowiska produkcyjnego użyj bezpiecznego sposobu przechowywania i uzyskiwania dostępu do poświadczeń, takich jak usługa Azure Key Vault. Aby uzyskać więcej informacji na temat zabezpieczeń poświadczeń, zobacz artykuł Zabezpieczenia usług Azure AI.
Wyjście
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.
Wymagania wstępne
Subskrypcja platformy Azure — utwórz bezpłatnie.
Interfejs wiersza polecenia platformy Azure używany do uwierzytelniania bez hasła w lokalnym środowisku projektowym, utwórz niezbędny kontekst, logując się przy użyciu interfejsu wiersza polecenia platformy Azure.
Zasób usługi Azure OpenAI wdrożony w obsługiwanym regionie i z obsługiwanym modelem.
Upewnij się, że masz przypisaną co najmniej rolę Współautor usług Cognitive Services dla zasobu Azure OpenAI.
Pobierz przykładowe dane z usługi GitHub , jeśli nie masz własnych danych.
Dokumentacja dokumentacji | źródłowej pakietu kodu | źródłowego (npm)Samples |
Dodawanie danych przy użyciu programu Azure OpenAI Studio
Napiwek
Interfejs wiersza polecenia dla deweloperów platformy Azure umożliwia programowe tworzenie zasobów potrzebnych do korzystania z usługi Azure OpenAI On Your Data
Przejdź do usługi Azure AI Foundry i zaloguj się przy użyciu poświadczeń, które mają dostęp do zasobu usługi Azure OpenAI.
Możesz utworzyć projekt usługi Azure AI Foundry, klikając pozycję Utwórz projekt lub klikając przycisk bezpośrednio na kafelku Koncentruje się na usłudze Azure OpenAI Service .
Wybierz pozycję Czat w obszarze Place zabaw w menu nawigacji po lewej stronie i wybierz wdrożenie modelu.
Na placu zabaw czatu wybierz pozycję Dodaj dane, a następnie pozycję Dodaj źródło danych
W wyświetlonym okienku wybierz pozycję Przekaż pliki (wersja zapoznawcza) w obszarze Wybierz źródło danych. Usługa Azure OpenAI wymaga zarówno zasobu magazynu, jak i zasobu wyszukiwania w celu uzyskania dostępu do danych i indeksowania ich.
Napiwek
- Aby uzyskać więcej informacji, zobacz następujący zasób:
- W przypadku dokumentów i zestawów danych z długim tekstem zalecamy użycie dostępnego skryptu przygotowywania danych.
Aby usługa Azure OpenAI uzyskiwała dostęp do konta magazynu, należy włączyć współużytkowanie zasobów między źródłami (CORS). Jeśli mechanizm CORS nie jest jeszcze włączony dla zasobu usługi Azure Blob Storage, wybierz pozycję Włącz mechanizm CORS.
Wybierz zasób usługi Azure AI Search i wybierz potwierdzenie, że połączenie spowoduje naliczenie użycia na twoim koncie. Następnie kliknij przycisk Dalej.
W okienku Przekazywanie plików wybierz pozycję Przeglądaj dla pliku i wybierz pliki pobrane z sekcji wymagań wstępnych lub własne dane. Następnie wybierz pozycję Przekaż pliki. Następnie kliknij przycisk Dalej.
W okienku Zarządzanie danymi możesz wybrać, czy włączyć wyszukiwanie semantyczne, czy wektorowe wyszukiwanie indeksu.
Ważne
- Wyszukiwanie semantyczne i wyszukiwanie wektorów podlegają dodatkowym cenom. Aby włączyć wyszukiwanie semantyczne lub wyszukiwanie wektorów, musisz wybrać jednostkę SKU Podstawowa lub nowsza jednostka SKU . Aby uzyskać więcej informacji, zobacz różnice w warstwie cenowej i limity usług.
- Aby poprawić jakość pobierania informacji i odpowiedzi modelu, zalecamy włączenie semantycznego wyszukiwania następujących języków źródła danych: angielski, francuski, hiszpański, portugalski, włoski, niemiecki, chiński (Zh), japoński, koreański, rosyjski i arabski.
Przejrzyj wprowadzone szczegóły, a następnie wybierz pozycję Zapisz i zamknij. Teraz możesz porozmawiać z modelem i będzie używać informacji z danych do konstruowania odpowiedzi.
Pobieranie wymaganych zmiennych
Aby pomyślnie wykonać wywołanie usługi Azure OpenAI, potrzebne są następujące zmienne. W tym przewodniku Szybki start założono, że dane zostały przekazane na konto usługi Azure Blob Storage i utworzono indeks usługi Azure AI Search. Zobacz Dodawanie danych przy użyciu rozwiązania Azure AI Foundry
Nazwa zmiennej | Wartość |
---|---|
AZURE_OPENAI_ENDPOINT |
Tę wartość można znaleźć w sekcji Klucze i punkt końcowy podczas badania zasobu usługi Azure OpenAI w witrynie Azure Portal. Alternatywnie możesz znaleźć wartość w widoku kodu platformy>Azure AI Foundry>Chat. Przykładowy punkt końcowy to: https://my-resoruce.openai.azure.com . |
AZURE_OPENAI_API_KEY |
Tę wartość można znaleźć w sekcji Klucze zarządzania>zasobami i punkt końcowy podczas badania zasobu usługi Azure OpenAI w witrynie Azure Portal. Możesz użyć wartości KEY1 lub KEY2 . Zawsze posiadanie dwóch kluczy umożliwia bezpieczne obracanie i ponowne generowanie kluczy bez powodowania zakłóceń usługi. |
AZURE_OPENAI_DEPLOYMENT_ID |
Ta wartość odpowiada nazwie niestandardowej wybranej dla wdrożenia podczas wdrażania modelu. Tę wartość można znaleźć w obszarze Wdrożenia zarządzania>zasobami w witrynie Azure Portal lub alternatywnie w obszarze Wdrożenia zarządzania>w portalu usługi Azure AI Foundry. |
AZURE_AI_SEARCH_ENDPOINT |
Tę wartość można znaleźć w sekcji Przegląd podczas badania zasobu usługi Azure AI Search w witrynie Azure Portal. |
AZURE_AI_SEARCH_API_KEY |
Tę wartość można znaleźć w sekcji Klucze ustawień>podczas badania zasobu usługi Azure AI Search w witrynie Azure Portal. Możesz użyć podstawowego klucza administratora lub pomocniczego klucza administratora. Zawsze posiadanie dwóch kluczy umożliwia bezpieczne obracanie i ponowne generowanie kluczy bez powodowania zakłóceń usługi. |
AZURE_AI_SEARCH_INDEX |
Ta wartość odpowiada nazwie utworzonego indeksu do przechowywania danych. Tę pozycję można znaleźć w sekcji Przegląd podczas badania zasobu usługi Azure AI Search w witrynie Azure Portal. |
Zmienne środowiskowe
Tworzenie i przypisywanie trwałych zmiennych środowiskowych dla klucza i punktu końcowego.
Ważne
Jeśli używasz klucza interfejsu API, zapisz go bezpiecznie w innym miejscu, na przykład w usłudze Azure Key Vault. Nie dołączaj klucza interfejsu API bezpośrednio do kodu i nigdy nie publikuj go publicznie.
Aby uzyskać więcej informacji na temat zabezpieczeń usług sztucznej inteligencji, zobacz Uwierzytelnianie żądań w usługach 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
Inicjowanie aplikacji Node.js
W oknie konsoli (na przykład cmd, PowerShell lub Bash) utwórz nowy katalog dla aplikacji i przejdź do niego. Następnie uruchom polecenie , npm init
aby utworzyć aplikację węzła z plikiem package.json .
npm init
Instalowanie biblioteki klienta
Zainstaluj klienta usługi Azure OpenAI i biblioteki tożsamości platformy Azure dla języka JavaScript za pomocą narzędzia npm:
npm install openai @azure/identity @azure/openai
Zależność @azure/openai/types
jest uwzględniana w celu rozszerzenia modelu usługi Azure OpenAI dla data_sources
właściwości. Ten import jest niezbędny tylko dla języka TypeScript.
Plik package.json aplikacji zostanie zaktualizowany o zależności.
Dodawanie kodu TypeScript
Otwórz wiersz polecenia, w którym chcesz utworzyć nowy projekt, i utwórz nowy plik o nazwie
ChatWithOwnData.ts
. Skopiuj następujący kod doChatWithOwnData.ts
pliku.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); });
Skompiluj aplikację za pomocą następującego polecenia:
tsc
Uruchom aplikację za pomocą następującego polecenia:
node ChatWithOwnData.js
Ważne
W przypadku środowiska produkcyjnego użyj bezpiecznego sposobu przechowywania i uzyskiwania dostępu do poświadczeń, takich jak usługa Azure Key Vault. Aby uzyskać więcej informacji na temat zabezpieczeń poświadczeń, zobacz artykuł Zabezpieczenia usług Azure AI.
Wyjście
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.
Wymagania wstępne
Następujące zasoby:
- Azure OpenAI
- Azure Blob Storage
- Azure AI Search
- Zasób usługi Azure OpenAI wdrożony w obsługiwanym regionie i z obsługiwanym modelem.
- Upewnij się, że masz przypisaną co najmniej rolę Współautor usług Cognitive Services dla zasobu Azure OpenAI.
- Pobierz przykładowe dane z usługi GitHub , jeśli nie masz własnych danych.
Odwołania | do pakietu kodu | źródłowego (pypi)Samples |
Te linki odwołują się do interfejsu API openAI dla języka Python. Nie ma zestawu SDK języka Python specyficznego dla platformy Azure dla platformy Azure. Dowiedz się, jak przełączać się między usługami OpenAI i usługami Azure OpenAI.
Dodawanie danych przy użyciu programu Azure OpenAI Studio
Napiwek
Interfejs wiersza polecenia dla deweloperów platformy Azure umożliwia programowe tworzenie zasobów potrzebnych do korzystania z usługi Azure OpenAI On Your Data
Przejdź do usługi Azure AI Foundry i zaloguj się przy użyciu poświadczeń, które mają dostęp do zasobu usługi Azure OpenAI.
Możesz utworzyć projekt usługi Azure AI Foundry, klikając pozycję Utwórz projekt lub klikając przycisk bezpośrednio na kafelku Koncentruje się na usłudze Azure OpenAI Service .
Wybierz pozycję Czat w obszarze Place zabaw w menu nawigacji po lewej stronie i wybierz wdrożenie modelu.
Na placu zabaw czatu wybierz pozycję Dodaj dane, a następnie pozycję Dodaj źródło danych
W wyświetlonym okienku wybierz pozycję Przekaż pliki (wersja zapoznawcza) w obszarze Wybierz źródło danych. Usługa Azure OpenAI wymaga zarówno zasobu magazynu, jak i zasobu wyszukiwania w celu uzyskania dostępu do danych i indeksowania ich.
Napiwek
- Aby uzyskać więcej informacji, zobacz następujący zasób:
- W przypadku dokumentów i zestawów danych z długim tekstem zalecamy użycie dostępnego skryptu przygotowywania danych.
Aby usługa Azure OpenAI uzyskiwała dostęp do konta magazynu, należy włączyć współużytkowanie zasobów między źródłami (CORS). Jeśli mechanizm CORS nie jest jeszcze włączony dla zasobu usługi Azure Blob Storage, wybierz pozycję Włącz mechanizm CORS.
Wybierz zasób usługi Azure AI Search i wybierz potwierdzenie, że połączenie spowoduje naliczenie użycia na twoim koncie. Następnie kliknij przycisk Dalej.
W okienku Przekazywanie plików wybierz pozycję Przeglądaj dla pliku i wybierz pliki pobrane z sekcji wymagań wstępnych lub własne dane. Następnie wybierz pozycję Przekaż pliki. Następnie kliknij przycisk Dalej.
W okienku Zarządzanie danymi możesz wybrać, czy włączyć wyszukiwanie semantyczne, czy wektorowe wyszukiwanie indeksu.
Ważne
- Wyszukiwanie semantyczne i wyszukiwanie wektorów podlegają dodatkowym cenom. Aby włączyć wyszukiwanie semantyczne lub wyszukiwanie wektorów, musisz wybrać jednostkę SKU Podstawowa lub nowsza jednostka SKU . Aby uzyskać więcej informacji, zobacz różnice w warstwie cenowej i limity usług.
- Aby poprawić jakość pobierania informacji i odpowiedzi modelu, zalecamy włączenie semantycznego wyszukiwania następujących języków źródła danych: angielski, francuski, hiszpański, portugalski, włoski, niemiecki, chiński (Zh), japoński, koreański, rosyjski i arabski.
Przejrzyj wprowadzone szczegóły, a następnie wybierz pozycję Zapisz i zamknij. Teraz możesz porozmawiać z modelem i będzie używać informacji z danych do konstruowania odpowiedzi.
Pobieranie wymaganych zmiennych
Aby pomyślnie wykonać wywołanie usługi Azure OpenAI, potrzebne są następujące zmienne. W tym przewodniku Szybki start założono, że dane zostały przekazane na konto usługi Azure Blob Storage i utworzono indeks usługi Azure AI Search. Zobacz Dodawanie danych przy użyciu rozwiązania Azure AI Foundry
Nazwa zmiennej | Wartość |
---|---|
AZURE_OPENAI_ENDPOINT |
Tę wartość można znaleźć w sekcji Klucze i punkt końcowy podczas badania zasobu usługi Azure OpenAI w witrynie Azure Portal. Alternatywnie możesz znaleźć wartość w widoku kodu platformy>Azure AI Foundry>Chat. Przykładowy punkt końcowy to: https://my-resoruce.openai.azure.com . |
AZURE_OPENAI_API_KEY |
Tę wartość można znaleźć w sekcji Klucze zarządzania>zasobami i punkt końcowy podczas badania zasobu usługi Azure OpenAI w witrynie Azure Portal. Możesz użyć wartości KEY1 lub KEY2 . Zawsze posiadanie dwóch kluczy umożliwia bezpieczne obracanie i ponowne generowanie kluczy bez powodowania zakłóceń usługi. |
AZURE_OPENAI_DEPLOYMENT_ID |
Ta wartość odpowiada nazwie niestandardowej wybranej dla wdrożenia podczas wdrażania modelu. Tę wartość można znaleźć w obszarze Wdrożenia zarządzania>zasobami w witrynie Azure Portal lub alternatywnie w obszarze Wdrożenia zarządzania>w portalu usługi Azure AI Foundry. |
AZURE_AI_SEARCH_ENDPOINT |
Tę wartość można znaleźć w sekcji Przegląd podczas badania zasobu usługi Azure AI Search w witrynie Azure Portal. |
AZURE_AI_SEARCH_API_KEY |
Tę wartość można znaleźć w sekcji Klucze ustawień>podczas badania zasobu usługi Azure AI Search w witrynie Azure Portal. Możesz użyć podstawowego klucza administratora lub pomocniczego klucza administratora. Zawsze posiadanie dwóch kluczy umożliwia bezpieczne obracanie i ponowne generowanie kluczy bez powodowania zakłóceń usługi. |
AZURE_AI_SEARCH_INDEX |
Ta wartość odpowiada nazwie utworzonego indeksu do przechowywania danych. Tę pozycję można znaleźć w sekcji Przegląd podczas badania zasobu usługi Azure AI Search w witrynie Azure Portal. |
Zmienne środowiskowe
Tworzenie i przypisywanie trwałych zmiennych środowiskowych dla klucza i punktu końcowego.
Ważne
Jeśli używasz klucza interfejsu API, zapisz go bezpiecznie w innym miejscu, na przykład w usłudze Azure Key Vault. Nie dołączaj klucza interfejsu API bezpośrednio do kodu i nigdy nie publikuj go publicznie.
Aby uzyskać więcej informacji na temat zabezpieczeń usług sztucznej inteligencji, zobacz Uwierzytelnianie żądań w usługach 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
Tworzenie środowiska języka Python
- Utwórz nowy folder o nazwie openai-python dla projektu i nowy plik kodu w języku Python o nazwie main.py. Przejdź do tego katalogu:
mkdir openai-python
cd openai-python
- Zainstaluj następujące biblioteki języka Python:
pip install openai
pip install python-dotenv
Tworzenie aplikacji w języku Python
- W katalogu projektu otwórz plik main.py i dodaj następujący kod:
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))
Ważne
W przypadku środowiska produkcyjnego użyj bezpiecznego sposobu przechowywania i uzyskiwania dostępu do poświadczeń, takich jak usługa Azure Key Vault. Aby uzyskać więcej informacji na temat zabezpieczeń poświadczeń, zobacz artykuł Zabezpieczenia usług Azure AI.
- Wykonaj następujące polecenie:
python main.py
Aplikacja wyświetla odpowiedź w formacie JSON odpowiednim do użycia w wielu scenariuszach. Zawiera ona zarówno odpowiedzi na zapytania, jak i cytaty z przekazanych plików.
Wymagania wstępne
Następujące zasoby:
- Azure OpenAI
- Azure Blob Storage
- Azure AI Search
- Zasób usługi Azure OpenAI wdrożony w obsługiwanym regionie i z obsługiwanym modelem.
- Upewnij się, że masz przypisaną co najmniej rolę Współautor usług Cognitive Services dla zasobu Azure OpenAI.
- Pobierz przykładowe dane z usługi GitHub , jeśli nie masz własnych danych.
Dodawanie danych przy użyciu programu Azure OpenAI Studio
Napiwek
Interfejs wiersza polecenia dla deweloperów platformy Azure umożliwia programowe tworzenie zasobów potrzebnych do korzystania z usługi Azure OpenAI On Your Data
Przejdź do usługi Azure AI Foundry i zaloguj się przy użyciu poświadczeń, które mają dostęp do zasobu usługi Azure OpenAI.
Możesz utworzyć projekt usługi Azure AI Foundry, klikając pozycję Utwórz projekt lub klikając przycisk bezpośrednio na kafelku Koncentruje się na usłudze Azure OpenAI Service .
Wybierz pozycję Czat w obszarze Place zabaw w menu nawigacji po lewej stronie i wybierz wdrożenie modelu.
Na placu zabaw czatu wybierz pozycję Dodaj dane, a następnie pozycję Dodaj źródło danych
W wyświetlonym okienku wybierz pozycję Przekaż pliki (wersja zapoznawcza) w obszarze Wybierz źródło danych. Usługa Azure OpenAI wymaga zarówno zasobu magazynu, jak i zasobu wyszukiwania w celu uzyskania dostępu do danych i indeksowania ich.
Napiwek
- Aby uzyskać więcej informacji, zobacz następujący zasób:
- W przypadku dokumentów i zestawów danych z długim tekstem zalecamy użycie dostępnego skryptu przygotowywania danych.
Aby usługa Azure OpenAI uzyskiwała dostęp do konta magazynu, należy włączyć współużytkowanie zasobów między źródłami (CORS). Jeśli mechanizm CORS nie jest jeszcze włączony dla zasobu usługi Azure Blob Storage, wybierz pozycję Włącz mechanizm CORS.
Wybierz zasób usługi Azure AI Search i wybierz potwierdzenie, że połączenie spowoduje naliczenie użycia na twoim koncie. Następnie kliknij przycisk Dalej.
W okienku Przekazywanie plików wybierz pozycję Przeglądaj dla pliku i wybierz pliki pobrane z sekcji wymagań wstępnych lub własne dane. Następnie wybierz pozycję Przekaż pliki. Następnie kliknij przycisk Dalej.
W okienku Zarządzanie danymi możesz wybrać, czy włączyć wyszukiwanie semantyczne, czy wektorowe wyszukiwanie indeksu.
Ważne
- Wyszukiwanie semantyczne i wyszukiwanie wektorów podlegają dodatkowym cenom. Aby włączyć wyszukiwanie semantyczne lub wyszukiwanie wektorów, musisz wybrać jednostkę SKU Podstawowa lub nowsza jednostka SKU . Aby uzyskać więcej informacji, zobacz różnice w warstwie cenowej i limity usług.
- Aby poprawić jakość pobierania informacji i odpowiedzi modelu, zalecamy włączenie semantycznego wyszukiwania następujących języków źródła danych: angielski, francuski, hiszpański, portugalski, włoski, niemiecki, chiński (Zh), japoński, koreański, rosyjski i arabski.
Przejrzyj wprowadzone szczegóły, a następnie wybierz pozycję Zapisz i zamknij. Teraz możesz porozmawiać z modelem i będzie używać informacji z danych do konstruowania odpowiedzi.
Pobieranie wymaganych zmiennych
Aby pomyślnie wykonać wywołanie usługi Azure OpenAI, potrzebne są następujące zmienne. W tym przewodniku Szybki start założono, że dane zostały przekazane na konto usługi Azure Blob Storage i utworzono indeks usługi Azure AI Search. Zobacz Dodawanie danych przy użyciu rozwiązania Azure AI Foundry
Nazwa zmiennej | Wartość |
---|---|
AZURE_OPENAI_ENDPOINT |
Tę wartość można znaleźć w sekcji Klucze i punkt końcowy podczas badania zasobu usługi Azure OpenAI w witrynie Azure Portal. Alternatywnie możesz znaleźć wartość w widoku kodu platformy>Azure AI Foundry>Chat. Przykładowy punkt końcowy to: https://my-resoruce.openai.azure.com . |
AZURE_OPENAI_API_KEY |
Tę wartość można znaleźć w sekcji Klucze zarządzania>zasobami i punkt końcowy podczas badania zasobu usługi Azure OpenAI w witrynie Azure Portal. Możesz użyć wartości KEY1 lub KEY2 . Zawsze posiadanie dwóch kluczy umożliwia bezpieczne obracanie i ponowne generowanie kluczy bez powodowania zakłóceń usługi. |
AZURE_OPENAI_DEPLOYMENT_ID |
Ta wartość odpowiada nazwie niestandardowej wybranej dla wdrożenia podczas wdrażania modelu. Tę wartość można znaleźć w obszarze Wdrożenia zarządzania>zasobami w witrynie Azure Portal lub alternatywnie w obszarze Wdrożenia zarządzania>w portalu usługi Azure AI Foundry. |
AZURE_AI_SEARCH_ENDPOINT |
Tę wartość można znaleźć w sekcji Przegląd podczas badania zasobu usługi Azure AI Search w witrynie Azure Portal. |
AZURE_AI_SEARCH_API_KEY |
Tę wartość można znaleźć w sekcji Klucze ustawień>podczas badania zasobu usługi Azure AI Search w witrynie Azure Portal. Możesz użyć podstawowego klucza administratora lub pomocniczego klucza administratora. Zawsze posiadanie dwóch kluczy umożliwia bezpieczne obracanie i ponowne generowanie kluczy bez powodowania zakłóceń usługi. |
AZURE_AI_SEARCH_INDEX |
Ta wartość odpowiada nazwie utworzonego indeksu do przechowywania danych. Tę pozycję można znaleźć w sekcji Przegląd podczas badania zasobu usługi Azure AI Search w witrynie Azure Portal. |
Zmienne środowiskowe
Tworzenie i przypisywanie trwałych zmiennych środowiskowych dla klucza i punktu końcowego.
Ważne
Jeśli używasz klucza interfejsu API, zapisz go bezpiecznie w innym miejscu, na przykład w usłudze Azure Key Vault. Nie dołączaj klucza interfejsu API bezpośrednio do kodu i nigdy nie publikuj go publicznie.
Aby uzyskać więcej informacji na temat zabezpieczeń usług sztucznej inteligencji, zobacz Uwierzytelnianie żądań w usługach 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
Przykładowe polecenia programu PowerShell
Modele czatów usługi Azure OpenAI są zoptymalizowane pod kątem pracy z danymi wejściowymi sformatowanymi jako konwersacja. Zmienna messages
przekazuje tablicę słowników z różnymi rolami w konwersacji oddzielonej przez system, użytkownika, narzędzie i asystenta. Zmienna dataSources
łączy się z indeksem usługi Azure Cognitive Search i umożliwia modelom usługi Azure OpenAI reagowanie przy użyciu danych.
Aby wyzwolić odpowiedź z modelu, należy kończyć się komunikatem użytkownika wskazującym, że asystent reaguje.
Napiwek
Istnieje kilka parametrów, których można użyć do zmiany odpowiedzi modelu, na przykład temperature
lub top_p
. Aby uzyskać więcej informacji, zobacz dokumentację referencyjną.
# 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
Przykładowe dane wyjściowe
The available health plans in the Contoso Electronics plan and benefit packages are the Northwind Health Plus and Northwind Standard plans.
Ważne
W środowisku produkcyjnym użyj bezpiecznego sposobu przechowywania i uzyskiwania dostępu do poświadczeń, takich jak Zarządzanie wpisami tajnymi programu PowerShell za pomocą usługi Azure Key Vault. Aby uzyskać więcej informacji na temat zabezpieczeń poświadczeń, zobacz artykuł Zabezpieczenia usług Azure AI.
Rozmowa z modelem przy użyciu aplikacji internetowej
Aby rozpocząć rozmowę z modelem usługi Azure OpenAI, który używa Twoich danych, możesz wdrożyć aplikację internetową przy użyciu programu Azure OpenAI Studio lub przykładowego kodu udostępnianego w usłudze GitHub. Ta aplikacja jest wdrażana przy użyciu usługi Azure App Service i udostępnia interfejs użytkownika do wysyłania zapytań. Ta aplikacja może być używana z modelami usługi Azure OpenAI korzystającymi z danych lub modeli, które nie korzystają z danych. Zapoznaj się z plikiem readme w repozytorium, aby uzyskać instrukcje dotyczące wymagań, konfiguracji i wdrażania. Opcjonalnie możesz dostosować logikę frontonu i zaplecza aplikacji internetowej, wprowadzając zmiany w kodzie źródłowym.
Wymagania wstępne
Następujące zasoby:
- Azure OpenAI
- Azure Blob Storage
- Azure AI Search
- Zasób usługi Azure OpenAI wdrożony w obsługiwanym regionie i z obsługiwanym modelem.
- Upewnij się, że masz przypisaną co najmniej rolę Współautor usług Cognitive Services dla zasobu Azure OpenAI.
- Pobierz przykładowe dane z usługi GitHub , jeśli nie masz własnych danych.
Odwołania | do pakietu kodu | źródłowego (Go)Samples |
Dodawanie danych przy użyciu programu Azure OpenAI Studio
Napiwek
Interfejs wiersza polecenia dla deweloperów platformy Azure umożliwia programowe tworzenie zasobów potrzebnych do korzystania z usługi Azure OpenAI On Your Data
Przejdź do usługi Azure AI Foundry i zaloguj się przy użyciu poświadczeń, które mają dostęp do zasobu usługi Azure OpenAI.
Możesz utworzyć projekt usługi Azure AI Foundry, klikając pozycję Utwórz projekt lub klikając przycisk bezpośrednio na kafelku Koncentruje się na usłudze Azure OpenAI Service .
Wybierz pozycję Czat w obszarze Place zabaw w menu nawigacji po lewej stronie i wybierz wdrożenie modelu.
Na placu zabaw czatu wybierz pozycję Dodaj dane, a następnie pozycję Dodaj źródło danych
W wyświetlonym okienku wybierz pozycję Przekaż pliki (wersja zapoznawcza) w obszarze Wybierz źródło danych. Usługa Azure OpenAI wymaga zarówno zasobu magazynu, jak i zasobu wyszukiwania w celu uzyskania dostępu do danych i indeksowania ich.
Napiwek
- Aby uzyskać więcej informacji, zobacz następujący zasób:
- W przypadku dokumentów i zestawów danych z długim tekstem zalecamy użycie dostępnego skryptu przygotowywania danych.
Aby usługa Azure OpenAI uzyskiwała dostęp do konta magazynu, należy włączyć współużytkowanie zasobów między źródłami (CORS). Jeśli mechanizm CORS nie jest jeszcze włączony dla zasobu usługi Azure Blob Storage, wybierz pozycję Włącz mechanizm CORS.
Wybierz zasób usługi Azure AI Search i wybierz potwierdzenie, że połączenie spowoduje naliczenie użycia na twoim koncie. Następnie kliknij przycisk Dalej.
W okienku Przekazywanie plików wybierz pozycję Przeglądaj dla pliku i wybierz pliki pobrane z sekcji wymagań wstępnych lub własne dane. Następnie wybierz pozycję Przekaż pliki. Następnie kliknij przycisk Dalej.
W okienku Zarządzanie danymi możesz wybrać, czy włączyć wyszukiwanie semantyczne, czy wektorowe wyszukiwanie indeksu.
Ważne
- Wyszukiwanie semantyczne i wyszukiwanie wektorów podlegają dodatkowym cenom. Aby włączyć wyszukiwanie semantyczne lub wyszukiwanie wektorów, musisz wybrać jednostkę SKU Podstawowa lub nowsza jednostka SKU . Aby uzyskać więcej informacji, zobacz różnice w warstwie cenowej i limity usług.
- Aby poprawić jakość pobierania informacji i odpowiedzi modelu, zalecamy włączenie semantycznego wyszukiwania następujących języków źródła danych: angielski, francuski, hiszpański, portugalski, włoski, niemiecki, chiński (Zh), japoński, koreański, rosyjski i arabski.
Przejrzyj wprowadzone szczegóły, a następnie wybierz pozycję Zapisz i zamknij. Teraz możesz porozmawiać z modelem i będzie używać informacji z danych do konstruowania odpowiedzi.
Pobieranie wymaganych zmiennych
Aby pomyślnie wykonać wywołanie usługi Azure OpenAI, potrzebne są następujące zmienne. W tym przewodniku Szybki start założono, że dane zostały przekazane na konto usługi Azure Blob Storage i utworzono indeks usługi Azure AI Search. Zobacz Dodawanie danych przy użyciu rozwiązania Azure AI Foundry
Nazwa zmiennej | Wartość |
---|---|
AZURE_OPENAI_ENDPOINT |
Tę wartość można znaleźć w sekcji Klucze i punkt końcowy podczas badania zasobu usługi Azure OpenAI w witrynie Azure Portal. Alternatywnie możesz znaleźć wartość w widoku kodu platformy>Azure AI Foundry>Chat. Przykładowy punkt końcowy to: https://my-resoruce.openai.azure.com . |
AZURE_OPENAI_API_KEY |
Tę wartość można znaleźć w sekcji Klucze zarządzania>zasobami i punkt końcowy podczas badania zasobu usługi Azure OpenAI w witrynie Azure Portal. Możesz użyć wartości KEY1 lub KEY2 . Zawsze posiadanie dwóch kluczy umożliwia bezpieczne obracanie i ponowne generowanie kluczy bez powodowania zakłóceń usługi. |
AZURE_OPENAI_DEPLOYMENT_ID |
Ta wartość odpowiada nazwie niestandardowej wybranej dla wdrożenia podczas wdrażania modelu. Tę wartość można znaleźć w obszarze Wdrożenia zarządzania>zasobami w witrynie Azure Portal lub alternatywnie w obszarze Wdrożenia zarządzania>w portalu usługi Azure AI Foundry. |
AZURE_AI_SEARCH_ENDPOINT |
Tę wartość można znaleźć w sekcji Przegląd podczas badania zasobu usługi Azure AI Search w witrynie Azure Portal. |
AZURE_AI_SEARCH_API_KEY |
Tę wartość można znaleźć w sekcji Klucze ustawień>podczas badania zasobu usługi Azure AI Search w witrynie Azure Portal. Możesz użyć podstawowego klucza administratora lub pomocniczego klucza administratora. Zawsze posiadanie dwóch kluczy umożliwia bezpieczne obracanie i ponowne generowanie kluczy bez powodowania zakłóceń usługi. |
AZURE_AI_SEARCH_INDEX |
Ta wartość odpowiada nazwie utworzonego indeksu do przechowywania danych. Tę pozycję można znaleźć w sekcji Przegląd podczas badania zasobu usługi Azure AI Search w witrynie Azure Portal. |
Zmienne środowiskowe
Tworzenie i przypisywanie trwałych zmiennych środowiskowych dla klucza i punktu końcowego.
Ważne
Jeśli używasz klucza interfejsu API, zapisz go bezpiecznie w innym miejscu, na przykład w usłudze Azure Key Vault. Nie dołączaj klucza interfejsu API bezpośrednio do kodu i nigdy nie publikuj go publicznie.
Aby uzyskać więcej informacji na temat zabezpieczeń usług sztucznej inteligencji, zobacz Uwierzytelnianie żądań w usługach 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
Tworzenie środowiska języka Go
Utwórz nowy folder o nazwie openai-go dla projektu i nowy plik kodu Języka Go o nazwie sample.go. Przejdź do tego katalogu:
mkdir openai-go cd openai-go
Zainstaluj następujące pakiety języka Go:
go get github.com/Azure/azure-sdk-for-go/sdk/ai/azopenai
Włącz śledzenie zależności dla kodu.
go mod init example/azure-openai
Tworzenie aplikacji Języka Go
W katalogu projektu otwórz plik sample.go i dodaj następujący kod:
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, ) }
Ważne
W przypadku środowiska produkcyjnego użyj bezpiecznego sposobu przechowywania i uzyskiwania dostępu do poświadczeń, takich jak usługa Azure Key Vault. Aby uzyskać więcej informacji na temat zabezpieczeń poświadczeń, zobacz artykuł Zabezpieczenia usług Azure AI.
Wykonaj następujące polecenie:
go run sample.go
Aplikacja wyświetla odpowiedź, w tym odpowiedzi na zapytania i cytaty z przekazanych plików.
Wymagania wstępne
Następujące zasoby:
- Azure OpenAI
- Azure Blob Storage
- Azure AI Search
- Zasób usługi Azure OpenAI wdrożony w obsługiwanym regionie i z obsługiwanym modelem.
- Upewnij się, że masz przypisaną co najmniej rolę Współautor usług Cognitive Services dla zasobu Azure OpenAI.
- Pobierz przykładowe dane z usługi GitHub , jeśli nie masz własnych danych.
Dodawanie danych przy użyciu programu Azure OpenAI Studio
Napiwek
Interfejs wiersza polecenia dla deweloperów platformy Azure umożliwia programowe tworzenie zasobów potrzebnych do korzystania z usługi Azure OpenAI On Your Data
Przejdź do usługi Azure AI Foundry i zaloguj się przy użyciu poświadczeń, które mają dostęp do zasobu usługi Azure OpenAI.
Możesz utworzyć projekt usługi Azure AI Foundry, klikając pozycję Utwórz projekt lub klikając przycisk bezpośrednio na kafelku Koncentruje się na usłudze Azure OpenAI Service .
Wybierz pozycję Czat w obszarze Place zabaw w menu nawigacji po lewej stronie i wybierz wdrożenie modelu.
Na placu zabaw czatu wybierz pozycję Dodaj dane, a następnie pozycję Dodaj źródło danych
W wyświetlonym okienku wybierz pozycję Przekaż pliki (wersja zapoznawcza) w obszarze Wybierz źródło danych. Usługa Azure OpenAI wymaga zarówno zasobu magazynu, jak i zasobu wyszukiwania w celu uzyskania dostępu do danych i indeksowania ich.
Napiwek
- Aby uzyskać więcej informacji, zobacz następujący zasób:
- W przypadku dokumentów i zestawów danych z długim tekstem zalecamy użycie dostępnego skryptu przygotowywania danych.
Aby usługa Azure OpenAI uzyskiwała dostęp do konta magazynu, należy włączyć współużytkowanie zasobów między źródłami (CORS). Jeśli mechanizm CORS nie jest jeszcze włączony dla zasobu usługi Azure Blob Storage, wybierz pozycję Włącz mechanizm CORS.
Wybierz zasób usługi Azure AI Search i wybierz potwierdzenie, że połączenie spowoduje naliczenie użycia na twoim koncie. Następnie kliknij przycisk Dalej.
W okienku Przekazywanie plików wybierz pozycję Przeglądaj dla pliku i wybierz pliki pobrane z sekcji wymagań wstępnych lub własne dane. Następnie wybierz pozycję Przekaż pliki. Następnie kliknij przycisk Dalej.
W okienku Zarządzanie danymi możesz wybrać, czy włączyć wyszukiwanie semantyczne, czy wektorowe wyszukiwanie indeksu.
Ważne
- Wyszukiwanie semantyczne i wyszukiwanie wektorów podlegają dodatkowym cenom. Aby włączyć wyszukiwanie semantyczne lub wyszukiwanie wektorów, musisz wybrać jednostkę SKU Podstawowa lub nowsza jednostka SKU . Aby uzyskać więcej informacji, zobacz różnice w warstwie cenowej i limity usług.
- Aby poprawić jakość pobierania informacji i odpowiedzi modelu, zalecamy włączenie semantycznego wyszukiwania następujących języków źródła danych: angielski, francuski, hiszpański, portugalski, włoski, niemiecki, chiński (Zh), japoński, koreański, rosyjski i arabski.
Przejrzyj wprowadzone szczegóły, a następnie wybierz pozycję Zapisz i zamknij. Teraz możesz porozmawiać z modelem i będzie używać informacji z danych do konstruowania odpowiedzi.
Pobieranie wymaganych zmiennych
Aby pomyślnie wykonać wywołanie usługi Azure OpenAI, potrzebne są następujące zmienne. W tym przewodniku Szybki start założono, że dane zostały przekazane na konto usługi Azure Blob Storage i utworzono indeks usługi Azure AI Search. Zobacz Dodawanie danych przy użyciu rozwiązania Azure AI Foundry
Nazwa zmiennej | Wartość |
---|---|
AZURE_OPENAI_ENDPOINT |
Tę wartość można znaleźć w sekcji Klucze i punkt końcowy podczas badania zasobu usługi Azure OpenAI w witrynie Azure Portal. Alternatywnie możesz znaleźć wartość w widoku kodu platformy>Azure AI Foundry>Chat. Przykładowy punkt końcowy to: https://my-resoruce.openai.azure.com . |
AZURE_OPENAI_API_KEY |
Tę wartość można znaleźć w sekcji Klucze zarządzania>zasobami i punkt końcowy podczas badania zasobu usługi Azure OpenAI w witrynie Azure Portal. Możesz użyć wartości KEY1 lub KEY2 . Zawsze posiadanie dwóch kluczy umożliwia bezpieczne obracanie i ponowne generowanie kluczy bez powodowania zakłóceń usługi. |
AZURE_OPENAI_DEPLOYMENT_ID |
Ta wartość odpowiada nazwie niestandardowej wybranej dla wdrożenia podczas wdrażania modelu. Tę wartość można znaleźć w obszarze Wdrożenia zarządzania>zasobami w witrynie Azure Portal lub alternatywnie w obszarze Wdrożenia zarządzania>w portalu usługi Azure AI Foundry. |
AZURE_AI_SEARCH_ENDPOINT |
Tę wartość można znaleźć w sekcji Przegląd podczas badania zasobu usługi Azure AI Search w witrynie Azure Portal. |
AZURE_AI_SEARCH_API_KEY |
Tę wartość można znaleźć w sekcji Klucze ustawień>podczas badania zasobu usługi Azure AI Search w witrynie Azure Portal. Możesz użyć podstawowego klucza administratora lub pomocniczego klucza administratora. Zawsze posiadanie dwóch kluczy umożliwia bezpieczne obracanie i ponowne generowanie kluczy bez powodowania zakłóceń usługi. |
AZURE_AI_SEARCH_INDEX |
Ta wartość odpowiada nazwie utworzonego indeksu do przechowywania danych. Tę pozycję można znaleźć w sekcji Przegląd podczas badania zasobu usługi Azure AI Search w witrynie Azure Portal. |
Zmienne środowiskowe
Tworzenie i przypisywanie trwałych zmiennych środowiskowych dla klucza i punktu końcowego.
Ważne
Jeśli używasz klucza interfejsu API, zapisz go bezpiecznie w innym miejscu, na przykład w usłudze Azure Key Vault. Nie dołączaj klucza interfejsu API bezpośrednio do kodu i nigdy nie publikuj go publicznie.
Aby uzyskać więcej informacji na temat zabezpieczeń usług sztucznej inteligencji, zobacz Uwierzytelnianie żądań w usługach 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
Przykładowe polecenia cURL
Modele czatów usługi Azure OpenAI są zoptymalizowane pod kątem pracy z danymi wejściowymi sformatowanymi jako konwersacja. Zmienna messages
przekazuje tablicę słowników z różnymi rolami w konwersacji oddzielonej przez system, użytkownika, narzędzie i asystenta. Zmienna dataSources
łączy się z indeksem usługi Azure AI Search i umożliwia modelom usługi Azure OpenAI odpowiadanie przy użyciu danych.
Aby wyzwolić odpowiedź z modelu, należy kończyć się komunikatem użytkownika wskazującym, że asystent reaguje.
Napiwek
Istnieje kilka parametrów, których można użyć do zmiany odpowiedzi modelu, na przykład temperature
lub top_p
. Aby uzyskać więcej informacji, zobacz dokumentację referencyjną.
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?"
}
]
}
'
Przykładowe dane wyjściowe
{
"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
}
}
Rozmowa z modelem przy użyciu aplikacji internetowej
Aby rozpocząć rozmowę z modelem usługi Azure OpenAI, który używa Twoich danych, możesz wdrożyć aplikację internetową przy użyciu programu Azure OpenAI Studio lub przykładowego kodu udostępnianego w usłudze GitHub. Ta aplikacja jest wdrażana przy użyciu usługi Azure App Service i udostępnia interfejs użytkownika do wysyłania zapytań. Ta aplikacja może być używana z modelami usługi Azure OpenAI korzystającymi z danych lub modeli, które nie korzystają z danych. Zapoznaj się z plikiem readme w repozytorium, aby uzyskać instrukcje dotyczące wymagań, konfiguracji i wdrażania. Opcjonalnie możesz dostosować logikę frontonu i zaplecza aplikacji internetowej, wprowadzając zmiany w kodzie źródłowym.
Czyszczenie zasobów
Jeśli chcesz wyczyścić i usunąć zasób usługi Azure OpenAI lub Azure AI Search, możesz usunąć zasób lub grupę zasobów. Usunięcie grupy zasobów powoduje również usunięcie wszelkich innych skojarzonych z nią zasobów.