Delen via


Naslaginformatie over Azure OpenAI op uw gegevens-API

Dit artikel bevat referentiedocumentatie voor Python en REST voor de nieuwe Azure OpenAI On Your Data API. De nieuwste API-versie is 2024-05-01-preview Swagger spec.

Notitie

Sinds de API-versie 2024-02-15-preview zijn de volgende belangrijke wijzigingen geïntroduceerd, vergeleken met eerdere API-versies:

  • Het API-pad wordt gewijzigd van /extensions/chat/completions in /chat/completions.
  • De naamconventie van eigenschapssleutels en opsommingswaarden wordt gewijzigd van kameelbehuizing tot slangenbehuizing. Voorbeeld: deploymentName wordt gewijzigd in deployment_name.
  • Het gegevensbrontype AzureCognitiveSearch wordt gewijzigd in azure_search.
  • De bronvermeldingen en intenties worden verplaatst van de contexthulpmiddelberichten van het assistentbericht naar het contexthoofdniveau van het assistentbericht, waarbij expliciet schema is gedefinieerd.
POST {endpoint}/openai/deployments/{deployment-id}/chat/completions?api-version={api-version}

Ondersteunde versies

Notitie

Azure Machine Learning-indexen, Pinecone en Elasticsearch worden ondersteund als preview.

URI-parameters

Naam In Type Vereist Beschrijving
deployment-id path tekenreeks Waar Hiermee geeft u de implementatienaam van het chat-voltooiingsmodel op die voor deze aanvraag moet worden gebruikt.
endpoint path tekenreeks Waar Azure OpenAI-eindpunten. Bijvoorbeeld: https://{YOUR_RESOURCE_NAME}.openai.azure.com
api-version query tekenreeks Waar De API-versie die voor deze bewerking moet worden gebruikt.

Aanvraagtekst

De aanvraagbody neemt hetzelfde schema over van de API-aanvraag voor voltooiing van chats. In deze tabel ziet u de parameters die uniek zijn voor Azure OpenAI op uw gegevens.

Name Type Vereist Beschrijving
data_sources DataSource[] Waar De configuratievermeldingen voor Azure OpenAI op uw gegevens. Er moet precies één element in de matrix zijn. Als data_sources dit niet het geval is, gebruikt de service het model voor chatvoltooiingen rechtstreeks en maakt deze geen gebruik van Azure OpenAI op uw gegevens. Wanneer u de data_sources parameter opgeeft, kunt u de logprobs of top_logprobs parameters niet gebruiken.

Hoofdtekst van de reactie

De hoofdtekst van het antwoord neemt hetzelfde schema over van het voltooien van chats API-antwoord. Het antwoordchatbericht heeft een context eigenschap die wordt toegevoegd voor Azure OpenAI On Your Data.

Chatbericht

Het berichtschema van de antwoordassistent neemt het chatbericht over van de chatvoltooiingsassistent en wordt uitgebreid met de eigenschapcontext.

Name Type Vereist Beschrijving
context Context Onwaar Vertegenwoordigt de incrementele stappen die door de Azure OpenAI op uw gegevens worden uitgevoerd tijdens het verwerken van de aanvraag, inclusief de opgehaalde documenten.

Context

Name Type Vereist Beschrijving
citations Bronvermelding[] Onwaar Het resultaat van het ophalen van de gegevensbron, dat wordt gebruikt om het assistentbericht in het antwoord te genereren. Clients kunnen verwijzingen uit de bronvermeldingen weergeven.
intent tekenreeks Onwaar De gedetecteerde intentie uit de chatgeschiedenis. Het doorgeven van de vorige intentie is niet meer nodig. Deze eigenschap negeren.
all_retrieved_documents Opgehaalde documenten[] Onwaar Alle opgehaalde documenten.

Gegevensvermelding

Name Type Vereist Beschrijving
content tekenreeks Waar De inhoud van de bronvermelding.
title tekenreeks Onwaar De titel van de bronvermelding.
url tekenreeks Onwaar De URL van de bronvermelding.
filepath tekenreeks Onwaar Het bestandspad van de bronvermelding.
chunk_id tekenreeks Onwaar De segment-id van de bronvermelding.

Opgehaalde documenten

Name Type Vereist Beschrijving
search_queries tekenreeks[] Waar De zoekquery's die worden gebruikt om het document op te halen.
data_source_index geheel getal Waar De index van de gegevensbron.
original_search_score dubbel Waar De oorspronkelijke zoekscore van het opgehaalde document.
rerank_score dubbel Onwaar De herrankingsscore van het opgehaalde document.
filter_reason tekenreeks Onwaar Vertegenwoordigt de logica voor het filteren van het document. Als het document geen filter ondergaat, blijft dit veld uitgeschakeld. Dit is score als het document wordt gefilterd op de oorspronkelijke drempelwaarde voor de zoekscore die is gedefinieerd door strictness. Dit is rerank als het document niet wordt gefilterd op de oorspronkelijke drempelwaarde voor de zoekscore, maar wordt gefilterd op herrankingsscore en top_n_documents.

Gegevensbron

In deze lijst worden de ondersteunde gegevensbronnen weergegeven.

Voorbeelden

In dit voorbeeld ziet u hoe u de gespreksgeschiedenis doorgeeft voor betere resultaten.

Vereisten:

  • Configureer de roltoewijzingen van het Azure OpenAI-systeem dat aan de Azure Search-service is toegewezen. Vereiste rollen: Search Index Data Reader, Search Service Contributor.
  • Configureer de roltoewijzingen van de gebruiker naar de Azure OpenAI-resource. Vereiste rol: Cognitive Services OpenAI User.
  • Installeer Az CLI en voer deze uit az login.
  • Definieer de volgende omgevingsvariabelen: 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

Installeer de nieuwste pip-pakketten 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)