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-preview
specifikace 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 nadeployment_name
. - Typ
AzureCognitiveSearch
zdroje dat se změní naazure_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
-
2024-02-15-preview
Swagger spec. -
2024-02-01
Swagger spec. -
2024-05-01-preview
Swagger spec
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.
- Azure AI Search
- Virtuální jádro služby Azure Cosmos DB pro MongoDB
- Elasticsearch (Preview)
- Borovice (Preview)
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 login
pří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 openai
pip , 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)