Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Модели чата с поддержкой визуального распознавания — это большие многомодальные модели (LMM), разработанные OpenAI, которые могут анализировать изображения и предоставлять текстовые ответы на вопросы о них. Они включают как обработку естественного языка, так и визуальное понимание. Текущие модели с поддержкой визуализации — это модели рассуждения серии o, серии GPT-5, серии GPT-4.1, GPT-4.5, серии GPT-4o.
Модели с поддержкой визуального зрения могут отвечать на общие вопросы о том, что присутствует в отправленных изображениях.
Подсказка
Чтобы использовать модели с поддержкой компьютерного зрения, вызовите API завершения чата для поддерживаемой вами развернутой модели. Если вы не знакомы с API завершения чата, ознакомьтесь с руководством по чату с поддержкой визуального распознавания.
Быстрый старт
Начните использовать изображения в ваших чатах с помощью Azure OpenAI в моделях Майкрософт Foundry.
Используйте эту статью, чтобы приступить к использованию Майкрософт Foundry для развертывания и тестирования модели завершения чата с пониманием изображений.
Предпосылки
- Подписка Azure. Создайте его бесплатно.
- После получения подписки Azure создайте ресурс Azure OpenAI . Дополнительные сведения о создании ресурсов см. в руководстве по развертыванию ресурсов.
- Проект Foundry с ресурсом OpenAI Azure, добавленным в качестве подключения.
Подготовьте ваш носитель
Чтобы завершить это краткое руководство, вам нужно изображение. Вы можете использовать это изображение или любое другое доступное изображение.
Перейти к Foundry
Подсказка
Если у вас уже развернута модель с поддержкой визуального зрения, перейдите к разделу "Запуск сеанса чата" для анализа изображений.
- Перейдите к Foundry и войдите с учетными данными, связанными с ресурсом OpenAI Azure. Во время или после процесса входа выберите соответствующий каталог, подписку Azure и ресурс Azure OpenAI.
- Выберите проект, в который вы хотите работать.
- В меню навигации слева выберите "Модели + конечные точки" и нажмите кнопку "Развернуть модель".
- Выберите развертывание с поддержкой образа, выбрав имя модели: gpt-4o или gpt-4o-mini. В появившемся окне выберите имя и тип развертывания. Убедитесь, что ресурс OpenAI подключен к Azure. Дополнительные сведения о развертывании моделей см. в руководстве по развертыванию ресурсов.
- Выберите «Развернуть».
- Затем выберите новую модель и нажмите кнопку "Открыть на детской площадке". В игровой площадке чата в раскрывающемся списке Развертывание должно быть выбрано созданное вами развертывание.
Playground
В этом сеансе чата вы указываете помощнику помочь вам в понимании входных изображений.
Общие сведения о настройке помощника, сеансах чата, параметрах и панелях см. в кратком руководстве по чату.
Запуск сеанса чата для анализа изображений
В этом сеансе чата вы указываете помощнику помочь в понимании вводимых изображений.
Чтобы начать, убедитесь, что в раскрывающемся списке развертывания выбрано развертывание с поддержкой изображений.
В текстовом поле контекста на панели установки укажите этот запрос, чтобы помочь помощнику:
"You're an AI assistant that helps people find information."Или вы можете настроить запрос на изображение или сценарий.Замечание
Мы рекомендуем обновить системное сообщение для конкретной задачи, чтобы избежать ненужных ответов от модели.
Нажмите кнопку "Применить изменения" , чтобы сохранить изменения.
В области сеансов чата нажмите кнопку вложения и отправьте изображение. Выберите изображение.
Добавьте следующий запрос в поле чата:
Describe this imageи выберите значок отправки.Значок отправки заменяется кнопкой остановки. Если выбрать его, помощник перестает обрабатывать запрос. В этом кратком руководстве позвольте помощнику завершить ответ.
Помощник отвечает с описанием изображения.
Задайте следующий вопрос, связанный с анализом изображения. Вы можете ввести,
"What should I highlight about this image to my insurance company?".Вы должны получить соответствующий ответ, аналогичный приведенному здесь:
When reporting the incident to your insurance company, you should highlight the following key points from the image: 1. **Location of Damage**: Clearly state that the front end of the car, particularly the driver's side, is damaged. Mention the crumpled hood, broken front bumper, and the damaged left headlight. 2. **Point of Impact**: Indicate that the car has collided with a guardrail, which may suggest that no other vehicles were involved in the accident. 3. **Condition of the Car**: Note that the damage seems to be concentrated on the front end, and there is no visible damage to the windshield or rear of the car from this perspective. 4. **License Plate Visibility**: Mention that the license plate is intact and can be used for identification purposes. 5. **Environment**: Report that the accident occurred near a roadside with a guardrail, possibly in a rural or semi-rural area, which might help in establishing the accident location and context. 6. **Other Observations**: If there were any other circumstances or details not visible in the image that may have contributed to the accident, such as weather conditions, road conditions, or any other relevant information, be sure to include those as well. Remember to be factual and descriptive, avoiding speculation about the cause of the accident, as the insurance company will conduct its own investigation.
Просмотр и экспорт кода
В любой момент в сеансе чата можно включить переключатель Show raw JSON в верхней части окна чата, чтобы просмотреть беседу в формате JSON. Вот как выглядит в начале сеанса чата быстрого запуска:
[
{
"role": "system",
"content": [
"You are an AI assistant that helps people find information."
]
},
]
Очистите ресурсы
Если вы хотите очистить и удалить ресурс Azure OpenAI, вы можете удалить сам ресурс или группу ресурсов. Удаление группы ресурсов также удаляет все другие ресурсы, связанные с ней.
Используйте эту статью, чтобы приступить к работе с Azure REST API OpenAI для развертывания и использования моделей чата с поддержкой визуального распознавания.
Предпосылки
- Подписка Azure. Создайте его бесплатно.
- Python версии 3.8 или более поздней.
- Следующие библиотеки Python:
requests,json. - Ресурс Azure OpenAI в Майкрософт Foundry Models с развернутой моделью, поддерживающей обработку визуальной информации. Сведения о доступности модели см. в разделе "Доступность модели " для доступных регионов. Дополнительные сведения о создании ресурсов см. в руководстве по развертыванию ресурсов.
Замечание
В настоящее время отключение контентной фильтрации для модели GPT-4 Turbo Vision не поддерживается.
Получение ключа и конечной точки
Чтобы успешно вызвать API-интерфейсы OpenAI Azure, вам потребуется следующая информация о ресурсе OpenAI Azure:
| Variable | Имя. | Ценность |
|---|---|---|
| Конечная точка | api_base |
Значение конечной точки находится в разделе Keys and Endpoint для ресурса на портале Azure. Вы также можете найти конечную точку на странице "Развертывания" на портале Foundry. Пример конечной точки: https://docs-test-001.openai.azure.com/. |
| Ключ | api_key |
Значение ключа также находится в разделе Ключи и Конечная точка для вашего ресурса на портале Azure. Azure создает два ключа для ресурса. Можно использовать любое значение. |
Перейдите к ресурсу на портале Azure. На панели навигации выберите "Ключи" и "Конечная точка " в разделе "Управление ресурсами". Скопируйте значение конечной точки и значение ключа доступа. Вы можете использовать либо значение KEY 1, либо KEY 2. Наличие двух ключей позволяет безопасно поворачивать и повторно создавать ключи без нарушения работы службы.
Создание нового приложения Python
Создайте файл Python с именем quickstart.py. Откройте новый файл в предпочтительном редакторе или интегрированной среде разработки.
Замените содержимое quickstart.py следующим кодом.
# Packages required: import requests import json api_base = '<your_azure_openai_endpoint>' deployment_name = '<your_deployment_name>' API_KEY = '<your_azure_openai_key>' base_url = f"{api_base}openai/deployments/{deployment_name}" headers = { "Content-Type": "application/json", "api-key": API_KEY } # Prepare endpoint, headers, and request body endpoint = f"{base_url}/chat/completions?api-version=2023-12-01-preview" data = { "messages": [ { "role": "system", "content": "You are a helpful assistant." }, { "role": "user", "content": [ { "type": "text", "text": "Describe this picture:" }, { "type": "image_url", "image_url": { "url": "<image URL>" } } ] } ], "max_tokens": 2000 } # Make the API call response = requests.post(endpoint, headers=headers, data=json.dumps(data)) print(f"Status Code: {response.status_code}") print(response.text)Внесите следующие изменения:
- Введите URL-адрес конечной точки и ключ в соответствующих полях.
- Введите имя развертывания модели в соответствующем поле.
- Измените значение
"image"поля на общедоступный URL-адрес изображения.Подсказка
Кроме того, вместо URL-адреса можно использовать данные изображения в кодировке base 64. Дополнительные сведения см. в руководстве по чатам Vision.
Запустите приложение, выполнив команду
python:python quickstart.py
Очистите ресурсы
Если вы хотите удалить ресурс Azure OpenAI, вы можете удалить сам ресурс или ресурсную группу. Удаление группы ресурсов также удаляет все другие ресурсы, связанные с ней.
Используйте эту статью, чтобы приступить к использованию пакета SDK Azure Python OpenAI для развертывания и использования модели чата с поддержкой визуального распознавания.
Исходный код библиотеки | Пакет (PyPi) |
Предпосылки
- Подписка Azure. Создайте его бесплатно.
- Python версии 3.8 или более поздней.
- Ресурс Azure OpenAI в Майкрософт Foundry Models с развернутой моделью чата с поддержкой визуального зрения. Сведения о доступности модели см. в разделе "Доступность модели " для доступных регионов. Дополнительные сведения о создании ресурсов см. в руководстве по развертыванию ресурсов.
предварительные требования Microsoft Entra ID
Для рекомендуемой проверки подлинности без ключа с помощью Microsoft Entra ID необходимо:
- Установите Azure CLI, который используется для аутентификации без использования ключей с Microsoft Entra ID.
- Назначьте роль
Cognitive Services Userсвоему аккаунту пользователя. Роли можно назначить на портале Azure в разделе Access control (IAM)>Add role assignment.
Настройка
Установите клиентская библиотека OpenAI Python с помощью:
pip install openai
Замечание
Эта библиотека поддерживается OpenAI. Ознакомьтесь с историей выпусков, чтобы отслеживать последние обновления библиотеки.
Получение ключа и конечной точки
Чтобы успешно вызвать Azure OpenAI, требуется endpoint и key.
| Имя переменной | Ценность |
|---|---|
ENDPOINT |
Конечная точка службы находится в разделе https://docs-test-001.openai.azure.com/. |
API-KEY |
Это значение можно найти в разделе KEY1 или KEY2. |
Перейдите к ресурсу на портале Azure. Раздел "Ключи и конечная точка " можно найти в разделе "Управление ресурсами". Скопируйте конечную точку и ключ доступа, так как они потребуются для проверки подлинности вызовов API. Вы можете использовать KEY1 или KEY2. Наличие двух ключей позволяет безопасно менять и повторно создавать ключи без прерывания работы службы.
Переменные среды
Создайте и назначьте переменные постоянной среды для ключа и конечной точки.
Это важно
Мы рекомендуем Microsoft Entra ID проверку подлинности с помощью управляемых удостоверений для ресурсов Azure, чтобы избежать хранения учетных данных в приложениях, работающих в облаке.
Используйте ключи API с осторожностью. Не включайте ключ API непосредственно в код и никогда не публикуйте его. При использовании ключей API безопасно храните их в Azure Key Vault, регулярно поворачивайте ключи и ограничивайте доступ к Azure Key Vault с помощью управления доступом на основе ролей и ограничений доступа к сети. Дополнительные сведения об использовании ключей API в приложениях см. в разделе Ключи API и Azure Key Vault.
Дополнительные сведения о безопасности служб ИИ см. в разделе Аутентификация запросов для служб Azure AI.
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 следующим кодом.
import os from openai import AzureOpenAI api_base = os.getenv("AZURE_OPENAI_ENDPOINT") api_key= os.getenv("AZURE_OPENAI_API_KEY") deployment_name = '<your_deployment_name>' api_version = '2023-12-01-preview' # this might change in the future client = AzureOpenAI( api_key=api_key, api_version=api_version, base_url=f"{api_base}/openai/deployments/{deployment_name}" ) response = client.chat.completions.create( model=deployment_name, messages=[ { "role": "system", "content": "You are a helpful assistant." }, { "role": "user", "content": [ { "type": "text", "text": "Describe this picture:" }, { "type": "image_url", "image_url": { "url": "<image URL>" } } ] } ], max_tokens=2000 ) print(response)Внесите следующие изменения:
- Убедитесь, что заданы переменные среды
AZURE_OPENAI_ENDPOINTиAZURE_OPENAI_API_KEY. - Введите имя развертывания модели в переменной
deployment_name. - Измените значение
"url"поля на общедоступный URL-адрес изображения.Подсказка
Кроме того, вместо URL-адреса можно использовать данные изображения в кодировке base 64. Дополнительные сведения см. в руководстве по чатам Vision.
- Убедитесь, что заданы переменные среды
Запустите приложение, выполнив команду
python:python quickstart.py
Это важно
Используйте ключи API с осторожностью. Не включайте ключ API непосредственно в код и никогда не публикуйте его. Если вы используете ключ API, сохраните его безопасно в Azure Key Vault. Дополнительные сведения об использовании ключей API в приложениях см. в разделе Ключи API и Azure Key Vault.
Дополнительные сведения о безопасности служб ИИ см. в разделе Аутентификация запросов для служб Azure AI.
Очистите ресурсы
Если вы хотите удалить ресурс Azure OpenAI, вы можете удалить сам ресурс или ресурсную группу. Удаление группы ресурсов также удаляет все другие ресурсы, связанные с ней.
Используйте эту статью, чтобы приступить к работе с пакетом SDK Для OpenAI JavaScript для развертывания и использования модели чата с поддержкой визуального распознавания.
Этот пакет SDK предоставляется OpenAI, а определенные типы предоставляются Azure.
документация ссылкиДокументация по ссылкам | Исходный код библиотеки | Пакет (npm) | Примеры
Предпосылки
- Подписка Azure — Создайте бесплатно
- Версии Node.js LTS
- Azure CLI используется для проверки подлинности без пароля в локальной среде разработки, создайте необходимый контекст, выполнив вход с помощью Azure CLI.
- Ресурс OpenAI Azure, созданный в поддерживаемом регионе (см. Регион доступности). Дополнительные сведения см. в разделе Создание ресурса и развертывание модели с помощью Azure OpenAI.
Замечание
Эта библиотека поддерживается OpenAI. Ознакомьтесь с историей выпусков, чтобы отслеживать последние обновления библиотеки.
предварительные требования Microsoft Entra ID
Для рекомендуемой проверки подлинности без ключа с помощью Microsoft Entra ID необходимо:
- Установите Azure CLI, который используется для аутентификации без использования ключей с Microsoft Entra ID.
- Назначьте роль
Cognitive Services Userсвоему аккаунту пользователя. Роли можно назначить на портале Azure в разделе Access control (IAM)>Add role assignment.
Настройка
Создайте новую папку
vision-quickstartи перейдите в папку быстрого запуска, используя следующую команду:mkdir vision-quickstart && cd vision-quickstartСоздайте
package.jsonс помощью следующей команды:npm init -yУстановите клиентскую библиотеку OpenAI для JavaScript с помощью:
npm install openaiДля рекомендуемой аутентификации без пароля:
npm install @azure/identity
Получение сведений о ресурсе
Чтобы проверить подлинность приложения с помощью ресурса OpenAI Azure, необходимо получить следующие сведения:
| Имя переменной | Ценность |
|---|---|
AZURE_OPENAI_ENDPOINT |
Это значение можно найти в разделе Keys и Endpoint при изучении ресурса на портале Azure. |
AZURE_OPENAI_DEPLOYMENT_NAME |
Это значение будет соответствовать пользовательскому имени, которое вы выбрали при развертывании модели. Это значение можно найти в разделе Resource Management>Model Deployments на портале Azure. |
Дополнительные сведения о бессерверной проверке подлинности и настройке переменных среды.
Предостережение
Чтобы использовать рекомендуемую проверку подлинности без ключа с пакетом SDK, убедитесь, что AZURE_OPENAI_API_KEY переменная среды не задана.
Создание нового приложения JavaScript для запросов изображений
Выберите изображение из azure-samples/cognitive-services-sample-data-files. Введите общедоступный URL-адрес изображения в коде ниже или задайте для нее IMAGE_URL переменную среды.
Это важно
Если вы используете URL-адрес SAS для изображения, хранящегося в хранилище объектов BLOB Azure, вам нужно включить управляемое удостоверение и назначить роль Storage Blob Reader ресурсу Azure OpenAI (сделайте это на портале Azure). Это позволяет модели получать доступ к изображению в хранилище blob.
Подсказка
Кроме того, вместо URL-адреса можно использовать данные изображения в кодировке base 64. Дополнительные сведения см. в руководстве по чатам Vision.
index.jsСоздайте файл со следующим кодом:const AzureOpenAI = require('openai').AzureOpenAI; 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 || "Your endpoint"; const imageUrl = process.env.IMAGE_URL || "<image url>"; // Required Azure OpenAI deployment name and API version const apiVersion = process.env.OPENAI_API_VERSION || "2024-07-01-preview"; const deploymentName = process.env.AZURE_OPENAI_DEPLOYMENT_NAME || "gpt-4-with-turbo"; // keyless authentication const credential = new DefaultAzureCredential(); const scope = "https://ai.azure.com/.default"; const azureADTokenProvider = getBearerTokenProvider(credential, scope); function getClient(): AzureOpenAI { return new AzureOpenAI({ endpoint, azureADTokenProvider, apiVersion, deployment: deploymentName, }); } function createMessages() { return { messages: [ { role: "system", content: "You are a helpful assistant." }, { role: "user", content: [ { type: "text", text: "Describe this picture:", }, { type: "image_url", image_url: { url: imageUrl, }, }, ], }, ], model: "", max_tokens: 2000, }; } async function printChoices(completion) { for (const choice of completion.choices) { console.log(choice.message); } } export async function main() { console.log("== Get Vision chats Sample =="); const client = getClient(); const messages = createMessages(); const completion = await client.chat.completions.create(messages); await printChoices(completion); } main().catch((err) => { console.error("Error occurred:", err); });Войдите в Azure с помощью следующей команды:
az loginЗапустите файл JavaScript.
node index.js
Очистите ресурсы
Если вы хотите удалить ресурс Azure OpenAI, вы можете удалить сам ресурс или ресурсную группу. Удаление группы ресурсов также удаляет все другие ресурсы, связанные с ней.
Используйте эту статью, чтобы приступить к работе с пакетом SDK Для OpenAI JavaScript для развертывания и использования модели чата с поддержкой визуального распознавания.
Этот пакет SDK предоставляется OpenAI, а определенные типы предоставляются Azure.
документация ссылкиДокументация по ссылкам | Исходный код библиотеки | Пакет (npm) | Примеры
Предпосылки
- Подписка Azure — Создайте бесплатно
- Версии Node.js LTS
- TypeScript
- Azure CLI используется для проверки подлинности без пароля в локальной среде разработки, создайте необходимый контекст, выполнив вход с помощью Azure CLI.
- Ресурс OpenAI Azure, созданный в поддерживаемом регионе (см. Регион доступности). Дополнительные сведения см. в разделе Создание ресурса и развертывание модели с помощью Azure OpenAI.
Замечание
Эта библиотека поддерживается OpenAI. Ознакомьтесь с историей выпусков, чтобы отслеживать последние обновления библиотеки.
предварительные требования Microsoft Entra ID
Для рекомендуемой проверки подлинности без ключа с помощью Microsoft Entra ID необходимо:
- Установите Azure CLI, который используется для аутентификации без использования ключей с Microsoft Entra ID.
- Назначьте роль
Cognitive Services Userсвоему аккаунту пользователя. Роли можно назначить на портале Azure в разделе Access control (IAM)>Add role assignment.
Настройка
Создайте новую папку
vision-quickstartи перейдите в папку быстрого запуска, используя следующую команду:mkdir vision-quickstart && cd vision-quickstartСоздайте
package.jsonс помощью следующей команды:npm init -yОбновите
package.jsonна ECMAScript с помощью следующей команды:npm pkg set type=moduleУстановите клиентскую библиотеку OpenAI для JavaScript с помощью:
npm install openaiДля рекомендуемой аутентификации без пароля:
npm install @azure/identity
Получение сведений о ресурсе
Чтобы проверить подлинность приложения с помощью ресурса OpenAI Azure, необходимо получить следующие сведения:
| Имя переменной | Ценность |
|---|---|
AZURE_OPENAI_ENDPOINT |
Это значение можно найти в разделе Keys и Endpoint при изучении ресурса на портале Azure. |
AZURE_OPENAI_DEPLOYMENT_NAME |
Это значение будет соответствовать пользовательскому имени, которое вы выбрали при развертывании модели. Это значение можно найти в разделе Resource Management>Model Deployments на портале Azure. |
Дополнительные сведения о бессерверной проверке подлинности и настройке переменных среды.
Предостережение
Чтобы использовать рекомендуемую проверку подлинности без ключа с пакетом SDK, убедитесь, что AZURE_OPENAI_API_KEY переменная среды не задана.
Создание нового приложения JavaScript для запросов изображений
Выберите изображение из azure-samples/cognitive-services-sample-data-files. Используйте URL-адрес изображения в приведенном ниже коде или задайте переменную среды IMAGE_URL значением URL-адреса изображения.
Подсказка
Кроме того, вместо URL-адреса можно использовать данные изображения в кодировке base 64. Дополнительные сведения см. в руководстве по чатам Vision.
index.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 || "Your endpoint"; const imageUrl = process.env["IMAGE_URL"] || "<image url>"; // Required Azure OpenAI deployment name and API version const apiVersion = process.env.OPENAI_API_VERSION || "2024-07-01-preview"; const deploymentName = process.env.AZURE_OPENAI_DEPLOYMENT_NAME || "gpt-4-with-turbo"; // keyless authentication const credential = new DefaultAzureCredential(); const scope = "https://ai.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: [ { type: "text", text: "Describe this picture:", }, { type: "image_url", image_url: { url: imageUrl, }, }, ], }, ], model: "", max_tokens: 2000, }; } async function printChoices(completion: ChatCompletion): Promise<void> { for (const choice of completion.choices) { console.log(choice.message); } } export async function main() { console.log("== Get Vision chat Sample =="); const client = getClient(); const messages = createMessages(); const completion = await client.chat.completions.create(messages); await printChoices(completion); } main().catch((err) => { console.error("Error occurred:", 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 OpenAI, вы можете удалить сам ресурс или группу ресурсов. Удаление группы ресурсов также удаляет все другие ресурсы, связанные с ней.
Используйте эту статью, чтобы приступить к работе с пакетом SDK Azure .NET OpenAI для развертывания и использования модели чата с поддержкой визуального распознавания.
Предпосылки
- Подписка Azure. Вы можете создать бесплатную учетную запись.
- .NET пакет SDK 8.0
- Ресурс Azure OpenAI в Майкрософт Foundry Models с развернутой моделью чата, оснащенной возможностью визуального распознавания. Сведения о доступности модели см. в разделе "Доступность модели " для доступных регионов. Дополнительные сведения о создании ресурсов см. в руководстве по развертыванию ресурсов.
предварительные требования Microsoft Entra ID
Для рекомендуемой проверки подлинности без ключа с помощью Microsoft Entra ID необходимо:
- Установите Azure CLI, который используется для безключевой аутентификации с Microsoft Entra ID.
- Назначьте роль
Cognitive Services Userсвоему аккаунту пользователя. Роли можно назначить на портале Azure в разделе Access control (IAM)>Add role assignment.
Настройка
Создайте новую папку
vision-quickstartи перейдите в папку быстрого запуска, используя следующую команду:mkdir vision-quickstart && cd vision-quickstartСоздайте консольное приложение со следующей командой:
dotnet new consoleУстановите библиотеку клиента OpenAI .NET с помощью команды dotnet add package:
dotnet add package Azure.AI.OpenAIДля рекомендуемой безключевой аутентификации с Microsoft Entra ID установите пакет Azure.Identity командой:
dotnet add package Azure.IdentityДля рекомендуемой аутентификации без ключа с помощью Microsoft Entra ID выполните вход в Azure с помощью следующей команды:
az login
Получение сведений о ресурсе
Чтобы проверить подлинность приложения с помощью ресурса OpenAI Azure, необходимо получить следующие сведения:
| Имя переменной | Ценность |
|---|---|
AZURE_OPENAI_ENDPOINT |
Это значение можно найти в разделе Keys и Endpoint при изучении ресурса на портале Azure. |
AZURE_OPENAI_DEPLOYMENT_NAME |
Это значение будет соответствовать пользовательскому имени, которое вы выбрали при развертывании модели. Это значение можно найти в разделе Resource Management>Model Deployments на портале Azure. |
Дополнительные сведения о бессерверной проверке подлинности и настройке переменных среды.
Выполните быстрый старт
Пример кода в этом кратком руководстве использует Microsoft Entra ID для рекомендуемой проверки подлинности без ключей. Если вы предпочитаете использовать ключ API, можно заменить DefaultAzureCredential объект AzureKeyCredential объектом.
AzureOpenAIClient openAIClient = new AzureOpenAIClient(new Uri(endpoint), new DefaultAzureCredential());
Чтобы запустить быстрый старт, выполните следующие действия.
Замените содержимое
Program.csследующим кодом и обновите заполнительные значения на собственные.using Azure; using Azure.AI.OpenAI; using Azure.Identity; using OpenAI.Chat; // Required for Passwordless auth string deploymentName = "gpt-4"; string endpoint = Environment.GetEnvironmentVariable("AZURE_OPENAI_ENDPOINT") ?? "https://<your-resource-name>.openai.azure.com/"; string key = Environment.GetEnvironmentVariable("AZURE_OPENAI_API_KEY") ?? "<your-key>"; // Use the recommended keyless credential instead of the AzureKeyCredential credential. AzureOpenAIClient openAIClient = new AzureOpenAIClient(new Uri(endpoint), new DefaultAzureCredential()); //AzureOpenAIClient openAIClient = new AzureOpenAIClient(new Uri(endpoint), new AzureKeyCredential(key)); var chatClient = openAIClient.GetChatClient(deploymentName); var imageUrl = "YOUR_IMAGE_URL"; var textPart = ChatMessageContentPart.CreateTextPart("Describe this picture:"); var imgPart = ChatMessageContentPart.CreateImagePart(imageUrl); var chatMessages = new List<ChatMessage> { new SystemChatMessage("You are a helpful assistant."), new UserChatMessage(textPart, imgPart) }; ChatCompletion chatCompletion = await chatClient.CompleteChatAsync(chatMessages); Console.WriteLine($"[ASSISTANT]:"); Console.WriteLine($"{chatCompletion.Content[0].Text}");Замените
YOUR_IMAGE_URLобщедоступным изображением, которое вы хотите отправить.Запустите приложение с помощью команды
dotnet runили кнопки запуска в верхней части Visual Studio:dotnet run
Выходные данные
Выходные данные приложения будут описанием изображения, предоставленного в переменной imageUri . Помощник анализирует изображение и предоставляет подробное описание на основе его содержимого.
Очистите ресурсы
Если вы хотите очистить и удалить ресурс Azure OpenAI, можно удалить ресурс или группу ресурсов. Удаление группы ресурсов также удаляет все другие ресурсы, связанные с ней.
Сведения об API
В следующих командах показано, как вызвать API завершения чата с моделями с поддержкой визуального распознавания. Дополнительные сведения см. в справочнике по API.
Отправка запроса POST на https://{RESOURCE_NAME}.openai.azure.com/openai/v1/chat/completions место
- RESOURCE_NAME — это имя ресурса OpenAI Azure
Обязательные заголовки:
-
Content-Type: application/json -
api-key: {API_KEY}
Текст: ниже приведен пример текста запроса. Формат совпадает с API завершения чата для GPT-4o, за исключением того, что содержимое сообщения может быть массивом, содержащим текст и изображения (допустимым общедоступным URL-адресом HTTP или HTTPS для изображения или изображением в кодировке base-64).
Это важно
Не забудьте задать значение "max_tokens" или max_completion_tokens, иначе выходные данные будут обрезаны. Для моделей рассуждений серии o используйте max_completion_tokens вместо max_tokens.
Это важно
При загрузке изображений установлено ограничение в 10 изображений за один запрос чата.
Замечание
Поддерживаемые форматы изображений включают JPEG, PNG, GIF (только для первого кадра) и WEBP.
{
"model": "MODEL-DEPLOYMENT-NAME",
"messages": [
{
"role": "system",
"content": "You are a helpful assistant."
},
{
"role": "user",
"content": [
{
"type": "text",
"text": "Describe this picture:"
},
{
"type": "image_url",
"image_url": {
"url": "<image URL>"
}
}
]
}
],
"max_tokens": 100,
"stream": false
}
Подсказка
Использование локального образа
Если вы хотите использовать локальный образ, можно использовать следующий Python код для преобразования его в base64, чтобы его можно было передать в API. Альтернативные средства преобразования файлов доступны в Интернете.
import base64
from mimetypes import guess_type
# Function to encode a local image into data URL
def local_image_to_data_url(image_path):
# Guess the MIME type of the image based on the file extension
mime_type, _ = guess_type(image_path)
if mime_type is None:
mime_type = 'application/octet-stream' # Default MIME type if none is found
# Read and encode the image file
with open(image_path, "rb") as image_file:
base64_encoded_data = base64.b64encode(image_file.read()).decode('utf-8')
# Construct the data URL
return f"data:{mime_type};base64,{base64_encoded_data}"
# Example usage
image_path = '<path_to_image>'
data_url = local_image_to_data_url(image_path)
print("Data URL:", data_url)
Когда данные образа base64 готовы, его можно передать в API в тексте запроса следующим образом:
...
"type": "image_url",
"image_url": {
"url": "data:image/jpeg;base64,<your_image_data>"
}
...
Настройка уровня сведений о изображении
При необходимости можно определить "detail" параметр в "image_url" поле. Выберите одно из трех значений, lowhighилиauto, чтобы настроить способ интерпретации и обработки изображений модели.
-
autoпараметр: параметр по умолчанию. Модель принимает решение между низкими или высокими параметрами на основе размера входного изображения. -
lowпараметр: модель не активирует режим высокого разрешения, а обрабатывает версию с более низким разрешением 512x512, что приводит к более быстрому ответу и снижению потребления маркеров для сценариев, где высокая детализация не имеет решающего значения. -
highнастройка: модель активирует режим "высокое разрешение". Здесь модель изначально просматривает изображение с низким разрешением, а затем создает подробные сегменты 512x512 из входного образа. Каждый сегмент использует двойной бюджет токена, что позволяет более подробно интерпретировать изображение.
Задайте значение с помощью формата, показанного в этом примере:
{
"type": "image_url",
"image_url": {
"url": "<image URL>",
"detail": "high"
}
}
Выходные данные
При отправке изображения в модель с поддержкой визуального зрения API возвращает ответ на завершение чата с помощью анализа модели. Ответ включает результаты фильтрации содержимого, относящиеся к Azure OpenAI.
{
"id": "chatcmpl-8VAVx58veW9RCm5K1ttmxU6Cm4XDX",
"object": "chat.completion",
"created": 1702439277,
"model": "gpt-4o",
"prompt_filter_results": [
{
"prompt_index": 0,
"content_filter_results": {
"hate": {
"filtered": false,
"severity": "safe"
},
"self_harm": {
"filtered": false,
"severity": "safe"
},
"sexual": {
"filtered": false,
"severity": "safe"
},
"violence": {
"filtered": false,
"severity": "safe"
}
}
}
],
"choices": [
{
"finish_reason":"stop",
"index": 0,
"message": {
"role": "assistant",
"content": "The picture shows an individual dressed in formal attire, which includes a black tuxedo with a black bow tie. There is an American flag on the left lapel of the individual's jacket. The background is predominantly blue with white text that reads \"THE KENNEDY PROFILE IN COURAGE AWARD\" and there are also visible elements of the flag of the United States placed behind the individual."
},
"content_filter_results": {
"hate": {
"filtered": false,
"severity": "safe"
},
"self_harm": {
"filtered": false,
"severity": "safe"
},
"sexual": {
"filtered": false,
"severity": "safe"
},
"violence": {
"filtered": false,
"severity": "safe"
}
}
}
],
"usage": {
"prompt_tokens": 1156,
"completion_tokens": 80,
"total_tokens": 1236
}
}
Каждый ответ содержит "finish_reason" поле. У него есть следующие возможные значения:
-
stop: API вернул полные выходные данные модели. -
length: Неполный вывод модели из-за ограничения входного параметра или лимита токенов модели. -
content_filter: Контент пропущен из-за срабатывания наших фильтров.
Ограничения ввода
В этом разделе описываются ограничения моделей чата с поддержкой визуального зрения.
Поддержка изображений
- Максимальный размер входного изображения: максимальный размер входных изображений ограничен 20 МБ.
- Низкая точность разрешения. При анализе изображений с помощью параметра "низкое разрешение" он позволяет ускорить ответы и использовать меньше маркеров ввода для определенных вариантов использования. Однако это может повлиять на точность распознавания объектов и текста в изображении.
- Ограничение изображений в чате: при отправке изображений на портале Майкрософт Foundry или через API, вы ограничены 10 изображениями на сеанс чата.
Специальные сведения о ценах
Это важно
Следующее содержимое является только примером, и цены могут быть изменены в будущем.
Модели с поддержкой компьютерного зрения взимают плату, как и другие модели чата Azure OpenAI. Вы оплачиваете стоимость использования токенов для запросов и ответов, подробности указаны на странице цен. Базовые расходы и другие функции описаны здесь:
Базовая цена на GPT-4 Turbo с зрением —
- Стоимость: $0,01 за 1 000 токенов
- Выходные данные: $0,03 за 1 000 токенов
Дополнительные сведения о переводе текста и изображений в токены см. в разделе Tokens в обзоре.
Пример расчёта цены изображения
Для типичного варианта использования возьмите изображение с как видимыми объектами, так и текстом, и введите запрос на 100 токенов. При обработке запроса служба генерирует 100 токенов выходной информации. На изображении можно обнаружить текст и объекты. Цена этой транзакции будет:
| Элемент | Detail | Cost |
|---|---|---|
| Ввод текстового запроса | 100 текстовых маркеров | $0,001 |
| Пример ввода изображения (см. Image token) | 170 + 85 маркеров изображений | $0,00255 |
| Расширенные функции надстроек для OCR | $1,50 / 1000 транзакций | $0,0015 |
| Расширенные функции дополнений для привязки объектов | $1,50 / 1000 транзакций | $0,0015 |
| Выходные токены | 100 токенов (предполагается) | $0,003 |
| Всего | $0,00955 |
Устранение неполадок
| Проблема | Резолюция |
|---|---|
| Усечение выходных данных | Увеличьте значение max_tokens или max_completion_tokens |
| Изображение не обработано | Проверьте, что URL-адрес доступен публично, или кодировка Base64 верна. |
| Превышено ограничение скорости | Реализуйте логику повторных попыток с экспоненциальной задержкой |