Szybki start: rozpoczynanie pracy z usługą GPT-35-Turbo i GPT-4 za pomocą usługi Azure OpenAI Service
Skorzystaj z tego artykułu, aby rozpocząć korzystanie z usługi Azure OpenAI.
Wymagania wstępne
- Subskrypcja platformy Azure — utwórz bezpłatnie.
- Zasób usługi Azure OpenAI z wdrożonym modelem
gpt-4o
lub modelamigpt-4o-mini
. Zalecamy używanie standardowych lub globalnych typów wdrożeń modelu standardowego na potrzeby początkowej eksploracji. Aby uzyskać więcej informacji na temat modeli wdrażania, zobacz przewodnik po modelach wdrażania).
Przejdź do usługi Azure OpenAI Studio
Przejdź do usługi Azure OpenAI Studio pod adresem https://oai.azure.com/ i zaloguj się przy użyciu poświadczeń, które mają dostęp do zasobu usługi Azure OpenAI. Podczas lub po przepływie pracy logowania wybierz odpowiedni katalog, subskrypcję platformy Azure i zasób usługi Azure OpenAI.
Na stronie docelowej azure OpenAI Studio wybierz pozycję Chat playground (Plac zabaw dla czatu).
Plac zabaw
Zacznij eksplorować możliwości platformy OpenAI przy użyciu podejścia bez kodu za pośrednictwem placu zabaw azure OpenAI Studio Chat. Na tej stronie można szybko iterować i eksperymentować z możliwościami.
Ustawienia
Możesz użyć listy rozwijanej *Monituj przykłady , aby wybrać kilka wstępnie załadowanych przykładów komunikatów systemowych, aby rozpocząć pracę.
Komunikaty systemowe zapewniają instrukcje dotyczące sposobu działania modelu i dowolnego kontekstu, do którego powinien się odwoływać podczas generowania odpowiedzi. Możesz opisać osobowość asystenta, określić na jakie pytania powinien lub nie powinien odpowiadać i określić, w jaki sposób ma formatować odpowiedzi.
W dowolnym momencie podczas korzystania z placu zabaw czatu możesz wybrać pozycję Wyświetl kod , aby wyświetlić przykłady kodu Python, curl i json wstępnie wypełnione na podstawie bieżącej sesji czatu i wybranych ustawień. Następnie możesz użyć tego kodu i napisać aplikację, aby wykonać to samo zadanie, które obecnie wykonujesz z placem zabaw.
Sesja rozmowy
Wybranie przycisku Enter lub wybranie ikony strzałki w prawo powoduje wysłanie wprowadzonego tekstu do interfejsu API uzupełniania czatu, a wyniki zostaną zwrócone z powrotem do pola tekstowego.
Wybierz przycisk Wyczyść czat, aby usunąć bieżącą historię konwersacji.
Ustawienia klucza
Nazwa/nazwisko | Opis |
---|---|
Wdrożenia | Nazwa wdrożenia skojarzona z określonym modelem. |
Dodawanie danych | |
Parametry | Parametry niestandardowe, które zmieniają odpowiedzi modelu. Podczas rozpoczynania pracy zalecamy użycie wartości domyślnych dla większości parametrów |
Temperatura | Kontroluje losowość. Obniżenie temperatury oznacza, że model generuje bardziej powtarzające się i deterministyczne odpowiedzi. Zwiększenie temperatury powoduje zwiększenie liczby nieoczekiwanych lub kreatywnych odpowiedzi. Spróbuj dostosować temperaturę lub górną wartość P, ale nie obie. |
Maksymalna odpowiedź (tokeny) | Ustaw limit liczby tokenów na odpowiedź modelu. Interfejs API w najnowszych modelach obsługuje maksymalnie 128 000 tokenów udostępnianych między monitem (w tym komunikatem systemowym, przykładami, historią komunikatów i zapytaniem użytkownika) i odpowiedzią modelu. Jeden token ma mniej więcej cztery znaki dla typowego tekstu w języku angielskim. |
Góra p | Podobnie jak w przypadku temperatury, ta metoda kontroluje losowość, ale używa innej metody. Obniżenie górnej litery P zawęża wybór tokenu modelu do porównań tokenów. Zwiększenie górnej liczby punktów umożliwia modelowi wybór spośród tokenów z wysokim i niskim prawdopodobieństwem. Spróbuj dostosować temperaturę lub górną wartość P, ale nie obie. |
Zatrzymywanie sekwencji | Sekwencja zatrzymania sprawia, że model kończy odpowiedź w żądanym punkcie. Odpowiedź modelu kończy się przed określoną sekwencją, więc nie będzie zawierać tekstu sekwencji zatrzymania. W przypadku biblioteki GPT-35-Turbo użycie <|im_end|> zapewnia, że odpowiedź modelu nie generuje monitu użytkownika. Można uwzględnić aż cztery sekwencje zatrzymania. |
Wyświetlanie kodu
Po poeksperymentowaniu na czacie z modelem wybierz <przycisk /> Wyświetl kod . Spowoduje to odtworzenie kodu za całą konwersacją do tej pory:
Opis struktury monitów
Jeśli sprawdzisz przykład z widoku kodu, zauważysz, że konwersacja jest podzielona na trzy odrębne role system
, , user
. assistant
Za każdym razem, gdy wysyłasz do modelu całą historię konwersacji aż do tego momentu, jest niechęć. W przypadku korzystania z interfejsu API uzupełniania czatów model nie ma prawdziwej pamięci tego, co zostało wysłane do niego w przeszłości, dzięki czemu możesz podać historię konwersacji dla kontekstu, aby umożliwić modelowi poprawne reagowanie.
Instrukcje dotyczące uzupełniania czatów zawierają szczegółowe wprowadzenie do nowej struktury monitów i efektywnego korzystania z modeli uzupełniania czató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.
Czyszczenie zasobów
Po zakończeniu testowania placu zabaw czatu, jeśli chcesz wyczyścić i usunąć zasób usługi Azure OpenAI, 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.
Następne kroki
- Dowiedz się więcej o sposobie pracy z nowym
gpt-35-turbo
modelem za pomocą przewodnika Z instrukcjami GPT-35-Turbo &GPT-4. - Aby uzyskać więcej przykładów, zapoznaj się z repozytorium GitHub przykładów usługi Azure OpenAI
Pakiet kodu źródłowego | (NuGet) | Przykłady| pobierania szablonu czatu dla przedsiębiorstw generacji rozszerzonej (RAG) |
Wymagania wstępne
- Subskrypcja platformy Azure — utwórz bezpłatnie
- Zestaw .NET 7 SDK
- Zasób usługi Azure OpenAI z wdrożonym modelem
gpt-35-turbo
lubgpt-4
. Aby uzyskać więcej informacji na temat modeli wdrażania, zobacz przewodnik po modelach wdrażania).
Konfiguruj
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
Pobieranie klucza i punktu końcowego
Aby pomyślnie wykonać wywołanie usługi Azure OpenAI, potrzebujesz punktu końcowego i klucza.
Nazwa zmiennej | Wartość |
---|---|
ENDPOINT |
Punkt końcowy usługi można znaleźć w sekcji Klucze i punkt końcowy podczas badania zasobu w witrynie Azure Portal. Możesz też znaleźć punkt końcowy za pośrednictwem strony Wdrożenia w usłudze Azure AI Studio. Przykładowy punkt końcowy to: https://docs-test-001.openai.azure.com/ . |
API-KEY |
Tę wartość można znaleźć w sekcji Klucze i punkt końcowy podczas badania zasobu z poziomu witryny Azure Portal. Możesz użyć wartości KEY1 lub KEY2 . |
Przejdź do zasobu w witrynie Azure Portal. Sekcję Klucze i punkt końcowy można znaleźć w sekcji Zarządzanie zasobami. Skopiuj punkt końcowy i klucz dostępu, ponieważ będzie potrzebny zarówno do uwierzytelniania wywołań interfejsu API. 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.
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_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE"
setx AZURE_OPENAI_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE"
Tworzenie przykładowej aplikacji
W katalogu projektu otwórz plik program.cs i zastąp ciąg następującym kodem:
Bez przesyłania strumieniowego odpowiedzi
using Azure;
using Azure.AI.OpenAI;
using static System.Environment;
string endpoint = GetEnvironmentVariable("AZURE_OPENAI_ENDPOINT");
string key = GetEnvironmentVariable("AZURE_OPENAI_API_KEY");
AzureOpenAIClient azureClient = new(
new Uri(endpoint),
new AzureKeyCredential(key));
// This must match the custom deployment name you chose for your model
ChatClient chatClient = azureClient.GetChatClient("gpt-35-turbo");
ChatCompletion completion = chatClient.CompleteChat(
[
new SystemChatMessage("You are a helpful assistant that talks like a pirate."),
new UserChatMessage("Does Azure OpenAI support customer managed keys?"),
new AssistantChatMessage("Yes, customer managed keys are supported by Azure OpenAI"),
new UserChatMessage("Do other Azure AI services support this too?")
]);
Console.WriteLine($"{completion.Role}: {completion.Content[0].Text}");
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
Assistant : Yes, many other Azure AI services also support customer managed keys, including Azure Cognitive Services, Azure Machine Learning, and Azure Databricks. By using customer managed keys, you can retain complete control over your encryption keys and provide an additional layer of security for your AI assets.
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 OpenAI.Chat;
using static System.Environment;
string endpoint = GetEnvironmentVariable("AZURE_OPENAI_ENDPOINT");
string key = GetEnvironmentVariable("AZURE_OPENAI_API_KEY");
AzureOpenAIClient azureClient = new(
new Uri(endpoint),
new AzureKeyCredential(key));
// This must match the custom deployment name you chose for your model
ChatClient chatClient = azureClient.GetChatClient("gpt-35-turbo");
var chatUpdates = chatClient.CompleteChatStreamingAsync(
[
new SystemChatMessage("You are a helpful assistant that talks like a pirate."),
new UserChatMessage("Does Azure OpenAI support customer managed keys?"),
new AssistantChatMessage("Yes, customer managed keys are supported by Azure OpenAI"),
new UserChatMessage("Do other Azure AI services support this too?")
]);
await foreach(var chatUpdate in chatUpdates)
{
if (chatUpdate.Role.HasValue)
{
Console.Write($"{chatUpdate.Role} : ");
}
foreach(var contentPart in chatUpdate.ContentUpdate)
{
Console.Write(contentPart.Text);
}
}
Czyszczenie zasobów
Jeśli chcesz wyczyścić i usunąć zasób usługi Azure OpenAI, możesz usunąć zasób. Przed usunięciem zasobu należy najpierw usunąć wszystkie wdrożone modele.
Następne kroki
- Aby uzyskać więcej przykładów, zapoznaj się z repozytorium GitHub przykładów usługi Azure OpenAI
Przykłady pakietu kodu źródłowego | (Go)|
Wymagania wstępne
- Subskrypcja platformy Azure — utwórz bezpłatnie
- Przejdź do wersji 1.21.0 lub nowszej zainstalowanej lokalnie.
- Zasób usługi Azure OpenAI z wdrożonym modelem
gpt-35-turbo
. Aby uzyskać więcej informacji na temat modeli wdrażania, zobacz przewodnik po modelach wdrażania).
Konfiguruj
Pobieranie klucza i punktu końcowego
Aby pomyślnie wykonać wywołanie usługi Azure OpenAI, potrzebujesz punktu końcowego i klucza.
Nazwa zmiennej | Wartość |
---|---|
ENDPOINT |
Punkt końcowy usługi można znaleźć w sekcji Klucze i punkt końcowy podczas badania zasobu w witrynie Azure Portal. Możesz też znaleźć punkt końcowy za pośrednictwem strony Wdrożenia w usłudze Azure AI Studio. Przykładowy punkt końcowy to: https://docs-test-001.openai.azure.com/ . |
API-KEY |
Tę wartość można znaleźć w sekcji Klucze i punkt końcowy podczas badania zasobu z poziomu witryny Azure Portal. Możesz użyć wartości KEY1 lub KEY2 . |
Przejdź do zasobu w witrynie Azure Portal. Sekcję Klucze i punkt końcowy można znaleźć w sekcji Zarządzanie zasobami. Skopiuj punkt końcowy i klucz dostępu, ponieważ będzie potrzebny zarówno do uwierzytelniania wywołań interfejsu API. 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.
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_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE"
setx AZURE_OPENAI_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE"
Tworzenie przykładowej aplikacji
Utwórz nowy plik o nazwie chat_completions.go. Skopiuj następujący kod do pliku chat_completions.go .
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("YOUR_MODEL_DEPLOYMENT_NAME")
maxTokens:= int32(400)
// Ex: "https://<your-azure-openai-host>.openai.azure.com"
azureOpenAIEndpoint := os.Getenv("AZURE_OPENAI_ENDPOINT")
if azureOpenAIKey == "" || modelDeploymentID == "" || azureOpenAIEndpoint == "" {
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.Printf("ERROR: %s", err)
return
}
// This is a conversation in progress.
// NOTE: all messages, regardless of role, count against token usage for this API.
messages := []azopenai.ChatRequestMessageClassification{
// You set the tone and rules of the conversation with a prompt as the system role.
&azopenai.ChatRequestSystemMessage{Content: to.Ptr("You are a helpful assistant.")},
// The user asks a question
&azopenai.ChatRequestUserMessage{Content: azopenai.NewChatRequestUserMessageContent("Does Azure OpenAI support customer managed keys?")},
// The reply would come back from the model. You'd add it to the conversation so we can maintain context.
&azopenai.ChatRequestAssistantMessage{Content: to.Ptr("Yes, customer managed keys are supported by Azure OpenAI")},
// The user answers the question based on the latest reply.
&azopenai.ChatRequestUserMessage{Content: azopenai.NewChatRequestUserMessageContent("What other Azure Services support customer managed keys?")},
// from here you'd keep iterating, sending responses back from ChatGPT
}
gotReply := false
resp, err := client.GetChatCompletions(context.TODO(), azopenai.ChatCompletionsOptions{
// This is a conversation in progress.
// NOTE: all messages count against token usage for this API.
Messages: messages,
DeploymentName: &modelDeploymentID,
MaxTokens: &maxTokens,
}, nil)
if err != nil {
// TODO: Update the following line with your application specific error handling logic
log.Printf("ERROR: %s", err)
return
}
for _, choice := range resp.Choices {
gotReply = true
if choice.ContentFilterResults != nil {
fmt.Fprintf(os.Stderr, "Content filter results\n")
if choice.ContentFilterResults.Error != nil {
fmt.Fprintf(os.Stderr, " Error:%v\n", choice.ContentFilterResults.Error)
}
fmt.Fprintf(os.Stderr, " Hate: sev: %v, filtered: %v\n", *choice.ContentFilterResults.Hate.Severity, *choice.ContentFilterResults.Hate.Filtered)
fmt.Fprintf(os.Stderr, " SelfHarm: sev: %v, filtered: %v\n", *choice.ContentFilterResults.SelfHarm.Severity, *choice.ContentFilterResults.SelfHarm.Filtered)
fmt.Fprintf(os.Stderr, " Sexual: sev: %v, filtered: %v\n", *choice.ContentFilterResults.Sexual.Severity, *choice.ContentFilterResults.Sexual.Filtered)
fmt.Fprintf(os.Stderr, " Violence: sev: %v, filtered: %v\n", *choice.ContentFilterResults.Violence.Severity, *choice.ContentFilterResults.Violence.Filtered)
}
if choice.Message != nil && choice.Message.Content != nil {
fmt.Fprintf(os.Stderr, "Content[%d]: %s\n", *choice.Index, *choice.Message.Content)
}
if choice.FinishReason != nil {
// this choice's conversation is complete.
fmt.Fprintf(os.Stderr, "Finish reason[%d]: %s\n", *choice.Index, *choice.FinishReason)
}
}
if gotReply {
fmt.Fprintf(os.Stderr, "Received chat completions reply\n")
}
}
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.
Teraz otwórz wiersz polecenia i uruchom polecenie:
go mod init chat_completions.go
Następny przebieg:
go mod tidy
go run chat_completions.go
Wyjście
Content filter results
Hate: sev: safe, filtered: false
SelfHarm: sev: safe, filtered: false
Sexual: sev: safe, filtered: false
Violence: sev: safe, filtered: false
Content[0]: As of my last update in early 2023, in Azure, several AI services support the use of customer-managed keys (CMKs) through Azure Key Vault. This allows customers to have control over the encryption keys used to secure their data at rest. The services that support this feature typically fall under Azure's range of cognitive services and might include:
1. Azure Cognitive Search: It supports using customer-managed keys to encrypt the index data.
2. Azure Form Recognizer: For data at rest, you can use customer-managed keys for added security.
3. Azure Text Analytics: CMKs can be used for encrypting your data at rest.
4. Azure Blob Storage: While not exclusively an AI service, it's often used in conjunction with AI services to store data, and it supports customer-managed keys for encrypting blob data.
Note that the support for CMKs can vary by service and sometimes even by the specific feature within the service. Additionally, the landscape of cloud services is fast evolving, and new features, including security capabilities, are frequently added. Therefore, it's recommended to check the latest Azure documentation or contact Azure support for the most current information about CMK support for any specific Azure AI service.
Finish reason[0]: stop
Received chat completions reply
Czyszczenie zasobów
Jeśli chcesz wyczyścić i usunąć zasób usługi Azure OpenAI, możesz usunąć zasób. Przed usunięciem zasobu należy najpierw usunąć wszystkie wdrożone modele.
Następne kroki
Aby uzyskać więcej przykładów, zapoznaj się z repozytorium GitHub przykładów usługi Azure OpenAI
Artefakt kodu | źródłowego (Maven) | Przykłady | pobierania rozszerzonej generacji (RAG) szablon czatu | dla przedsiębiorstw IntelliJ IDEA
Wymagania wstępne
- Subskrypcja platformy Azure — utwórz bezpłatnie
- Bieżąca wersja zestawu Java Development Kit (JDK)
- Narzędzie kompilacji narzędzia Gradle lub inny menedżer zależności.
- Zasób usługi Azure OpenAI z wdrożonym modelem
gpt-35-turbo
lubgpt-4
. Aby uzyskać więcej informacji na temat modeli wdrażania, zobacz przewodnik po modelach wdrażania).
Konfiguruj
Pobieranie klucza i punktu końcowego
Aby pomyślnie wykonać wywołanie usługi Azure OpenAI, potrzebujesz punktu końcowego i klucza.
Nazwa zmiennej | Wartość |
---|---|
ENDPOINT |
Punkt końcowy usługi można znaleźć w sekcji Klucze i punkt końcowy podczas badania zasobu w witrynie Azure Portal. Możesz też znaleźć punkt końcowy za pośrednictwem strony Wdrożenia w usłudze Azure AI Studio. Przykładowy punkt końcowy to: https://docs-test-001.openai.azure.com/ . |
API-KEY |
Tę wartość można znaleźć w sekcji Klucze i punkt końcowy podczas badania zasobu z poziomu witryny Azure Portal. Możesz użyć wartości KEY1 lub KEY2 . |
Przejdź do zasobu w witrynie Azure Portal. Sekcję Klucze i punkt końcowy można znaleźć w sekcji Zarządzanie zasobami. Skopiuj punkt końcowy i klucz dostępu, ponieważ będzie potrzebny zarówno do uwierzytelniania wywołań interfejsu API. 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.
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_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE"
setx AZURE_OPENAI_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE"
Tworzenie nowej aplikacji Java
Utwórz nowy projekt Gradle.
W oknie konsoli (na przykład cmd, PowerShell lub Bash) utwórz nowy katalog dla aplikacji i przejdź do niego.
mkdir myapp && cd myapp
gradle init
Uruchom polecenie z katalogu roboczego. To polecenie spowoduje utworzenie podstawowych plików kompilacji dla narzędzia Gradle, w tym pliku build.gradle.kts, który jest używany w czasie wykonywania do tworzenia i konfigurowania aplikacji.
gradle init --type basic
Po wyświetleniu monitu wybierz pozycję Język DSL, a następnie Kotlin.
Instalowanie zestawu Java SDK
W tym przewodniku Szybki start jest używany menedżer zależności narzędzia Gradle. Bibliotekę klienta i informacje dotyczące innych menedżerów zależności można znaleźć w repozytorium centralnym programu Maven.
Znajdź plik build.gradle.kts i otwórz go przy użyciu preferowanego środowiska IDE lub edytora tekstów. Następnie skopiuj poniższą konfigurację kompilacji. Ta konfiguracja definiuje projekt jako aplikację Java, której punktem wejścia jest klasa OpenAIQuickstart. Importuje bibliotekę usługi Azure AI Vision.
plugins {
java
application
}
application {
mainClass.set("OpenAIQuickstart")
}
repositories {
mavenCentral()
}
dependencies {
implementation(group = "com.azure", name = "azure-ai-openai", version = "1.0.0-beta.10")
implementation("org.slf4j:slf4j-simple:1.7.9")
}
Tworzenie przykładowej aplikacji
Utwórz plik Java.
W katalogu roboczym uruchom następujące polecenie, aby utworzyć folder źródłowy projektu:
mkdir -p src/main/java
Przejdź do nowego folderu i utwórz plik o nazwie OpenAIQuickstart.java.
Otwórz OpenAIQuickstart.java w preferowanym edytorze lub środowisku IDE i wklej następujący kod.
package com.azure.ai.openai.usage; import com.azure.ai.openai.OpenAIClient; import com.azure.ai.openai.OpenAIClientBuilder; import com.azure.ai.openai.models.ChatChoice; import com.azure.ai.openai.models.ChatCompletions; import com.azure.ai.openai.models.ChatCompletionsOptions; import com.azure.ai.openai.models.ChatRequestAssistantMessage; import com.azure.ai.openai.models.ChatRequestMessage; import com.azure.ai.openai.models.ChatRequestSystemMessage; import com.azure.ai.openai.models.ChatRequestUserMessage; import com.azure.ai.openai.models.ChatResponseMessage; import com.azure.ai.openai.models.CompletionsUsage; import com.azure.core.credential.AzureKeyCredential; import com.azure.core.util.Configuration; import java.util.ArrayList; import java.util.List; public class OpenAIQuickstart { public static void main(String[] args) { String azureOpenaiKey = Configuration.getGlobalConfiguration().get("AZURE_OPENAI_API_KEY"); String endpoint = Configuration.getGlobalConfiguration().get("AZURE_OPENAI_ENDPOINT"); String deploymentOrModelId = "{azure-open-ai-deployment-model-id}"; OpenAIClient client = new OpenAIClientBuilder() .endpoint(endpoint) .credential(new AzureKeyCredential(azureOpenaiKey)) .buildClient(); List<ChatRequestMessage> chatMessages = new ArrayList<>(); chatMessages.add(new ChatRequestSystemMessage("You are a helpful assistant.")); chatMessages.add(new ChatRequestUserMessage("Does Azure OpenAI support customer managed keys?")); chatMessages.add(new ChatRequestAssistantMessage("Yes, customer managed keys are supported by Azure OpenAI?")); chatMessages.add(new ChatRequestUserMessage("Do other Azure AI services support this too?")); ChatCompletions chatCompletions = client.getChatCompletions(deploymentOrModelId, new ChatCompletionsOptions(chatMessages)); System.out.printf("Model ID=%s is created at %s.%n", chatCompletions.getId(), chatCompletions.getCreatedAt()); for (ChatChoice choice : chatCompletions.getChoices()) { ChatResponseMessage message = choice.getMessage(); System.out.printf("Index: %d, Chat Role: %s.%n", choice.getIndex(), message.getRole()); System.out.println("Message:"); System.out.println(message.getContent()); } System.out.println(); CompletionsUsage usage = chatCompletions.getUsage(); System.out.printf("Usage: number of prompt token is %d, " + "number of completion token is %d, and number of total tokens in request and response is %d.%n", usage.getPromptTokens(), usage.getCompletionTokens(), usage.getTotalTokens()); } }
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 skompiluj aplikację za pomocą polecenia:
gradle build
Następnie uruchom go za pomocą
gradle run
polecenia :gradle run
Wyjście
Model ID=chatcmpl-7JYnyE4zpd5gaIfTRH7hNpeVsvAw4 is created at 1684896378.
Index: 0, Chat Role: assistant.
Message:
Yes, most of the Azure AI services support customer managed keys. However, there may be some exceptions, so it is best to check the documentation of each specific service to confirm.
Usage: number of prompt token is 59, number of completion token is 36, and number of total tokens in request and response is 95.
Czyszczenie zasobów
Jeśli chcesz wyczyścić i usunąć zasób usługi Azure OpenAI, możesz usunąć zasób. Przed usunięciem zasobu należy najpierw usunąć wszystkie wdrożone modele.
Następne kroki
- Aby uzyskać więcej przykładów, zapoznaj się z repozytorium GitHub przykładów usługi Azure OpenAI
Przykład artefaktów kodu | źródłowego (Maven)Sample |
Wymagania wstępne
- Subskrypcja platformy Azure — utwórz bezpłatnie
- Bieżąca wersja zestawu Java Development Kit (JDK)
- Narzędzie interfejsu wiersza polecenia platformy Spring Boot
- Zasób usługi Azure OpenAI z wdrożonym modelem
gpt-35-turbo
. Aby uzyskać więcej informacji na temat modeli wdrażania, zobacz przewodnik po modelach wdrażania). W tym przykładzie przyjęto założenie, że nazwa wdrożenia jest zgodna z nazwą modelugpt-35-turbo
Konfiguruj
Pobieranie klucza i punktu końcowego
Aby pomyślnie wykonać wywołanie usługi Azure OpenAI, potrzebujesz punktu końcowego i klucza.
Nazwa zmiennej | Wartość |
---|---|
ENDPOINT |
Punkt końcowy usługi można znaleźć w sekcji Klucze i punkt końcowy podczas badania zasobu w witrynie Azure Portal. Możesz też znaleźć punkt końcowy za pośrednictwem strony Wdrożenia w usłudze Azure AI Studio. Przykładowy punkt końcowy to: https://docs-test-001.openai.azure.com/ . |
API-KEY |
Tę wartość można znaleźć w sekcji Klucze i punkt końcowy podczas badania zasobu z poziomu witryny Azure Portal. Możesz użyć wartości KEY1 lub KEY2 . |
Przejdź do zasobu w witrynie Azure Portal. Sekcję Klucze i punkt końcowy można znaleźć w sekcji Zarządzanie zasobami. Skopiuj punkt końcowy i klucz dostępu, ponieważ będzie potrzebny zarówno do uwierzytelniania wywołań interfejsu API. 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.
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_API_KEY="REPLACE_WITH_YOUR_KEY_VALUE_HERE"
export SPRING_AI_AZURE_OPENAI_ENDPOINT="REPLACE_WITH_YOUR_ENDPOINT_HERE"
export SPRING_AI_AZURE_OPENAI_MODEL="REPLACE_WITH_YOUR_MODEL_NAME_HERE"
Tworzenie nowej aplikacji Spring
Utwórz nowy projekt Spring.
W oknie powłoki Bash utwórz nowy katalog dla aplikacji i przejdź do niego.
mkdir ai-chat-demo && cd ai-chat-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-chat-demo -n AIChat --force --build maven -x
Wygenerowane pliki i foldery przypominają następującą strukturę:
ai-chat-demo/
|-- pom.xml
|-- mvn
|-- mvn.cmd
|-- HELP.md
|-- src/
|-- main/
| |-- resources/
| | |-- application.properties
| |-- java/
| |-- com/
| |-- example/
| |-- aichatdemo/
| |-- AiChatApplication.java
|-- test/
|-- java/
|-- com/
|-- example/
|-- aichatdemo/
|-- AiChatApplicationTests.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ącą 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-chat-demo</artifactId> <version>0.0.1-SNAPSHOT</version> <name>AIChat</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>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/aichatdemo otwórz AiChatApplication.java w preferowanym edytorze lub środowisku IDE i wklej następujący kod:
package com.example.aichatdemo; import java.util.ArrayList; import java.util.List; import org.springframework.ai.client.AiClient; import org.springframework.ai.prompt.Prompt; import org.springframework.ai.prompt.messages.ChatMessage; import org.springframework.ai.prompt.messages.Message; import org.springframework.ai.prompt.messages.MessageType; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.CommandLineRunner; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class AiChatApplication implements CommandLineRunner { private static final String ROLE_INFO_KEY = "role"; @Autowired private AiClient aiClient; public static void main(String[] args) { SpringApplication.run(AiChatApplication.class, args); } @Override public void run(String... args) throws Exception { System.out.println(String.format("Sending chat prompts to AI service. One moment please...\r\n")); final List<Message> msgs = new ArrayList<>(); msgs.add(new ChatMessage(MessageType.SYSTEM, "You are a helpful assistant")); msgs.add(new ChatMessage(MessageType.USER, "Does Azure OpenAI support customer managed keys?")); msgs.add(new ChatMessage(MessageType.ASSISTANT, "Yes, customer managed keys are supported by Azure OpenAI?")); msgs.add(new ChatMessage(MessageType.USER, "Do other Azure AI services support this too?")); final var resps = aiClient.generate(new Prompt(msgs)); 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())); }); } }
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-07T13:31:10.884-06:00 INFO 6248 --- [ main] c.example.aichatdemo.AiChatApplication : No active profile set, falling back to 1 default profile: "default"
2023-11-07T13:31:11.595-06:00 INFO 6248 --- [ main] c.example.aichatdemo.AiChatApplication : Started AiChatApplication in 0.994 seconds (process running for 1.28)
Sending chat prompts to AI service. One moment please...
Prompt created 1 generated response(s).
Generated respose from "assistant": Yes, other Azure AI services also support customer managed keys. Azure AI Services, Azure Machine Learning, and other AI services in Azure provide options for customers to manage and control their encryption keys. This allows customers to have greater control over their data and security.
Czyszczenie zasobów
Jeśli chcesz wyczyścić i usunąć zasób usługi Azure OpenAI, możesz usunąć zasób. Przed usunięciem zasobu należy najpierw usunąć wszystkie wdrożone modele.
Następne kroki
Aby uzyskać więcej przykładów, zapoznaj się z repozytorium GitHub przykładów usługi Azure OpenAI
Przykłady pakietu kodu źródłowego | (npm)Samples |
Uwaga
Ten artykuł został zaktualizowany w celu użycia najnowszego pakietu npm openAI, który teraz w pełni obsługuje usługę Azure OpenAI. Jeśli szukasz przykładów kodu dla starszego zestawu SDK języka JavaScript usługi Azure OpenAI, są one obecnie nadal dostępne w tym repozytorium.
Wymagania wstępne
- Subskrypcja platformy Azure — utwórz bezpłatnie
- Wersje LTS Node.js
- 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 z wdrożonym modelem
gpt-35-turbo
lubgpt-4
serii. Aby uzyskać więcej informacji na temat modeli wdrażania, zobacz przewodnik po modelach wdrażania).
Konfiguruj
Pobieranie klucza i punktu końcowego
Aby pomyślnie wykonać wywołanie usługi Azure OpenAI, potrzebujesz punktu końcowego i klucza.
Nazwa zmiennej | Wartość |
---|---|
ENDPOINT |
Punkt końcowy usługi można znaleźć w sekcji Klucze i punkt końcowy podczas badania zasobu w witrynie Azure Portal. Możesz też znaleźć punkt końcowy za pośrednictwem strony Wdrożenia w usłudze Azure AI Studio. Przykładowy punkt końcowy to: https://docs-test-001.openai.azure.com/ . |
API-KEY |
Tę wartość można znaleźć w sekcji Klucze i punkt końcowy podczas badania zasobu z poziomu witryny Azure Portal. Możesz użyć wartości KEY1 lub KEY2 . |
Przejdź do zasobu w witrynie Azure Portal. Sekcję Klucze i punkt końcowy można znaleźć w sekcji Zarządzanie zasobami. Skopiuj punkt końcowy i klucz dostępu, ponieważ będzie potrzebny zarówno do uwierzytelniania wywołań interfejsu API. 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.
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_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE"
setx AZURE_OPENAI_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE"
Tworzenie aplikacji Node
W oknie konsoli (na przykład cmd, PowerShell lub Bash) utwórz nowy katalog dla aplikacji i przejdź do niego.
Instalowanie biblioteki klienta
Zainstaluj wymagane pakiety dla języka JavaScript za pomocą narzędzia npm z poziomu kontekstu nowego katalogu:
npm install openai @azure/identity
Plik package.json aplikacji zostanie zaktualizowany o zależności.
Tworzenie przykładowej aplikacji
Otwórz wiersz polecenia, w którym chcesz utworzyć nowy projekt, i utwórz nowy plik o nazwie ChatCompletion.js. Skopiuj następujący kod do pliku ChatCompletion.js.
const { AzureOpenAI } = require("openai");
const {
DefaultAzureCredential,
getBearerTokenProvider
} = require("@azure/identity");
// You will need to set these environment variables or edit the following values
const endpoint = process.env["AZURE_OPENAI_ENDPOINT"] || "<endpoint>";
const apiVersion = "2024-05-01-preview";
const deployment = "gpt-4o"; //This must match your deployment name.
// keyless authentication
const credential = new DefaultAzureCredential();
const scope = "https://cognitiveservices.azure.com/.default";
const azureADTokenProvider = getBearerTokenProvider(credential, scope);
async function main() {
const client = new AzureOpenAI({ endpoint, apiKey, azureADTokenProvider, deployment });
const result = await client.chat.completions.create({
messages: [
{ role: "system", content: "You are a helpful assistant." },
{ role: "user", content: "Does Azure OpenAI support customer managed keys?" },
{ role: "assistant", content: "Yes, customer managed keys are supported by Azure OpenAI?" },
{ role: "user", content: "Do other Azure AI services support this too?" },
],
model: "",
});
for (const choice of result.choices) {
console.log(choice.message);
}
}
main().catch((err) => {
console.error("The sample encountered an error:", err);
});
module.exports = { main };
Uruchom skrypt za pomocą następującego polecenia:
node.exe ChatCompletion.js
Wyjście
== Chat Completions Sample ==
{
content: 'Yes, several other Azure AI services also support customer managed keys for enhanced security and control over encryption keys.',
role: 'assistant'
}
Uwaga
Jeśli wystąpi błąd: Wystąpił błąd: OpenAIError: apiKey
argumenty i azureADTokenProvider
wzajemnie się wykluczają; jednocześnie można przekazać tylko jeden argument. Może być konieczne usunięcie istniejącej zmiennej środowiskowej dla klucza interfejsu API z systemu. Mimo że przykładowy kod Microsoft Entra ID nie odwołuje się jawnie do zmiennej środowiskowej klucza interfejsu API, jeśli jest obecny w systemie wykonującym ten przykład, ten błąd będzie nadal generowany.
Czyszczenie zasobów
Jeśli chcesz wyczyścić i usunąć zasób usługi Azure OpenAI, możesz usunąć zasób. Przed usunięciem zasobu należy najpierw usunąć wszystkie wdrożone modele.
Następne kroki
- Omówienie usługi Azure OpenAI
- Aby uzyskać więcej przykładów, zapoznaj się z repozytorium GitHub przykładów usługi Azure OpenAI
Przykłady pakietu kodu źródłowego | (npm)Samples |
Uwaga
Ten artykuł został zaktualizowany w celu użycia najnowszego pakietu npm openAI, który teraz w pełni obsługuje usługę Azure OpenAI. Jeśli szukasz przykładów kodu dla starszego zestawu SDK języka JavaScript usługi Azure OpenAI, są one obecnie nadal dostępne w tym repozytorium.
Wymagania wstępne
- Subskrypcja platformy Azure — utwórz bezpłatnie
- Wersje LTS Node.js
- TypeScript
- 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 z wdrożonym modelem
gpt-35-turbo
lubgpt-4
serii. Aby uzyskać więcej informacji na temat modeli wdrażania, zobacz przewodnik po modelach wdrażania).
Konfiguruj
Pobieranie klucza i punktu końcowego
Aby pomyślnie wykonać wywołanie usługi Azure OpenAI, potrzebujesz punktu końcowego i klucza.
Nazwa zmiennej | Wartość |
---|---|
ENDPOINT |
Punkt końcowy usługi można znaleźć w sekcji Klucze i punkt końcowy podczas badania zasobu w witrynie Azure Portal. Możesz też znaleźć punkt końcowy za pośrednictwem strony Wdrożenia w usłudze Azure AI Studio. Przykładowy punkt końcowy to: https://docs-test-001.openai.azure.com/ . |
API-KEY |
Tę wartość można znaleźć w sekcji Klucze i punkt końcowy podczas badania zasobu z poziomu witryny Azure Portal. Możesz użyć wartości KEY1 lub KEY2 . |
Przejdź do zasobu w witrynie Azure Portal. Sekcję Klucze i punkt końcowy można znaleźć w sekcji Zarządzanie zasobami. Skopiuj punkt końcowy i klucz dostępu, ponieważ będzie potrzebny zarówno do uwierzytelniania wywołań interfejsu API. 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.
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_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE"
setx AZURE_OPENAI_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE"
Tworzenie aplikacji Node
W oknie konsoli (na przykład cmd, PowerShell lub Bash) utwórz nowy katalog dla aplikacji i przejdź do niego.
Instalowanie biblioteki klienta
Zainstaluj wymagane pakiety dla języka JavaScript za pomocą narzędzia npm z poziomu kontekstu nowego katalogu:
npm install openai @azure/identity
Plik package.json aplikacji zostanie zaktualizowany o zależności.
Tworzenie przykładowej aplikacji
Otwórz wiersz polecenia, w którym chcesz utworzyć nowy projekt, i utwórz nowy plik o nazwie ChatCompletion.ts. Skopiuj następujący kod do pliku ChatCompletion.ts.
import { AzureOpenAI } from "openai";
import {
DefaultAzureCredential,
getBearerTokenProvider
} from "@azure/identity";
import type {
ChatCompletion,
ChatCompletionCreateParamsNonStreaming,
} from "openai/resources/index";
// You will need to set these environment variables or edit the following values
const endpoint = process.env["AZURE_OPENAI_ENDPOINT"] || "<endpoint>";
// Required Azure OpenAI deployment name and API version
const apiVersion = "2024-08-01-preview";
const deploymentName = "gpt-4o-mini"; //This must match your deployment name.
// keyless authentication
const credential = new DefaultAzureCredential();
const scope = "https://cognitiveservices.azure.com/.default";
const azureADTokenProvider = getBearerTokenProvider(credential, scope);
function getClient(): AzureOpenAI {
return new AzureOpenAI({
endpoint,
azureADTokenProvider,
apiVersion,
deployment: deploymentName,
});
}
function createMessages(): ChatCompletionCreateParamsNonStreaming {
return {
messages: [
{ role: "system", content: "You are a helpful assistant." },
{
role: "user",
content: "Does Azure OpenAI support customer managed keys?",
},
{
role: "assistant",
content: "Yes, customer managed keys are supported by Azure OpenAI?",
},
{ role: "user", content: "Do other Azure AI services support this too?" },
],
model: "",
};
}
async function printChoices(completion: ChatCompletion): Promise<void> {
for (const choice of completion.choices) {
console.log(choice.message);
}
}
export async function main() {
const client = getClient();
const messages = createMessages();
const result = await client.chat.completions.create(messages);
await printChoices(result);
}
main().catch((err) => {
console.error("The sample encountered an error:", err);
});
Skompiluj skrypt za pomocą następującego polecenia:
tsc
Uruchom skrypt za pomocą następującego polecenia:
node.exe ChatCompletion.js
Wyjście
== Chat Completions Sample ==
{
content: 'Yes, several other Azure AI services also support customer managed keys for enhanced security and control over encryption keys.',
role: 'assistant'
}
Uwaga
Jeśli wystąpi błąd: Wystąpił błąd: OpenAIError: apiKey
argumenty i azureADTokenProvider
wzajemnie się wykluczają; jednocześnie można przekazać tylko jeden argument. Może być konieczne usunięcie istniejącej zmiennej środowiskowej dla klucza interfejsu API z systemu. Mimo że przykładowy kod Microsoft Entra ID nie odwołuje się jawnie do zmiennej środowiskowej klucza interfejsu API, jeśli jest obecny w systemie wykonującym ten przykład, ten błąd będzie nadal generowany.
Czyszczenie zasobów
Jeśli chcesz wyczyścić i usunąć zasób usługi Azure OpenAI, możesz usunąć zasób. Przed usunięciem zasobu należy najpierw usunąć wszystkie wdrożone modele.
Następne kroki
- Omówienie usługi Azure OpenAI
- Aby uzyskać więcej przykładów, zapoznaj się z repozytorium GitHub przykładów usługi Azure OpenAI
Pakiet kodu | źródłowego biblioteki (PyPi) | Pobieranie szablonu czatu dla przedsiębiorstw generacji rozszerzonej (RAG) |
Wymagania wstępne
- Subskrypcja platformy Azure — utwórz bezpłatnie
- Środowisko Python w wersji 3.8 lub nowszej.
- Następujące biblioteki języka Python: system operacyjny.
- Zasób usługi Azure OpenAI z wdrożonym modelem
gpt-35-turbo
lubgpt-4
. Aby uzyskać więcej informacji na temat modeli wdrażania, zobacz przewodnik po modelach wdrażania).
Konfiguruj
Zainstaluj bibliotekę klienta języka Python openAI za pomocą następujących elementów:
pip install openai
Uwaga
Ta biblioteka jest utrzymywana przez interfejs OpenAI. Zapoznaj się z historią wydania, aby śledzić najnowsze aktualizacje biblioteki.
Pobieranie klucza i punktu końcowego
Aby pomyślnie wykonać wywołanie usługi Azure OpenAI, potrzebujesz punktu końcowego i klucza.
Nazwa zmiennej | Wartość |
---|---|
ENDPOINT |
Punkt końcowy usługi można znaleźć w sekcji Klucze i punkt końcowy podczas badania zasobu w witrynie Azure Portal. Możesz też znaleźć punkt końcowy za pośrednictwem strony Wdrożenia w usłudze Azure AI Studio. Przykładowy punkt końcowy to: https://docs-test-001.openai.azure.com/ . |
API-KEY |
Tę wartość można znaleźć w sekcji Klucze i punkt końcowy podczas badania zasobu z poziomu witryny Azure Portal. Możesz użyć wartości KEY1 lub KEY2 . |
Przejdź do zasobu w witrynie Azure Portal. Sekcję Klucze i punkt końcowy można znaleźć w sekcji Zarządzanie zasobami. Skopiuj punkt końcowy i klucz dostępu, ponieważ będzie potrzebny zarówno do uwierzytelniania wywołań interfejsu API. 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.
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_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE"
setx AZURE_OPENAI_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE"
Tworzenie nowej aplikacji w języku Python
Utwórz nowy plik w języku Python o nazwie quickstart.py. Następnie otwórz go w preferowanym edytorze lub środowisku IDE.
Zastąp zawartość quickstart.py następującym kodem.
Należy ustawić zmienną model
na nazwę wdrożenia wybraną podczas wdrażania modeli GPT-3.5-Turbo lub GPT-4. Wprowadzenie nazwy modelu spowoduje błąd, chyba że wybrano nazwę wdrożenia identyczną z bazową nazwą modelu.
import os
from openai import AzureOpenAI
client = AzureOpenAI(
azure_endpoint = os.getenv("AZURE_OPENAI_ENDPOINT"),
api_key=os.getenv("AZURE_OPENAI_API_KEY"),
api_version="2024-02-01"
)
response = client.chat.completions.create(
model="gpt-35-turbo", # model = "deployment_name".
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Does Azure OpenAI support customer managed keys?"},
{"role": "assistant", "content": "Yes, customer managed keys are supported by Azure OpenAI."},
{"role": "user", "content": "Do other Azure AI services support this too?"}
]
)
print(response.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.
Uruchom aplikację za
python
pomocą polecenia w pliku Szybki start:python quickstart.py
Wyjście
{
"choices": [
{
"finish_reason": "stop",
"index": 0,
"message": {
"content": "Yes, most of the Azure AI services support customer managed keys. However, not all services support it. You can check the documentation of each service to confirm if customer managed keys are supported.",
"role": "assistant"
}
}
],
"created": 1679001781,
"id": "chatcmpl-6upLpNYYOx2AhoOYxl9UgJvF4aPpR",
"model": "gpt-3.5-turbo-0301",
"object": "chat.completion",
"usage": {
"completion_tokens": 39,
"prompt_tokens": 58,
"total_tokens": 97
}
}
Yes, most of the Azure AI services support customer managed keys. However, not all services support it. You can check the documentation of each service to confirm if customer managed keys are supported.
Opis struktury komunikatów
Modele GPT-35-Turbo i GPT-4 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 i asystenta. Komunikat systemowy może służyć do ugruntowania modelu, uwzględniając kontekst lub instrukcje dotyczące sposobu reagowania modelu.
Przewodnik z instrukcjami GPT-35-Turbo &GPT-4 zawiera szczegółowe wprowadzenie do opcji komunikowania się z tymi nowymi modelami.
Czyszczenie zasobów
Jeśli chcesz wyczyścić i usunąć zasób usługi Azure OpenAI, możesz usunąć zasób. Przed usunięciem zasobu należy najpierw usunąć wszystkie wdrożone modele.
Następne kroki
- Dowiedz się więcej o tym, jak pracować z modelami GPT-35-Turbo i GPT-4, z naszym przewodnikiem z instrukcjami.
- Aby uzyskać więcej przykładów, zapoznaj się z repozytorium GitHub przykładów usługi Azure OpenAI
Specyfikacje interfejsu API REST |
Wymagania wstępne
- Subskrypcja platformy Azure — utwórz bezpłatnie.
- Zasób usługi Azure OpenAI z wdrożonym modelem
gpt-35-turbo
lubgpt-4
. Aby uzyskać więcej informacji na temat modeli wdrażania, zobacz przewodnik po modelach wdrażania).
Konfiguruj
Pobieranie klucza i punktu końcowego
Aby pomyślnie wykonać wywołanie usługi Azure OpenAI, potrzebujesz punktu końcowego i klucza.
Nazwa zmiennej | Wartość |
---|---|
ENDPOINT |
Punkt końcowy usługi można znaleźć w sekcji Klucze i punkt końcowy podczas badania zasobu w witrynie Azure Portal. Możesz też znaleźć punkt końcowy za pośrednictwem strony Wdrożenia w usłudze Azure AI Studio. Przykładowy punkt końcowy to: https://docs-test-001.openai.azure.com/ . |
API-KEY |
Tę wartość można znaleźć w sekcji Klucze i punkt końcowy podczas badania zasobu z poziomu witryny Azure Portal. Możesz użyć wartości KEY1 lub KEY2 . |
Przejdź do zasobu w witrynie Azure Portal. Sekcję Klucze i punkt końcowy można znaleźć w sekcji Zarządzanie zasobami. Skopiuj punkt końcowy i klucz dostępu, ponieważ będzie potrzebny zarówno do uwierzytelniania wywołań interfejsu API. 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.
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_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE"
setx AZURE_OPENAI_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE"
Interfejs API REST
W powłoce bash uruchom następujące polecenie. Należy zastąpić gpt-35-turbo
nazwą wdrożenia wybraną podczas wdrażania modeli GPT-35-Turbo lub GPT-4. Wprowadzenie nazwy modelu spowoduje błąd, chyba że wybrano nazwę wdrożenia identyczną z bazową nazwą modelu.
curl $AZURE_OPENAI_ENDPOINT/openai/deployments/gpt-35-turbo/chat/completions?api-version=2024-02-01 \
-H "Content-Type: application/json" \
-H "api-key: $AZURE_OPENAI_API_KEY" \
-d '{"messages":[{"role": "system", "content": "You are a helpful assistant."},{"role": "user", "content": "Does Azure OpenAI support customer managed keys?"},{"role": "assistant", "content": "Yes, customer managed keys are supported by Azure OpenAI."},{"role": "user", "content": "Do other Azure AI services support this too?"}]}'
Format pierwszego wiersza polecenia z przykładowym punktem końcowym będzie wyświetlany w następujący sposób curl https://docs-test-001.openai.azure.com/openai/deployments/{YOUR-DEPLOYMENT_NAME_HERE}/chat/completions?api-version=2024-02-01 \
w przypadku wystąpienia podwójnego sprawdzenia błędu, aby upewnić się, że nie masz podwojenia /
wartości w rozdzieleniu między punktem końcowym a /openai/deployments
.
Jeśli chcesz uruchomić to polecenie w normalnym wierszu polecenia systemu Windows, musisz zmienić tekst, aby usunąć \
podziały wierszy i.
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
{"id":"chatcmpl-6v7mkQj980V1yBec6ETrKPRqFjNw9",
"object":"chat.completion","created":1679072642,
"model":"gpt-35-turbo",
"usage":{"prompt_tokens":58,
"completion_tokens":68,
"total_tokens":126},
"choices":[{"message":{"role":"assistant",
"content":"Yes, other Azure AI services also support customer managed keys. Azure AI services offer multiple options for customers to manage keys, such as using Azure Key Vault, customer-managed keys in Azure Key Vault or customer-managed keys through Azure Storage service. This helps customers ensure that their data is secure and access to their services is controlled."},"finish_reason":"stop","index":0}]}
Formatowanie danych wyjściowych dostosowane w celu ułatwienia odczytywania rzeczywistych danych wyjściowych jest pojedynczym blokiem tekstu bez podziałów wierszy.
Opis struktury komunikatów
Modele GPT-35-Turbo i GPT-4 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 i asystenta. Komunikat systemowy może służyć do ugruntowania modelu, uwzględniając kontekst lub instrukcje dotyczące sposobu reagowania modelu.
Przewodnik z instrukcjami GPT-35-Turbo &GPT-4 zawiera szczegółowe wprowadzenie do opcji komunikowania się z tymi nowymi modelami.
Czyszczenie zasobów
Jeśli chcesz wyczyścić i usunąć zasób usługi Azure OpenAI, możesz usunąć zasób. Przed usunięciem zasobu należy najpierw usunąć wszystkie wdrożone modele.
Następne kroki
- Dowiedz się więcej o tym, jak pracować z modelami GPT-35-Turbo i GPT-4, z naszym przewodnikiem z instrukcjami.
- Aby uzyskać więcej przykładów, zapoznaj się z repozytorium GitHub przykładów usługi Azure OpenAI
Wymagania wstępne
- Subskrypcja platformy Azure — utwórz bezpłatnie
- Możesz użyć najnowszej wersji, programu PowerShell 7 lub programu Windows PowerShell 5.1.
- Zasób usługi Azure OpenAI z wdrożonym modelem. Aby uzyskać więcej informacji na temat modeli wdrażania, zobacz przewodnik po modelach wdrażania).
- Zasób usługi Azure OpenAI z wdrożonym modelem
gpt-35-turbo
lubgpt-4
. Aby uzyskać więcej informacji na temat modeli wdrażania, zobacz przewodnik po modelach wdrażania).
Pobieranie klucza i punktu końcowego
Aby pomyślnie nawiązać połączenie z usługą Azure OpenAI, potrzebujesz punktu końcowego i klucza.
Nazwa zmiennej | Wartość |
---|---|
ENDPOINT |
Punkt końcowy usługi można znaleźć w sekcji Klucze i punkt końcowy podczas badania zasobu w witrynie Azure Portal. Możesz też znaleźć punkt końcowy za pośrednictwem strony Wdrożenia w usłudze Azure AI Studio. Przykładowy punkt końcowy to: https://docs-test-001.openai.azure.com/ . |
API-KEY |
Tę wartość można znaleźć w sekcji Klucze i punkt końcowy podczas badania zasobu z poziomu witryny Azure Portal. Możesz użyć wartości KEY1 lub KEY2 . |
Przejdź do zasobu w witrynie Azure Portal. Punkt końcowy i klucze można znaleźć w sekcji Zarządzanie zasobami. Skopiuj punkt końcowy i klucz dostępu, ponieważ będzie potrzebny zarówno do uwierzytelniania wywołań interfejsu API. 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.
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.
$Env:AZURE_OPENAI_API_KEY = 'YOUR_KEY_VALUE'
$Env:AZURE_OPENAI_ENDPOINT = 'YOUR_ENDPOINT'
Tworzenie nowego skryptu programu PowerShell
Utwórz nowy plik programu PowerShell o nazwie quickstart.ps1. Następnie otwórz go w preferowanym edytorze lub środowisku IDE.
Zastąp zawartość pliku quickstart.ps1 następującym kodem. Należy ustawić zmienną
engine
na nazwę wdrożenia wybraną podczas wdrażania modeli GPT-35-Turbo lub GPT-4. Wprowadzenie nazwy modelu spowoduje błąd, chyba że wybrano nazwę wdrożenia identyczną z bazową nazwą modelu.# 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 = '2024-02-01' # 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. } # Completion text $messages = @() $messages += @{ role = 'system' content = 'You are a helpful assistant.' } $messages += @{ role = 'user' content = 'Does Azure OpenAI support customer managed keys?' } $messages += @{ role = 'assistant' content = 'Yes, customer managed keys are supported by Azure OpenAI.' } $messages += @{ role = 'user' content = 'Do other Azure AI services support this too?' } # Header for authentication $headers = [ordered]@{ 'api-key' = $openai.api_key } # Adjust these values to fine-tune completions $body = [ordered]@{ messages = $messages } | ConvertTo-Json # Send a request to generate an answer $url = "$($openai.api_base)/openai/deployments/$($openai.name)/chat/completions?api-version=$($openai.api_version)" $response = Invoke-RestMethod -Uri $url -Headers $headers -Body $body -Method Post -ContentType 'application/json' return $response
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.
Uruchom skrypt przy użyciu programu PowerShell:
./quickstart.ps1
Wyjście
# the output of the script will be a .NET object containing the response
id : chatcmpl-7sdJJRC6fDNGnfHMdfHXvPkYFbaVc
object : chat.completion
created : 1693255177
model : gpt-35-turbo
choices : {@{index=0; finish_reason=stop; message=}}
usage : @{completion_tokens=67; prompt_tokens=55; total_tokens=122}
# convert the output to JSON
./quickstart.ps1 | ConvertTo-Json -Depth 3
# or to view the text returned, select the specific object property
$reponse = ./quickstart.ps1
$response.choices.message.content
Opis struktury komunikatów
Modele GPT-35-Turbo i GPT-4 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 i asystenta. Komunikat systemowy może służyć do ugruntowania modelu, uwzględniając kontekst lub instrukcje dotyczące sposobu reagowania modelu.
Przewodnik z instrukcjami GPT-35-Turbo &GPT-4 zawiera szczegółowe wprowadzenie do opcji komunikowania się z tymi nowymi modelami.
Czyszczenie zasobów
Jeśli chcesz wyczyścić i usunąć zasób usługi Azure OpenAI, możesz usunąć zasób. Przed usunięciem zasobu należy najpierw usunąć wszystkie wdrożone modele.
Następne kroki
- Dowiedz się więcej o tym, jak pracować z modelami GPT-35-Turbo i GPT-4, z naszym przewodnikiem z instrukcjami.
- Aby uzyskać więcej przykładów, zapoznaj się z repozytorium GitHub przykładów usługi Azure OpenAI