Bagikan melalui


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-previewspesifikasi 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 menjadi deployment_name.
  • Jenis AzureCognitiveSearch sumber data diubah menjadi azure_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

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.

Nama Tipe Wajib Deskripsi
data_sources Sumber Data[] Benar Entri konfigurasi untuk Azure OpenAI On Your Data. Harus ada tepat satu elemen dalam array. Jika data_sources tidak disediakan, layanan menggunakan model penyelesaian obrolan secara langsung, dan tidak menggunakan Azure OpenAI On Your Data. Saat menentukan data_sources parameter, Anda tidak akan dapat menggunakan logprobs parameter atau top_logprobs .

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.

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 openaipip 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)