Azure OpenAI a Data API-ra – referencia
Ez a cikk referenciadokumentációt nyújt a Pythonhoz és a REST-hez az új Azure OpenAI On Your Data API-hoz. A legújabb API-verzió a 2024-05-01-preview
Swagger spec.
Feljegyzés
Az API-verzió 2024-02-15-preview
óta a korábbi API-verziókhoz képest a következő kompatibilitástörő változásokat vezettük be:
- Az API elérési útja a következőre
/extensions/chat/completions
/chat/completions
módosul: . - A tulajdonságkulcsok és az enumerálási értékek elnevezési konvencióját a teveházról a kígyóházra változtatjuk. Például: a rendszer a következőre
deployment_name
módosul:deploymentName
. - Az adatforrás típusa
AzureCognitiveSearch
a következőreazure_search
módosul: . - Az idézetek és szándékok átkerülnek az segédüzenet környezeti eszközüzeneteiből a segédüzenet környezetgyökerének szintjére explicit séma definiált használatával.
POST {endpoint}/openai/deployments/{deployment-id}/chat/completions?api-version={api-version}
Támogatott verziók
2024-02-15-preview
Swagger spec.2024-02-01
Swagger spec.2024-05-01-preview
Swagger specifikáció
Feljegyzés
Az Azure Machine Learning-indexek, a Pinecone és az Elasticsearch előzetes verzióként támogatottak.
URI-paraméterek
Név | In | Típus | Kötelező | Leírás |
---|---|---|---|---|
deployment-id |
ösvény | húr | Igaz | Megadja a kéréshez használandó csevegővégzítési modell üzembehelyezési nevét. |
endpoint |
ösvény | húr | Igaz | Azure OpenAI-végpontok. Például: https://{YOUR_RESOURCE_NAME}.openai.azure.com |
api-version |
Lekérdezés | húr | Igaz | A művelethez használandó API-verzió. |
Kérés törzse
A kérés törzse ugyanazt a sémát örökli, mint a csevegés befejezésének API-kérése. Ez a táblázat az Azure OpenAI On Your Data esetében egyedi paramétereket mutatja be.
Név | Típus | Kötelező | Leírás |
---|---|---|---|
data_sources |
DataSource[] | Igaz | Az Azure OpenAI on Your Data konfigurációs bejegyzései. Pontosan egy elemnek kell lennie a tömbben. Ha data_sources nincs megadva, a szolgáltatás közvetlenül csevegővégzítési modellt használ, és nem használja az Azure OpenAI-t az Adatain. A paraméter megadásakor data_sources nem fogja tudni használni a logprobs paramétereket.top_logprobs |
Választörzs
A válasz törzse ugyanazt a sémát örökli, mint a csevegés befejezésének API-válasza. A válaszüzenet egy tulajdonságot context
tartalmaz, amely az Azure OpenAI On Your Data szolgáltatáshoz van hozzáadva.
Csevegőüzenet
A válaszasszisztens üzenetséma örökli a csevegés befejezését segítő csevegőüzenetet, és kiterjeszti a tulajdonsággalcontext
.
Név | Típus | Kötelező | Leírás |
---|---|---|---|
context |
Környezet | Hamis | Az Azure OpenAI on Your Data által a kérés feldolgozása során végrehajtott növekményes lépéseket jelöli, beleértve a lekért dokumentumokat is. |
Környezet
Név | Típus | Kötelező | Leírás |
---|---|---|---|
citations |
Idézet[] | Hamis | Az adatforrás lekérési eredménye, amely az asszisztens üzenetének a válaszban való létrehozásához használatos. Az ügyfelek hivatkozásokat jeleníthetnek meg az idézetekből. |
intent |
húr | Hamis | A csevegési előzményekből észlelt szándék. Az előző szándék visszaadására már nincs szükség. Hagyja figyelmen kívül ezt a tulajdonságot. |
all_retrieved_documents |
Lekért dokumentumok[] | Hamis | Az összes lekért dokumentum. |
Idézés
Név | Típus | Kötelező | Leírás |
---|---|---|---|
content |
húr | Igaz | Az idézet tartalma. |
title |
húr | Hamis | Az idézet címe. |
url |
húr | Hamis | Az idézet URL-címe. |
filepath |
húr | Hamis | Az idézet fájl elérési útja. |
chunk_id |
húr | Hamis | Az idézet adattömb-azonosítója. |
Lekért dokumentumok
Név | Típus | Kötelező | Leírás |
---|---|---|---|
search_queries |
sztring[] | Igaz | A dokumentum lekéréséhez használt keresési lekérdezések. |
data_source_index |
egész szám | Igaz | Az adatforrás indexe. |
original_search_score |
double | Igaz | A lekért dokumentum eredeti keresési pontszáma. |
rerank_score |
double | Hamis | A lekért dokumentum rerank-pontszáma. |
filter_reason |
húr | Hamis | A dokumentum szűrésének indokát jelöli. Ha a dokumentum szűrése nem történik meg, ez a mező továbbra is nem lesz megadva. Akkor lesz, score ha a dokumentumot a program a megadott eredeti keresési pontszám küszöbértéke alapján szűri strictness . Akkor lesz, rerank ha a dokumentumot nem az eredeti keresési pontszám küszöbértéke szűri, hanem a rerank pontszám és top_n_documents a . |
Adatforrás
Ez a lista a támogatott adatforrásokat jeleníti meg.
- Azure AI Search
- Azure Cosmos DB for MongoDB virtuális mag
- Azure Machine Learning-index (előzetes verzió)
- Elasticsearch (előzetes verzió)
- Pinecone (előzetes verzió)
Példák
Ez a példa bemutatja, hogyan adhat át beszélgetési előzményeket a jobb eredmények érdekében.
Előfeltételek:
- Konfigurálja a szerepkör-hozzárendeléseket az Azure OpenAI rendszer által hozzárendelt felügyelt identitásból az Azure Search Service-be. Kötelező szerepkörök:
Search Index Data Reader
,Search Service Contributor
. - Konfigurálja a szerepkör-hozzárendeléseket a felhasználótól az Azure OpenAI-erőforráshoz. Kötelező szerepkör:
Cognitive Services OpenAI User
. - Telepítse az Az CLI-t, és futtassa a parancsot
az login
. - Adja meg a következő környezeti változókat:
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
Telepítse a legújabb pipcsomagokat 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)