Informations de référence sur l’API Azure OpenAI sur vos données
Cet article fournit une documentation de référence pour Python et REST pour la nouvelle API Azure OpenAI sur vos données. La dernière version de l’API est 2024-05-01-preview
Spécification Swagger.
Remarque
Depuis la version 2024-02-15-preview
de l’API, nous avons introduit les changements cassants suivants par rapport aux versions antérieures de l’API :
- Le chemin d’accès de l’API n’est plus
/extensions/chat/completions
, mais/chat/completions
. - La convention d’affectation de noms des clés de propriété et des valeurs d’énumération est passée du « camel case » (casse mixte) au « snake case ». Exemple :
deploymentName
est remplacé pardeployment_name
. - Le type de source de données
AzureCognitiveSearch
est remplacé parazure_search
. - Les citations et l’intention sont déplacées des messages de l’outil de contexte du message assistant vers le niveau racine de contexte du message assistant avec un schéma explicite défini.
POST {endpoint}/openai/deployments/{deployment-id}/chat/completions?api-version={api-version}
Versions prises en charge
2024-02-15-preview
Spécification Swagger.2024-02-01
Spécification Swagger.2024-05-01-preview
Spécification Swagger
Remarque
Les index Azure Machine Learning, Pinecone et Elasticsearch sont pris en charge en tant que préversion.
Paramètres d’URI
Nom | Dans | Type | Requise | Description |
---|---|---|---|---|
deployment-id |
path | string | True | Spécifie le nom du déploiement de modèle d’achèvement de conversation à utiliser pour cette requête. |
endpoint |
path | string | True | Points de terminaison Azure OpenAI. Par exemple : https://{YOUR_RESOURCE_NAME}.openai.azure.com |
api-version |
query | string | True | Version de l’API à utiliser pour cette opération. |
Corps de la demande
Le corps de la requête hérite du même schéma de requête d’API d’achèvements de conversation. Ce tableau montre les paramètres uniques pour Azure OpenAI sur vos données.
Nom | Type | Requise | Description |
---|---|---|---|
data_sources |
DataSource[] | True | Entrées de configuration pour Azure OpenAI sur vos données. Il doit y avoir exactement un élément dans le tableau. Si data_sources n’est pas fourni, le service utilise directement le modèle d’achèvements de conversation et n’utilise pas Azure OpenAI sur vos données. Lorsque vous spécifiez le paramètre data_sources , vous ne pourrez pas utiliser les paramètres logprobs ou top_logprobs . |
Corps de réponse
Le corps de la réponse hérite du même schéma de réponse d’API d’achèvements de conversation. Le message de conversation de réponse a une propriété context
, qui est ajoutée pour Azure OpenAI sur vos données.
Message de conversation
Le schéma des messages d’assistant de réponse hérite du message de conversation d’assistant de complétions de conversation et est étendu avec la propriété context
.
Nom | Type | Requise | Description |
---|---|---|---|
context |
Context | False | Représente les étapes incrémentielles effectuées par Azure OpenAI sur vos données lors du traitement de la requête, y compris les documents récupérés. |
Context
Nom | Type | Requise | Description |
---|---|---|---|
citations |
Citation[] | False | Résultat de récupération de la source de données, utilisé pour générer le message assistant dans la réponse. Les clients peuvent afficher les références des citations. |
intent |
string | False | Intention détectée de l’historique des conversations. L’action de repasser l’intention précédente n’est plus nécessaire. Ignorez cette propriété. |
all_retrieved_documents |
Documents récupérés[] | False | Tous les documents récupérés. |
Citation
Nom | Type | Requise | Description |
---|---|---|---|
content |
string | True | Contenu de la citation. |
title |
string | False | Titre de la citation. |
url |
string | False | URL de la citation. |
filepath |
string | False | Chemin d’accès au fichier de la citation. |
chunk_id |
string | False | ID de bloc de la citation. |
Documents récupérés
Nom | Type | Requise | Description |
---|---|---|---|
search_queries |
string[] | True | Ls requêtes de recherche utilisées pour récupérer le document. |
data_source_index |
entier | True | L’index de la source de données. |
original_search_score |
double | True | Le score de recherche d’origine du document récupéré. |
rerank_score |
double | False | Le score de reclassement du document récupéré. |
filter_reason |
string | False | Représente la justification du filtrage du document. Si le document ne subit pas de filtrage, ce champ reste non défini. Sera score si le document est filtré par le seuil de score de recherche d’origine défini par strictness . Sera rerank si le document n’est pas filtré par le seuil du score de recherche original, mais est filtré par le score de reclassement et top_n_documents . |
Source de données
Cette liste montre les sources de données prises en charge.
- Azure AI Search
- Azure Cosmos DB for MongoDB vCore
- Index Azure Machine Learning (préversion)
- Elasticsearch (préversion)
- Pinecone (préversion)
Exemples
Cet exemple montre comment passer l’historique des conversations pour obtenir de meilleurs résultats.
Configuration requise :
- Configurez les attributions de rôles à partir de l’identité managée affectée par le système Azure OpenAI vers le service Recherche Azure. Rôles nécessaires :
Search Index Data Reader
,Search Service Contributor
. - Configurez les attributions de rôles de l’utilisateur vers la ressource Azure OpenAI. Rôle nécessaire :
Cognitive Services OpenAI User
. - Installez Az CLI et exécutez
az login
. - Définissez les variables d’environnement suivantes :
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
Installez le dernier package 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://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)