Riferimento API Dati Azure OpenAI sui dati
Questo articolo fornisce la documentazione di riferimento per Python e REST per la nuova istanza di Azure OpenAI nell'API dati. La versione più recente dell'API è 2024-05-01-preview
specifica Swagger.
Nota
Dalla versione dell'API 2024-02-15-preview
sono state introdotte le seguenti modifiche di rilievo rispetto alle versioni precedenti dell'API:
- Il percorso dell'API viene modificato da
/extensions/chat/completions
a/chat/completions
. - La convenzione di denominazione delle chiavi di proprietà e dei valori di enumerazione viene modificata camel casing a snake casing. Esempio:
deploymentName
viene modificato indeployment_name
. - Il tipo di origine dati
AzureCognitiveSearch
viene modificato inazure_search
. - Le citazioni e le finalità vengono spostati dai messaggi di contesto del messaggio dell'assistente al livello radice del contesto del messaggio dell'assistente con uno schema esplicito definito.
POST {endpoint}/openai/deployments/{deployment-id}/chat/completions?api-version={api-version}
Versioni supportate
2024-02-15-preview
specifica Swagger.2024-02-01
specifica Swagger.2024-05-01-preview
specifica Swagger
Nota
Gli indici di Azure Machine Learning, Pineconee Elasticsearch sono supportati come anteprima.
Parametri URI
Nome | Tra | Type | Obbligatorio | Descrizione |
---|---|---|---|---|
deployment-id |
path | string | True | Specifica il nome della distribuzione del modello di completamento della chat da usare per questa richiesta. |
endpoint |
path | string | True | Endpoint OpenAI di Azure. Ad esempio: https://{YOUR_RESOURCE_NAME}.openai.azure.com |
api-version |
query | string | True | Versione dell'API da usare per questa operazione. |
Testo della richiesta
Il corpo della richiesta eredita lo stesso schema della richiesta API di completamento della chat. Questa tabella mostra i parametri univoci per Azure OpenAI sui dati.
Nome | Digita | Obbligatorio | Descrizione |
---|---|---|---|
data_sources |
DataSource[] | Vero | Voci di configurazione per Azure OpenAI nei dati. Nella matrice deve essere presente esattamente un elemento. Se data_sources non viene fornito, il servizio usa direttamente il modello di completamento della chat e non usa Azure OpenAI nei dati. Quando si specifica il parametro data_sources , non sarà possibile usare i parametri logprobs o top_logprobs . |
Corpo della risposta
Il corpo della risposta eredita lo stesso schema della risposta API di completamento della chat. Il messaggio di chat di risposta ha una proprietà context
, aggiunta per Azure OpenAI nei dati.
Messaggio della chat
Lo schema del messaggio di risposta dell'assistente eredita dall'assistente del completamento del messaggio di chat e viene esteso con la proprietà context
.
Nome | Digita | Obbligatorio | Descrizione |
---|---|---|---|
context |
Contesto | Falso | Rappresenta i passaggi incrementali eseguiti da Azure OpenAI sui dati durante l'elaborazione della richiesta, inclusi i documenti recuperati. |
Contesto
Nome | Digita | Obbligatorio | Descrizione |
---|---|---|---|
citations |
Citazione[] | Falso | Risultato del recupero dell'origine dati, utilizzato per generare il messaggio di assistenza nella risposta. I client possono eseguire il rendering dei riferimenti dalle citazioni. |
intent |
string | Falso | Finalità rilevata dalla cronologia delle chat. Il passaggio della finalità precedente non è più necessario. Ignorare questa proprietà. |
all_retrieved_documents |
Documenti recuperati[] | Falso | Tutti i documenti recuperati. |
Citazione
Nome | Digita | Obbligatorio | Descrizione |
---|---|---|---|
content |
stringa | True | Contenuto della citazione. |
title |
string | Falso | Titolo della citazione. |
url |
string | Falso | URL della citazione. |
filepath |
string | Falso | Percorso del file della citazione. |
chunk_id |
string | Falso | ID di blocco della citazione. |
Documenti recuperati
Nome | Digita | Obbligatorio | Descrizione |
---|---|---|---|
search_queries |
string[] | Vero | Query di ricerca utilizzate per recuperare il documento. |
data_source_index |
integer | Vero | Indice dell'origine dati. |
original_search_score |
double | Vero | Punteggio di ricerca originale del documento recuperato. |
rerank_score |
double | Falso | Punteggio di rerank del documento recuperato. |
filter_reason |
string | Falso | Rappresenta la logica per filtrare il documento. Se il documento non viene filtrato, questo campo rimarrà non impostato. Verrà score se il documento viene filtrato in base alla soglia del punteggio di ricerca originale definita da strictness . Verrà rerank se il documento non viene filtrato in base alla soglia del punteggio di ricerca originale, ma viene filtrato in base al punteggio di rerank e top_n_documents . |
Origine dati
Questo elenco mostra le origini dati supportate.
- Azure AI Search
- Azure Cosmos DB for MongoDB vCore
- Indice Azure Machine Learning (anteprima)
- Elasticsearch (anteprima)
- Pinecone (anteprima)
Esempi
Questo esempio illustrato come passare la cronologia delle conversazioni per ottenere risultati migliori.
Prerequisiti:
- Configurare le assegnazioni di ruolo dall'identità gestita assegnata dal sistema OpenAI di Azure al servizio di ricerca di Azure. Ruoli richiesti:
Search Index Data Reader
,Search Service Contributor
. - Configurare le assegnazioni di ruolo dall'utente alla risorsa OpenAI di Azure. Ruolo richiesto:
Cognitive Services OpenAI User
. - Installare l’interfaccia della riga di comando di Az ed eseguire
az login
. - Definire le variabili di ambiente seguenti:
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
Installare i pacchetti pip più recenti 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://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)