Megosztás a következőn keresztül:


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/completionsmó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_namemódosul: deploymentName .
  • Az adatforrás típusa AzureCognitiveSearch a következőre azure_searchmó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

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_documentsa .

Adatforrás

Ez a lista a támogatott adatforrásokat jeleníti meg.

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)