Azure OpenAI Pada Referensi API Data Anda
Artikel ini menyediakan dokumentasi referensi untuk Python dan REST untuk Azure OpenAI On Your Data API baru. Versi API terbaru adalah 2024-05-01-preview
spesifikasi Swagger.
Catatan
Karena versi 2024-02-15-preview
API, kami memperkenalkan perubahan melanggar berikut dibandingkan dengan versi API sebelumnya:
- Jalur API diubah dari
/extensions/chat/completions
ke/chat/completions
. - Konvensi penamaan kunci properti dan nilai enum diubah dari casing unta menjadi casing ular. Contoh:
deploymentName
diubah menjadideployment_name
. - Jenis
AzureCognitiveSearch
sumber data diubah menjadiazure_search
. - Kutipan dan niat dipindahkan dari pesan alat konteks pesan asisten ke tingkat akar konteks pesan asisten dengan skema eksplisit yang ditentukan.
POST {endpoint}/openai/deployments/{deployment-id}/chat/completions?api-version={api-version}
Versi yang didukung
-
2024-02-15-preview
Spesifikasi Swagger. -
2024-02-01
Spesifikasi Swagger. -
2024-05-01-preview
Spesifikasi Swagger
Catatan
Pinecone, dan Elasticsearch didukung sebagai pratinjau.
Parameter URI
Nama | Dalam | Jenis | Wajib | Deskripsi |
---|---|---|---|---|
deployment-id |
jalan | string | Benar | Menentukan nama penyebaran model penyelesaian obrolan yang akan digunakan untuk permintaan ini. |
endpoint |
jalan | string | Benar | Titik akhir Azure OpenAI. Misalnya: https://{YOUR_RESOURCE_NAME}.openai.azure.com |
api-version |
pertanyaan | string | Benar | Versi API yang digunakan untuk operasi ini. |
Isi permintaan
Isi permintaan mewarisi skema permintaan API penyelesaian obrolan yang sama. Tabel ini memperlihatkan parameter unik untuk Azure OpenAI On Your Data.
Isi respons
Isi respons mewarisi skema respons API penyelesaian obrolan yang sama. Pesan obrolan respons memiliki context
properti, yang ditambahkan untuk Azure OpenAI On Your Data.
Pesan obrolan
Skema pesan asisten respons mewarisi dari pesan obrolan asisten penyelesaian obrolan, dan diperluas dengan properti context
.
Nama | Tipe | Wajib | Deskripsi |
---|---|---|---|
context |
Konteks | Salah | Mewakili langkah-langkah inkremental yang dilakukan oleh Azure OpenAI On Your Data saat memproses permintaan, termasuk dokumen yang diambil. |
Konteks
Nama | Tipe | Wajib | Deskripsi |
---|---|---|---|
citations |
Kutipan[] | Salah | Hasil pengambilan sumber data, digunakan untuk menghasilkan pesan asisten dalam respons. Klien dapat merender referensi dari kutipan. |
intent |
string | Salah | Niat yang terdeteksi dari riwayat obrolan. Meneruskan kembali niat sebelumnya tidak lagi diperlukan. Abaikan properti ini. |
all_retrieved_documents |
Dokumen yang diambil[] | Salah | Semua dokumen yang diambil. |
Kutipan
Nama | Tipe | Wajib | Deskripsi |
---|---|---|---|
content |
string | Benar | Konten kutipan. |
title |
string | Salah | Judul kutipan. |
url |
string | Salah | URL kutipan. |
filepath |
string | Salah | Jalur file kutipan. |
chunk_id |
string | Salah | ID gugus kutipan. |
Dokumen yang diambil
Nama | Tipe | Wajib | Deskripsi |
---|---|---|---|
search_queries |
string[] | Benar | Kueri pencarian yang digunakan untuk mengambil dokumen. |
data_source_index |
Integer | Benar | Indeks sumber data. |
original_search_score |
ganda | Benar | Skor pencarian asli dokumen yang diambil. |
rerank_score |
ganda | Salah | Skor rerank dari dokumen yang diambil. |
filter_reason |
string | Salah | Mewakili alasan untuk memfilter dokumen. Jika dokumen tidak mengalami pemfilteran, bidang ini akan tetap tidak diatur. Akan jika score dokumen difilter oleh ambang batas skor pencarian asli yang ditentukan oleh strictness . Akan jika rerank dokumen tidak difilter oleh ambang skor pencarian asli, tetapi difilter oleh skor rerank dan top_n_documents . |
Sumber data
Daftar ini memperlihatkan sumber data yang didukung.
- Pencarian Azure AI
- Azure Cosmos DB untuk MongoDB vCore
- Elasticsearch (pratinjau)
- Pinecone (pratinjau)
Contoh
Contoh ini menunjukkan cara meneruskan riwayat percakapan untuk hasil yang lebih baik.
Prasyarat:
- Konfigurasikan penetapan peran dari sistem Azure OpenAI yang ditetapkan identitas terkelola ke layanan pencarian Azure. Peran yang diperlukan:
Search Index Data Reader
,Search Service Contributor
. - Konfigurasikan penetapan peran dari pengguna ke sumber daya Azure OpenAI. Peran yang diperlukan:
Cognitive Services OpenAI User
. - Instal Az CLI, dan jalankan
az login
. - Tentukan variabel lingkungan berikut:
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
Instal paket openai
pip terbaru , 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)