Поделиться через


Azure OpenAI: хранимые завершения и дистилляция (версия для предварительного просмотра)

Сохраненные результаты завершений позволяют записывать историю беседы из сеансов завершения чата для использования в качестве наборов данных для оценки и дополнительной настройки.

Поддержка хранимых завершений

поддержка API

Поддержка впервые добавлена в 2024-10-01-preview, используйте 2025-02-01-preview или более позднюю версию для доступа к новейшим функциям.

Тип развертывания

Поддержка сохраненных операций завершения осуществляется для всех типов развертывания Azure OpenAI: стандартного, глобального, datazone и заданного.

Доступность модели и региона

Пока вы используете API завершения чата для умозаключений, вы можете воспользоваться сохраненными завершениями. Она поддерживается для всех моделей Azure OpenAI и во всех поддерживаемых регионах (включая глобальные регионы).

Настройка хранимых завершений

Чтобы включить хранимые завершения для развертывания Azure OpenAI, задайте для параметра значение storeTrue. Используйте параметр metadata, чтобы обогатить сохраненный набор данных завершения дополнительными сведениями.

import os
from openai import AzureOpenAI
from azure.identity import DefaultAzureCredential, get_bearer_token_provider

token_provider = get_bearer_token_provider(
    DefaultAzureCredential(), "https://cognitiveservices.azure.com/.default"
)

client = AzureOpenAI(
  azure_endpoint = os.getenv("AZURE_OPENAI_ENDPOINT"), 
  azure_ad_token_provider=token_provider,
  api_version="2025-02-01-preview"
)

completion = client.chat.completions.create(
    
    model="gpt-4o", # replace with model deployment name
    store= True,
    metadata =  {
    "user": "admin",
    "category": "docs-test",
  },
    messages=[
    {"role": "system", "content": "Provide a clear and concise summary of the technical content, highlighting key concepts and their relationships. Focus on the main ideas and practical implications."},
    {"role": "user", "content": "Ensemble methods combine multiple machine learning models to create a more robust and accurate predictor. Common techniques include bagging (training models on random subsets of data), boosting (sequentially training models to correct previous errors), and stacking (using a meta-model to combine base model predictions). Random Forests, a popular bagging method, create multiple decision trees using random feature subsets. Gradient Boosting builds trees sequentially, with each tree focusing on correcting the errors of previous trees. These methods often achieve better performance than single models by reducing overfitting and variance while capturing different aspects of the data."}
    ]   
)

print(completion.choices[0].message)


После включения сохраненных завершений для Azure OpenAI, они начнут отображаться на портале Azure AI Foundry в разделе "Хранимые завершения".

Снимок экрана: хранящиеся завершения взаимодействия с пользователем.

Перегонка

Дистилляция позволяет преобразовать ваши сохраненные результаты в набор данных для точной настройки. Распространенный вариант использования заключается в использовании хранимых завершений с более крупной более мощной моделью для конкретной задачи, а затем использовать сохраненные завершения для обучения меньшей модели на высококачественных примерах взаимодействия модели.

Дистилляция требует не менее 10 хранимых результатов, хотя рекомендуется предоставить от сотен до тысяч хранимых результатов для достижения наилучших результатов.

  1. В области «Хранимые завершения» на портале Azure AI Foundry используйте параметры фильтра, чтобы выбрать завершения, с которыми вы хотите обучить свою модель.

  2. Чтобы начать дистилляцию, выберите "Дистилля"

    Скриншот сохраненных завершений в пользовательском интерфейсе с выделением функции дистилляции.

  3. Выберите модель, которую вы хотите точно настроить с помощью хранимого набора данных завершения.

    Снимок экрана выбора сохраненной модели дистилляции завершения.

  4. Подтвердите, какую версию модели вы хотите откорректировать.

    Снимок экрана версии результата дистилляции.

  5. .jsonl Файл со случайным именем будет создан в качестве обучаемого набора данных из сохраненных завершений. Выберите файл >Далее.

    Замечание

    Сохраненные файлы обучения по дистилляции завершения не могут быть доступны напрямую и не могут быть экспортированы вовне или скачаны.

    Снимок экрана: сохраненный файл jsonl набора данных для обучения завершению.

Остальные шаги соответствуют типичным шагам по настройке Azure OpenAI. Дополнительные сведения см. в нашем руководстве по началу работы с тонкой настройкой.

Оценка

Оценка крупных языковых моделей является критически важным шагом в измерении их производительности в различных задачах и измерениях. Это особенно важно для точно настроенных моделей, где оценка повышения производительности (или потерь) от обучения имеет решающее значение. Подробные оценки помогут вам понять, как различные версии модели могут повлиять на ваше приложение или сценарий.

Хранимые завершения можно использовать в качестве набора данных для проведения оценок.

  1. В области "Хранимые завершения" на портале Azure AI Foundry используйте параметры фильтра, чтобы выбрать завершения, которые необходимо включить в набор данных оценки.

  2. Чтобы настроить оценку, нажмите кнопку "Оценка"

    Снимок экрана панели автозаполнения с выбраной функцией «Оценить».

  3. Откроется панель "Оценки" с предварительно заполненным .jsonl файлом с случайным образом созданным именем, созданным в качестве набора данных оценки из сохраненных завершений.

    Замечание

    Сохраненные файлы данных оценки завершения нельзя напрямую получить и нельзя экспортировать/скачать.

    Снимок экрана: панель оценок.

Дополнительные сведения об оценке см. в статье "Начало работы с оценками"

API завершений, хранимых в памяти

