Справочник по API данных в Azure OpenAI
В этой статье приведена справочная документация по Python и REST для нового API OpenAI в Azure Data API. Последняя версия API — 2024-05-01-preview
спецификация Swagger.
Примечание.
Так как версия 2024-02-15-preview
API мы представили следующие критические изменения по сравнению с более ранними версиями API:
- Путь API изменяется с
/extensions/chat/completions
/chat/completions
. - Соглашение об именовании ключей свойств и значений перечисления изменяется с верблюжьего регистра на регистр змеи. Пример:
deploymentName
изменен наdeployment_name
. - Тип
AzureCognitiveSearch
источника данных изменяется наazure_search
. - Ссылки и намерения перемещаются из сообщений контекста помощника в корневой уровень контекста сообщения помощника с явным определением схемы.
POST {endpoint}/openai/deployments/{deployment-id}/chat/completions?api-version={api-version}
Поддерживаемые версии
2024-02-15-preview
Спецификация Swagger.2024-02-01
Спецификация Swagger.2024-05-01-preview
Спецификация Swagger
Примечание.
Индексы машинного обучения Azure, Pinecone и Elasticsearch поддерживаются в качестве предварительной версии.
Параметры универсального кода ресурса (URI)
Имя. | In | Тип | Обязательно | Описание |
---|---|---|---|---|
deployment-id |
path | строка | Истина | Указывает имя развертывания модели завершения чата, используемое для этого запроса. |
endpoint |
path | строка | Истина | Конечные точки Azure OpenAI. Например: https://{YOUR_RESOURCE_NAME}.openai.azure.com |
api-version |
query | строка | Истина | Версия API, используемая для данной операции. |
Текст запроса
Текст запроса наследует ту же схему запроса API завершения чата. В этой таблице показаны параметры, уникальные для Azure OpenAI в данных.
Имя. | Type | Обязательно | Описание |
---|---|---|---|
data_sources |
DataSource[] | Истина | Записи конфигурации для Azure OpenAI в данных. В массиве должен быть ровно один элемент. Если data_sources оно не предоставлено, служба использует модель завершения чата напрямую и не использует Azure OpenAI On Your Data. При указании data_sources параметра вы не сможете использовать logprobs параметры или top_logprobs параметры. |
Текст ответа
Текст ответа наследует ту же схему ответа API завершения чата. В сообщении чата ответа есть context
свойство, которое добавляется для Azure OpenAI On Your Data.
Сообщение чата
Схема сообщения помощника по ответу наследует от сообщения помощника о завершении чата и расширяется с помощью свойства context
.
Имя. | Type | Обязательно | Описание |
---|---|---|---|
context |
Контекст | False | Представляет добавочные шаги, выполняемые Azure OpenAI On Your Data при обработке запроса, включая извлеченные документы. |
Контекст
Имя. | Type | Обязательно | Описание |
---|---|---|---|
citations |
Ссылка[] | False | Результат извлечения источника данных, используемый для создания сообщения помощника в ответе. Клиенты могут отображать ссылки из ссылок. |
intent |
строка | False | Обнаруженная цель из журнала чата. Передача предыдущего намерения больше не требуется. Игнорировать это свойство. |
all_retrieved_documents |
Извлеченные документы[] | False | Все извлеченные документы. |
Источник
Имя. | Type | Обязательно | Описание |
---|---|---|---|
content |
строка | Истина | Содержимое ссылки. |
title |
строка | False | Заголовок ссылки. |
url |
строка | False | URL-адрес ссылки. |
filepath |
строка | False | Путь к файлу ссылки. |
chunk_id |
строка | False | Идентификатор фрагмента ссылки. |
Извлеченные документы
Имя. | Type | Обязательно | Описание |
---|---|---|---|
search_queries |
string[] | Истина | Поисковые запросы, используемые для извлечения документа. |
data_source_index |
integer | Истина | Индекс источника данных. |
original_search_score |
двойной точности | Истина | Исходная оценка поиска извлеченного документа. |
rerank_score |
двойной точности | False | Оценка повторного использования извлеченного документа. |
filter_reason |
строка | False | Представляет обоснование фильтрации документа. Если документ не проходит фильтрацию, это поле останется неустановленным. score Если документ фильтруется по пороговой оценке исходного поиска, определенному по strictness значению. rerank Если документ не фильтруется по исходному порогу оценки поиска, но фильтруется по оценке повторного выполнения иtop_n_documents . |
Источник данных
В этом списке показаны поддерживаемые источники данных.
- Поиск по искусственному интеллекту Azure
- Azure Cosmos DB для виртуальных ядер MongoDB
- индекс Машинное обучение Azure (предварительная версия)
- Elasticsearch (предварительная версия)
- Pinecone (предварительная версия)
Примеры
В этом примере показано, как передать журнал бесед для улучшения результатов.
Необходимые условия:
- Настройте назначения ролей из назначаемого системой Azure OpenAI управляемого удостоверения в службу поиска Azure. Обязательные роли:
Search Index Data Reader
,Search Service Contributor
. - Настройте назначения ролей от пользователя к ресурсу Azure OpenAI. Требуемая роль:
Cognitive Services OpenAI User
. - Установите Az CLI и запустите
az login
. - Определите следующие переменные среды:
AzureOpenAIEndpoint
,ChatCompletionsDeploymentName
,SearchIndex
SearchEndpoint
.
export AzureOpenAIEndpoint=https://example.openai.azure.com/
export ChatCompletionsDeploymentName=turbo
export SearchEndpoint=https://example.search.windows.net
export SearchIndex=example-index
Установите последние пакеты openai
pip , 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://cognitiveservices.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)