Referência da API do OpenAI do Azure em seus dados
Este artigo fornece documentação de referência para Python e REST para a nova API do Azure OpenAI On Your Data Python e API REST. A versão mais recente da API é 2024-05-01-preview
Especificações do Swagger.
Observação
Como a versão da API 2024-02-15-preview
introduzimos as seguintes alterações significativas em comparação com as versões anteriores da API:
- O caminho da API é alterado de
/extensions/chat/completions
para/chat/completions
. - A convenção de nomenclatura de chaves de propriedade e valores de enumeração é alterada de casing de camelo para casing de cobra. Exemplo:
deploymentName
é alterado paradeployment_name
. - O tipo de fonte de dados
AzureCognitiveSearch
é alterado paraazure_search
. - As citações e a intenção são movidas das mensagens de ferramenta de contexto da mensagem de assistente para o nível raiz de contexto da mensagem de assistente com o esquema explícito definido.
POST {endpoint}/openai/deployments/{deployment-id}/chat/completions?api-version={api-version}
Versões com suporte
2024-02-15-preview
Especificações do Swagger.2024-02-01
Especificações do Swagger.2024-05-01-preview
Especificações do Swagger
Observação
Índices do Azure Machine Learning, Pinecone e Elasticsearch têm suporte como versão prévia.
Parâmetros do URI
Nome | Em | Tipo | Obrigatória | Descrição |
---|---|---|---|---|
deployment-id |
caminho | string | Verdadeiro | Especifica o nome de implantação do modelo de conclusões de chat a ser usado para essa solicitação. |
endpoint |
caminho | string | Verdadeiro | Pontos de extremidade do Azure OpenAI. Por exemplo: https://{YOUR_RESOURCE_NAME}.openai.azure.com |
api-version |
consulta | string | Verdadeiro | A versão da API a ser usada para esta operação. |
Corpo da solicitação
O corpo da solicitação herda o mesmo esquema da solicitação de API de conclusões de chat. Esta tabela mostra os parâmetros exclusivos para o Azure OpenAI On Your Data.
Nome | Digitar | Obrigatória | Descrição |
---|---|---|---|
data_sources |
DataSource[] | Verdadeiro | As entradas de configuração do Azure OpenAI On Your Data. Deve haver exatamente um elemento na matriz. Se data_sources não for fornecido, o serviço usará diretamente o modelo de conclusão de chat e não usará o Azure OpenAI On Your Data. Ao especificar o parâmetro data_sources , você não poderá usar os parâmetros logprobs ou top_logprobs . |
Corpo da resposta
O corpo da resposta herda o mesmo esquema de resposta da API de conclusões de chat. A mensagem de chat de resposta tem uma propriedade context
, que é adicionada ao Azure OpenAI On Your Data.
Mensagem de chat
O esquema de mensagem do assistente de resposta herda do assistente de conclusão de chat mensagem de chat e é estendido com a propriedadecontext
.
Nome | Digitar | Obrigatória | Descrição |
---|---|---|---|
context |
Contexto | Falso | Representa as etapas incrementais executadas pelo Azure OpenAI On Your Data durante o processamento da solicitação, incluindo os documentos recuperados. |
Context
Nome | Digitar | Obrigatória | Descrição |
---|---|---|---|
citations |
Citation[] | Falso | O resultado da recuperação da fonte de dados, usado para gerar a mensagem do assistente na resposta. Os clientes podem renderizar referências das citações. |
intent |
string | Falso | A intenção detectada no histórico de chat. Não é mais necessário transmitir a intenção anterior. Ignore esta propriedade. |
all_retrieved_documents |
Documentos recuperados[] | Falso | Todos os documentos recuperados. |
Citação
Nome | Digitar | Obrigatória | Descrição |
---|---|---|---|
content |
string | Verdadeiro | O conteúdo da citação. |
title |
string | Falso | O título da citação. |
url |
string | Falso | A URL da citação. |
filepath |
string | Falso | O caminho do arquivo da citação. |
chunk_id |
string | Falso | A ID da parte da citação. |
Documentos recuperados
Nome | Digitar | Obrigatória | Descrição |
---|---|---|---|
search_queries |
string[] | Verdadeiro | As consultas de pesquisa usadas para recuperar o documento. |
data_source_index |
Número inteiro | Verdadeiro | O índice da fonte de dados. |
original_search_score |
double | Verdadeiro | A pontuação de pesquisa original do documento recuperado. |
rerank_score |
double | Falso | A pontuação de reclassificação do documento recuperado. |
filter_reason |
string | Falso | Representa a lógica para filtrar o documento. Se o documento não passar por filtragem, esse campo permanecerá indefinido. Será score se o documento for filtrado pelo limite de pontuação de pesquisa original definido por strictness . Será rerank se o documento não for filtrado pelo limite de pontuação de pesquisa original, mas for filtrado por pontuação de reclassificação e top_n_documents . |
Fonte de dados
Esta lista mostra as fontes de dados com suporte.
- Azure AI Search
- Azure Cosmos DB para MongoDB vCore
- Índice do Azure Machine Learning (versão prévia)
- Elasticsearch (versão prévia)
- Pinecone (versão prévia)
Exemplos
Esse exemplo mostra como passar o histórico de conversas para obter melhores resultados.
Pré-requisitos:
- Configure as atribuições de função da identidade gerenciada atribuída pelo sistema Azure OpenAI ao serviço de pesquisa do Azure. Funções necessárias:
Search Index Data Reader
,Search Service Contributor
. - Configure as atribuições de função do usuário para o recurso do Azure OpenAI. Função necessária:
Cognitive Services OpenAI User
. - Instale CLI do Azure e execute
az login
. - Defina as seguintes variáveis de ambiente:
AzureOpenAIEndpoint
,ChatCompletionsDeploymentName
,SearchEndpoint
,SearchIndex
.
export AzureOpenAIEndpoint=https://example.openai.azure.com/
export ChatCompletionsDeploymentName=turbo
export SearchEndpoint=https://example.search.windows.net
export SearchIndex=example-index
Instale os pacotes pip openai
e azure-identity
mais recentes.
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)