Azure OpenAI på din data-API-referens
Den här artikeln innehåller referensdokumentation för Python och REST för det nya Azure OpenAI On Your Data-API:et. Den senaste API-versionen är 2024-05-01-preview
Swagger spec.
Kommentar
Sedan API-versionen 2024-02-15-preview
introducerade vi följande icke-bakåtkompatibla ändringar jämfört med tidigare API-versioner:
- API-sökvägen ändras från
/extensions/chat/completions
till/chat/completions
. - Namngivningskonventionen för egenskapsnycklar och uppräkningsvärden ändras från kamelhölje till ormhölje. Exempel:
deploymentName
ändras tilldeployment_name
. - Datakällans typ
AzureCognitiveSearch
ändras tillazure_search
. - Citaten och avsikten flyttas från assistentmeddelandets kontextverktygsmeddelanden till assistentmeddelandets kontextrotnivå med explicit schema definierat.
POST {endpoint}/openai/deployments/{deployment-id}/chat/completions?api-version={api-version}
Versioner som stöds
2024-02-15-preview
Swagger-specifikation.2024-02-01
Swagger-specifikation.2024-05-01-preview
Swagger-specifikation
Kommentar
Azure Machine Learning-index, Pinecone och Elasticsearch stöds som förhandsversion.
URI-parametrar
Name | I | Typ | Obligatoriskt | Beskrivning |
---|---|---|---|---|
deployment-id |
path | sträng | Sant | Anger namnet på chattens slutförandemodell som ska användas för den här begäran. |
endpoint |
path | sträng | Sant | Azure OpenAI-slutpunkter. Till exempel: https://{YOUR_RESOURCE_NAME}.openai.azure.com |
api-version |
query | sträng | Sant | Den API-version som ska användas för den här åtgärden. |
Begärandetext
Begärandetexten ärver samma schema för API-begäran om chattavslut. Den här tabellen visar parametrarna som är unika för Azure OpenAI på dina data.
Namn | Typ | Obligatoriskt | Beskrivning |
---|---|---|---|
data_sources |
DataSource[] | Sant | Konfigurationsposterna för Azure OpenAI på dina data. Det måste finnas exakt ett element i matrisen. Om data_sources inte tillhandahålls använder tjänsten modellen för chattavslut direkt och använder inte Azure OpenAI på dina data. När du anger parametern data_sources kan du inte använda parametrarna logprobs eller top_logprobs . |
Själva svaret
Svarstexten ärver samma schema för API-svar för chattavslut. Svarschattmeddelandet har en context
egenskap som läggs till för Azure OpenAI På dina data.
Chattmeddelande
Meddelandeschemat för svarsassistenten ärver från chattassistentens chattmeddelande och utökas med egenskapen context
.
Namn | Typ | Obligatoriskt | Beskrivning |
---|---|---|---|
context |
Kontext | Falsk | Representerar de inkrementella steg som utförs av Azure OpenAI på dina data när begäran bearbetas, inklusive de hämtade dokumenten. |
Kontext
Namn | Typ | Obligatoriskt | Beskrivning |
---|---|---|---|
citations |
Citat[] | Falsk | Datakällans hämtningsresultat, som används för att generera assistentmeddelandet i svaret. Klienter kan återge referenser från citaten. |
intent |
sträng | Falsk | Den identifierade avsikten från chatthistoriken. Det behövs inte längre att du skickar tillbaka den tidigare avsikten. Ignorera den här egenskapen. |
all_retrieved_documents |
Hämtade dokument[] | Falsk | Alla hämtade dokument. |
Hänvisning
Namn | Typ | Obligatoriskt | Beskrivning |
---|---|---|---|
content |
sträng | Sant | Innehållet i källhänvisning. |
title |
sträng | Falsk | Rubriken på citatet. |
url |
sträng | Falsk | URL:en för källhänvisning. |
filepath |
sträng | Falsk | Filsökvägen för källhänvisning. |
chunk_id |
sträng | Falsk | Citatets segment-ID. |
Hämtade dokument
Namn | Typ | Obligatoriskt | Beskrivning |
---|---|---|---|
search_queries |
string[] | Sant | Sökfrågorna som används för att hämta dokumentet. |
data_source_index |
integer | Sant | Datakällans index. |
original_search_score |
dubbel | Sant | Den ursprungliga sökpoängen för det hämtade dokumentet. |
rerank_score |
dubbel | Falsk | Omrankningspoängen för det hämtade dokumentet. |
filter_reason |
sträng | Falsk | Representerar anledningen till att filtrera dokumentet. Om dokumentet inte genomgår filtrering förblir det här fältet oet. Kommer att vara score om dokumentet filtreras efter det ursprungliga tröskelvärdet för sökpoäng som definieras av strictness . Kommer att vara rerank om dokumentet inte filtreras efter det ursprungliga tröskelvärdet för sökpoäng, men filtreras efter omrankningspoäng och top_n_documents . |
Data source
Den här listan visar de datakällor som stöds.
- Azure AI Search
- Virtuell kärna i Azure Cosmos DB för MongoDB
- Azure Machine Learning-index (förhandsversion)
- Elasticsearch (förhandsversion)
- Pinecone (förhandsversion)
Exempel
Det här exemplet visar hur du skickar konversationshistorik för bättre resultat.
Förutsättningar:
- Konfigurera rolltilldelningarna från Azure OpenAI-systemet som tilldelats hanterad identitet till Azure Search-tjänsten. Nödvändiga roller:
Search Index Data Reader
,Search Service Contributor
. - Konfigurera rolltilldelningarna från användaren till Azure OpenAI-resursen. Obligatorisk roll:
Cognitive Services OpenAI User
. - Installera Az CLI och kör
az login
. - Definiera följande miljövariabler:
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
Installera de senaste pip-paketen 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)