Compartilhar via


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 para deployment_name.
  • O tipo de fonte de dados AzureCognitiveSearch é alterado para azure_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

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.

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)