Краткое руководство. Начало работы с GPT-35-Turbo и GPT-4 со службой Azure OpenAI
Используйте эту статью, чтобы приступить к работе с Azure OpenAI.
Необходимые компоненты
- Подписка Azure — создайте бесплатную учетную запись.
- Ресурс службы Azure OpenAI с
gpt-4o
развернутыми моделями.gpt-4o-mini
Для первоначального изучения рекомендуется использовать стандартные или глобальные типы развертывания модели уровня "Стандартный". Дополнительные сведения о моделях развертывания Azure, см. в руководстве по развертыванию ресурсов.
Перейдите в Azure OpenAI Studio
Перейдите в Azure OpenAI Studio https://oai.azure.com/ и войдите с учетными данными, имеющими доступ к ресурсу Azure OpenAI. Во время или после рабочего процесса входа выберите соответствующий каталог, подписку Azure и ресурс Azure OpenAI.
На целевой странице Azure OpenAI Studio выберите игровую площадку чата.
Тестовая площадка
Начните изучать возможности OpenAI с использованием подхода без кода с помощью игровой площадки Чата Azure OpenAI Studio. На этой странице можно быстро итерировать и экспериментировать с возможностями.
Настройка
Чтобы приступить к работе, можно использовать раскрывающийся список *Запрос примеров системных сообщений.
Системные сообщения дают инструкции модели о том, как он должен вести себя и какой-либо контекст, который он должен ссылаться при создании ответа. Вы можете описать личность помощника, указать ему, что он должен и не должен отвечать, и сообщить о том, как форматировать ответы.
В любое время с помощью игровой площадки чата вы можете выбрать код представления, чтобы просмотреть примеры кода Python, curl и json, предварительно заполненные на основе текущего сеанса чата и выбора параметров. Затем вы можете взять этот код и написать приложение для выполнения той же задачи, которую вы выполняете в настоящее время с игровой площадкой.
Сеанс чата
Нажатие кнопки ВВОД или выбор значка стрелки вправо отправляет введенный текст в API завершения чата, а результаты возвращаются обратно в текстовое поле.
Нажмите кнопку "Очистить чат", чтобы удалить текущий журнал бесед.
Параметры ключа
Имя | Description |
---|---|
Развертывания | Имя развертывания, связанное с определенной моделью. |
Добавление данных | |
Параметры | Пользовательские параметры, изменяющие ответы модели. При запуске рекомендуется использовать значения по умолчанию для большинства параметров. |
Температура | Управляет случайностью. Снижение температуры означает, что модель создает более повторяющиеся и детерминированные ответы. Увеличение температуры приводит к более неожиданным или творческим откликам. Попробуйте настроить температуру или верхний P, но не оба. |
Максимальный ответ (токены) | Задайте ограничение на количество маркеров для ответа модели. API последних моделей поддерживает не более 128 000 маркеров, общих между запросом (включая системное сообщение, примеры, журнал сообщений и запрос пользователя) и ответ модели. Один маркер составляет примерно четыре символа для типичного английского текста. |
Верхний p | Аналогично температуре, это управляет случайностью, но использует другой метод. Понижение верхнего уровня P сужает выбор маркера модели к аналогичным маркерам. Увеличение верхнего уровня P позволяет модели выбирать из маркеров как с высокой, так и низкой вероятностью. Попробуйте настроить температуру или верхний P, но не оба. |
Стоп-последовательности | Последовательность остановки завершает ответ модели в нужной точке. Ответ модели заканчивается до указанной последовательности, поэтому он не будет содержать текст последовательности остановки. Для GPT-35-Turbo используется <|im_end|> обеспечение того, что ответ модели не создает последующий запрос пользователя. Можно включить до четырех стоп-последовательностей. |
Просмотреть код
После эксперимента с чатом с моделью нажмите кнопку </> Просмотреть код . Это даст вам воспроизведение кода за всю беседу до сих пор:
Общие сведения о структуре запроса
Если вы изучите пример из кода представления, вы заметите, что беседа разбита на три отдельные роли system
, . user
assistant
Каждый раз, когда вы будете отправлять модель всей истории бесед до этой точки, обижается. При использовании API завершения чата модель не имеет истинной памяти о том, что вы отправили в прошлом, чтобы предоставить журнал бесед для контекста, чтобы модель правильно реагировала.
Руководство по завершению чата содержит подробное введение в новую структуру запросов и эффективное использование моделей завершения чата.
Развертывание модели
Когда вы удовлетворены интерфейсом в Студии Azure OpenAI, вы можете развернуть веб-приложение непосредственно из Студии, нажав кнопку "Развернуть в ".
Это дает возможность либо развернуть в автономном веб-приложении, либо copilot в Copilot Studio (предварительная версия), если вы используете собственные данные в модели.
Например, если вы решили развернуть веб-приложение:
При первом развертывании веб-приложения следует выбрать команду "Создать новое веб-приложение". Выберите имя приложения, которое станет частью URL-адреса приложения. Например, https://<appname>.azurewebsites.net
.
Выберите подписку, группу ресурсов, расположение и тарифный план для опубликованного приложения. Чтобы обновить существующее приложение, выберите "Опубликовать" в существующем веб-приложении и выберите имя предыдущего приложения в раскрывающемся меню.
Если вы решили развернуть веб-приложение, ознакомьтесь с важными рекомендациями по его использованию.
Очистка ресурсов
После завершения тестирования на площадке чата, если вы хотите очистить и удалить ресурс Azure OpenAI, можно удалить ресурс или группу ресурсов. При удалении группы ресурсов также удаляются все связанные с ней ресурсы.
Следующие шаги
- Узнайте больше о том, как работать с новой
gpt-35-turbo
моделью с помощью руководства по GPT-35-Turbo и GPT-4. - Дополнительные примеры см. в репозитории GitHub в Azure OpenAI Samples
Шаблон корпоративного чата для получения примеров пакета исходного кода | (NuGet) | Samples| Retrieval Дополненного поколения (RAG) |
Необходимые компоненты
- подписка Azure — создайте бесплатную учетную запись.
- Пакет SDK для .NET 7
- Ресурс службы Azure OpenAI с
gpt-35-turbo
развернутыми моделями илиgpt-4
моделями. Дополнительные сведения о моделях развертывания Azure, см. в руководстве по развертыванию ресурсов.
Настройка
Создание приложения .NET Core
В окне консоли (cmd, PowerShell или Bash) выполните команду dotnet new
, чтобы создать консольное приложение с именем azure-openai-quickstart
. Эта команда создает простой проект Hello World с одним исходным файлом C#: Program.cs.
dotnet new console -n azure-openai-quickstart
Измените каталог на созданную папку приложения. Чтобы создать приложение, выполните следующую команду:
dotnet build
Выходные данные сборки не должны содержать предупреждений или ошибок.
...
Build succeeded.
0 Warning(s)
0 Error(s)
...
Установите клиентская библиотека OpenAI .NET с помощью следующих компонентов:
dotnet add package Azure.AI.OpenAI --prerelease
Получение ключа и конечной точки
Чтобы успешно выполнить вызов к Azure OpenAI, вам потребуется конечная точка и ключ.
Имя переменной | Значение |
---|---|
ENDPOINT |
Конечная точка службы можно найти в разделе "Ключи" и "Конечная точка" при изучении ресурса из портал Azure. Кроме того, можно найти конечную точку на странице "Развертывания " в Azure AI Studio. Пример конечной точки: https://docs-test-001.openai.azure.com/ . |
API-KEY |
Это значение можно найти в разделе Ключи и конечная точка при просмотре ресурса на портале Azure. Вы можете использовать KEY1 или KEY2 . |
Перейдите к своему ресурсу на портале Azure. Раздел "Ключи и конечная точка " можно найти в разделе "Управление ресурсами". Скопируйте конечную точку и ключ доступа, так как они потребуются для проверки подлинности вызовов API. Вы можете использовать KEY1
или KEY2
. Наличие двух ключей позволяет безопасно менять и повторно создавать ключи без прерывания работы службы.
Переменные среды
Создайте и назначьте переменные постоянной среды для ключа и конечной точки.
Внимание
Если вы используете ключ API, сохраните его в другом месте, например в Azure Key Vault. Не включайте ключ API непосредственно в код и никогда не публикуйте его.
Дополнительные сведения о безопасности служб ИИ см. в статье "Проверка подлинности запросов к службам ИИ Azure".
setx AZURE_OPENAI_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE"
setx AZURE_OPENAI_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE"
Создание примера приложения
В каталоге проекта откройте файл program.cs и замените содержимое следующим кодом:
Без потоковой передачи ответов
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}");
Внимание
Для рабочей среды используйте безопасный способ хранения и доступа к учетным данным, например Azure Key Vault. Дополнительные сведения о безопасности учетных данных см. в статье о безопасности служб искусственного интеллекта Azure.
dotnet run program.cs
Выходные данные
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.
Ожидается, пока модель не создаст весь ответ перед печатью результатов. Кроме того, если вы хотите асинхронно передавать ответ и распечатать результаты, можно заменить содержимое program.cs кодом в следующем примере.
Асинхронная передача с потоковой передачей
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);
}
}
Очистка ресурсов
Если вы хотите очистить и удалить ресурс Azure OpenAI, его можно удалить. Перед удалением ресурса необходимо сначала удалить все развернутые модели.
Следующие шаги
- Дополнительные примеры см. в репозитории GitHub в Azure OpenAI Samples
Примеры пакета исходного кода | (Go)|
Необходимые компоненты
- подписка Azure — создайте бесплатную учетную запись.
- Go 1.21.0 или более поздней версии, установленной локально.
- Ресурс службы Azure OpenAI с развернутой моделью
gpt-35-turbo
. Дополнительные сведения о моделях развертывания Azure, см. в руководстве по развертыванию ресурсов.
Настройка
Получение ключа и конечной точки
Чтобы успешно выполнить вызов к Azure OpenAI, вам потребуется конечная точка и ключ.
Имя переменной | Значение |
---|---|
ENDPOINT |
Конечная точка службы можно найти в разделе "Ключи" и "Конечная точка" при изучении ресурса из портал Azure. Кроме того, можно найти конечную точку на странице "Развертывания " в Azure AI Studio. Пример конечной точки: https://docs-test-001.openai.azure.com/ . |
API-KEY |
Это значение можно найти в разделе Ключи и конечная точка при просмотре ресурса на портале Azure. Вы можете использовать KEY1 или KEY2 . |
Перейдите к своему ресурсу на портале Azure. Раздел "Ключи и конечная точка " можно найти в разделе "Управление ресурсами". Скопируйте конечную точку и ключ доступа, так как они потребуются для проверки подлинности вызовов API. Вы можете использовать KEY1
или KEY2
. Наличие двух ключей позволяет безопасно менять и повторно создавать ключи без прерывания работы службы.
Переменные среды
Создайте и назначьте переменные постоянной среды для ключа и конечной точки.
Внимание
Если вы используете ключ API, сохраните его в другом месте, например в Azure Key Vault. Не включайте ключ API непосредственно в код и никогда не публикуйте его.
Дополнительные сведения о безопасности служб ИИ см. в статье "Проверка подлинности запросов к службам ИИ Azure".
setx AZURE_OPENAI_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE"
setx AZURE_OPENAI_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE"
Создание примера приложения
Создайте файл с именем chat_completions.go. Скопируйте следующий код в файл 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")
}
}
Внимание
Для рабочей среды используйте безопасный способ хранения и доступа к учетным данным, например Azure Key Vault. Дополнительные сведения о безопасности учетных данных см. в статье о безопасности служб искусственного интеллекта Azure.
Теперь откройте командную строку и выполните следующую команду:
go mod init chat_completions.go
Следующий запуск:
go mod tidy
go run chat_completions.go
Выходные данные
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
Очистка ресурсов
Если вы хотите очистить и удалить ресурс Azure OpenAI, его можно удалить. Перед удалением ресурса необходимо сначала удалить все развернутые модели.
Следующие шаги
Дополнительные примеры см. в репозитории GitHub в Azure OpenAI Samples
Артефакт исходного кода | (Maven) | Samples | Retrieval Дополненное поколение (RAG) корпоративный шаблон | чата IntelliJ IDEA
Необходимые компоненты
- подписка Azure — создайте бесплатную учетную запись.
- Текущая версия пакета средств разработки Java (JDK).
- Средство сборки Gradle или другой диспетчер зависимостей.
- Ресурс службы Azure OpenAI с
gpt-35-turbo
развернутыми моделями илиgpt-4
моделями. Дополнительные сведения о моделях развертывания Azure, см. в руководстве по развертыванию ресурсов.
Настройка
Получение ключа и конечной точки
Чтобы успешно выполнить вызов к Azure OpenAI, вам потребуется конечная точка и ключ.
Имя переменной | Значение |
---|---|
ENDPOINT |
Конечная точка службы можно найти в разделе "Ключи" и "Конечная точка" при изучении ресурса из портал Azure. Кроме того, можно найти конечную точку на странице "Развертывания " в Azure AI Studio. Пример конечной точки: https://docs-test-001.openai.azure.com/ . |
API-KEY |
Это значение можно найти в разделе Ключи и конечная точка при просмотре ресурса на портале Azure. Вы можете использовать KEY1 или KEY2 . |
Перейдите к своему ресурсу на портале Azure. Раздел "Ключи и конечная точка " можно найти в разделе "Управление ресурсами". Скопируйте конечную точку и ключ доступа, так как они потребуются для проверки подлинности вызовов API. Вы можете использовать KEY1
или KEY2
. Наличие двух ключей позволяет безопасно менять и повторно создавать ключи без прерывания работы службы.
Переменные среды
Создайте и назначьте переменные постоянной среды для ключа и конечной точки.
Внимание
Если вы используете ключ API, сохраните его в другом месте, например в Azure Key Vault. Не включайте ключ API непосредственно в код и никогда не публикуйте его.
Дополнительные сведения о безопасности служб ИИ см. в статье "Проверка подлинности запросов к службам ИИ Azure".
setx AZURE_OPENAI_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE"
setx AZURE_OPENAI_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE"
Создание нового приложения Java
Создайте проект Gradle.
В окне консоли (например, cmd, PowerShell или Bash) создайте новый каталог для приложения и перейдите в него.
mkdir myapp && cd myapp
Выполните команду gradle init
из рабочей папки. Эта команда создает необходимые файлы сборки для Gradle, включая build.gradle.kts, который используется во время выполнения для создания и настройки приложения.
gradle init --type basic
Когда появится запрос на выбор предметно-ориентированного языка, выберите Kotlin.
Установка пакета SDK для Java
В этом кратком руководстве используется диспетчер зависимостей Gradle. Клиентскую библиотеку и информацию для других диспетчеров зависимостей можно найти в центральном репозитории Maven.
Найдите файл build.gradle.kts и откройте его в предпочитаемой интегрированной среде разработки или текстовом редакторе. Затем скопируйте и вставьте в файл приведенную ниже конфигурацию сборки. Эта конфигурация определяет проект как приложение Java, точка входа которого — класс OpenAIQuickstart. Она импортирует библиотеку Визуального распознавания ИИ Azure.
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")
}
Создание примера приложения
Создайте файл Java.
В рабочей папке выполните следующую команду, чтобы создать исходную папку проекта.
mkdir -p src/main/java
Перейдите к новой папке и создайте файл с именем OpenAIQuickstart.java.
Откройте OpenAIQuickstart.java в предпочитаемом редакторе или интегрированной среде разработки и вставьте следующий код.
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()); } }
Внимание
Для рабочей среды используйте безопасный способ хранения и доступа к учетным данным, например Azure Key Vault. Дополнительные сведения о безопасности учетных данных см. в статье о безопасности служб искусственного интеллекта Azure.
Вернитесь в корневую папку проекта и выполните сборку приложения:
gradle build
Затем запустите его с помощью команды
gradle run
:gradle run
Выходные данные
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.
Очистка ресурсов
Если вы хотите очистить и удалить ресурс Azure OpenAI, его можно удалить. Перед удалением ресурса необходимо сначала удалить все развернутые модели.
Следующие шаги
- Дополнительные примеры см. в репозитории GitHub в Azure OpenAI Samples
Пример артефактов исходного кода | (Maven) |
Необходимые компоненты
- подписка Azure — создайте бесплатную учетную запись.
- Текущая версия пакета средств разработки Java (JDK).
- Средство командной строки Spring Boot
- Ресурс службы Azure OpenAI с развернутой моделью
gpt-35-turbo
. Дополнительные сведения о моделях развертывания Azure, см. в руководстве по развертыванию ресурсов. В этом примере предполагается, что имя развертывания соответствует имени модели.gpt-35-turbo
Настройка
Получение ключа и конечной точки
Чтобы успешно выполнить вызов к Azure OpenAI, вам потребуется конечная точка и ключ.
Имя переменной | Значение |
---|---|
ENDPOINT |
Конечная точка службы можно найти в разделе "Ключи" и "Конечная точка" при изучении ресурса из портал Azure. Кроме того, можно найти конечную точку на странице "Развертывания " в Azure AI Studio. Пример конечной точки: https://docs-test-001.openai.azure.com/ . |
API-KEY |
Это значение можно найти в разделе Ключи и конечная точка при просмотре ресурса на портале Azure. Вы можете использовать KEY1 или KEY2 . |
Перейдите к своему ресурсу на портале Azure. Раздел "Ключи и конечная точка " можно найти в разделе "Управление ресурсами". Скопируйте конечную точку и ключ доступа, так как они потребуются для проверки подлинности вызовов API. Вы можете использовать KEY1
или KEY2
. Наличие двух ключей позволяет безопасно менять и повторно создавать ключи без прерывания работы службы.
Переменные среды
Создайте и назначьте переменные постоянной среды для ключа и конечной точки.
Внимание
Если вы используете ключ API, сохраните его в другом месте, например в Azure Key Vault. Не включайте ключ API непосредственно в код и никогда не публикуйте его.
Дополнительные сведения о безопасности служб ИИ см. в статье "Проверка подлинности запросов к службам ИИ Azure".
Примечание.
Spring AI по умолчанию использует имя gpt-35-turbo
модели. Необходимо указать SPRING_AI_AZURE_OPENAI_MODEL
значение только в том случае, если вы развернули модель с другим именем.
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"
Создание нового приложения Spring
Создайте проект Spring.
В окне Bash создайте новый каталог для приложения и перейдите к нему.
mkdir ai-chat-demo && cd ai-chat-demo
Выполните команду spring init
из рабочей папки. Эта команда создает стандартную структуру каталогов для проекта Spring, включая исходный файл класса Java и файл pom.xml , используемый для управления проектами на основе Maven.
spring init -a ai-chat-demo -n AIChat --force --build maven -x
Созданные файлы и папки похожи на следующую структуру:
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
Изменение приложения Spring
Отредактируйте файл pom.xml.
В корневом каталоге проекта откройте файл pom.xml в предпочтительном редакторе или интегрированной среде разработки и перезаписать файл следующим содержимым:
<?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>
В папке src/main/java/com/example/aichatdemo откройте AiChatApplication.java в предпочтительном редакторе или интегрированной среде разработки и вставьте следующий код:
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())); }); } }
Внимание
Для рабочей среды используйте безопасный способ хранения и доступа к учетным данным, например Azure Key Vault. Дополнительные сведения о безопасности учетных данных см. в статье о безопасности служб искусственного интеллекта Azure.
Вернитесь к корневой папке проекта и запустите приложение с помощью следующей команды:
./mvnw spring-boot:run
Выходные данные
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: 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.
Очистка ресурсов
Если вы хотите очистить и удалить ресурс Azure OpenAI, его можно удалить. Перед удалением ресурса необходимо сначала удалить все развернутые модели.
Следующие шаги
Дополнительные примеры см. в репозитории GitHub в Azure OpenAI Samples
Примеры пакета исходного кода | (npm) |
Примечание.
Эта статья была обновлена, чтобы использовать последний пакет OpenAI npm, который теперь полностью поддерживает Azure OpenAI. Если вы ищете примеры кода для устаревшего пакета SDK JavaScript для Azure OpenAI, они в настоящее время по-прежнему доступны в этом репозитории.
Необходимые компоненты
- подписка Azure — создайте бесплатную учетную запись.
- LTS версии Node.js
- Azure CLI , используемый для проверки подлинности без пароля в локальной среде разработки, создайте необходимый контекст, выполнив вход с помощью Azure CLI.
- Ресурс службы Azure OpenAI с развернутыми
gpt-35-turbo
моделями илиgpt-4
моделями серии. Дополнительные сведения о моделях развертывания Azure, см. в руководстве по развертыванию ресурсов.
Настройка
Получение ключа и конечной точки
Чтобы успешно выполнить вызов к Azure OpenAI, вам потребуется конечная точка и ключ.
Имя переменной | Значение |
---|---|
ENDPOINT |
Конечная точка службы можно найти в разделе "Ключи" и "Конечная точка" при изучении ресурса из портал Azure. Кроме того, можно найти конечную точку на странице "Развертывания " в Azure AI Studio. Пример конечной точки: https://docs-test-001.openai.azure.com/ . |
API-KEY |
Это значение можно найти в разделе Ключи и конечная точка при просмотре ресурса на портале Azure. Вы можете использовать KEY1 или KEY2 . |
Перейдите к своему ресурсу на портале Azure. Раздел "Ключи и конечная точка " можно найти в разделе "Управление ресурсами". Скопируйте конечную точку и ключ доступа, так как они потребуются для проверки подлинности вызовов API. Вы можете использовать KEY1
или KEY2
. Наличие двух ключей позволяет безопасно менять и повторно создавать ключи без прерывания работы службы.
Переменные среды
Создайте и назначьте переменные постоянной среды для ключа и конечной точки.
Внимание
Если вы используете ключ API, сохраните его в другом месте, например в Azure Key Vault. Не включайте ключ API непосредственно в код и никогда не публикуйте его.
Дополнительные сведения о безопасности служб ИИ см. в статье "Проверка подлинности запросов к службам ИИ Azure".
setx AZURE_OPENAI_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE"
setx AZURE_OPENAI_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE"
Создание приложения Node
В окне консоли (например, cmd, PowerShell или Bash) создайте новый каталог для приложения и перейдите в него.
Установка клиентской библиотеки
Установите необходимые пакеты для JavaScript с npm из контекста нового каталога:
npm install openai @azure/identity
Файл package.json приложения будет обновлен с помощью зависимостей.
Создание примера приложения
Откройте командную строку, в которой хотите создать проект, и создайте файл с именем ChatCompletion.js. Скопируйте следующий код в файл 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 };
Выполните скрипт с помощью следующей команды:
node.exe ChatCompletion.js
Выходные данные
== 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'
}
Примечание.
Если ошибка получена: произошла ошибка: OpenAIError: apiKey
аргументы azureADTokenProvider
являются взаимоисключающими; только один из них можно передать одновременно. Возможно, потребуется удалить существующую переменную среды для ключа API из системы. Несмотря на то, что пример кода идентификатора Microsoft Entra не ссылается на переменную среды ключа API, если он присутствует в системе, выполняющей этот пример, эта ошибка по-прежнему будет создана.
Очистка ресурсов
Если вы хотите очистить и удалить ресурс Azure OpenAI, его можно удалить. Перед удалением ресурса необходимо сначала удалить все развернутые модели.
Следующие шаги
- Обзор Azure OpenAI
- Дополнительные примеры см. в репозитории GitHub в Azure OpenAI Samples
Примеры пакета исходного кода | (npm) |
Примечание.
Эта статья была обновлена, чтобы использовать последний пакет OpenAI npm, который теперь полностью поддерживает Azure OpenAI. Если вы ищете примеры кода для устаревшего пакета SDK JavaScript для Azure OpenAI, они в настоящее время по-прежнему доступны в этом репозитории.
Необходимые компоненты
- подписка Azure — создайте бесплатную учетную запись.
- LTS версии Node.js
- TypeScript
- Azure CLI , используемый для проверки подлинности без пароля в локальной среде разработки, создайте необходимый контекст, выполнив вход с помощью Azure CLI.
- Ресурс службы Azure OpenAI с
gpt-35-turbo
развернутыми моделями илиgpt-4
моделями серии. Дополнительные сведения о моделях развертывания Azure, см. в руководстве по развертыванию ресурсов.
Настройка
Получение ключа и конечной точки
Чтобы успешно выполнить вызов к Azure OpenAI, вам потребуется конечная точка и ключ.
Имя переменной | Значение |
---|---|
ENDPOINT |
Конечная точка службы можно найти в разделе "Ключи" и "Конечная точка" при изучении ресурса из портал Azure. Кроме того, можно найти конечную точку на странице "Развертывания " в Azure AI Studio. Пример конечной точки: https://docs-test-001.openai.azure.com/ . |
API-KEY |
Это значение можно найти в разделе Ключи и конечная точка при просмотре ресурса на портале Azure. Вы можете использовать KEY1 или KEY2 . |
Перейдите к своему ресурсу на портале Azure. Раздел "Ключи и конечная точка " можно найти в разделе "Управление ресурсами". Скопируйте конечную точку и ключ доступа, так как они потребуются для проверки подлинности вызовов API. Вы можете использовать KEY1
или KEY2
. Наличие двух ключей позволяет безопасно менять и повторно создавать ключи без прерывания работы службы.
Переменные среды
Создайте и назначьте переменные постоянной среды для ключа и конечной точки.
Внимание
Если вы используете ключ API, сохраните его в другом месте, например в Azure Key Vault. Не включайте ключ API непосредственно в код и никогда не публикуйте его.
Дополнительные сведения о безопасности служб ИИ см. в статье "Проверка подлинности запросов к службам ИИ Azure".
setx AZURE_OPENAI_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE"
setx AZURE_OPENAI_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE"
Создание приложения Node
В окне консоли (например, cmd, PowerShell или Bash) создайте новый каталог для приложения и перейдите в него.
Установка клиентской библиотеки
Установите необходимые пакеты для JavaScript с npm из контекста нового каталога:
npm install openai @azure/identity
Файл package.json приложения будет обновлен с помощью зависимостей.
Создание примера приложения
Откройте командную строку, в которой хотите создать проект, и создайте файл с именем ChatCompletion.ts. Скопируйте следующий код в файл 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);
});
Выполните сборку скрипта с помощью следующей команды:
tsc
Выполните скрипт с помощью следующей команды:
node.exe ChatCompletion.js
Выходные данные
== 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'
}
Примечание.
Если ошибка получена: произошла ошибка: OpenAIError: apiKey
аргументы azureADTokenProvider
являются взаимоисключающими; только один из них можно передать одновременно. Возможно, потребуется удалить существующую переменную среды для ключа API из системы. Несмотря на то, что пример кода идентификатора Microsoft Entra не ссылается на переменную среды ключа API, если он присутствует в системе, выполняющей этот пример, эта ошибка по-прежнему будет создана.
Очистка ресурсов
Если вы хотите очистить и удалить ресурс Azure OpenAI, его можно удалить. Перед удалением ресурса необходимо сначала удалить все развернутые модели.
Следующие шаги
- Обзор Azure OpenAI
- Дополнительные примеры см. в репозитории GitHub в Azure OpenAI Samples
Шаблон корпоративного чата для исходного кода | библиотеки (PyPi) | Извлечение дополненного поколения (RAG) |
Необходимые компоненты
- подписка Azure — создайте бесплатную учетную запись.
- Python 3.8 или более поздней версии.
- Следующие библиотеки Python: ос.
- Ресурс службы Azure OpenAI с
gpt-35-turbo
развернутыми моделями илиgpt-4
моделями. Дополнительные сведения о моделях развертывания Azure, см. в руководстве по развертыванию ресурсов.
Настройка
Установите клиентную библиотеку OpenAI Python с помощью следующих компонентов:
pip install openai
Примечание.
Эта библиотека поддерживается OpenAI. Ознакомьтесь с журналом выпуска, чтобы отслеживать последние обновления библиотеки.
Получение ключа и конечной точки
Чтобы успешно выполнить вызов к Azure OpenAI, вам потребуется конечная точка и ключ.
Имя переменной | Значение |
---|---|
ENDPOINT |
Конечная точка службы можно найти в разделе "Ключи" и "Конечная точка" при изучении ресурса из портал Azure. Кроме того, можно найти конечную точку на странице "Развертывания " в Azure AI Studio. Пример конечной точки: https://docs-test-001.openai.azure.com/ . |
API-KEY |
Это значение можно найти в разделе Ключи и конечная точка при просмотре ресурса на портале Azure. Вы можете использовать KEY1 или KEY2 . |
Перейдите к своему ресурсу на портале Azure. Раздел "Ключи и конечная точка " можно найти в разделе "Управление ресурсами". Скопируйте конечную точку и ключ доступа, так как они потребуются для проверки подлинности вызовов API. Вы можете использовать KEY1
или KEY2
. Наличие двух ключей позволяет безопасно менять и повторно создавать ключи без прерывания работы службы.
Переменные среды
Создайте и назначьте переменные постоянной среды для ключа и конечной точки.
Внимание
Если вы используете ключ API, сохраните его в другом месте, например в Azure Key Vault. Не включайте ключ API непосредственно в код и никогда не публикуйте его.
Дополнительные сведения о безопасности служб ИИ см. в статье "Проверка подлинности запросов к службам ИИ Azure".
setx AZURE_OPENAI_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE"
setx AZURE_OPENAI_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE"
Создание приложения Python
Создайте файл Python с именем quickstart.py. Затем откройте его в предпочитаемом редакторе или интегрированной среде разработки.
Замените содержимое файла quickstart.py приведенным ниже кодом.
Для переменной необходимо задать model
имя развертывания, выбранное при развертывании моделей GPT-3.5-Turbo или GPT-4. Ввод имени модели приведет к ошибке, если вы не выбрали имя развертывания, идентичное имени базовой модели.
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)
Внимание
Для рабочей среды используйте безопасный способ хранения и доступа к учетным данным, например Azure Key Vault. Дополнительные сведения о безопасности учетных данных см. в статье о безопасности служб искусственного интеллекта Azure.
Запустите приложение с
python
помощью команды в файле быстрого запуска:python quickstart.py
Выходные данные
{
"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.
Общие сведения о структуре сообщений
Модели GPT-35-Turbo и GPT-4 оптимизированы для работы с входными данными, отформатированными в виде беседы. Переменная messages
передает массив словарей с разными ролями в беседе, очерченной системой, пользователем и помощником. Системное сообщение можно использовать для создания модели, включив контекст или инструкции по реагированию модели.
Руководство по GPT-35-Turbo и GPT-4 предоставляет подробные сведения о вариантах взаимодействия с этими новыми моделями.
Очистка ресурсов
Если вы хотите очистить и удалить ресурс Azure OpenAI, его можно удалить. Перед удалением ресурса необходимо сначала удалить все развернутые модели.
Следующие шаги
- Узнайте больше о том, как работать с GPT-35-Turbo и моделями GPT-4 с нашим руководством.
- Дополнительные примеры см. в репозитории GitHub в Azure OpenAI Samples
Необходимые компоненты
- Подписка Azure — создайте бесплатную учетную запись.
- Ресурс службы Azure OpenAI с
gpt-35-turbo
развернутыми моделями илиgpt-4
моделями. Дополнительные сведения о моделях развертывания Azure, см. в руководстве по развертыванию ресурсов.
Настройка
Получение ключа и конечной точки
Чтобы успешно выполнить вызов к Azure OpenAI, вам потребуется конечная точка и ключ.
Имя переменной | Значение |
---|---|
ENDPOINT |
Конечная точка службы можно найти в разделе "Ключи" и "Конечная точка" при изучении ресурса из портал Azure. Кроме того, можно найти конечную точку на странице "Развертывания " в Azure AI Studio. Пример конечной точки: https://docs-test-001.openai.azure.com/ . |
API-KEY |
Это значение можно найти в разделе Ключи и конечная точка при просмотре ресурса на портале Azure. Вы можете использовать KEY1 или KEY2 . |
Перейдите к своему ресурсу на портале Azure. Раздел "Ключи и конечная точка " можно найти в разделе "Управление ресурсами". Скопируйте конечную точку и ключ доступа, так как они потребуются для проверки подлинности вызовов API. Вы можете использовать KEY1
или KEY2
. Наличие двух ключей позволяет безопасно менять и повторно создавать ключи без прерывания работы службы.
Переменные среды
Создайте и назначьте переменные постоянной среды для ключа и конечной точки.
Внимание
Если вы используете ключ API, сохраните его в другом месте, например в Azure Key Vault. Не включайте ключ API непосредственно в код и никогда не публикуйте его.
Дополнительные сведения о безопасности служб ИИ см. в статье "Проверка подлинности запросов к службам ИИ Azure".
setx AZURE_OPENAI_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE"
setx AZURE_OPENAI_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE"
REST API
В оболочке bash выполните следующую команду. Вам потребуется заменить gpt-35-turbo
имя развертывания, выбранное при развертывании моделей GPT-35-Turbo или GPT-4. Ввод имени модели приведет к ошибке, если вы не выбрали имя развертывания, идентичное имени базовой модели.
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?"}]}'
Формат первой строки команды с примером конечной точки будет отображаться следующим образом curl https://docs-test-001.openai.azure.com/openai/deployments/{YOUR-DEPLOYMENT_NAME_HERE}/chat/completions?api-version=2024-02-01 \
, если вы столкнулись с ошибкой двойной проверки, чтобы убедиться, что у вас нет удвоения /
между конечной точкой и /openai/deployments
.
Если вы хотите выполнить эту команду в обычной командной строке Windows, необходимо изменить текст, чтобы удалить \
разрывы строк.
Внимание
Для рабочей среды используйте безопасный способ хранения и доступа к учетным данным, например Azure Key Vault. Дополнительные сведения о безопасности учетных данных см. в статье о безопасности служб искусственного интеллекта Azure.
Выходные данные
{"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}]}
Форматирование выходных данных, скорректированное для удобства чтения, фактические выходные данные — это один блок текста без разрывов строк.
Общие сведения о структуре сообщений
Модели GPT-35-Turbo и GPT-4 оптимизированы для работы с входными данными, отформатированными в виде беседы. Переменная messages
передает массив словарей с разными ролями в беседе, очерченной системой, пользователем и помощником. Системное сообщение можно использовать для создания модели, включив контекст или инструкции по реагированию модели.
Руководство по GPT-35-Turbo и GPT-4 предоставляет подробные сведения о вариантах взаимодействия с этими новыми моделями.
Очистка ресурсов
Если вы хотите очистить и удалить ресурс Azure OpenAI, его можно удалить. Перед удалением ресурса необходимо сначала удалить все развернутые модели.
Следующие шаги
- Узнайте больше о том, как работать с GPT-35-Turbo и моделями GPT-4 с нашим руководством.
- Дополнительные примеры см. в репозитории GitHub в Azure OpenAI Samples
Необходимые компоненты
- подписка Azure — создайте бесплатную учетную запись.
- Вы можете использовать последнюю версию, PowerShell 7 или Windows PowerShell 5.1.
- Ресурс службы Azure OpenAI с развернутой моделью. Дополнительные сведения о моделях развертывания Azure, см. в руководстве по развертыванию ресурсов.
- Ресурс службы Azure OpenAI с
gpt-35-turbo
развернутыми моделями илиgpt-4
моделями. Дополнительные сведения о моделях развертывания Azure, см. в руководстве по развертыванию ресурсов.
Получение ключа и конечной точки
Чтобы успешно выполнить вызов к Azure OpenAI, вам потребуется конечная точка и ключ.
Имя переменной | Значение |
---|---|
ENDPOINT |
Конечная точка службы можно найти в разделе "Ключи" и "Конечная точка" при изучении ресурса из портал Azure. Кроме того, можно найти конечную точку на странице "Развертывания " в Azure AI Studio. Пример конечной точки: https://docs-test-001.openai.azure.com/ . |
API-KEY |
Это значение можно найти в разделе Ключи и конечная точка при просмотре ресурса на портале Azure. Вы можете использовать KEY1 или KEY2 . |
Перейдите к своему ресурсу на портале Azure. Конечную точку и ключи можно найти в разделе Управление ресурсами. Скопируйте конечную точку и ключ доступа, так как они потребуются для проверки подлинности вызовов API. Вы можете использовать KEY1
или KEY2
. Наличие двух ключей позволяет безопасно менять и повторно создавать ключи без прерывания работы службы.
Переменные среды
Создайте и назначьте переменные постоянной среды для ключа и конечной точки.
Внимание
Если вы используете ключ API, сохраните его в другом месте, например в Azure Key Vault. Не включайте ключ API непосредственно в код и никогда не публикуйте его.
Дополнительные сведения о безопасности служб ИИ см. в статье "Проверка подлинности запросов к службам ИИ Azure".
$Env:AZURE_OPENAI_API_KEY = 'YOUR_KEY_VALUE'
$Env:AZURE_OPENAI_ENDPOINT = 'YOUR_ENDPOINT'
Создание скрипта PowerShell
Создайте новый файл PowerShell с именем quickstart.ps1. Затем откройте его в предпочитаемом редакторе или интегрированной среде разработки.
Замените содержимое quickstart.ps1 следующим кодом. Для переменной
engine
необходимо задать имя развертывания, выбранное при развертывании моделей GPT-35-Turbo или GPT-4. Ввод имени модели приведет к ошибке, если вы не выбрали имя развертывания, идентичное имени базовой модели.# 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
Внимание
Для рабочей среды используйте безопасный способ хранения и доступа к учетным данным, таким как Управление секретами PowerShell с помощью Azure Key Vault. Дополнительные сведения о безопасности учетных данных см. в статье о безопасности служб искусственного интеллекта Azure.
Запустите скрипт с помощью PowerShell:
./quickstart.ps1
Выходные данные
# 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
Общие сведения о структуре сообщений
Модели GPT-35-Turbo и GPT-4 оптимизированы для работы с входными данными, отформатированными в виде беседы. Переменная messages
передает массив словарей с разными ролями в беседе, очерченной системой, пользователем и помощником. Системное сообщение можно использовать для создания модели, включив контекст или инструкции по реагированию модели.
Руководство по GPT-35-Turbo и GPT-4 предоставляет подробные сведения о вариантах взаимодействия с этими новыми моделями.
Очистка ресурсов
Если вы хотите очистить и удалить ресурс Azure OpenAI, его можно удалить. Перед удалением ресурса необходимо сначала удалить все развернутые модели.
Следующие шаги
- Узнайте больше о том, как работать с GPT-35-Turbo и моделями GPT-4 с нашим руководством.
- Дополнительные примеры см. в репозитории GitHub в Azure OpenAI Samples