Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Замечание
Этот документ относится к порталу Microsoft Foundry (классическая модель).
🔍 Ознакомьтесь с документацией по Microsoft Foundry (новая), чтобы узнать о новом портале.
В этом кратком руководстве вы используете собственные данные с моделями Azure OpenAI для создания мощной платформы общения ИИ, которая обеспечивает более быструю и точную связь.
Это важно
Существуют новые способы создания разговорных решений на основе собственных данных. Сведения о последнем рекомендуемом подходе см. в Кратком руководстве: использование агентного извлечения в поиске ИИ Azure.
Предпосылки
- Скачайте примеры данных из GitHub , если у вас нет собственных данных.
Добавление данных с помощью портала Microsoft Foundry
Подсказка
Кроме того, можно использовать интерфейс командной строки разработчика Azure для программного создания ресурсов, необходимых для Azure OpenAI On Your Data.
Чтобы добавить данные с помощью портала, выполните следующие действия.
-
Войдите в Microsoft Foundry. Убедитесь, что переключатель New Foundry отключен. Эти действия относятся к Foundry (классическая).
Выберите ресурс Azure OpenAI. Если у вас есть ресурс Foundry, можно создать проект Foundry.
В левой области выберите Площадки>Чат.
В панели настройки выберите развертывание модели.
Выберите "Добавить источник данных>".
На странице источника данных :
В разделе "Выбор источника данных" выберите " Отправить файлы (предварительная версия)".
Подсказка
- Для этого параметра требуется ресурс Azure Blob-хранилища и ресурс Azure AI Search для доступа и индексирования ваших данных. Дополнительные сведения см. в разделе "Параметры источника данных " и поддерживаемые типы файлов и форматы.
- Для документов и наборов данных с длинным текстом рекомендуется использовать скрипт подготовки данных.
Для Azure OpenAI требуется обмен ресурсами между источниками (CORS) для доступа к вашей учетной записи хранения. Если CORS еще не включен для ресурса хранилища BLOB-объектов Azure, нажмите кнопку "Включить CORS".
Выберите ресурс поиска ИИ Azure.
Введите имя нового индекса.
Установите флажок, который подтверждает последствия для выставления счетов при использовании службы Azure ИИ Поиск.
Нажмите кнопку Далее.
На странице "Отправка файлов ":
Выберите "Обзор файла" и выберите собственные данные или примеры данных, которые вы скачали из предварительных требований.
Щелкните Upload files (Передать файлы).
Нажмите кнопку Далее.
На странице управления данными :
Выберите, следует ли включить семантический поиск или векторный поиск индекса.
Это важно
- Семантический поиск и векторный поиск подвергаются дополнительным ценам. Ресурс поиска ИИ Azure должен находиться на уровне "Базовый" или выше, чтобы включить семантический поиск или векторный поиск. Дополнительные сведения см. в разделе "Выбор уровня " и "Ограничения службы".
- Чтобы повысить качество получения информации и ответа модели, рекомендуется включить семантический поиск на следующих языках источника данных: английский, французский, испанский, португальский, итальянский, итальянский, китайский(zh), японский, корейский, русский и арабский.
Нажмите кнопку Далее.
На странице подключения к данным :
Выберите, следует ли проходить проверку подлинности с помощью управляемого удостоверения, назначенного системой , или ключа API.
Нажмите кнопку Далее.
Просмотрите конфигурации и нажмите кнопку "Сохранить и закрыть".
Теперь вы можете общаться с моделью, которая использует данные для создания ответа.
Детская площадка чата
Начните изучение возможностей Azure OpenAI с использованием подхода без кода на игровой площадке чата. Это просто текстовое поле, в котором можно отправить запрос для получения результата. На этой странице можно быстро итерировать и экспериментировать с возможностями.
На детской площадке вы можете настроить взаимодействие с чатом. В верхнем меню можно выбрать "Развернуть", чтобы выбрать, какая модель генерирует ответ на основании результатов поиска из индекса. Вы выбираете количество прошлых сообщений, включаемых в журнал бесед для будущих созданных ответов. Журнал бесед дает контекст для создания связанных ответов, но также использует использование маркеров. Индикатор хода выполнения входного маркера отслеживает количество маркеров, которые вы отправляете.
Дополнительные параметры слева — это параметры среды выполнения, которые позволяют управлять получением и поиском соответствующих сведений из данных. Хороший вариант использования заключается в том, что вы хотите убедиться, что ответы создаются только на основе данных, или модель не может создать ответ на основе существующих сведений о данных.
Строгость определяет агрессивность системы в фильтрации документов поиска на основе их показателей сходства. Установка строгости 5 указывает на то, что система будет агрессивно фильтровать документы, применяя очень высокий порог сходства. Семантический поиск может быть полезным в данной ситуации, так как модели ранжирования лучше справляются с задачей определения намерения запроса. Более подробные ответы создают более подробные ответы на более низкие уровни строгости, но также могут содержать сведения, которые не входят в индекс. По умолчанию это значение равно 3.
Извлеченные документы — это числовая настройка, которая может быть установлена на 3, 5, 10 или 20 и определяет количество блоков документов, предоставленных большой языковой модели для формирования окончательного ответа. По умолчанию это значение равно 5.
Если ограничение ответов вашими данными включено, модель пытается использовать только ваши документы для формирования ответов. По умолчанию это значение имеет значение true.
Отправьте первый запрос. Модели чата лучше всего работают в упражнениях с вопросом и ответами. Например, "Что такое мои доступные планы здравоохранения?", или "Что такое вариант "Здоровье плюс?".
Запросы, требующие анализа данных, вероятно, могут завершиться ошибкой, например, "Какой медицинский план наиболее популярен?". Запросы, требующие сведений обо всех ваших данных, также могут завершиться ошибкой, например "Сколько документов я отправил?". Помните, что поисковый механизм ищет фрагменты с точными или похожими терминами, фразами или конструкцией запроса. И хотя модель может понять вопрос, если результаты поиска являются блоками из набора данных, это не правильные сведения для ответа на этот вопрос.
Чаты ограничены количеством документов (фрагментов), возвращенных в ответе (ограниченно 3–20 в тестовой среде портала Foundry). Как вы можете себе представить, создание вопроса о "всех названиях" требует полного сканирования всего векторного хранилища.
Разверните вашу модель
Когда вы удовлетворены результатом, вы можете развернуть веб-приложение непосредственно на портале, нажав Развернуть в.
Это дает возможность либо развернуть автономное веб-приложение, либо использовать копилот в Copilot Studio (предварительная версия), если вы используете собственные данные в модели.
Например, если вы решили развернуть веб-приложение:
При первом развертывании веб-приложения следует выбрать команду "Создать новое веб-приложение". Выберите имя приложения, которое станет частью URL-адреса приложения. Например: https://<appname>.azurewebsites.net.
Выберите подписку, группу ресурсов, расположение и тарифный план для опубликованного приложения. Чтобы обновить существующее приложение, выберите "Опубликовать" в существующем веб-приложении и выберите имя предыдущего приложения в раскрывающемся меню.
Если вы решили развернуть веб-приложение, ознакомьтесь с важными рекомендациями по его использованию.
Предпосылки
- Подписка Azure — создайте бесплатную учетную запись.
- Скачайте примеры данных из GitHub , если у вас нет собственных данных.
- Пакет SDK для .NET 8
Добавление данных с помощью портала Microsoft Foundry
Подсказка
Кроме того, можно использовать интерфейс командной строки разработчика Azure для программного создания ресурсов, необходимых для Azure OpenAI On Your Data.
Чтобы добавить данные с помощью портала, выполните следующие действия.
-
Войдите в Microsoft Foundry. Убедитесь, что переключатель New Foundry отключен. Эти действия относятся к Foundry (классическая).
Выберите ресурс Azure OpenAI. Если у вас есть ресурс Foundry, можно создать проект Foundry.
В левой области выберите Площадки>Чат.
В панели настройки выберите развертывание модели.
Выберите "Добавить источник данных>".
На странице источника данных :
В разделе "Выбор источника данных" выберите " Отправить файлы (предварительная версия)".
Подсказка
- Для этого параметра требуется ресурс Azure Blob-хранилища и ресурс Azure AI Search для доступа и индексирования ваших данных. Дополнительные сведения см. в разделе "Параметры источника данных " и поддерживаемые типы файлов и форматы.
- Для документов и наборов данных с длинным текстом рекомендуется использовать скрипт подготовки данных.
Для Azure OpenAI требуется обмен ресурсами между источниками (CORS) для доступа к вашей учетной записи хранения. Если CORS еще не включен для ресурса хранилища BLOB-объектов Azure, нажмите кнопку "Включить CORS".
Выберите ресурс поиска ИИ Azure.
Введите имя нового индекса.
Установите флажок, который подтверждает последствия для выставления счетов при использовании службы Azure ИИ Поиск.
Нажмите кнопку Далее.
На странице "Отправка файлов ":
Выберите "Обзор файла" и выберите собственные данные или примеры данных, которые вы скачали из предварительных требований.
Щелкните Upload files (Передать файлы).
Нажмите кнопку Далее.
На странице управления данными :
Выберите, следует ли включить семантический поиск или векторный поиск индекса.
Это важно
- Семантический поиск и векторный поиск подвергаются дополнительным ценам. Ресурс поиска ИИ Azure должен находиться на уровне "Базовый" или выше, чтобы включить семантический поиск или векторный поиск. Дополнительные сведения см. в разделе "Выбор уровня " и "Ограничения службы".
- Чтобы повысить качество получения информации и ответа модели, рекомендуется включить семантический поиск на следующих языках источника данных: английский, французский, испанский, португальский, итальянский, итальянский, китайский(zh), японский, корейский, русский и арабский.
Нажмите кнопку Далее.
На странице подключения к данным :
Выберите, следует ли проходить проверку подлинности с помощью управляемого удостоверения, назначенного системой , или ключа API.
Нажмите кнопку Далее.
Просмотрите конфигурации и нажмите кнопку "Сохранить и закрыть".
Теперь вы можете общаться с моделью, которая использует данные для создания ответа.
Получение сведений о ресурсе
Чтобы проверить подлинность приложения с помощью ресурса Azure OpenAI, необходимо получить следующие сведения. В этом кратком руководстве предполагается, что вы отправили данные в учетную запись хранения BLOB-объектов Azure и создали индекс поиска ИИ Azure. См. статью "Добавление данных с помощью портала Microsoft Foundry".
| Имя переменной | Ценность |
|---|---|
AZURE_OPENAI_ENDPOINT |
Это значение можно найти в разделе "Ключи и конечная точка " при проверке ресурса Azure OpenAI на портале Azure. Пример конечной точки: https://my-resource.openai.azure.com. |
AZURE_OPENAI_DEPLOYMENT_NAME |
Это значение соответствует пользовательскому имени, выбранному для развертывания при развертывании модели. Это значение можно найти в разделе"Развертывания> ресурсами" на портале Azure. |
AZURE_AI_SEARCH_ENDPOINT |
Это значение можно найти в разделе "Обзор " при проверке ресурса поиска ИИ Azure на портале Azure. |
AZURE_AI_SEARCH_INDEX |
Это значение соответствует имени индекса, созданного для хранения данных. Его можно найти в разделе "Обзор" при изучении ресурса поиска ИИ Azure на портале Azure. |
Дополнительные сведения о бессерверной проверке подлинности и настройке переменных среды.
В каталоге проекта откройте файл Program.cs и замените его содержимое следующим кодом:
using System;
using Azure.AI.OpenAI;
using System.ClientModel;
using Azure.AI.OpenAI.Chat;
using OpenAI.Chat;
using static System.Environment;
string azureOpenAIEndpoint = GetEnvironmentVariable("AZURE_OPENAI_ENDPOINT");
string azureOpenAIKey = GetEnvironmentVariable("AZURE_OPENAI_API_KEY");
string deploymentName = GetEnvironmentVariable("AZURE_OPENAI_DEPLOYMENT_NAME");
string searchEndpoint = GetEnvironmentVariable("AZURE_AI_SEARCH_ENDPOINT");
string searchKey = GetEnvironmentVariable("AZURE_AI_SEARCH_API_KEY");
string searchIndex = GetEnvironmentVariable("AZURE_AI_SEARCH_INDEX");
AzureOpenAIClient openAIClient = new(
new Uri(azureOpenAIEndpoint),
new ApiKeyCredential(azureOpenAIKey));
ChatClient chatClient = openAIClient.GetChatClient(deploymentName);
// Extension methods to use data sources with options are subject to SDK surface changes. Suppress the
// warning to acknowledge and this and use the subject-to-change AddDataSource method.
#pragma warning disable AOAI001
ChatCompletionOptions options = new();
options.AddDataSource(new AzureSearchChatDataSource()
{
Endpoint = new Uri(searchEndpoint),
IndexName = searchIndex,
Authentication = DataSourceAuthentication.FromApiKey(searchKey),
});
ChatCompletion completion = chatClient.CompleteChat(
[
new UserChatMessage("What health plans are available?"),
],
options);
ChatMessageContext onYourDataContext = completion.GetMessageContext();
if (onYourDataContext?.Intent is not null)
{
Console.WriteLine($"Intent: {onYourDataContext.Intent}");
}
foreach (ChatCitation citation in onYourDataContext?.Citations ?? [])
{
Console.WriteLine($"Citation: {citation.Content}");
}
Это важно
Для рабочей среды используйте безопасный способ хранения и доступа к учетным данным, например Azure Key Vault. Дополнительные сведения о безопасности учетных данных см. в этой статье.
dotnet run Program.cs
Выходные данные
Contoso Electronics offers two health plans: Northwind Health Plus and Northwind Standard [doc1]. Northwind Health Plus is a comprehensive plan that provides coverage for medical, vision, and dental services, prescription drug coverage, mental health and substance abuse coverage, and coverage for preventive care services. It also offers coverage for emergency services, both in-network and out-of-network. On the other hand, Northwind Standard is a basic plan that provides coverage for medical, vision, and dental services, prescription drug coverage, and coverage for preventive care services. However, it does not offer coverage for emergency services, mental health and substance abuse coverage, or out-of-network services [doc1].
Intent: ["What are the available health plans?", "List of health plans available", "Health insurance options", "Types of health plans offered"]
Citation:
Contoso Electronics plan and benefit packages
Thank you for your interest in the Contoso electronics plan and benefit packages. Use this document to
learn more about the various options available to you...// Omitted for brevity
Ожидание продлится до тех пор, пока модель не создаст полный ответ, прежде чем результаты будут напечатаны.
Исходный код| Исходный код | Образец
Предпосылки
- Azure OpenAI
- Хранилище BLOB-объектов Azure
- Поиск по искусственному интеллекту Azure
-
Azure OpenAI или развернут в поддерживаемом регионе и с поддерживаемой моделью.
- Убедитесь, что вы назначены на роль участника службы Cognitive Services, по крайней мере, для ресурса Azure OpenAI.
- Скачайте примеры данных из GitHub , если у вас нет собственных данных.
Добавление данных с помощью портала Microsoft Foundry
Подсказка
Кроме того, можно использовать интерфейс командной строки разработчика Azure для программного создания ресурсов, необходимых для Azure OpenAI On Your Data.
Чтобы добавить данные с помощью портала, выполните следующие действия.
-
Войдите в Microsoft Foundry. Убедитесь, что переключатель New Foundry отключен. Эти действия относятся к Foundry (классическая).
Выберите ресурс Azure OpenAI. Если у вас есть ресурс Foundry, можно создать проект Foundry.
В левой области выберите Площадки>Чат.
В панели настройки выберите развертывание модели.
Выберите "Добавить источник данных>".
На странице источника данных :
В разделе "Выбор источника данных" выберите " Отправить файлы (предварительная версия)".
Подсказка
- Для этого параметра требуется ресурс Azure Blob-хранилища и ресурс Azure AI Search для доступа и индексирования ваших данных. Дополнительные сведения см. в разделе "Параметры источника данных " и поддерживаемые типы файлов и форматы.
- Для документов и наборов данных с длинным текстом рекомендуется использовать скрипт подготовки данных.
Для Azure OpenAI требуется обмен ресурсами между источниками (CORS) для доступа к вашей учетной записи хранения. Если CORS еще не включен для ресурса хранилища BLOB-объектов Azure, нажмите кнопку "Включить CORS".
Выберите ресурс поиска ИИ Azure.
Введите имя нового индекса.
Установите флажок, который подтверждает последствия для выставления счетов при использовании службы Azure ИИ Поиск.
Нажмите кнопку Далее.
На странице "Отправка файлов ":
Выберите "Обзор файла" и выберите собственные данные или примеры данных, которые вы скачали из предварительных требований.
Щелкните Upload files (Передать файлы).
Нажмите кнопку Далее.
На странице управления данными :
Выберите, следует ли включить семантический поиск или векторный поиск индекса.
Это важно
- Семантический поиск и векторный поиск подвергаются дополнительным ценам. Ресурс поиска ИИ Azure должен находиться на уровне "Базовый" или выше, чтобы включить семантический поиск или векторный поиск. Дополнительные сведения см. в разделе "Выбор уровня " и "Ограничения службы".
- Чтобы повысить качество получения информации и ответа модели, рекомендуется включить семантический поиск на следующих языках источника данных: английский, французский, испанский, португальский, итальянский, итальянский, китайский(zh), японский, корейский, русский и арабский.
Нажмите кнопку Далее.
На странице подключения к данным :
Выберите, следует ли проходить проверку подлинности с помощью управляемого удостоверения, назначенного системой , или ключа API.
Нажмите кнопку Далее.
Просмотрите конфигурации и нажмите кнопку "Сохранить и закрыть".
Теперь вы можете общаться с моделью, которая использует данные для создания ответа.
Получение необходимых переменных
Чтобы успешно выполнить вызов к Azure OpenAI, вам потребуются следующие переменные. В этом кратком руководстве предполагается, что вы отправили данные в учетную запись хранения BLOB-объектов Azure и создали индекс поиска ИИ Azure. Дополнительные сведения см. в статье "Добавление данных с помощью Microsoft Foundry".
| Имя переменной | Ценность |
|---|---|
AZURE_OPENAI_ENDPOINT |
Это значение можно найти в разделе "Ключи и конечная точка " при проверке ресурса Azure OpenAI на портале Azure. Кроме того, вы можете найти значение вFoundry>игровой площадке для чата>представлении кода. Пример конечной точки: https://my-resource.openai.azure.com. |
AZURE_OPENAI_API_KEY |
Это значение можно найти в разделе "Ключи управления> ресурсами" и "Конечная точка" при проверке ресурса Azure OpenAI на портале Azure. Вы можете использовать KEY1 или KEY2. Наличие двух ключей позволяет безопасно менять и повторно создавать ключи без прерывания работы службы. |
AZURE_OPEN_AI_DEPLOYMENT_ID |
Это значение соответствует пользовательскому имени, выбранному для развертывания при развертывании модели. Это значение можно найти в разделе Управление ресурсами>Развертывания на портале Azure, или же в разделе Управление>Развертывания на портале Foundry. |
AZURE_AI_SEARCH_ENDPOINT |
Это значение можно найти в разделе "Обзор " при изучении ресурса поиска ИИ Azure на портале Azure. |
AZURE_AI_SEARCH_API_KEY |
Это значение можно найти в разделе Параметры>Ключи при изучении ресурса поиска ИИ Azure на портале Azure. Вы можете использовать ключ первичного администратора или дополнительный ключ администратора. Наличие двух ключей позволяет безопасно менять и повторно создавать ключи без прерывания работы службы. |
AZURE_AI_SEARCH_INDEX |
Это значение соответствует имени индекса, созданного для хранения данных. Его можно найти в разделе "Обзор" при изучении ресурса поиска ИИ Azure на портале Azure. |
Переменные среды
Создайте и назначьте переменные постоянной среды для ключа и конечной точки.
Это важно
Используйте ключи API с осторожностью. Не включайте ключ API непосредственно в код и никогда не публикуйте его. Если вы используете ключ API, сохраните его безопасно в Azure Key Vault. Дополнительные сведения об использовании ключей API безопасно в приложениях см. в разделе "Ключи API" с помощью Azure Key Vault.
Дополнительные сведения о безопасности служб ИИ см. в статье "Проверка подлинности запросов к службам ИИ Azure".
Замечание
Spring AI по умолчанию использует имя gpt-35-turboмодели. Необходимо указать значение SPRING_AI_AZURE_OPENAI_MODEL только в том случае, если вы развернули модель с другим именем.
export SPRING_AI_AZURE_OPENAI_ENDPOINT=REPLACE_WITH_YOUR_AOAI_ENDPOINT_VALUE_HERE
export SPRING_AI_AZURE_OPENAI_API_KEY=REPLACE_WITH_YOUR_AOAI_KEY_VALUE_HERE
export SPRING_AI_AZURE_COGNITIVE_SEARCH_ENDPOINT=REPLACE_WITH_YOUR_AZURE_SEARCH_RESOURCE_VALUE_HERE
export SPRING_AI_AZURE_COGNITIVE_SEARCH_API_KEY=REPLACE_WITH_YOUR_AZURE_SEARCH_RESOURCE_KEY_VALUE_HERE
export SPRING_AI_AZURE_COGNITIVE_SEARCH_INDEX=REPLACE_WITH_YOUR_INDEX_NAME_HERE
export SPRING_AI_AZURE_OPENAI_MODEL=REPLACE_WITH_YOUR_MODEL_NAME_HERE
Создание нового приложения Spring
Spring AI в настоящее время не поддерживает AzureCognitiveSearchChatExtensionConfiguration варианты, позволяющие запросу ИИ Azure инкапсулировать метод получения дополненного поколения (RAG) и скрыть сведения от пользователя. В качестве альтернативы вы по-прежнему можете вызвать метод RAG непосредственно в приложении для запроса данных в индексе поиска ИИ Azure и использовать извлеченные документы для расширения запроса.
Spring AI поддерживает абстракцию VectorStore, и вы можете упаковать поиск ИИ Azure в реализацию Spring AI VectorStore для запроса пользовательских данных. Следующий проект реализует пользовательский VectorStore, поддерживаемый поиском ИИ Azure, и выполняет операции RAG напрямую.
В окне Bash создайте новый каталог для приложения и перейдите к нему.
mkdir ai-custom-data-demo && cd ai-custom-data-demo
Выполните команду spring init из рабочей папки. Эта команда создает стандартную структуру каталогов для проекта Spring, включая исходный файл класса Java и файл pom.xml , используемый для управления проектами на основе Maven.
spring init -a ai-custom-data-demo -n AICustomData --force --build maven -x
Созданные файлы и папки похожи на следующую структуру:
ai-custom-data-demo/
|-- pom.xml
|-- mvn
|-- mvn.cmd
|-- HELP.md
|-- src/
|-- main/
| |-- resources/
| | |-- application.properties
| |-- java/
| |-- com/
| |-- example/
| |-- aicustomdatademo/
| |-- AiCustomDataApplication.java
|-- test/
|-- java/
|-- com/
|-- example/
|-- aicustomdatademo/
|-- AiCustomDataApplicationTests.java
Изменение приложения Spring
Отредактируйте файл 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-custom-data-demo</artifactId> <version>0.0.1-SNAPSHOT</version> <name>AICustomData</name> <description>Demo project for Spring Boot</description> <properties> <java.version>17</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <dependency> <groupId>org.springframework.experimental.ai</groupId> <artifactId>spring-ai-azure-openai-spring-boot-starter</artifactId> <version>0.7.0-SNAPSHOT</version> </dependency> <dependency> <groupId>com.azure</groupId> <artifactId>azure-search-documents</artifactId> <version>11.6.0-beta.10</version> <exclusions> <!-- exclude this to avoid changing the default serializer and the null-value behavior --> <exclusion> <groupId>com.azure</groupId> <artifactId>azure-core-serializer-json-jackson</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> <repositories> <repository> <id>spring-snapshots</id> <name>Spring Snapshots</name> <url>https://repo.spring.io/snapshot</url> <releases> <enabled>false</enabled> </releases> </repository> </repositories> </project>В папке src/main/java/com/example/aicustomdatademo откройте AiCustomDataApplication.java в предпочитаемом редакторе или интегрированной среде разработки и вставьте следующий код:
package com.example.aicustomdatademo; import java.util.Collections; import java.util.List; import java.util.Map; import java.util.Optional; import java.util.stream.Collectors; import org.springframework.ai.client.AiClient; import org.springframework.ai.document.Document; import org.springframework.ai.embedding.EmbeddingClient; import org.springframework.ai.prompt.Prompt; import org.springframework.ai.prompt.SystemPromptTemplate; import org.springframework.ai.prompt.messages.MessageType; import org.springframework.ai.prompt.messages.UserMessage; import org.springframework.ai.vectorstore.VectorStore; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.CommandLineRunner; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.annotation.Bean; import com.azure.core.credential.AzureKeyCredential; import com.azure.core.util.Context; import com.azure.search.documents.SearchClient; import com.azure.search.documents.SearchClientBuilder; import com.azure.search.documents.models.IndexingResult; import com.azure.search.documents.models.SearchOptions; import com.azure.search.documents.models.RawVectorQuery; import lombok.AllArgsConstructor; import lombok.NoArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.extern.jackson.Jacksonized; @SpringBootApplication public class AiCustomDataApplication implements CommandLineRunner { private static final String ROLE_INFO_KEY = "role"; private static final String template = """ You are a helpful assistant. Use the information from the DOCUMENTS section to augment answers. DOCUMENTS: {documents} """; @Value("${spring.ai.azure.cognitive-search.endpoint}") private String acsEndpoint; @Value("${spring.ai.azure.cognitive-search.api-key}") private String acsApiKey; @Value("${spring.ai.azure.cognitive-search.index}") private String acsIndexName; @Autowired private AiClient aiClient; @Autowired private EmbeddingClient embeddingClient; public static void main(String[] args) { SpringApplication.run(AiCustomDataApplication.class, args); } @Override public void run(String... args) throws Exception { System.out.println(String.format("Sending custom data prompt to Foundry Tool. One moment please...\r\n")); final var store = vectorStore(embeddingClient); final String question = "What are my available health plans?"; final var candidateDocs = store.similaritySearch(question); final var userMessage = new UserMessage(question); final String docPrompts = candidateDocs.stream().map(entry -> entry.getContent()).collect(Collectors.joining("\n")); final SystemPromptTemplate promptTemplate = new SystemPromptTemplate(template); final var systemMessage = promptTemplate.createMessage(Map.of("documents", docPrompts)); final var prompt = new Prompt(List.of(systemMessage, userMessage)); final var resps = aiClient.generate(prompt); System.out.println(String.format("Prompt created %d generated response(s).", resps.getGenerations().size())); resps.getGenerations().stream() .forEach(gen -> { final var role = gen.getInfo().getOrDefault(ROLE_INFO_KEY, MessageType.ASSISTANT.getValue()); System.out.println(String.format("Generated respose from \"%s\": %s", role, gen.getText())); }); } @Bean public VectorStore vectorStore(EmbeddingClient embeddingClient) { final SearchClient searchClient = new SearchClientBuilder() .endpoint(acsEndpoint) .credential(new AzureKeyCredential(acsApiKey)) .indexName(acsIndexName) .buildClient(); return new AzureCognitiveSearchVectorStore(searchClient, embeddingClient); } public static class AzureCognitiveSearchVectorStore implements VectorStore { private static final int DEFAULT_TOP_K = 4; private static final Double DEFAULT_SIMILARITY_THRESHOLD = 0.0; private SearchClient searchClient; private final EmbeddingClient embeddingClient; public AzureCognitiveSearchVectorStore(SearchClient searchClient, EmbeddingClient embeddingClient) { this.searchClient = searchClient; this.embeddingClient = embeddingClient; } @Override public void add(List<Document> documents) { final var docs = documents.stream().map(document -> { final var embeddings = embeddingClient.embed(document); return new DocEntry(document.getId(), "", document.getContent(), embeddings); }).toList(); searchClient.uploadDocuments(docs); } @Override public Optional<Boolean> delete(List<String> idList) { final List<DocEntry> docIds = idList.stream().map(id -> DocEntry.builder().id(id).build()) .toList(); var results = searchClient.deleteDocuments(docIds); boolean resSuccess = true; for (IndexingResult result : results.getResults()) if (!result.isSucceeded()) { resSuccess = false; break; } return Optional.of(resSuccess); } @Override public List<Document> similaritySearch(String query) { return similaritySearch(query, DEFAULT_TOP_K); } @Override public List<Document> similaritySearch(String query, int k) { return similaritySearch(query, k, DEFAULT_SIMILARITY_THRESHOLD); } @Override public List<Document> similaritySearch(String query, int k, double threshold) { final var searchQueryVector = new RawVectorQuery() .setVector(toFloatList(embeddingClient.embed(query))) .setKNearestNeighborsCount(k) .setFields("contentVector"); final var searchResults = searchClient.search(null, new SearchOptions().setVectorQueries(searchQueryVector), Context.NONE); return searchResults.stream() .filter(r -> r.getScore() >= threshold) .map(r -> { final DocEntry entry = r.getDocument(DocEntry.class); final Document doc = new Document(entry.getId(), entry.getContent(), Collections.emptyMap()); doc.setEmbedding(entry.getContentVector()); return doc; }) .collect(Collectors.toList()); } private List<Float> toFloatList(List<Double> doubleList) { return doubleList.stream().map(Double::floatValue).toList(); } } @Data @Builder @Jacksonized @AllArgsConstructor @NoArgsConstructor static class DocEntry { private String id; private String hash; private String content; private List<Double> contentVector; } }Это важно
Для рабочей среды используйте безопасный способ хранения и доступа к учетным данным, например Azure Key Vault. Дополнительные сведения о безопасности учетных данных см. в этой статье.
Вернитесь к корневой папке проекта и запустите приложение с помощью следующей команды:
./mvnw spring-boot:run
Выходные данные
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v3.1.5)
2023-11-07T14:40:45.250-06:00 INFO 18557 --- [ main] c.e.a.AiCustomDataApplication : No active profile set, falling back to 1 default profile: "default"
2023-11-07T14:40:46.035-06:00 INFO 18557 --- [ main] c.e.a.AiCustomDataApplication : Started AiCustomDataApplication in 1.095 seconds (process running for 1.397)
Sending custom data prompt to Foundry Tool. One moment please...
Prompt created 1 generated response(s).
Generated response from "assistant": The available health plans in the Contoso Electronics plan and benefit packages are the Northwind Health Plus and Northwind Standard plans.
Справочная документация | Исходный код | Пакет (npm) | Образцы
Предпосылки
Подписка Azure — создайте бесплатную учетную запись.
Azure CLI , используемый для проверки подлинности без пароля в локальной среде разработки, создайте необходимый контекст, выполнив вход с помощью Azure CLI.
Ресурс Azure OpenAI, развернутый в поддерживаемом регионе и с поддерживаемой моделью.
Убедитесь, что вы назначены на роль участника службы Cognitive Services, по крайней мере, для ресурса Azure OpenAI.
Скачайте примеры данных из GitHub , если у вас нет собственных данных.
Предварительные требования для идентификатора Microsoft Entra
Для рекомендуемой проверки подлинности без ключа с помощью идентификатора Microsoft Entra необходимо:
- Установите Azure CLI, используемый для проверки подлинности без ключа с помощью идентификатора Microsoft Entra.
- Назначьте роль
Cognitive Services Userсвоему аккаунту пользователя. Роли можно назначить в портале Azure в разделе Контроль доступа (IAM)>Добавить назначение ролей.
Добавление данных с помощью портала Microsoft Foundry
Подсказка
Кроме того, можно использовать интерфейс командной строки разработчика Azure для программного создания ресурсов, необходимых для Azure OpenAI On Your Data.
Чтобы добавить данные с помощью портала, выполните следующие действия.
-
Войдите в Microsoft Foundry. Убедитесь, что переключатель New Foundry отключен. Эти действия относятся к Foundry (классическая).
Выберите ресурс Azure OpenAI. Если у вас есть ресурс Foundry, можно создать проект Foundry.
В левой области выберите Площадки>Чат.
В панели настройки выберите развертывание модели.
Выберите "Добавить источник данных>".
На странице источника данных :
В разделе "Выбор источника данных" выберите " Отправить файлы (предварительная версия)".
Подсказка
- Для этого параметра требуется ресурс Azure Blob-хранилища и ресурс Azure AI Search для доступа и индексирования ваших данных. Дополнительные сведения см. в разделе "Параметры источника данных " и поддерживаемые типы файлов и форматы.
- Для документов и наборов данных с длинным текстом рекомендуется использовать скрипт подготовки данных.
Для Azure OpenAI требуется обмен ресурсами между источниками (CORS) для доступа к вашей учетной записи хранения. Если CORS еще не включен для ресурса хранилища BLOB-объектов Azure, нажмите кнопку "Включить CORS".
Выберите ресурс поиска ИИ Azure.
Введите имя нового индекса.
Установите флажок, который подтверждает последствия для выставления счетов при использовании службы Azure ИИ Поиск.
Нажмите кнопку Далее.
На странице "Отправка файлов ":
Выберите "Обзор файла" и выберите собственные данные или примеры данных, которые вы скачали из предварительных требований.
Щелкните Upload files (Передать файлы).
Нажмите кнопку Далее.
На странице управления данными :
Выберите, следует ли включить семантический поиск или векторный поиск индекса.
Это важно
- Семантический поиск и векторный поиск подвергаются дополнительным ценам. Ресурс поиска ИИ Azure должен находиться на уровне "Базовый" или выше, чтобы включить семантический поиск или векторный поиск. Дополнительные сведения см. в разделе "Выбор уровня " и "Ограничения службы".
- Чтобы повысить качество получения информации и ответа модели, рекомендуется включить семантический поиск на следующих языках источника данных: английский, французский, испанский, португальский, итальянский, итальянский, китайский(zh), японский, корейский, русский и арабский.
Нажмите кнопку Далее.
На странице подключения к данным :
Выберите, следует ли проходить проверку подлинности с помощью управляемого удостоверения, назначенного системой , или ключа API.
Нажмите кнопку Далее.
Просмотрите конфигурации и нажмите кнопку "Сохранить и закрыть".
Теперь вы можете общаться с моделью, которая использует данные для создания ответа.
Получение сведений о ресурсе
Чтобы проверить подлинность приложения с помощью ресурса Azure OpenAI, необходимо получить следующие сведения. В этом кратком руководстве предполагается, что вы отправили данные в учетную запись хранения BLOB-объектов Azure и создали индекс поиска ИИ Azure. См. статью "Добавление данных с помощью портала Microsoft Foundry".
| Имя переменной | Ценность |
|---|---|
AZURE_OPENAI_ENDPOINT |
Это значение можно найти в разделе "Ключи и конечная точка " при проверке ресурса Azure OpenAI на портале Azure. Пример конечной точки: https://my-resource.openai.azure.com. |
AZURE_OPENAI_DEPLOYMENT_NAME |
Это значение соответствует пользовательскому имени, выбранному для развертывания при развертывании модели. Это значение можно найти в разделе"Развертывания> ресурсами" на портале Azure. |
AZURE_AI_SEARCH_ENDPOINT |
Это значение можно найти в разделе "Обзор " при проверке ресурса поиска ИИ Azure на портале Azure. |
AZURE_AI_SEARCH_INDEX |
Это значение соответствует имени индекса, созданного для хранения данных. Его можно найти в разделе "Обзор" при изучении ресурса поиска ИИ Azure на портале Azure. |
Дополнительные сведения о бессерверной проверке подлинности и настройке переменных среды.
Настройка
Создайте новую папку
use-data-quickstartи перейдите в папку быстрого запуска, используя следующую команду:mkdir use-data-quickstart && cd use-data-quickstartСоздайте
package.jsonс помощью следующей команды:npm init -yУстановите клиентскую библиотеку OpenAI для JavaScript с помощью:
npm install openaiДля рекомендуемой аутентификации без пароля:
npm install @azure/identity
Добавление кода JavaScript
index.jsСоздайте файл со следующим кодом:const { DefaultAzureCredential, getBearerTokenProvider } = require("@azure/identity"); const { AzureOpenAI } = require("openai"); // Set the Azure and AI Search values from environment variables const endpoint = process.env.AZURE_OPENAI_ENDPOINT || "Your endpoint"; const searchEndpoint = process.env.AZURE_AI_SEARCH_ENDPOINT || "Your search endpoint"; const searchIndex = process.env.AZURE_AI_SEARCH_INDEX || "Your search index"; // keyless authentication const credential = new DefaultAzureCredential(); const scope = "https://cognitiveservices.azure.com/.default"; const azureADTokenProvider = getBearerTokenProvider(credential, scope); // Required Azure OpenAI deployment name and API version const deploymentName = process.env.AZURE_OPENAI_DEPLOYMENT_NAME || "gpt-4"; const apiVersion = process.env.OPENAI_API_VERSION || "2024-10-21"; function getClient() { return new AzureOpenAI({ endpoint, azureADTokenProvider, deployment: deploymentName, apiVersion, }); } async function main() { const client = getClient(); const messages = [ { role: "user", content: "What are my available health plans?" }, ]; console.log(`Message: ${messages.map((m) => m.content).join("\n")}`); const events = await client.chat.completions.create({ stream: true, messages: [ { role: "user", content: "What's the most common feedback we received from our customers about the product?", }, ], max_tokens: 128, model: "", data_sources: [ { type: "azure_search", parameters: { endpoint: searchEndpoint, index_name: searchIndex, authentication: { type: "api_key", key: searchKey, }, }, }, ], }); let response = ""; for await (const event of events) { for (const choice of event.choices) { const newText = choice.delta?.content; if (newText) { response += newText; // To see streaming results as they arrive, uncomment line below // console.log(newText); } } } console.log(response); } main().catch((err) => { console.error("The sample encountered an error:", err); });Войдите в Azure с помощью следующей команды:
az loginЗапустите файл JavaScript.
node index.js
Выходные данные
Message: What are my available health plans?
The available health plans in the Contoso Electronics plan and benefit packages are the Northwind Health Plus and Northwind Standard plans.
Справочная документация | Исходный код | Пакет (npm) | Образцы
Предпосылки
Подписка Azure — создайте бесплатную учетную запись.
Azure CLI , используемый для проверки подлинности без пароля в локальной среде разработки, создайте необходимый контекст, выполнив вход с помощью Azure CLI.
Ресурс Azure OpenAI, развернутый в поддерживаемом регионе и с поддерживаемой моделью.
Убедитесь, что вы назначены на роль участника службы Cognitive Services, по крайней мере, для ресурса Azure OpenAI.
Скачайте примеры данных из GitHub , если у вас нет собственных данных.
Предварительные требования для идентификатора Microsoft Entra
Для рекомендуемой проверки подлинности без ключа с помощью идентификатора Microsoft Entra необходимо:
- Установите Azure CLI, используемый для проверки подлинности без ключа с помощью идентификатора Microsoft Entra.
- Назначьте роль
Cognitive Services Userсвоему аккаунту пользователя. Роли можно назначить в портале Azure в разделе Контроль доступа (IAM)>Добавить назначение ролей.
Добавление данных с помощью портала Microsoft Foundry
Подсказка
Кроме того, можно использовать интерфейс командной строки разработчика Azure для программного создания ресурсов, необходимых для Azure OpenAI On Your Data.
Чтобы добавить данные с помощью портала, выполните следующие действия.
-
Войдите в Microsoft Foundry. Убедитесь, что переключатель New Foundry отключен. Эти действия относятся к Foundry (классическая).
Выберите ресурс Azure OpenAI. Если у вас есть ресурс Foundry, можно создать проект Foundry.
В левой области выберите Площадки>Чат.
В панели настройки выберите развертывание модели.
Выберите "Добавить источник данных>".
На странице источника данных :
В разделе "Выбор источника данных" выберите " Отправить файлы (предварительная версия)".
Подсказка
- Для этого параметра требуется ресурс Azure Blob-хранилища и ресурс Azure AI Search для доступа и индексирования ваших данных. Дополнительные сведения см. в разделе "Параметры источника данных " и поддерживаемые типы файлов и форматы.
- Для документов и наборов данных с длинным текстом рекомендуется использовать скрипт подготовки данных.
Для Azure OpenAI требуется обмен ресурсами между источниками (CORS) для доступа к вашей учетной записи хранения. Если CORS еще не включен для ресурса хранилища BLOB-объектов Azure, нажмите кнопку "Включить CORS".
Выберите ресурс поиска ИИ Azure.
Введите имя нового индекса.
Установите флажок, который подтверждает последствия для выставления счетов при использовании службы Azure ИИ Поиск.
Нажмите кнопку Далее.
На странице "Отправка файлов ":
Выберите "Обзор файла" и выберите собственные данные или примеры данных, которые вы скачали из предварительных требований.
Щелкните Upload files (Передать файлы).
Нажмите кнопку Далее.
На странице управления данными :
Выберите, следует ли включить семантический поиск или векторный поиск индекса.
Это важно
- Семантический поиск и векторный поиск подвергаются дополнительным ценам. Ресурс поиска ИИ Azure должен находиться на уровне "Базовый" или выше, чтобы включить семантический поиск или векторный поиск. Дополнительные сведения см. в разделе "Выбор уровня " и "Ограничения службы".
- Чтобы повысить качество получения информации и ответа модели, рекомендуется включить семантический поиск на следующих языках источника данных: английский, французский, испанский, португальский, итальянский, итальянский, китайский(zh), японский, корейский, русский и арабский.
Нажмите кнопку Далее.
На странице подключения к данным :
Выберите, следует ли проходить проверку подлинности с помощью управляемого удостоверения, назначенного системой , или ключа API.
Нажмите кнопку Далее.
Просмотрите конфигурации и нажмите кнопку "Сохранить и закрыть".
Теперь вы можете общаться с моделью, которая использует данные для создания ответа.
Получение сведений о ресурсе
Чтобы проверить подлинность приложения с помощью ресурса Azure OpenAI, необходимо получить следующие сведения. В этом кратком руководстве предполагается, что вы отправили данные в учетную запись хранения BLOB-объектов Azure и создали индекс поиска ИИ Azure. См. статью "Добавление данных с помощью портала Microsoft Foundry".
| Имя переменной | Ценность |
|---|---|
AZURE_OPENAI_ENDPOINT |
Это значение можно найти в разделе "Ключи и конечная точка " при проверке ресурса Azure OpenAI на портале Azure. Пример конечной точки: https://my-resource.openai.azure.com. |
AZURE_OPENAI_DEPLOYMENT_NAME |
Это значение соответствует пользовательскому имени, выбранному для развертывания при развертывании модели. Это значение можно найти в разделе"Развертывания> ресурсами" на портале Azure. |
AZURE_AI_SEARCH_ENDPOINT |
Это значение можно найти в разделе "Обзор " при проверке ресурса поиска ИИ Azure на портале Azure. |
AZURE_AI_SEARCH_INDEX |
Это значение соответствует имени индекса, созданного для хранения данных. Его можно найти в разделе "Обзор" при изучении ресурса поиска ИИ Azure на портале Azure. |
Дополнительные сведения о бессерверной проверке подлинности и настройке переменных среды.
Настройка
Создайте новую папку
use-data-quickstartи перейдите в папку быстрого запуска, используя следующую команду:mkdir use-data-quickstart && cd use-data-quickstartСоздайте
package.jsonс помощью следующей команды:npm init -yОбновите
package.jsonна ECMAScript с помощью следующей команды:npm pkg set type=moduleУстановите клиентскую библиотеку OpenAI для JavaScript с помощью:
npm install openaiДля рекомендуемой аутентификации без пароля:
npm install @azure/identity
Добавление кода TypeScript
index.tsСоздайте файл со следующим кодом:import { AzureOpenAI } from "openai"; import { DefaultAzureCredential, getBearerTokenProvider } from "@azure/identity"; import "@azure/openai/types"; // Set the Azure and AI Search values from environment variables const endpoint = process.env.AZURE_OPENAI_ENDPOINT || "Your endpoint"; const searchEndpoint = process.env.AZURE_AI_SEARCH_ENDPOINT || "Your search endpoint"; const searchIndex = process.env.AZURE_AI_SEARCH_INDEX || "Your search index"; // keyless authentication const credential = new DefaultAzureCredential(); const scope = "https://cognitiveservices.azure.com/.default"; const azureADTokenProvider = getBearerTokenProvider(credential, scope); // Required Azure OpenAI deployment name and API version const deploymentName = process.env.AZURE_OPENAI_DEPLOYMENT_NAME || "gpt-4"; const apiVersion = process.env.OPENAI_API_VERSION || "2024-07-01-preview"; function getClient(): AzureOpenAI { return new AzureOpenAI({ endpoint, azureADTokenProvider, deployment: deploymentName, apiVersion, }); } async function main() { const client = getClient(); const messages = [ { role: "user", content: "What are my available health plans?" }, ]; console.log(`Message: ${messages.map((m) => m.content).join("\n")}`); const events = await client.chat.completions.create({ stream: true, messages: [ { role: "user", content: "What's the most common feedback we received from our customers about the product?", }, ], max_tokens: 128, model: "", data_sources: [ { type: "azure_search", parameters: { endpoint: searchEndpoint, index_name: searchIndex, authentication: { type: "api_key", key: searchKey, }, }, }, ], }); let response = ""; for await (const event of events) { for (const choice of event.choices) { const newText = choice.delta?.content; if (newText) { response += newText; // To see streaming results as they arrive, uncomment line below // console.log(newText); } } } console.log(response); } main().catch((err) => { console.error("The sample encountered an error:", err); });tsconfig.jsonСоздайте файл для транспиля кода TypeScript и скопируйте следующий код для ECMAScript.{ "compilerOptions": { "module": "NodeNext", "target": "ES2022", // Supports top-level await "moduleResolution": "NodeNext", "skipLibCheck": true, // Avoid type errors from node_modules "strict": true // Enable strict type-checking options }, "include": ["*.ts"] }Транспилировать код с TypeScript на JavaScript.
tscВойдите в Azure с помощью следующей команды:
az loginВыполните следующую команду, чтобы запустить код:
node index.js
Это важно
Для рабочей среды используйте безопасный способ хранения и доступа к учетным данным, например Azure Key Vault. Дополнительные сведения о безопасности учетных данных см. в этой статье.
Выходные данные
Message: What are my available health plans?
The available health plans in the Contoso Electronics plan and benefit packages are the Northwind Health Plus and Northwind Standard plans.
Предпосылки
- Azure OpenAI
- Хранилище BLOB-объектов Azure
- Поиск по искусственному интеллекту Azure
-
Ресурс Azure OpenAI, развернутый в поддерживаемом регионе и с поддерживаемой моделью.
- Убедитесь, что вы назначены на роль участника службы Cognitive Services, по крайней мере, для ресурса Azure OpenAI.
- Скачайте примеры данных из GitHub , если у вас нет собственных данных.
Ссылка | Исходный код | Пакет (pypi) | Образцы
Эти ссылки ссылаются на API OpenAI для Python. Пакет SDK Для Python для OpenAI для Azure отсутствует. Узнайте, как переключаться между службами OpenAI и Azure OpenAI.
Добавление данных с помощью портала Microsoft Foundry
Подсказка
Кроме того, можно использовать интерфейс командной строки разработчика Azure для программного создания ресурсов, необходимых для Azure OpenAI On Your Data.
Чтобы добавить данные с помощью портала, выполните следующие действия.
-
Войдите в Microsoft Foundry. Убедитесь, что переключатель New Foundry отключен. Эти действия относятся к Foundry (классическая).
Выберите ресурс Azure OpenAI. Если у вас есть ресурс Foundry, можно создать проект Foundry.
В левой области выберите Площадки>Чат.
В панели настройки выберите развертывание модели.
Выберите "Добавить источник данных>".
На странице источника данных :
В разделе "Выбор источника данных" выберите " Отправить файлы (предварительная версия)".
Подсказка
- Для этого параметра требуется ресурс Azure Blob-хранилища и ресурс Azure AI Search для доступа и индексирования ваших данных. Дополнительные сведения см. в разделе "Параметры источника данных " и поддерживаемые типы файлов и форматы.
- Для документов и наборов данных с длинным текстом рекомендуется использовать скрипт подготовки данных.
Для Azure OpenAI требуется обмен ресурсами между источниками (CORS) для доступа к вашей учетной записи хранения. Если CORS еще не включен для ресурса хранилища BLOB-объектов Azure, нажмите кнопку "Включить CORS".
Выберите ресурс поиска ИИ Azure.
Введите имя нового индекса.
Установите флажок, который подтверждает последствия для выставления счетов при использовании службы Azure ИИ Поиск.
Нажмите кнопку Далее.
На странице "Отправка файлов ":
Выберите "Обзор файла" и выберите собственные данные или примеры данных, которые вы скачали из предварительных требований.
Щелкните Upload files (Передать файлы).
Нажмите кнопку Далее.
На странице управления данными :
Выберите, следует ли включить семантический поиск или векторный поиск индекса.
Это важно
- Семантический поиск и векторный поиск подвергаются дополнительным ценам. Ресурс поиска ИИ Azure должен находиться на уровне "Базовый" или выше, чтобы включить семантический поиск или векторный поиск. Дополнительные сведения см. в разделе "Выбор уровня " и "Ограничения службы".
- Чтобы повысить качество получения информации и ответа модели, рекомендуется включить семантический поиск на следующих языках источника данных: английский, французский, испанский, португальский, итальянский, итальянский, китайский(zh), японский, корейский, русский и арабский.
Нажмите кнопку Далее.
На странице подключения к данным :
Выберите, следует ли проходить проверку подлинности с помощью управляемого удостоверения, назначенного системой , или ключа API.
Нажмите кнопку Далее.
Просмотрите конфигурации и нажмите кнопку "Сохранить и закрыть".
Теперь вы можете общаться с моделью, которая использует данные для создания ответа.
Получение сведений о ресурсе
Чтобы проверить подлинность приложения с помощью ресурса Azure OpenAI, необходимо получить следующие сведения. В этом кратком руководстве предполагается, что вы отправили данные в учетную запись хранения BLOB-объектов Azure и создали индекс поиска ИИ Azure. См. статью "Добавление данных с помощью портала Microsoft Foundry".
| Имя переменной | Ценность |
|---|---|
AZURE_OPENAI_ENDPOINT |
Это значение можно найти в разделе "Ключи и конечная точка " при проверке ресурса Azure OpenAI на портале Azure. Пример конечной точки: https://my-resource.openai.azure.com. |
AZURE_OPENAI_DEPLOYMENT_NAME |
Это значение соответствует пользовательскому имени, выбранному для развертывания при развертывании модели. Это значение можно найти в разделе"Развертывания> ресурсами" на портале Azure. |
AZURE_AI_SEARCH_ENDPOINT |
Это значение можно найти в разделе "Обзор " при проверке ресурса поиска ИИ Azure на портале Azure. |
AZURE_AI_SEARCH_INDEX |
Это значение соответствует имени индекса, созданного для хранения данных. Его можно найти в разделе "Обзор" при изучении ресурса поиска ИИ Azure на портале Azure. |
Дополнительные сведения о бессерверной проверке подлинности и настройке переменных среды.
Создание среды Python
- Создайте новую папку с именем openai-python для проекта и новый файл кода Python с именем main.py. Перейдите в этот каталог:
mkdir openai-python
cd openai-python
- Установите следующие библиотеки Python:
pip install openai
pip install python-dotenv
Создание приложения Python
- В каталоге проекта откройте файл main.py и добавьте следующий код:
import os
import openai
import dotenv
dotenv.load_dotenv()
endpoint = os.environ.get("AZURE_OPENAI_ENDPOINT")
api_key = os.environ.get("AZURE_OPENAI_API_KEY")
deployment = os.environ.get("AZURE_OPENAI_DEPLOYMENT_NAME")
client = openai.AzureOpenAI(
azure_endpoint=endpoint,
api_key=api_key,
api_version="2024-10-21",
)
completion = client.chat.completions.create(
model=deployment,
messages=[
{
"role": "user",
"content": "What are my available health plans?",
},
],
extra_body={
"data_sources":[
{
"type": "azure_search",
"parameters": {
"endpoint": os.environ["AZURE_AI_SEARCH_ENDPOINT"],
"index_name": os.environ["AZURE_AI_SEARCH_INDEX"],
"authentication": {
"type": "api_key",
"key": os.environ["AZURE_AI_SEARCH_API_KEY"],
}
}
}
],
}
)
print(f"{completion.choices[0].message.role}: {completion.choices[0].message.content}")
Это важно
Для рабочей среды используйте безопасный способ хранения и доступа к учетным данным, например Azure Key Vault. Дополнительные сведения о безопасности учетных данных см. в этой статье.
- Выполните следующую команду:
python main.py
Приложение печатает ответ в формате JSON, подходящем для использования во многих сценариях. Он включает как ответы на запрос, так и ссылки из отправленных файлов.
Предпосылки
- Azure OpenAI
- Хранилище BLOB-объектов Azure
- Поиск по искусственному интеллекту Azure
-
Ресурс Azure OpenAI, развернутый в поддерживаемом регионе и с поддерживаемой моделью.
- Убедитесь, что вы назначены на роль участника службы Cognitive Services, по крайней мере, для ресурса Azure OpenAI.
- Скачайте примеры данных из GitHub , если у вас нет собственных данных.
Добавление данных с помощью портала Microsoft Foundry
Подсказка
Кроме того, можно использовать интерфейс командной строки разработчика Azure для программного создания ресурсов, необходимых для Azure OpenAI On Your Data.
Чтобы добавить данные с помощью портала, выполните следующие действия.
-
Войдите в Microsoft Foundry. Убедитесь, что переключатель New Foundry отключен. Эти действия относятся к Foundry (классическая).
Выберите ресурс Azure OpenAI. Если у вас есть ресурс Foundry, можно создать проект Foundry.
В левой области выберите Площадки>Чат.
В панели настройки выберите развертывание модели.
Выберите "Добавить источник данных>".
На странице источника данных :
В разделе "Выбор источника данных" выберите " Отправить файлы (предварительная версия)".
Подсказка
- Для этого параметра требуется ресурс Azure Blob-хранилища и ресурс Azure AI Search для доступа и индексирования ваших данных. Дополнительные сведения см. в разделе "Параметры источника данных " и поддерживаемые типы файлов и форматы.
- Для документов и наборов данных с длинным текстом рекомендуется использовать скрипт подготовки данных.
Для Azure OpenAI требуется обмен ресурсами между источниками (CORS) для доступа к вашей учетной записи хранения. Если CORS еще не включен для ресурса хранилища BLOB-объектов Azure, нажмите кнопку "Включить CORS".
Выберите ресурс поиска ИИ Azure.
Введите имя нового индекса.
Установите флажок, который подтверждает последствия для выставления счетов при использовании службы Azure ИИ Поиск.
Нажмите кнопку Далее.
На странице "Отправка файлов ":
Выберите "Обзор файла" и выберите собственные данные или примеры данных, которые вы скачали из предварительных требований.
Щелкните Upload files (Передать файлы).
Нажмите кнопку Далее.
На странице управления данными :
Выберите, следует ли включить семантический поиск или векторный поиск индекса.
Это важно
- Семантический поиск и векторный поиск подвергаются дополнительным ценам. Ресурс поиска ИИ Azure должен находиться на уровне "Базовый" или выше, чтобы включить семантический поиск или векторный поиск. Дополнительные сведения см. в разделе "Выбор уровня " и "Ограничения службы".
- Чтобы повысить качество получения информации и ответа модели, рекомендуется включить семантический поиск на следующих языках источника данных: английский, французский, испанский, португальский, итальянский, итальянский, китайский(zh), японский, корейский, русский и арабский.
Нажмите кнопку Далее.
На странице подключения к данным :
Выберите, следует ли проходить проверку подлинности с помощью управляемого удостоверения, назначенного системой , или ключа API.
Нажмите кнопку Далее.
Просмотрите конфигурации и нажмите кнопку "Сохранить и закрыть".
Теперь вы можете общаться с моделью, которая использует данные для создания ответа.
Получение сведений о ресурсе
Чтобы проверить подлинность приложения с помощью ресурса Azure OpenAI, необходимо получить следующие сведения. В этом кратком руководстве предполагается, что вы отправили данные в учетную запись хранения BLOB-объектов Azure и создали индекс поиска ИИ Azure. См. статью "Добавление данных с помощью портала Microsoft Foundry".
| Имя переменной | Ценность |
|---|---|
AZURE_OPENAI_ENDPOINT |
Это значение можно найти в разделе "Ключи и конечная точка " при проверке ресурса Azure OpenAI на портале Azure. Пример конечной точки: https://my-resource.openai.azure.com. |
AZURE_OPENAI_DEPLOYMENT_NAME |
Это значение соответствует пользовательскому имени, выбранному для развертывания при развертывании модели. Это значение можно найти в разделе"Развертывания> ресурсами" на портале Azure. |
AZURE_AI_SEARCH_ENDPOINT |
Это значение можно найти в разделе "Обзор " при проверке ресурса поиска ИИ Azure на портале Azure. |
AZURE_AI_SEARCH_INDEX |
Это значение соответствует имени индекса, созданного для хранения данных. Его можно найти в разделе "Обзор" при изучении ресурса поиска ИИ Azure на портале Azure. |
Дополнительные сведения о бессерверной проверке подлинности и настройке переменных среды.
Примеры команд PowerShell
Модели чата Azure OpenAI оптимизированы для работы с входными данными, отформатированными в виде беседы. Переменная messages передает массив словарей с разными ролями в беседе, очерченной системой, пользователем, инструментом и помощником. Переменная dataSources подключается к индексу Когнитивный поиск Azure и позволяет моделям Azure OpenAI реагировать с помощью данных.
Чтобы активировать ответ от модели, необходимо завершить сообщение пользователя, указывающее, что это очередь помощника, чтобы ответить.
Подсказка
Существует несколько параметров, которые можно использовать для изменения ответа модели, например temperature или top_p. Дополнительные сведения см. в справочной документации .
# Azure OpenAI metadata variables
$openai = @{
api_key = $Env:AZURE_OPENAI_API_KEY
api_base = $Env:AZURE_OPENAI_ENDPOINT # your endpoint should look like the following https://YOUR_RESOURCE_NAME.openai.azure.com/
api_version = '2023-07-01-preview' # this may change in the future
name = 'YOUR-DEPLOYMENT-NAME-HERE' #This will correspond to the custom name you chose for your deployment when you deployed a model.
}
$acs = @{
search_endpoint = 'YOUR ACS ENDPOINT' # your endpoint should look like the following https://YOUR_RESOURCE_NAME.search.windows.net/
search_key = 'YOUR-ACS-KEY-HERE' # or use the Get-Secret cmdlet to retrieve the value
search_index = 'YOUR-INDEX-NAME-HERE' # the name of your ACS index
}
# Completion text
$body = @{
dataSources = @(
@{
type = 'AzureCognitiveSearch'
parameters = @{
endpoint = $acs.search_endpoint
key = $acs.search_key
indexName = $acs.search_index
}
}
)
messages = @(
@{
role = 'user'
content = 'What are my available health plans?'
}
)
} | convertto-json -depth 5
# Header for authentication
$headers = [ordered]@{
'api-key' = $openai.api_key
}
# Send a completion call to generate an answer
$url = "$($openai.api_base)/openai/deployments/$($openai.name)/extensions/chat/completions?api-version=$($openai.api_version)"
$response = Invoke-RestMethod -Uri $url -Headers $headers -Body $body -Method Post -ContentType 'application/json'
return $response.choices.messages[1].content
Пример результата
The available health plans in the Contoso Electronics plan and benefit packages are the Northwind Health Plus and Northwind Standard plans.
Это важно
Для рабочей среды используйте безопасный способ хранения и доступа к учетным данным, таким как Управление секретами PowerShell с помощью Azure Key Vault. Дополнительные сведения о безопасности учетных данных см. в этой статье.
Чат с моделью с помощью веб-приложения
Чтобы начать чат с моделью Azure OpenAI, которая использует данные, можно развернуть веб-приложение с помощью портала Microsoft Foundry или примера кода, который мы предоставляем на GitHub. Это приложение развертывает с помощью службы приложений Azure и предоставляет пользовательский интерфейс для отправки запросов. Это приложение можно использовать с моделями Azure OpenAI, которые используют данные или модели, которые не используют данные. Ознакомьтесь с файлом readme в репозитории с инструкциями по требованиям, настройке и развертыванию. При необходимости можно настроить интерфейсную и серверную логику веб-приложения, внося изменения в исходный код.
Предпосылки
- Azure OpenAI
- Хранилище BLOB-объектов Azure
- Поиск по искусственному интеллекту Azure
-
Ресурс Azure OpenAI, развернутый в поддерживаемом регионе и с поддерживаемой моделью.
- Убедитесь, что вы назначены на роль участника службы Cognitive Services, по крайней мере, для ресурса Azure OpenAI.
- Скачайте примеры данных из GitHub , если у вас нет собственных данных.
Ссылка | Исходный код | Пакет (Go) | Образцы
Добавление данных с помощью портала Microsoft Foundry
Подсказка
Кроме того, можно использовать интерфейс командной строки разработчика Azure для программного создания ресурсов, необходимых для Azure OpenAI On Your Data.
Чтобы добавить данные с помощью портала, выполните следующие действия.
-
Войдите в Microsoft Foundry. Убедитесь, что переключатель New Foundry отключен. Эти действия относятся к Foundry (классическая).
Выберите ресурс Azure OpenAI. Если у вас есть ресурс Foundry, можно создать проект Foundry.
В левой области выберите Площадки>Чат.
В панели настройки выберите развертывание модели.
Выберите "Добавить источник данных>".
На странице источника данных :
В разделе "Выбор источника данных" выберите " Отправить файлы (предварительная версия)".
Подсказка
- Для этого параметра требуется ресурс Azure Blob-хранилища и ресурс Azure AI Search для доступа и индексирования ваших данных. Дополнительные сведения см. в разделе "Параметры источника данных " и поддерживаемые типы файлов и форматы.
- Для документов и наборов данных с длинным текстом рекомендуется использовать скрипт подготовки данных.
Для Azure OpenAI требуется обмен ресурсами между источниками (CORS) для доступа к вашей учетной записи хранения. Если CORS еще не включен для ресурса хранилища BLOB-объектов Azure, нажмите кнопку "Включить CORS".
Выберите ресурс поиска ИИ Azure.
Введите имя нового индекса.
Установите флажок, который подтверждает последствия для выставления счетов при использовании службы Azure ИИ Поиск.
Нажмите кнопку Далее.
На странице "Отправка файлов ":
Выберите "Обзор файла" и выберите собственные данные или примеры данных, которые вы скачали из предварительных требований.
Щелкните Upload files (Передать файлы).
Нажмите кнопку Далее.
На странице управления данными :
Выберите, следует ли включить семантический поиск или векторный поиск индекса.
Это важно
- Семантический поиск и векторный поиск подвергаются дополнительным ценам. Ресурс поиска ИИ Azure должен находиться на уровне "Базовый" или выше, чтобы включить семантический поиск или векторный поиск. Дополнительные сведения см. в разделе "Выбор уровня " и "Ограничения службы".
- Чтобы повысить качество получения информации и ответа модели, рекомендуется включить семантический поиск на следующих языках источника данных: английский, французский, испанский, португальский, итальянский, итальянский, китайский(zh), японский, корейский, русский и арабский.
Нажмите кнопку Далее.
На странице подключения к данным :
Выберите, следует ли проходить проверку подлинности с помощью управляемого удостоверения, назначенного системой , или ключа API.
Нажмите кнопку Далее.
Просмотрите конфигурации и нажмите кнопку "Сохранить и закрыть".
Теперь вы можете общаться с моделью, которая использует данные для создания ответа.
Предварительные требования для идентификатора Microsoft Entra
Для рекомендуемой проверки подлинности без ключа с помощью идентификатора Microsoft Entra необходимо:
- Установите Azure CLI, используемый для проверки подлинности без ключа с помощью идентификатора Microsoft Entra.
- Назначьте роль
Cognitive Services Userсвоему аккаунту пользователя. Роли можно назначить в портале Azure в разделе Контроль доступа (IAM)>Добавить назначение ролей.
Настройка
Создайте новую папку
dall-e-quickstartи перейдите в папку быстрого запуска, используя следующую команду:mkdir dall-e-quickstart && cd dall-e-quickstartДля рекомендуемой проверки подлинности без ключа с помощью идентификатора Microsoft Entra войдите в Azure с помощью следующей команды:
az login
Получение сведений о ресурсе
Чтобы проверить подлинность приложения с помощью ресурса Azure OpenAI, необходимо получить следующие сведения. В этом кратком руководстве предполагается, что вы отправили данные в учетную запись хранения BLOB-объектов Azure и создали индекс поиска ИИ Azure. См. статью "Добавление данных с помощью портала Microsoft Foundry".
| Имя переменной | Ценность |
|---|---|
AZURE_OPENAI_ENDPOINT |
Это значение можно найти в разделе "Ключи и конечная точка " при проверке ресурса Azure OpenAI на портале Azure. Пример конечной точки: https://my-resource.openai.azure.com. |
AZURE_OPENAI_DEPLOYMENT_NAME |
Это значение соответствует пользовательскому имени, выбранному для развертывания при развертывании модели. Это значение можно найти в разделе"Развертывания> ресурсами" на портале Azure. |
AZURE_AI_SEARCH_ENDPOINT |
Это значение можно найти в разделе "Обзор " при проверке ресурса поиска ИИ Azure на портале Azure. |
AZURE_AI_SEARCH_INDEX |
Это значение соответствует имени индекса, созданного для хранения данных. Его можно найти в разделе "Обзор" при изучении ресурса поиска ИИ Azure на портале Azure. |
Дополнительные сведения о бессерверной проверке подлинности и настройке переменных среды.
Выполните быстрый старт
Пример кода в этом кратком руководстве использует идентификатор Microsoft Entra для рекомендуемой проверки подлинности без ключей. Если вы предпочитаете использовать ключ API, вы можете заменить реализацию NewDefaultAzureCredential на NewKeyCredential.
azureOpenAIEndpoint := os.Getenv("AZURE_OPENAI_ENDPOINT")
credential, err := azidentity.NewDefaultAzureCredential(nil)
client, err := azopenai.NewClient(azureOpenAIEndpoint, credential, nil)
Чтобы запустить пример, выполните следующие действия:
Создайте файл с именем quickstart.go. Скопируйте следующий код в файл quickstart.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() { azureOpenAIEndpoint := os.Getenv("AZURE_OPENAI_ENDPOINT") credential, err := azidentity.NewDefaultAzureCredential(nil) client, err := azopenai.NewClient(azureOpenAIEndpoint, credential, nil) modelDeploymentID := os.Getenv("AZURE_OPENAI_DEPLOYMENT_NAME") // Azure AI Search configuration searchIndex := os.Getenv("AZURE_AI_SEARCH_INDEX") searchEndpoint := os.Getenv("AZURE_AI_SEARCH_ENDPOINT") searchAPIKey := os.Getenv("AZURE_AI_SEARCH_API_KEY") if modelDeploymentID == "" || azureOpenAIEndpoint == "" || searchIndex == "" || searchEndpoint == "" || searchAPIKey == "" { fmt.Fprintf(os.Stderr, "Skipping example, environment variables missing\n") return } client, err := azopenai.NewClientWithKeyCredential(azureOpenAIEndpoint, credential, nil) if err != nil { // Implement application specific error handling logic. log.Printf("ERROR: %s", err) return } resp, err := client.GetChatCompletions(context.TODO(), azopenai.ChatCompletionsOptions{ Messages: []azopenai.ChatRequestMessageClassification{ &azopenai.ChatRequestUserMessage{Content: azopenai.NewChatRequestUserMessageContent("What are my available health plans?")}, }, MaxTokens: to.Ptr[int32](512), AzureExtensionsOptions: []azopenai.AzureChatExtensionConfigurationClassification{ &azopenai.AzureSearchChatExtensionConfiguration{ // This allows Azure OpenAI to use an Azure AI Search index. // Answers are based on the model's pretrained knowledge // and the latest information available in the designated data source. Parameters: &azopenai.AzureSearchChatExtensionParameters{ Endpoint: &searchEndpoint, IndexName: &searchIndex, Authentication: &azopenai.OnYourDataAPIKeyAuthenticationOptions{ Key: &searchAPIKey, }, }, }, }, DeploymentName: &modelDeploymentID, }, nil) if err != nil { // Implement application specific error handling logic. log.Printf("ERROR: %s", err) return } fmt.Fprintf(os.Stderr, "Extensions Context Role: %s\nExtensions Context (length): %d\n", *resp.Choices[0].Message.Role, len(*resp.Choices[0].Message.Content)) fmt.Fprintf(os.Stderr, "ChatRole: %s\nChat content: %s\n", *resp.Choices[0].Message.Role, *resp.Choices[0].Message.Content, ) }Выполните следующую команду, чтобы создать новый модуль Go:
go mod init quickstart.goЗапустите
go mod tidy, чтобы установить необходимые зависимости:go mod tidyВыполните следующую команду, чтобы запустить пример:
go run quickstart.go
Приложение печатает ответ, включая ответы на запрос и ссылки из отправленных файлов.
Предпосылки
- Azure OpenAI
- Хранилище BLOB-объектов Azure
- Поиск по искусственному интеллекту Azure
-
Ресурс Azure OpenAI, развернутый в поддерживаемом регионе и с поддерживаемой моделью.
- Убедитесь, что вы назначены на роль участника службы Cognitive Services, по крайней мере, для ресурса Azure OpenAI.
- Скачайте примеры данных из GitHub , если у вас нет собственных данных.
Добавление данных с помощью портала Microsoft Foundry
Подсказка
Кроме того, можно использовать интерфейс командной строки разработчика Azure для программного создания ресурсов, необходимых для Azure OpenAI On Your Data.
Чтобы добавить данные с помощью портала, выполните следующие действия.
-
Войдите в Microsoft Foundry. Убедитесь, что переключатель New Foundry отключен. Эти действия относятся к Foundry (классическая).
Выберите ресурс Azure OpenAI. Если у вас есть ресурс Foundry, можно создать проект Foundry.
В левой области выберите Площадки>Чат.
В панели настройки выберите развертывание модели.
Выберите "Добавить источник данных>".
На странице источника данных :
В разделе "Выбор источника данных" выберите " Отправить файлы (предварительная версия)".
Подсказка
- Для этого параметра требуется ресурс Azure Blob-хранилища и ресурс Azure AI Search для доступа и индексирования ваших данных. Дополнительные сведения см. в разделе "Параметры источника данных " и поддерживаемые типы файлов и форматы.
- Для документов и наборов данных с длинным текстом рекомендуется использовать скрипт подготовки данных.
Для Azure OpenAI требуется обмен ресурсами между источниками (CORS) для доступа к вашей учетной записи хранения. Если CORS еще не включен для ресурса хранилища BLOB-объектов Azure, нажмите кнопку "Включить CORS".
Выберите ресурс поиска ИИ Azure.
Введите имя нового индекса.
Установите флажок, который подтверждает последствия для выставления счетов при использовании службы Azure ИИ Поиск.
Нажмите кнопку Далее.
На странице "Отправка файлов ":
Выберите "Обзор файла" и выберите собственные данные или примеры данных, которые вы скачали из предварительных требований.
Щелкните Upload files (Передать файлы).
Нажмите кнопку Далее.
На странице управления данными :
Выберите, следует ли включить семантический поиск или векторный поиск индекса.
Это важно
- Семантический поиск и векторный поиск подвергаются дополнительным ценам. Ресурс поиска ИИ Azure должен находиться на уровне "Базовый" или выше, чтобы включить семантический поиск или векторный поиск. Дополнительные сведения см. в разделе "Выбор уровня " и "Ограничения службы".
- Чтобы повысить качество получения информации и ответа модели, рекомендуется включить семантический поиск на следующих языках источника данных: английский, французский, испанский, португальский, итальянский, итальянский, китайский(zh), японский, корейский, русский и арабский.
Нажмите кнопку Далее.
На странице подключения к данным :
Выберите, следует ли проходить проверку подлинности с помощью управляемого удостоверения, назначенного системой , или ключа API.
Нажмите кнопку Далее.
Просмотрите конфигурации и нажмите кнопку "Сохранить и закрыть".
Теперь вы можете общаться с моделью, которая использует данные для создания ответа.
Получение сведений о ресурсе
Чтобы проверить подлинность приложения с помощью ресурса Azure OpenAI, необходимо получить следующие сведения. В этом кратком руководстве предполагается, что вы отправили данные в учетную запись хранения BLOB-объектов Azure и создали индекс поиска ИИ Azure. См. статью "Добавление данных с помощью портала Microsoft Foundry".
| Имя переменной | Ценность |
|---|---|
AZURE_OPENAI_ENDPOINT |
Это значение можно найти в разделе "Ключи и конечная точка " при проверке ресурса Azure OpenAI на портале Azure. Пример конечной точки: https://my-resource.openai.azure.com. |
AZURE_OPENAI_DEPLOYMENT_NAME |
Это значение соответствует пользовательскому имени, выбранному для развертывания при развертывании модели. Это значение можно найти в разделе"Развертывания> ресурсами" на портале Azure. |
AZURE_AI_SEARCH_ENDPOINT |
Это значение можно найти в разделе "Обзор " при проверке ресурса поиска ИИ Azure на портале Azure. |
AZURE_AI_SEARCH_INDEX |
Это значение соответствует имени индекса, созданного для хранения данных. Его можно найти в разделе "Обзор" при изучении ресурса поиска ИИ Azure на портале Azure. |
Дополнительные сведения о бессерверной проверке подлинности и настройке переменных среды.
Примеры команд cURL
Модели чата Azure OpenAI оптимизированы для работы с входными данными, отформатированными в виде беседы. Переменная messages передает массив словарей с разными ролями в беседе, очерченной системой, пользователем, инструментом и помощником. Переменная dataSources подключается к индексу поиска ИИ Azure и позволяет моделям Azure OpenAI реагировать с помощью данных.
Чтобы активировать ответ от модели, необходимо завершить сообщение пользователя, указывающее, что это очередь помощника, чтобы ответить.
Подсказка
Существует несколько параметров, которые можно использовать для изменения ответа модели, например temperature или top_p. Дополнительные сведения см. в справочной документации .
curl -i -X POST $AZURE_OPENAI_ENDPOINT/openai/deployments/$AZURE_OPENAI_DEPLOYMENT_NAME/chat/completions?api-version=2024-10-21 \
-H "Content-Type: application/json" \
-H "api-key: $AZURE_OPENAI_API_KEY" \
-d \
'
{
"data_sources": [
{
"type": "azure_search",
"parameters": {
"endpoint": "'$AZURE_AI_SEARCH_ENDPOINT'",
"index_name": "'$AZURE_AI_SEARCH_INDEX'",
"authentication": {
"type": "api_key",
"key": "'$AZURE_AI_SEARCH_API_KEY'"
}
}
}
],
"messages": [
{
"role": "user",
"content": "What are my available health plans?"
}
]
}
'
Пример результата
{
"id": "12345678-1a2b-3c4e5f-a123-12345678abcd",
"model": "gpt-4",
"created": 1709835345,
"object": "extensions.chat.completion",
"choices": [
{
"index": 0,
"finish_reason": "stop",
"message": {
"role": "assistant",
"content": "The available health plans in the Contoso Electronics plan and benefit packages are the Northwind Health Plus and Northwind Standard plans. [doc1].",
"end_turn": true,
"context": {
"citations": [
{
"content": "...",
"title": "...",
"url": "https://mysearch.blob.core.windows.net/xyz/001.txt",
"filepath": "001.txt",
"chunk_id": "0"
}
],
"intent": "[\"Available health plans\"]"
}
}
}
],
"usage": {
"prompt_tokens": 3779,
"completion_tokens": 105,
"total_tokens": 3884
},
"system_fingerprint": "fp_65792305e4"
}
Чат с моделью с помощью веб-приложения
Чтобы начать чат с моделью Azure OpenAI, которая использует данные, можно развернуть веб-приложение с помощью портала Microsoft Foundry или примера кода, который мы предоставляем на GitHub. Это приложение развертывает с помощью службы приложений Azure и предоставляет пользовательский интерфейс для отправки запросов. Это приложение можно использовать с моделями Azure OpenAI, которые используют данные или модели, которые не используют данные. Ознакомьтесь с файлом readme в репозитории с инструкциями по требованиям, настройке и развертыванию. При необходимости можно настроить интерфейсную и серверную логику веб-приложения, внося изменения в исходный код.
Очистите ресурсы
Если вы хотите очистить и удалить ресурс Azure OpenAI или azure AI Search, можно удалить ресурс или группу ресурсов. Удаление группы ресурсов также удаляет все другие ресурсы, связанные с ней.
Дальнейшие шаги
- Дополнительные сведения об использовании данных в Azure OpenAI в моделях Microsoft Foundry
- Пример кода приложения чата на GitHub.