Чтобы получить доступ к командам API хранимых завершений, может потребоваться обновить версию библиотеки OpenAI.

pip install --upgrade openai

Список сохраненных завершений

Дополнительные параметры:

  • metadata: фильтрация по паре "ключ-значение" в хранимых завершениях
  • after: идентификатор последнего сохраненного сообщения о завершении из предыдущего запроса на разбиение на страницы.
  • limit: Количество хранимых сообщений о завершении для извлечения.
  • order: порядок результатов по индексу (возрастанию или убыванию).
from openai import AzureOpenAI
from azure.identity import DefaultAzureCredential, get_bearer_token_provider

token_provider = get_bearer_token_provider(
    DefaultAzureCredential(), "https://cognitiveservices.azure.com/.default"
)

client = AzureOpenAI(
  azure_endpoint = "https://YOUR-RESOURCE-NAME.openai.azure.com", 
  azure_ad_token_provider=token_provider,
  api_version="2025-02-01-preview"
)

response = client.chat.completions.list()

print(response.model_dump_json(indent=2))

Получение сохраненного завершения

Получить сохраненное завершение по идентификатору.

from openai import AzureOpenAI
from azure.identity import DefaultAzureCredential, get_bearer_token_provider

token_provider = get_bearer_token_provider(
    DefaultAzureCredential(), "https://cognitiveservices.azure.com/.default"
)

client = AzureOpenAI(
  azure_endpoint = "https://YOUR-RESOURCE-NAME.openai.azure.com/", 
  azure_ad_token_provider=token_provider,
  api_version="2025-02-01-preview"
)

response = client.chat.completions.retrieve("chatcmpl-A1bC2dE3fH4iJ5kL6mN7oP8qR9sT0u")

print(response.model_dump_json(indent=2))

Получение сохраненных сообщений о завершении чата

Дополнительные параметры:

  • after: идентификатор последнего сохраненного сообщения о завершении из предыдущего запроса на разбиение на страницы.
  • limit: Количество хранимых сообщений о завершении для извлечения.
  • order: порядок результатов по индексу (возрастанию или убыванию).
from openai import AzureOpenAI
from azure.identity import DefaultAzureCredential, get_bearer_token_provider

token_provider = get_bearer_token_provider(
    DefaultAzureCredential(), "https://cognitiveservices.azure.com/.default"
)

client = AzureOpenAI(
  azure_endpoint = "https://YOUR-RESOURCE-NAME.openai.azure.com/", 
  azure_ad_token_provider=token_provider,
  api_version="2025-02-01-preview"
)

response = client.chat.completions.messages.list("chatcmpl-A1bC2dE3fH4iJ5kL6mN7oP8qR9sT0u", limit=2)

print(response.model_dump_json(indent=2))

Обновление сохраненного завершения чата

Добавьте пары "ключ:значение" метаданных в уже существующее сохраненное завершение.

from openai import AzureOpenAI
from azure.identity import DefaultAzureCredential, get_bearer_token_provider

token_provider = get_bearer_token_provider(
    DefaultAzureCredential(), "https://cognitiveservices.azure.com/.default"
)

client = AzureOpenAI(
  azure_endpoint = "https://YOUR-RESOURCE-NAME.openai.azure.com/", 
  azure_ad_token_provider=token_provider,
  api_version="2025-02-01-preview"
)

response = client.chat.completions.update(
    "chatcmpl-C2dE3fH4iJ5kL6mN7oP8qR9sT0uV1w",
    metadata={"fizz": "buzz"}
)

print(response.model_dump_json(indent=2))

Удаление завершения сохраненного чата

Удаление сохраненного завершения по идентификатору завершения.

Майкрософт Ентра айди

from openai import AzureOpenAI
from azure.identity import DefaultAzureCredential, get_bearer_token_provider

token_provider = get_bearer_token_provider(
    DefaultAzureCredential(), "https://cognitiveservices.azure.com/.default"
)

client = AzureOpenAI(
  azure_endpoint = "https://YOUR-RESOURCE-NAME.openai.azure.com/", 
  azure_ad_token_provider=token_provider,
  api_version="2025-02-01-preview"
)

response = client.chat.completions.delete("chatcmpl-A1bC2dE3fH4iJ5kL6mN7oP8qR9sT0u")

print(response.model_dump_json(indent=2))

Устранение неполадок

Требуются ли специальные разрешения для использования хранимых завершений?

Доступ к хранимым завершениям контролируется с помощью двух действий DataActions.

  • Microsoft.CognitiveServices/accounts/OpenAI/stored-completions/read
  • Microsoft.CognitiveServices/accounts/OpenAI/stored-completions/action

По умолчанию Cognitive Services OpenAI Contributor имеет доступ к обоим этим разрешениям:

Снимок экрана: разрешения на сохраненные завершения.

Как удалить сохраненные данные?

Данные можно удалить, удалив связанный ресурс Azure OpenAI. Если вы хотите удалить только сохраненные данные завершения, следует обратиться в службу поддержки клиентов.

Сколько сохраненных данных завершения можно хранить?

Можно хранить не более 10 ГБ данных.

Можно ли не допустить, чтобы сохраненные завершения когда-либо включались в подписке?

Вам потребуется обратиться в службу поддержки клиентов, чтобы отключить сохранённые результаты на уровне подписки.

TypeError: Completions.create() получил непредвиденный аргумент store

Эта ошибка возникает при запуске более старой версии клиентской библиотеки OpenAI, которая предшествует выпуску функции хранимых завершений. Выполните pip install openai --upgrade.