Azure OpenAI в справочнике по API данных (классическая версия)

Применяется только к:Портал Foundry (классический). Эта статья недоступна для нового портала Foundry. Дополнительные сведения о новом портале.

Note

Ссылки в этой статье могут открывать содержимое в новой документации Microsoft Foundry вместо документации по Foundry (классической) сейчас.

Important

Azure OpenAI On Your Data устарел и приближается к выходу из эксплуатации. Служба будет прекращена 14 октября 2026 г.

Microsoft прекратила адаптацию новых моделей в Azure OpenAI On Your Data. Эта функция поддерживает только следующие модели:

  • GPT-4o (версии 2024-05-13, 2024-08-06 и 2024-11-20)
  • GPT-4o-mini (версия 2024-07-18)

Рекомендуем перенести Azure OpenAI On Your Data в Foundry Agent Service с Foundry IQ чтобы получать контент и получать обоснованные ответы из ваших данных. Чтобы начать, смотрите Connect a Foundry IQ базу знаний.

В этой статье представлена справочная документация по Python и REST для нового Azure OpenAI на вашем Data API. Последняя версия API — 2024-05-01-previewSwagger spec.

Note

С момента версии 2024-02-15-preview API мы ввели следующие неисправные изменения по сравнению с предыдущими версиями API:

  • Путь API меняется с /extensions/chat/completions ./chat/completions
  • Конвенция наименования ключей свойств и значений enum была изменена с верблюжьей на snake casing. Пример: deploymentName изменяется на deployment_name.
  • Тип AzureCognitiveSearch источника данных изменяется на azure_search.
  • Цитаты и намерение переносятся из контекстных сообщений ассистентного сообщения на корневый уровень контекстного сообщения ассистента с явной схемой.
POST {endpoint}/openai/deployments/{deployment-id}/chat/completions?api-version={api-version}

Поддерживаемые версии

Note

Поддерживаются Pinecone и Elasticsearch в качестве предварительного просмотра.

Параметры URI

Имя. In Тип Обязательный Описание
deployment-id path string True Указывает имя модели развертывания завершения чата для этого запроса.
endpoint path string True Azure конечных точек OpenAI. Например: https://{YOUR_RESOURCE_NAME}.openai.azure.com
api-version запрос string True Версия API, используемая для этой операции.

Текст запроса

Тело запроса наследует ту же схему API для завершения чата. В этой таблице показаны уникальные параметры Azure OpenAI на ваших данных.

Имя. Тип Обязательный Описание
data_sources Источник данных[] True Записи конфигурации для Azure OpenAI на ваших данных. В массиве должен быть ровно один элемент. Если data_sources не предоставляется, сервис использует модель завершения чата напрямую и не использует Azure OpenAI на ваших данных. Когда вы указываете параметр data_sources , вы не сможете использовать параметры logprobs или top_logprobs .

Основная часть ответа

Тело ответа наследует ту же схему ответа API завершения чата. Чат-сообщение response имеет свойство context, которое добавлено для Azure OpenAI On Your Data.

Сообщение чата

Схема сообщений ассистента ответа наследует от сообщения ассистента по завершению чата и расширяется свойством context.

Имя. Тип Обязательный Описание
context Контекст Неправда Представляет постепенные шаги, выполненные Azure OpenAI On Your Data при обработке запроса, включая полученные документы.

Контекст

Имя. Тип Обязательный Описание
citations Ссылка[] Неправда Результат извлечения источника данных используется для генерации ассистентного сообщения в ответе. Клиенты могут отображать ссылки из этих ссылок.
intent string Неправда Обнаруженное намерение из истории чата. Возвращать прежнее намерение больше не нужно. Игнорируйте это свойство.
all_retrieved_documents Извлеченные документы[] Неправда Все найденные документы.

Цитата

Имя. Тип Обязательный Описание
content string True Содержание цитаты.
title string Неправда Название наградного текста.
url string Неправда URL цитаты.
filepath string Неправда Путь к файлу цитирования.
chunk_id string Неправда Идентификатор фрагмента цитаты.

Извлеченные документы

Имя. Тип Обязательный Описание
search_queries string[] True Поисковые запросы, использованные для получения документа.
data_source_index integer True Индекс источника данных.
original_search_score двойной True Оригинальный результат поиска в полученном документе.
rerank_score двойной Неправда Оценка переоценки полученного документа.
filter_reason string Неправда Представляет собой обоснование фильтрации документа. Если документ не проходит фильтрацию, это поле останется незамеченным. Будет, score если документ отфильтрован по порогу исходного поиска, определённому как strictness. Это будет rerank , если документ не фильтруется по исходному порогу поиска, а фильтруется по рейтингу переоценки и top_n_documents.

Источник данных

Этот список показывает поддерживаемые источники данных.

Примеры

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

Prerequisites:

  • Настраивать назначения ролей из Azure OpenAI системного назначения управляемой идентичности в Azure search service. Обязательные роли: Search Index Data Reader, Search Service Contributor.
  • Настройте назначение ролей от пользователя к ресурсу Azure OpenAI. Обязательная роль: Cognitive Services OpenAI User.
  • Установите AZ CLI, и запустите az login.
  • Определим следующие переменные среды: AzureOpenAIEndpoint, ChatCompletionsDeploymentName, ,SearchEndpointSearchIndex .
export AzureOpenAIEndpoint=https://example.openai.azure.com/
export ChatCompletionsDeploymentName=turbo
export SearchEndpoint=https://example.search.windows.net
export SearchIndex=example-index

Установите последние PIP-пакеты openai, azure-identity.

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

endpoint = os.environ.get("AzureOpenAIEndpoint")
deployment = os.environ.get("ChatCompletionsDeploymentName")
search_endpoint = os.environ.get("SearchEndpoint")
search_index = os.environ.get("SearchIndex")

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

client = AzureOpenAI(
    azure_endpoint=endpoint,
    azure_ad_token_provider=token_provider,
    api_version="2024-05-01-preview",
)

completion = client.chat.completions.create(
    model=deployment,
    messages=[
        {
            "role": "user",
            "content": "Who is DRI?",
        },
        {
            "role": "assistant",
            "content": "DRI stands for Directly Responsible Individual of a service. Which service are you asking about?"
        },
        {
            "role": "user",
            "content": "Opinion mining service"
        }
    ],
    extra_body={
        "data_sources": [
            {
                "type": "azure_search",
                "parameters": {
                    "endpoint": search_endpoint,
                    "index_name": search_index,
                    "authentication": {
                        "type": "system_assigned_managed_identity"
                    }
                }
            }
        ]
    }
)

print(completion.model_dump_json(indent=2))

# render the citations

content = completion.choices[0].message.content
context = completion.choices[0].message.context
for citation_index, citation in enumerate(context["citations"]):
    citation_reference = f"[doc{citation_index + 1}]"
    url = "https://example.com/?redirect=" + citation["url"] # replace with actual host and encode the URL
    filepath = citation["filepath"]
    title = citation["title"]
    snippet = citation["content"]
    chunk_id = citation["chunk_id"]
    replaced_html = f"<a href='{url}' title='{title}\n{snippet}''>(See from file {filepath}, Part {chunk_id})</a>"
    content = content.replace(citation_reference, replaced_html)
print(content)