Sdílet prostřednictvím


Referenční informace k rozhraní API pro Azure OpenAI

Tento článek obsahuje referenční dokumentaci pro Python a REST pro nové rozhraní Azure OpenAI ve vašem rozhraní DATA API. Nejnovější verze rozhraní API je 2024-05-01-previewspecifikace Swagger.

Poznámka:

Vzhledem k tomu, že jsme ve verzi 2024-02-15-preview rozhraní API zavedli následující zásadní změny v porovnání se staršími verzemi rozhraní API:

  • Cesta rozhraní API se změní z /extensions/chat/completions na /chat/completions.
  • Konvence pojmenování klíčů vlastností a výčtových hodnot se mění z camel casing na had casing. Příklad: deploymentName je změněn na deployment_name.
  • Typ AzureCognitiveSearch zdroje dat se změní na azure_search.
  • Citace a záměr se přesunou ze zpráv kontextových zpráv pomocníka do kořenové úrovně kontextu zprávy asistenta s explicitním schématem.
POST {endpoint}/openai/deployments/{deployment-id}/chat/completions?api-version={api-version}

Podporované verze

Poznámka:

Pinecone a Elasticsearch jsou podporovány jako verze Preview.

Parametry identifikátoru URI

Název V Typ Požadováno Popis
deployment-id path string True Určuje název nasazení modelu dokončení chatu, který se má pro tento požadavek použít.
endpoint path string True Koncové body Azure OpenAI Příklad: https://{YOUR_RESOURCE_NAME}.openai.azure.com
api-version query string True Verze rozhraní API, která se má použít pro tuto operaci.

Text požadavku

Tělo požadavku dědí stejné schéma požadavku rozhraní API pro dokončování chatu. Tato tabulka zobrazuje parametry jedinečné pro Azure OpenAI ve vašich datech.

Name Type Požadováno Popis
data_sources Zdroj dat[] True Položky konfigurace pro Azure OpenAI ve vašich datech. V poli musí být přesně jeden prvek. Pokud data_sources není k dispozici, služba používá model dokončování chatu přímo a nepoužívá Azure OpenAI ve vašich datech. Když zadáte data_sources parametr, nebudete moct tyto parametry top_logprobs ani parametry používatlogprobs.

Text odpovědi

Tělo odpovědi dědí stejné schéma odpovědi rozhraní API pro dokončování chatu. Zpráva chatu s odpovědí má context vlastnost, která se přidá pro Azure OpenAI ve vašich datech.

Chatovací zpráva

Schéma zpráv pomocníka pro odpovědi dědí ze zprávy pomocníka pro dokončování chatu a je rozšířen o vlastnost context.

Name Type Požadováno Popis
context Kontext False Představuje přírůstkové kroky prováděné službou Azure OpenAI ve vašich datech při zpracování požadavku, včetně načtených dokumentů.

Kontext

Name Type Požadováno Popis
citations Citace[] False Výsledek načtení zdroje dat použitý k vygenerování zprávy asistenta v odpovědi. Klienti mohou vykreslit odkazy z citací.
intent string False Zjištěný záměr z historie chatu. Předání předchozího záměru už není potřeba. Tuto vlastnost ignorujte.
all_retrieved_documents Načtené dokumenty[] False Všechny načtené dokumenty.

Citace

Name Type Požadováno Popis
content string True Obsah citace.
title string False Název citace.
url string False Adresa URL citace.
filepath string False Cesta k souboru citace.
chunk_id string False ID bloku citace.

Načtené dokumenty

Name Type Požadováno Popis
search_queries string[] True Vyhledávací dotazy použité k načtení dokumentu.
data_source_index integer True Index zdroje dat.
original_search_score double True Původní skóre hledání načteného dokumentu.
rerank_score double False Skóre opětovného pořadí načteného dokumentu.
filter_reason string False Představuje odůvodnění filtrování dokumentu. Pokud dokument neprojde filtrováním, zůstane toto pole bez nastavení. score Bude, pokud je dokument filtrován podle původní prahové hodnoty skóre hledání definované .strictness rerank Bude, pokud dokument není filtrován podle původní prahové hodnoty skóre hledání, ale je filtrován podle skóre pořadí a top_n_documents.

Zdroj dat

Tento seznam zobrazuje podporované zdroje dat.

Příklady

Tento příklad ukazuje, jak předat historii konverzací pro lepší výsledky.

Požadavky:

  • Nakonfigurujte přiřazení rolí ze systému Azure OpenAI přiřazené spravované identitě ke službě Azure Search. Požadované role: Search Index Data Reader, Search Service Contributor.
  • Nakonfigurujte přiřazení rolí od uživatele k prostředku Azure OpenAI. Požadovaná role: Cognitive Services OpenAI User.
  • Nainstalujte Az CLI a spusťte az loginpříkaz .
  • Definujte následující proměnné prostředí: 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

Nainstalujte nejnovější balíčky openaipip , 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)