Bagikan melalui


Mulai cepat: Mengobrol dengan model Azure OpenAI menggunakan data Anda sendiri

Dalam mulai cepat ini, Anda dapat menggunakan data Anda sendiri dengan model Azure OpenAI. Menggunakan model Azure OpenAI pada data Anda dapat memberi Anda platform AI percakapan yang kuat yang memungkinkan komunikasi yang lebih cepat dan lebih akurat.

Prasyarat

Sumber daya berikut:

  • Unduh contoh data dari GitHub jika Anda tidak memiliki data Anda sendiri.

Menambahkan data Anda menggunakan portal Azure AI Foundry

Petunjuk / Saran

Anda dapat menggunakan Azure Developer CLI untuk membuat sumber daya yang diperlukan secara terprogram untuk Azure OpenAI On Your Data

Navigasikan ke portal Azure AI Foundry dan masuk dengan kredensial yang memiliki akses ke sumber daya Azure OpenAI Anda.

  1. Anda dapat membuat proyek Azure AI Foundry dengan mengeklik Buat proyek, atau melanjutkan langsung dengan mengklik tombol pada petak Peta Fokus Azure OpenAI di Azure AI Foundry Models .

    Tangkapan layar halaman utama portal Azure AI Foundry.

  2. Pilih Obrolan pada Playgrounds di panel kiri, dan pilih penerapan model Anda.

  3. Di Chat Playground, pilih Tambahkan Data Anda dan kemudian Tambahkan Sumber Data

    Cuplikan layar ruang percobaan obrolan di Azure AI Foundry.

  4. Di panel yang muncul, pilih Unggah file (pratinjau) di bawah Pilih sumber data. Azure OpenAI memerlukan sumber daya penyimpanan dan sumber daya pencarian untuk mengakses dan mengindeks data Anda.

    Petunjuk / Saran

    1. Agar Azure OpenAI mengakses akun penyimpanan Anda, Anda harus mengaktifkan Berbagi sumber daya lintas asal (CORS). Jika CORS belum diaktifkan untuk sumber daya Azure Blob Storage, pilih Aktifkan CORS.

    2. Pilih sumber daya Azure AI Search Anda, dan pilih pengakuan bahwa menyambungkannya akan menimbulkan penggunaan di akun Anda. Lalu pilih Berikutnya.

    Cuplikan layar memperlihatkan opsi untuk memilih sumber data di portal Azure AI Foundry.

  5. Pada panel Unggah file , pilih Telusuri file dan pilih file yang Anda unduh dari bagian prasyarat , atau data Anda sendiri. Lalu pilih Unggah file. Lalu pilih Berikutnya.

  6. Pada panel Manajemen data , Anda dapat memilih apakah akan mengaktifkan pencarian semantik atau pencarian vektor untuk indeks Anda.

    Penting

    • Pencarian semantik dan pencarian vektor tunduk pada harga tambahan. Anda perlu memilih SKU Dasar atau lebih tinggi untuk mengaktifkan pencarian semantik atau pencarian vektor. Lihat perbedaan tingkat harga dan batas layanan untuk informasi selengkapnya.
    • Untuk membantu meningkatkan kualitas pengambilan informasi dan respons model, sebaiknya aktifkan pencarian semantik untuk bahasa sumber data berikut: Inggris, Prancis, Spanyol, Portugis, Italia, Jerman, Cina(Zh), Jepang, Korea, Rusia, dan Arab.
  7. Tinjau detail yang Anda masukkan, dan pilih Simpan dan tutup. Anda sekarang dapat mengobrol dengan model dan akan menggunakan informasi dari data Anda untuk membangun respons.

Playground obrolan

Mulai jelajahi kemampuan Azure OpenAI dengan pendekatan tanpa kode melalui taman bermain obrolan. Ini hanya kotak teks di mana Anda dapat mengirimkan permintaan untuk membuat penyelesaian. Dari halaman ini, Anda dapat dengan cepat melakukan iterasi dan bereksperimen dengan kemampuan.

Cuplikan layar halaman playground portal Azure AI Foundry dengan bagian disorot.

Taman bermain memberi Anda opsi untuk menyesuaikan pengalaman obrolan Anda. Di menu atas, Anda dapat memilih Sebarkan untuk menentukan model mana yang menghasilkan respons menggunakan hasil pencarian dari indeks Anda. Anda memilih jumlah pesan sebelumnya untuk disertakan sebagai riwayat percakapan untuk respons yang dihasilkan di masa mendatang. Riwayat percakapan memberikan konteks untuk menghasilkan respons terkait tetapi juga menggunakan penggunaan token. Indikator kemajuan token input melacak jumlah token pertanyaan yang Anda kirimkan.

Pengaturan Tingkat Lanjut di sebelah kiri adalah parameter runtime, yang memberi Anda kontrol atas pengambilan dan mencari informasi yang relevan dari data Anda. Kasus penggunaan yang baik adalah ketika Anda ingin memastikan respons dihasilkan hanya berdasarkan data Anda atau Anda menemukan model tidak dapat menghasilkan respons berdasarkan informasi yang ada pada data Anda.

  • Keketatan menentukan agresivitas sistem dalam memfilter dokumen pencarian berdasarkan skor kesamaannya. Mengatur ketegasan ke 5 menunjukkan bahwa sistem akan secara agresif memfilter dokumen, menerapkan ambang kesamaan yang sangat tinggi. Pencarian semantik dapat membantu dalam skenario ini karena model peringkat melakukan pekerjaan yang lebih baik untuk menyimpulkan niat kueri. Tingkat keketatan yang lebih rendah menghasilkan lebih banyak jawaban verbose, tetapi mungkin juga menyertakan informasi yang tidak ada dalam indeks Anda. Ini diatur ke 3 secara default.

  • Dokumen yang diambil adalah bilangan bulat yang dapat diatur ke 3, 5, 10, atau 20, dan mengontrol jumlah gugus dokumen yang disediakan untuk model bahasa besar untuk merumuskan respons akhir. Secara default, ini diatur ke 5.

  • Saat Batasi respons terhadap data Anda diaktifkan, model hanya mencoba mengandalkan dokumen Anda untuk respons. Ini diatur ke true secara default.

Cuplikan layar pengaturan tingkat lanjut.

Kirim kueri pertama Anda. Model obrolan berkinerja terbaik dalam latihan tanya jawab. Misalnya, "Apa paket kesehatan saya yang tersedia?" atau "Apa opsi plus kesehatannya?".

Kueri yang memerlukan analisis data mungkin akan gagal, seperti "Paket kesehatan mana yang paling populer?". Kueri yang memerlukan informasi tentang semua data Anda juga kemungkinan akan gagal, seperti "Berapa banyak dokumen yang telah saya unggah?". Ingatlah bahwa mesin pencari mencari potongan yang memiliki istilah, frasa, atau konstruksi yang tepat atau serupa dengan kueri. Dan meskipun model mungkin memahami pertanyaan, jika hasil pencarian adalah gugus dari himpunan data, itu bukan informasi yang tepat untuk menjawab pertanyaan semacam itu.

Obrolan dibatasi oleh jumlah dokumen (potongan) yang dikembalikan dalam respons (dibatasi hingga 3-20 di taman bermain portal Azure AI Foundry). Seperti yang dapat Anda bayangkan, mengajukan pertanyaan tentang "semua judul" memerlukan pemindaian penuh dari seluruh penyimpanan vektor.

Sebarkan model anda

Setelah puas dengan pengalaman, Anda dapat menyebarkan aplikasi web langsung dari portal dengan memilih tombol Sebarkan ke .

Cuplikan layar memperlihatkan tombol penyebaran model di portal.

Ini memberi Anda opsi untuk menyebarkan ke aplikasi web yang berdiri sendiri, atau copilot di dalam Copilot Studio (pratinjau) jika Anda menggunakan data Anda sendiri dalam model.

Sebagai contoh, jika Anda memilih untuk menyebarkan aplikasi web:

Saat pertama kali menyebarkan aplikasi web, Anda harus memilih Buat aplikasi web baru. Pilih nama untuk aplikasi, yang akan menjadi bagian dari URL aplikasi. Contohnya,https://<appname>.azurewebsites.net.

Pilih langganan, grup sumber daya, lokasi, dan paket harga Anda untuk aplikasi yang diterbitkan. Untuk memperbarui aplikasi yang sudah ada, pilih Terbitkan ke aplikasi web yang sudah ada dan pilih nama aplikasi Anda sebelumnya dari menu dropdown.

Jika Anda memilih untuk menyebarkan aplikasi web, lihat pertimbangan penting untuk menggunakannya.

Prasyarat

Sumber daya berikut:

Menambahkan data Anda menggunakan portal Azure AI Foundry

Petunjuk / Saran

Anda dapat menggunakan Azure Developer CLI untuk membuat sumber daya yang diperlukan secara terprogram untuk Azure OpenAI On Your Data

Navigasikan ke portal Azure AI Foundry dan masuk dengan kredensial yang memiliki akses ke sumber daya Azure OpenAI Anda.

  1. Anda dapat membuat proyek Azure AI Foundry dengan mengeklik Buat proyek, atau melanjutkan langsung dengan mengklik tombol pada petak Peta Fokus Azure OpenAI di Azure AI Foundry Models .

    Tangkapan layar halaman utama portal Azure AI Foundry.

  2. Pilih Obrolan pada Playgrounds di panel kiri, dan pilih penerapan model Anda.

  3. Di Chat Playground, pilih Tambahkan Data Anda dan kemudian Tambahkan Sumber Data

    Cuplikan layar ruang percobaan obrolan di Azure AI Foundry.

  4. Di panel yang muncul, pilih Unggah file (pratinjau) di bawah Pilih sumber data. Azure OpenAI memerlukan sumber daya penyimpanan dan sumber daya pencarian untuk mengakses dan mengindeks data Anda.

    Petunjuk / Saran

    1. Agar Azure OpenAI mengakses akun penyimpanan Anda, Anda harus mengaktifkan Berbagi sumber daya lintas asal (CORS). Jika CORS belum diaktifkan untuk sumber daya Azure Blob Storage, pilih Aktifkan CORS.

    2. Pilih sumber daya Azure AI Search Anda, dan pilih pengakuan bahwa menyambungkannya akan menimbulkan penggunaan di akun Anda. Lalu pilih Berikutnya.

    Cuplikan layar memperlihatkan opsi untuk memilih sumber data di portal Azure AI Foundry.

  5. Pada panel Unggah file , pilih Telusuri file dan pilih file yang Anda unduh dari bagian prasyarat , atau data Anda sendiri. Lalu pilih Unggah file. Lalu pilih Berikutnya.

  6. Pada panel Manajemen data , Anda dapat memilih apakah akan mengaktifkan pencarian semantik atau pencarian vektor untuk indeks Anda.

    Penting

    • Pencarian semantik dan pencarian vektor tunduk pada harga tambahan. Anda perlu memilih SKU Dasar atau lebih tinggi untuk mengaktifkan pencarian semantik atau pencarian vektor. Lihat perbedaan tingkat harga dan batas layanan untuk informasi selengkapnya.
    • Untuk membantu meningkatkan kualitas pengambilan informasi dan respons model, sebaiknya aktifkan pencarian semantik untuk bahasa sumber data berikut: Inggris, Prancis, Spanyol, Portugis, Italia, Jerman, Cina(Zh), Jepang, Korea, Rusia, dan Arab.
  7. Tinjau detail yang Anda masukkan, dan pilih Simpan dan tutup. Anda sekarang dapat mengobrol dengan model dan akan menggunakan informasi dari data Anda untuk membangun respons.

Mengambil informasi sumber daya

Anda perlu mengambil informasi berikut untuk mengautentikasi aplikasi Anda dengan sumber daya Azure OpenAI Anda. Mulai cepat ini mengasumsikan Anda telah mengunggah data Anda ke akun penyimpanan blob Azure dan membuat indeks Azure AI Search. Lihat Menambahkan data Anda menggunakan portal Azure AI Foundry.

Nama variabel Nilai
AZURE_OPENAI_ENDPOINT Nilai ini dapat ditemukan di bagian Kunci & Titik Akhir saat memeriksa sumber daya Azure OpenAI Anda dari portal Microsoft Azure. Contoh titik akhir adalah: https://my-resoruce.openai.azure.com.
AZURE_OPENAI_DEPLOYMENT_NAME Nilai ini sesuai dengan nama kustom yang Anda pilih untuk penyebaran saat Anda menyebarkan model. Nilai ini dapat ditemukan di bawahPenyebaran Manajemen >Sumber Dayadi portal Microsoft Azure.
AZURE_AI_SEARCH_ENDPOINT Nilai ini dapat ditemukan di bagian Gambaran Umum saat memeriksa sumber daya Pencarian Azure AI Anda dari portal Microsoft Azure.
AZURE_AI_SEARCH_INDEX Nilai ini sesuai dengan nama indeks yang Anda buat untuk menyimpan data Anda. Anda dapat menemukannya di bagian Gambaran Umum saat memeriksa sumber daya Azure AI Search Anda dari portal Microsoft Azure.

Pelajari selengkapnya tentang autentikasi tanpa kunci dan mengatur variabel lingkungan.

Dari direktori proyek, buka file Program.cs dan ganti kontennya dengan kode berikut:

using System;
using Azure.AI.OpenAI;
using System.ClientModel;
using Azure.AI.OpenAI.Chat;
using OpenAI.Chat;
using static System.Environment;

string azureOpenAIEndpoint = GetEnvironmentVariable("AZURE_OPENAI_ENDPOINT");
string azureOpenAIKey = GetEnvironmentVariable("AZURE_OPENAI_API_KEY");
string deploymentName = GetEnvironmentVariable("AZURE_OPENAI_DEPLOYMENT_NAME");
string searchEndpoint = GetEnvironmentVariable("AZURE_AI_SEARCH_ENDPOINT");
string searchKey = GetEnvironmentVariable("AZURE_AI_SEARCH_API_KEY");
string searchIndex = GetEnvironmentVariable("AZURE_AI_SEARCH_INDEX");

AzureOpenAIClient openAIClient = new(
			new Uri(azureOpenAIEndpoint),
			new ApiKeyCredential(azureOpenAIKey));
ChatClient chatClient = openAIClient.GetChatClient(deploymentName);

// Extension methods to use data sources with options are subject to SDK surface changes. Suppress the
// warning to acknowledge and this and use the subject-to-change AddDataSource method.
#pragma warning disable AOAI001

ChatCompletionOptions options = new();
options.AddDataSource(new AzureSearchChatDataSource()
{
	Endpoint = new Uri(searchEndpoint),
	IndexName = searchIndex,
	Authentication = DataSourceAuthentication.FromApiKey(searchKey),
});

ChatCompletion completion = chatClient.CompleteChat(
	[
		new UserChatMessage("What health plans are available?"),
			],
	options);

ChatMessageContext onYourDataContext = completion.GetMessageContext();

if (onYourDataContext?.Intent is not null)
{
	Console.WriteLine($"Intent: {onYourDataContext.Intent}");
}
foreach (ChatCitation citation in onYourDataContext?.Citations ?? [])
{
	Console.WriteLine($"Citation: {citation.Content}");
}

Penting

Untuk produksi, gunakan cara aman untuk menyimpan dan mengakses kredensial Anda seperti Azure Key Vault. Untuk informasi selengkapnya tentang keamanan kredensial, lihat artikel keamanan ini.

dotnet run Program.cs

Keluaran

Contoso Electronics offers two health plans: Northwind Health Plus and Northwind Standard [doc1]. Northwind Health Plus is a comprehensive plan that provides coverage for medical, vision, and dental services, prescription drug coverage, mental health and substance abuse coverage, and coverage for preventive care services. It also offers coverage for emergency services, both in-network and out-of-network. On the other hand, Northwind Standard is a basic plan that provides coverage for medical, vision, and dental services, prescription drug coverage, and coverage for preventive care services. However, it does not offer coverage for emergency services, mental health and substance abuse coverage, or out-of-network services [doc1].

Intent: ["What are the available health plans?", "List of health plans available", "Health insurance options", "Types of health plans offered"]

Citation:
Contoso Electronics plan and benefit packages

Thank you for your interest in the Contoso electronics plan and benefit packages. Use this document to

learn more about the various options available to you...// Omitted for brevity

Ini akan menunggu sampai model menghasilkan seluruh responsnya sebelum mencetak hasilnya.

Kode sumber| Kode sumber | Contoh

Prasyarat

Sumber daya berikut:

Menambahkan data Anda menggunakan portal Azure AI Foundry

Petunjuk / Saran

Anda dapat menggunakan Azure Developer CLI untuk membuat sumber daya yang diperlukan secara terprogram untuk Azure OpenAI On Your Data

Navigasikan ke portal Azure AI Foundry dan masuk dengan kredensial yang memiliki akses ke sumber daya Azure OpenAI Anda.

  1. Anda dapat membuat proyek Azure AI Foundry dengan mengeklik Buat proyek, atau melanjutkan langsung dengan mengklik tombol pada petak Peta Fokus Azure OpenAI di Azure AI Foundry Models .

    Tangkapan layar halaman utama portal Azure AI Foundry.

  2. Pilih Obrolan pada Playgrounds di panel kiri, dan pilih penerapan model Anda.

  3. Di Chat Playground, pilih Tambahkan Data Anda dan kemudian Tambahkan Sumber Data

    Cuplikan layar ruang percobaan obrolan di Azure AI Foundry.

  4. Di panel yang muncul, pilih Unggah file (pratinjau) di bawah Pilih sumber data. Azure OpenAI memerlukan sumber daya penyimpanan dan sumber daya pencarian untuk mengakses dan mengindeks data Anda.

    Petunjuk / Saran

    1. Agar Azure OpenAI mengakses akun penyimpanan Anda, Anda harus mengaktifkan Berbagi sumber daya lintas asal (CORS). Jika CORS belum diaktifkan untuk sumber daya Azure Blob Storage, pilih Aktifkan CORS.

    2. Pilih sumber daya Azure AI Search Anda, dan pilih pengakuan bahwa menyambungkannya akan menimbulkan penggunaan di akun Anda. Lalu pilih Berikutnya.

    Cuplikan layar memperlihatkan opsi untuk memilih sumber data di portal Azure AI Foundry.

  5. Pada panel Unggah file , pilih Telusuri file dan pilih file yang Anda unduh dari bagian prasyarat , atau data Anda sendiri. Lalu pilih Unggah file. Lalu pilih Berikutnya.

  6. Pada panel Manajemen data , Anda dapat memilih apakah akan mengaktifkan pencarian semantik atau pencarian vektor untuk indeks Anda.

    Penting

    • Pencarian semantik dan pencarian vektor tunduk pada harga tambahan. Anda perlu memilih SKU Dasar atau lebih tinggi untuk mengaktifkan pencarian semantik atau pencarian vektor. Lihat perbedaan tingkat harga dan batas layanan untuk informasi selengkapnya.
    • Untuk membantu meningkatkan kualitas pengambilan informasi dan respons model, sebaiknya aktifkan pencarian semantik untuk bahasa sumber data berikut: Inggris, Prancis, Spanyol, Portugis, Italia, Jerman, Cina(Zh), Jepang, Korea, Rusia, dan Arab.
  7. Tinjau detail yang Anda masukkan, dan pilih Simpan dan tutup. Anda sekarang dapat mengobrol dengan model dan akan menggunakan informasi dari data Anda untuk membangun respons.

Mengambil variabel yang diperlukan

Agar berhasil melakukan panggilan terhadap Azure OpenAI, Anda memerlukan variabel berikut. Mulai cepat ini mengasumsikan Anda telah mengunggah data Anda ke akun penyimpanan blob Azure dan membuat indeks Azure AI Search. Untuk informasi selengkapnya, lihat Menambahkan data Anda menggunakan Azure AI Foundry.

Nama variabel Nilai
AZURE_OPENAI_ENDPOINT Anda dapat menemukan nilai ini di bagian Kunci & Titik Akhir saat memeriksa sumber daya Azure OpenAI Anda dari portal Microsoft Azure. Atau, Anda dapat menemukan nilai dalam Azure AI Foundry>playground Obrolan>tampilan Kode. Contoh titik akhir adalah: https://my-resource.openai.azure.com.
AZURE_OPENAI_API_KEY Anda dapat menemukan nilai ini di bagian Kunci Manajemen >& Titik Akhir saat memeriksa sumber daya Azure OpenAI Anda dari portal Microsoft Azure. Anda dapat menggunakan KEY1 atau KEY2. Selalu miliki dua kunci untuk memungkinkan Anda memutar dan meregenerasi kunci dengan aman tanpa menyebabkan gangguan layanan.
AZURE_OPEN_AI_DEPLOYMENT_ID Nilai ini sesuai dengan nama kustom yang Anda pilih untuk penyebaran saat Anda menyebarkan model. Anda dapat menemukan nilai ini di bawahPenyebaran> Sumber Daya di portal Microsoft Azure atau sebagai alternatif di bawahPenyebaran> di portal Azure AI Foundry.
AZURE_AI_SEARCH_ENDPOINT Anda dapat menemukan nilai ini di bagian Gambaran Umum saat memeriksa sumber daya Pencarian Azure AI Anda dari portal Microsoft Azure.
AZURE_AI_SEARCH_API_KEY Anda dapat menemukan nilai ini di bagianKunci> saat memeriksa sumber daya Pencarian Azure AI Anda dari portal Microsoft Azure. Anda dapat menggunakan kunci admin utama atau kunci admin sekunder. Selalu miliki dua kunci untuk memungkinkan Anda memutar dan meregenerasi kunci dengan aman tanpa menyebabkan gangguan layanan.
AZURE_AI_SEARCH_INDEX Nilai ini sesuai dengan nama indeks yang Anda buat untuk menyimpan data Anda. Anda dapat menemukannya di bagian Gambaran Umum saat memeriksa sumber daya Azure AI Search Anda dari portal Microsoft Azure.

Variabel lingkungan

Buat dan tetapkan variabel lingkungan persisten untuk kunci dan titik akhir Anda.

Penting

Gunakan kunci API dengan hati-hati. Jangan sertakan kunci API langsung dalam kode Anda, dan jangan pernah mempostingnya secara publik. Jika Anda menggunakan kunci API, simpan dengan aman di Azure Key Vault. Untuk informasi selengkapnya tentang menggunakan kunci API dengan aman di aplikasi Anda, lihat Kunci API dengan Azure Key Vault.

Untuk informasi selengkapnya tentang keamanan layanan AI, lihat Mengautentikasi permintaan ke layanan Azure AI.

Catatan

Spring AI default nama model ke gpt-35-turbo. Anda hanya perlu memberikan SPRING_AI_AZURE_OPENAI_MODEL nilai jika Anda telah menyebarkan model dengan nama yang berbeda.

export SPRING_AI_AZURE_OPENAI_ENDPOINT=REPLACE_WITH_YOUR_AOAI_ENDPOINT_VALUE_HERE
export SPRING_AI_AZURE_OPENAI_API_KEY=REPLACE_WITH_YOUR_AOAI_KEY_VALUE_HERE
export SPRING_AI_AZURE_COGNITIVE_SEARCH_ENDPOINT=REPLACE_WITH_YOUR_AZURE_SEARCH_RESOURCE_VALUE_HERE
export SPRING_AI_AZURE_COGNITIVE_SEARCH_API_KEY=REPLACE_WITH_YOUR_AZURE_SEARCH_RESOURCE_KEY_VALUE_HERE
export SPRING_AI_AZURE_COGNITIVE_SEARCH_INDEX=REPLACE_WITH_YOUR_INDEX_NAME_HERE
export SPRING_AI_AZURE_OPENAI_MODEL=REPLACE_WITH_YOUR_MODEL_NAME_HERE

Membuat aplikasi Spring baru

Spring AI saat ini tidak mendukung AzureCognitiveSearchChatExtensionConfiguration opsi yang memungkinkan kueri Azure AI merangkum metode Pengambilan Augmented Generation (RAG) dan menyembunyikan detail dari pengguna. Sebagai alternatif, Anda masih dapat memanggil metode RAG langsung di aplikasi Anda untuk mengkueri data di indeks Azure AI Search Anda dan menggunakan dokumen yang diambil untuk menambah kueri Anda.

Spring AI mendukung abstraksi VectorStore, dan Anda dapat membungkus Azure AI Search dapat dibungkus dalam implementasi Spring AI VectorStore untuk mengkueri data kustom Anda. Proyek berikut mengimplementasikan VectorStore kustom yang didukung oleh Azure AI Search dan langsung menjalankan operasi RAG.

Di jendela Bash, buat direktori baru untuk aplikasi Anda, dan navigasikan ke dalamnya.

mkdir ai-custom-data-demo && cd ai-custom-data-demo

Jalankan perintah spring init dari direktori yang berfungsi. Perintah ini membuat struktur direktori standar untuk proyek Spring Anda termasuk file sumber kelas Java utama dan file pom.xmlyang digunakan untuk mengelola proyek berbasis Maven.

spring init -a ai-custom-data-demo -n AICustomData --force --build maven -x

File dan folder yang dihasilkan menyerupai struktur berikut:

ai-custom-data-demo/
|-- pom.xml
|-- mvn
|-- mvn.cmd
|-- HELP.md
|-- src/
    |-- main/
    |   |-- resources/
    |   |   |-- application.properties
    |   |-- java/
    |       |-- com/
    |           |-- example/
    |               |-- aicustomdatademo/
    |                   |-- AiCustomDataApplication.java
    |-- test/
        |-- java/
            |-- com/
                |-- example/
                    |-- aicustomdatademo/
                        |-- AiCustomDataApplicationTests.java

Edit aplikasi Spring

  1. Edit file pom.xml .

    Dari akar direktori proyek, buka file pom.xml di editor atau IDE pilihan Anda dan timpa file dengan konten berikut:

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>3.2.0</version>
            <relativePath/> <!-- lookup parent from repository -->
        </parent>
        <groupId>com.example</groupId>
        <artifactId>ai-custom-data-demo</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <name>AICustomData</name>
        <description>Demo project for Spring Boot</description>
        <properties>
            <java.version>17</java.version>
        </properties>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.experimental.ai</groupId>
                <artifactId>spring-ai-azure-openai-spring-boot-starter</artifactId>
                <version>0.7.0-SNAPSHOT</version>
            </dependency>
            <dependency>
                <groupId>com.azure</groupId>
                <artifactId>azure-search-documents</artifactId>
                <version>11.6.0-beta.10</version>
                <exclusions>
                    <!-- exclude this to avoid changing the default serializer and the null-value behavior -->
                    <exclusion>
                        <groupId>com.azure</groupId>
                        <artifactId>azure-core-serializer-json-jackson</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <optional>true</optional>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
        </dependencies>
    
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
        </build>
        <repositories>
            <repository>
                <id>spring-snapshots</id>
                <name>Spring Snapshots</name>
                <url>https://repo.spring.io/snapshot</url>
                <releases>
                    <enabled>false</enabled>
                </releases>
            </repository>
        </repositories>
    </project>
    
  2. Dari folder src/main/java/com/example/aicustomdatademo , buka AiCustomDataApplication.java di editor atau IDE pilihan Anda dan tempelkan kode berikut:

    package com.example.aicustomdatademo;
    
    import java.util.Collections;
    import java.util.List;
    import java.util.Map;
    import java.util.Optional;
    import java.util.stream.Collectors;
    
    import org.springframework.ai.client.AiClient;
    import org.springframework.ai.document.Document;
    import org.springframework.ai.embedding.EmbeddingClient;
    import org.springframework.ai.prompt.Prompt;
    import org.springframework.ai.prompt.SystemPromptTemplate;
    import org.springframework.ai.prompt.messages.MessageType;
    import org.springframework.ai.prompt.messages.UserMessage;
    import org.springframework.ai.vectorstore.VectorStore;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.boot.CommandLineRunner;
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.context.annotation.Bean;
    
    import com.azure.core.credential.AzureKeyCredential;
    import com.azure.core.util.Context;
    import com.azure.search.documents.SearchClient;
    import com.azure.search.documents.SearchClientBuilder;
    import com.azure.search.documents.models.IndexingResult;
    import com.azure.search.documents.models.SearchOptions;
    import com.azure.search.documents.models.RawVectorQuery;
    
    import lombok.AllArgsConstructor;
    import lombok.NoArgsConstructor;
    import lombok.Builder;
    import lombok.Data;
    import lombok.extern.jackson.Jacksonized;
    
    @SpringBootApplication
    public class AiCustomDataApplication implements CommandLineRunner
    {
        private static final String ROLE_INFO_KEY = "role";
    
        private static final String template = """
                You are a helpful assistant. Use the information from the DOCUMENTS section to augment answers.
    
                DOCUMENTS:
                {documents}
                """;
    
        @Value("${spring.ai.azure.cognitive-search.endpoint}")
        private String acsEndpoint;
    
        @Value("${spring.ai.azure.cognitive-search.api-key}")
        private String acsApiKey;
    
        @Value("${spring.ai.azure.cognitive-search.index}")
        private String acsIndexName;
    
        @Autowired
        private AiClient aiClient;
    
        @Autowired
        private EmbeddingClient embeddingClient;
    
        public static void main(String[] args) {
            SpringApplication.run(AiCustomDataApplication.class, args);
        }
    
        @Override
        public void run(String... args) throws Exception
        {
            System.out.println(String.format("Sending custom data prompt to AI service. One moment please...\r\n"));
    
            final var store = vectorStore(embeddingClient);
    
            final String question = "What are my available health plans?";
    
            final var candidateDocs = store.similaritySearch(question);
    
            final var userMessage = new UserMessage(question);
    
            final String docPrompts =
                    candidateDocs.stream().map(entry -> entry.getContent()).collect(Collectors.joining("\n"));
    
            final SystemPromptTemplate promptTemplate = new SystemPromptTemplate(template);
            final var systemMessage = promptTemplate.createMessage(Map.of("documents", docPrompts));
    
            final var prompt = new Prompt(List.of(systemMessage, userMessage));
    
            final var resps = aiClient.generate(prompt);
    
            System.out.println(String.format("Prompt created %d generated response(s).", resps.getGenerations().size()));
    
            resps.getGenerations().stream()
              .forEach(gen -> {
                  final var role = gen.getInfo().getOrDefault(ROLE_INFO_KEY, MessageType.ASSISTANT.getValue());
    
                  System.out.println(String.format("Generated respose from \"%s\": %s", role, gen.getText()));
              });
    
        }
    
        @Bean
        public VectorStore vectorStore(EmbeddingClient embeddingClient)
        {
            final SearchClient searchClient = new SearchClientBuilder()
                    .endpoint(acsEndpoint)
                    .credential(new AzureKeyCredential(acsApiKey))
                    .indexName(acsIndexName)
                    .buildClient();
            return new AzureCognitiveSearchVectorStore(searchClient, embeddingClient);
        }
    
        public static class AzureCognitiveSearchVectorStore implements VectorStore
        {
            private static final int DEFAULT_TOP_K = 4;
    
            private static final Double DEFAULT_SIMILARITY_THRESHOLD = 0.0;
    
            private SearchClient searchClient;
    
            private final EmbeddingClient embeddingClient;
    
            public AzureCognitiveSearchVectorStore(SearchClient searchClient, EmbeddingClient embeddingClient)
            {
                this.searchClient = searchClient;
                this.embeddingClient = embeddingClient;
            }
    
            @Override
            public void add(List<Document> documents)
            {
                final var docs = documents.stream().map(document -> {
    
                    final var embeddings = embeddingClient.embed(document);
    
                    return new DocEntry(document.getId(), "", document.getContent(), embeddings);
    
                }).toList();
    
                searchClient.uploadDocuments(docs);
            }
    
            @Override
            public Optional<Boolean> delete(List<String> idList)
            {
                final List<DocEntry> docIds = idList.stream().map(id -> DocEntry.builder().id(id).build())
                    .toList();
    
                var results = searchClient.deleteDocuments(docIds);
    
                boolean resSuccess = true;
    
                for (IndexingResult result : results.getResults())
                    if (!result.isSucceeded()) {
                        resSuccess = false;
                        break;
                    }
    
                return Optional.of(resSuccess);
            }
    
            @Override
            public List<Document> similaritySearch(String query)
            {
                return similaritySearch(query, DEFAULT_TOP_K);
            }
    
            @Override
            public List<Document> similaritySearch(String query, int k)
            {
                return similaritySearch(query, k, DEFAULT_SIMILARITY_THRESHOLD);
            }
    
            @Override
            public List<Document> similaritySearch(String query, int k, double threshold)
            {
                final var searchQueryVector = new RawVectorQuery()
                        .setVector(toFloatList(embeddingClient.embed(query)))
                        .setKNearestNeighborsCount(k)
                        .setFields("contentVector");
    
                final var searchResults = searchClient.search(null,
                        new SearchOptions().setVectorQueries(searchQueryVector), Context.NONE);
    
                return searchResults.stream()
                        .filter(r -> r.getScore() >= threshold)
                        .map(r -> {
    
                            final DocEntry entry = r.getDocument(DocEntry.class);
    
                            final Document doc = new Document(entry.getId(), entry.getContent(), Collections.emptyMap());
                            doc.setEmbedding(entry.getContentVector());
    
                            return doc;
                        })
                        .collect(Collectors.toList());
            }
    
            private List<Float> toFloatList(List<Double> doubleList)
            {
                return doubleList.stream().map(Double::floatValue).toList();
            }
    
        }
    
        @Data
        @Builder
        @Jacksonized
        @AllArgsConstructor
        @NoArgsConstructor
        static class DocEntry
        {
            private String id;
    
            private String hash;
    
            private String content;
    
            private List<Double> contentVector;
        }
    
    }
    

    Penting

    Untuk produksi, gunakan cara aman untuk menyimpan dan mengakses kredensial Anda seperti Azure Key Vault. Untuk informasi selengkapnya tentang keamanan kredensial, lihat artikel keamanan ini.

  3. Navigasi kembali ke folder akar proyek, dan jalankan aplikasi dengan menggunakan perintah berikut:

    ./mvnw spring-boot:run
    

Keluaran

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::                (v3.1.5)

2023-11-07T14:40:45.250-06:00  INFO 18557 --- [           main] c.e.a.AiCustomDataApplication            : No active profile set, falling back to 1 default profile: "default"
2023-11-07T14:40:46.035-06:00  INFO 18557 --- [           main] c.e.a.AiCustomDataApplication            : Started AiCustomDataApplication in 1.095 seconds (process running for 1.397)
Sending custom data prompt to AI service. One moment please...

Prompt created 1 generated response(s).
Generated response from "assistant": The available health plans in the Contoso Electronics plan and benefit packages are the Northwind Health Plus and Northwind Standard plans.

Dokumentasi referensi | Kode sumber | Paket (npm) | Sampel

Prasyarat

Prasyarat ID Microsoft Entra

Untuk autentikasi tanpa kunci yang direkomendasikan dengan ID Microsoft Entra, Anda perlu:

  • Instal Azure CLI yang digunakan untuk autentikasi tanpa kunci dengan ID Microsoft Entra.
  • Tetapkan peran ke Cognitive Services User akun pengguna Anda. Anda dapat menetapkan peran di portal Microsoft Azure di bawah Kontrol akses (IAM)>Menambahkan penetapan peran.

Menambahkan data Anda menggunakan portal Azure AI Foundry

Petunjuk / Saran

Anda dapat menggunakan Azure Developer CLI untuk membuat sumber daya yang diperlukan secara terprogram untuk Azure OpenAI On Your Data

Navigasikan ke portal Azure AI Foundry dan masuk dengan kredensial yang memiliki akses ke sumber daya Azure OpenAI Anda.

  1. Anda dapat membuat proyek Azure AI Foundry dengan mengeklik Buat proyek, atau melanjutkan langsung dengan mengklik tombol pada petak Peta Fokus Azure OpenAI di Azure AI Foundry Models .

    Tangkapan layar halaman utama portal Azure AI Foundry.

  2. Pilih Obrolan pada Playgrounds di panel kiri, dan pilih penerapan model Anda.

  3. Di Chat Playground, pilih Tambahkan Data Anda dan kemudian Tambahkan Sumber Data

    Cuplikan layar ruang percobaan obrolan di Azure AI Foundry.

  4. Di panel yang muncul, pilih Unggah file (pratinjau) di bawah Pilih sumber data. Azure OpenAI memerlukan sumber daya penyimpanan dan sumber daya pencarian untuk mengakses dan mengindeks data Anda.

    Petunjuk / Saran

    1. Agar Azure OpenAI mengakses akun penyimpanan Anda, Anda harus mengaktifkan Berbagi sumber daya lintas asal (CORS). Jika CORS belum diaktifkan untuk sumber daya Azure Blob Storage, pilih Aktifkan CORS.

    2. Pilih sumber daya Azure AI Search Anda, dan pilih pengakuan bahwa menyambungkannya akan menimbulkan penggunaan di akun Anda. Lalu pilih Berikutnya.

    Cuplikan layar memperlihatkan opsi untuk memilih sumber data di portal Azure AI Foundry.

  5. Pada panel Unggah file , pilih Telusuri file dan pilih file yang Anda unduh dari bagian prasyarat , atau data Anda sendiri. Lalu pilih Unggah file. Lalu pilih Berikutnya.

  6. Pada panel Manajemen data , Anda dapat memilih apakah akan mengaktifkan pencarian semantik atau pencarian vektor untuk indeks Anda.

    Penting

    • Pencarian semantik dan pencarian vektor tunduk pada harga tambahan. Anda perlu memilih SKU Dasar atau lebih tinggi untuk mengaktifkan pencarian semantik atau pencarian vektor. Lihat perbedaan tingkat harga dan batas layanan untuk informasi selengkapnya.
    • Untuk membantu meningkatkan kualitas pengambilan informasi dan respons model, sebaiknya aktifkan pencarian semantik untuk bahasa sumber data berikut: Inggris, Prancis, Spanyol, Portugis, Italia, Jerman, Cina(Zh), Jepang, Korea, Rusia, dan Arab.
  7. Tinjau detail yang Anda masukkan, dan pilih Simpan dan tutup. Anda sekarang dapat mengobrol dengan model dan akan menggunakan informasi dari data Anda untuk membangun respons.

Mengambil informasi sumber daya

Anda perlu mengambil informasi berikut untuk mengautentikasi aplikasi Anda dengan sumber daya Azure OpenAI Anda. Mulai cepat ini mengasumsikan Anda telah mengunggah data Anda ke akun penyimpanan blob Azure dan membuat indeks Azure AI Search. Lihat Menambahkan data Anda menggunakan portal Azure AI Foundry.

Nama variabel Nilai
AZURE_OPENAI_ENDPOINT Nilai ini dapat ditemukan di bagian Kunci & Titik Akhir saat memeriksa sumber daya Azure OpenAI Anda dari portal Microsoft Azure. Contoh titik akhir adalah: https://my-resoruce.openai.azure.com.
AZURE_OPENAI_DEPLOYMENT_NAME Nilai ini sesuai dengan nama kustom yang Anda pilih untuk penyebaran saat Anda menyebarkan model. Nilai ini dapat ditemukan di bawahPenyebaran Manajemen >Sumber Dayadi portal Microsoft Azure.
AZURE_AI_SEARCH_ENDPOINT Nilai ini dapat ditemukan di bagian Gambaran Umum saat memeriksa sumber daya Pencarian Azure AI Anda dari portal Microsoft Azure.
AZURE_AI_SEARCH_INDEX Nilai ini sesuai dengan nama indeks yang Anda buat untuk menyimpan data Anda. Anda dapat menemukannya di bagian Gambaran Umum saat memeriksa sumber daya Azure AI Search Anda dari portal Microsoft Azure.

Pelajari selengkapnya tentang autentikasi tanpa kunci dan mengatur variabel lingkungan.

Pengaturan

  1. Buat folder use-data-quickstart baru dan buka folder mulai cepat dengan perintah berikut:

    mkdir use-data-quickstart && cd use-data-quickstart
    
  2. Buat package.json dengan perintah berikut:

    npm init -y
    
  3. Instal pustaka klien OpenAI untuk JavaScript dengan:

    npm install openai
    
  4. Untuk autentikasi tanpa kata sandi yang direkomendasikan :

    npm install @azure/identity
    

Menambahkan kode JavaScript

  1. index.js Buat file dengan kode berikut:

    const { DefaultAzureCredential, getBearerTokenProvider } = require("@azure/identity");
    const { AzureOpenAI } = require("openai");
    
    // Set the Azure and AI Search values from environment variables
    const endpoint = process.env.AZURE_OPENAI_ENDPOINT || "Your endpoint";
    const searchEndpoint = process.env.AZURE_AI_SEARCH_ENDPOINT || "Your search endpoint";
    const searchIndex = process.env.AZURE_AI_SEARCH_INDEX || "Your search index";
    
    // keyless authentication    
    const credential = new DefaultAzureCredential();
    const scope = "https://cognitiveservices.azure.com/.default";
    const azureADTokenProvider = getBearerTokenProvider(credential, scope);
    
    // Required Azure OpenAI deployment name and API version
    const deploymentName = process.env.AZURE_OPENAI_DEPLOYMENT_NAME || "gpt-4";
    const apiVersion = process.env.OPENAI_API_VERSION || "2024-10-21";
    
    function getClient() {
      return new AzureOpenAI({
        endpoint,
        azureADTokenProvider,
        deployment: deploymentName,
        apiVersion,
      });
    }
    
    async function main() {
      const client = getClient();
    
      const messages = [
        { role: "user", content: "What are my available health plans?" },
      ];
    
      console.log(`Message: ${messages.map((m) => m.content).join("\n")}`);
    
      const events = await client.chat.completions.create({
        stream: true,
        messages: [
          {
            role: "user",
            content:
              "What's the most common feedback we received from our customers about the product?",
          },
        ],
        max_tokens: 128,
        model: "",
        data_sources: [
          {
            type: "azure_search",
            parameters: {
              endpoint: searchEndpoint,
              index_name: searchIndex,
              authentication: {
                type: "api_key",
                key: searchKey,
              },
            },
          },
        ],
      });
    
      let response = "";
      for await (const event of events) {
        for (const choice of event.choices) {
          const newText = choice.delta?.content;
          if (newText) {
            response += newText;
            // To see streaming results as they arrive, uncomment line below
            // console.log(newText);
          }
        }
      }
      console.log(response);
    }
    
    main().catch((err) => {
      console.error("The sample encountered an error:", err);
    });
    
  2. Masuk ke Azure dengan perintah berikut:

    az login
    
  3. Jalankan file JavaScript.

    node index.js
    

Keluaran

Message: What are my available health plans?
The available health plans in the Contoso Electronics plan and benefit packages are the Northwind Health Plus and Northwind Standard plans.

Dokumentasi referensi | Kode sumber | Paket (npm) | Sampel

Prasyarat

Prasyarat ID Microsoft Entra

Untuk autentikasi tanpa kunci yang direkomendasikan dengan ID Microsoft Entra, Anda perlu:

  • Instal Azure CLI yang digunakan untuk autentikasi tanpa kunci dengan ID Microsoft Entra.
  • Tetapkan peran ke Cognitive Services User akun pengguna Anda. Anda dapat menetapkan peran di portal Microsoft Azure di bawah Kontrol akses (IAM)>Menambahkan penetapan peran.

Menambahkan data Anda menggunakan portal Azure AI Foundry

Petunjuk / Saran

Anda dapat menggunakan Azure Developer CLI untuk membuat sumber daya yang diperlukan secara terprogram untuk Azure OpenAI On Your Data

Navigasikan ke portal Azure AI Foundry dan masuk dengan kredensial yang memiliki akses ke sumber daya Azure OpenAI Anda.

  1. Anda dapat membuat proyek Azure AI Foundry dengan mengeklik Buat proyek, atau melanjutkan langsung dengan mengklik tombol pada petak Peta Fokus Azure OpenAI di Azure AI Foundry Models .

    Tangkapan layar halaman utama portal Azure AI Foundry.

  2. Pilih Obrolan pada Playgrounds di panel kiri, dan pilih penerapan model Anda.

  3. Di Chat Playground, pilih Tambahkan Data Anda dan kemudian Tambahkan Sumber Data

    Cuplikan layar ruang percobaan obrolan di Azure AI Foundry.

  4. Di panel yang muncul, pilih Unggah file (pratinjau) di bawah Pilih sumber data. Azure OpenAI memerlukan sumber daya penyimpanan dan sumber daya pencarian untuk mengakses dan mengindeks data Anda.

    Petunjuk / Saran

    1. Agar Azure OpenAI mengakses akun penyimpanan Anda, Anda harus mengaktifkan Berbagi sumber daya lintas asal (CORS). Jika CORS belum diaktifkan untuk sumber daya Azure Blob Storage, pilih Aktifkan CORS.

    2. Pilih sumber daya Azure AI Search Anda, dan pilih pengakuan bahwa menyambungkannya akan menimbulkan penggunaan di akun Anda. Lalu pilih Berikutnya.

    Cuplikan layar memperlihatkan opsi untuk memilih sumber data di portal Azure AI Foundry.

  5. Pada panel Unggah file , pilih Telusuri file dan pilih file yang Anda unduh dari bagian prasyarat , atau data Anda sendiri. Lalu pilih Unggah file. Lalu pilih Berikutnya.

  6. Pada panel Manajemen data , Anda dapat memilih apakah akan mengaktifkan pencarian semantik atau pencarian vektor untuk indeks Anda.

    Penting

    • Pencarian semantik dan pencarian vektor tunduk pada harga tambahan. Anda perlu memilih SKU Dasar atau lebih tinggi untuk mengaktifkan pencarian semantik atau pencarian vektor. Lihat perbedaan tingkat harga dan batas layanan untuk informasi selengkapnya.
    • Untuk membantu meningkatkan kualitas pengambilan informasi dan respons model, sebaiknya aktifkan pencarian semantik untuk bahasa sumber data berikut: Inggris, Prancis, Spanyol, Portugis, Italia, Jerman, Cina(Zh), Jepang, Korea, Rusia, dan Arab.
  7. Tinjau detail yang Anda masukkan, dan pilih Simpan dan tutup. Anda sekarang dapat mengobrol dengan model dan akan menggunakan informasi dari data Anda untuk membangun respons.

Mengambil informasi sumber daya

Anda perlu mengambil informasi berikut untuk mengautentikasi aplikasi Anda dengan sumber daya Azure OpenAI Anda. Mulai cepat ini mengasumsikan Anda telah mengunggah data Anda ke akun penyimpanan blob Azure dan membuat indeks Azure AI Search. Lihat Menambahkan data Anda menggunakan portal Azure AI Foundry.

Nama variabel Nilai
AZURE_OPENAI_ENDPOINT Nilai ini dapat ditemukan di bagian Kunci & Titik Akhir saat memeriksa sumber daya Azure OpenAI Anda dari portal Microsoft Azure. Contoh titik akhir adalah: https://my-resoruce.openai.azure.com.
AZURE_OPENAI_DEPLOYMENT_NAME Nilai ini sesuai dengan nama kustom yang Anda pilih untuk penyebaran saat Anda menyebarkan model. Nilai ini dapat ditemukan di bawahPenyebaran Manajemen >Sumber Dayadi portal Microsoft Azure.
AZURE_AI_SEARCH_ENDPOINT Nilai ini dapat ditemukan di bagian Gambaran Umum saat memeriksa sumber daya Pencarian Azure AI Anda dari portal Microsoft Azure.
AZURE_AI_SEARCH_INDEX Nilai ini sesuai dengan nama indeks yang Anda buat untuk menyimpan data Anda. Anda dapat menemukannya di bagian Gambaran Umum saat memeriksa sumber daya Azure AI Search Anda dari portal Microsoft Azure.

Pelajari selengkapnya tentang autentikasi tanpa kunci dan mengatur variabel lingkungan.

Pengaturan

  1. Buat folder use-data-quickstart baru dan buka folder mulai cepat dengan perintah berikut:

    mkdir use-data-quickstart && cd use-data-quickstart
    
  2. Buat package.json dengan perintah berikut:

    npm init -y
    
  3. package.json Perbarui ke ECMAScript dengan perintah berikut:

    npm pkg set type=module
    
  4. Instal pustaka klien OpenAI untuk JavaScript dengan:

    npm install openai
    
  5. Untuk autentikasi tanpa kata sandi yang direkomendasikan :

    npm install @azure/identity
    

Menambahkan kode TypeScript

  1. index.ts Buat file dengan kode berikut:

    import { AzureOpenAI } from "openai";
    import { DefaultAzureCredential, getBearerTokenProvider } from "@azure/identity";
    import "@azure/openai/types";
    
    // Set the Azure and AI Search values from environment variables
    const endpoint = process.env.AZURE_OPENAI_ENDPOINT || "Your endpoint";
    const searchEndpoint = process.env.AZURE_AI_SEARCH_ENDPOINT || "Your search endpoint";
    const searchIndex = process.env.AZURE_AI_SEARCH_INDEX || "Your search index";
    
    // keyless authentication    
    const credential = new DefaultAzureCredential();
    const scope = "https://cognitiveservices.azure.com/.default";
    const azureADTokenProvider = getBearerTokenProvider(credential, scope);
    
    // Required Azure OpenAI deployment name and API version
    const deploymentName = process.env.AZURE_OPENAI_DEPLOYMENT_NAME || "gpt-4";
    const apiVersion = process.env.OPENAI_API_VERSION || "2024-07-01-preview";
    
    function getClient(): AzureOpenAI {
      return new AzureOpenAI({
        endpoint,
        azureADTokenProvider,
        deployment: deploymentName,
        apiVersion,
      });
    }
    
    async function main() {
      const client = getClient();
    
      const messages = [
        { role: "user", content: "What are my available health plans?" },
      ];
    
      console.log(`Message: ${messages.map((m) => m.content).join("\n")}`);
    
      const events = await client.chat.completions.create({
        stream: true,
        messages: [
          {
            role: "user",
            content:
              "What's the most common feedback we received from our customers about the product?",
          },
        ],
        max_tokens: 128,
        model: "",
        data_sources: [
          {
            type: "azure_search",
            parameters: {
              endpoint: searchEndpoint,
              index_name: searchIndex,
              authentication: {
                type: "api_key",
                key: searchKey,
              },
            },
          },
        ],
      });
    
      let response = "";
      for await (const event of events) {
        for (const choice of event.choices) {
          const newText = choice.delta?.content;
          if (newText) {
            response += newText;
            // To see streaming results as they arrive, uncomment line below
            // console.log(newText);
          }
        }
      }
      console.log(response);
    }
    
    main().catch((err) => {
      console.error("The sample encountered an error:", err);
    });
    
  2. tsconfig.json Buat file untuk menerjemahkan kode TypeScript dan salin kode berikut untuk ECMAScript.

    {
        "compilerOptions": {
          "module": "NodeNext",
          "target": "ES2022", // Supports top-level await
          "moduleResolution": "NodeNext",
          "skipLibCheck": true, // Avoid type errors from node_modules
          "strict": true // Enable strict type-checking options
        },
        "include": ["*.ts"]
    }
    
  3. Transpile dari TypeScript ke JavaScript.

    tsc
    
  4. Masuk ke Azure dengan perintah berikut:

    az login
    
  5. Jalankan kode dengan perintah berikut:

    node index.js
    

Penting

Untuk produksi, gunakan cara aman untuk menyimpan dan mengakses kredensial Anda seperti Azure Key Vault. Untuk informasi selengkapnya tentang keamanan kredensial, lihat artikel keamanan ini.

Keluaran

Message: What are my available health plans?
The available health plans in the Contoso Electronics plan and benefit packages are the Northwind Health Plus and Northwind Standard plans.

Prasyarat

Sumber daya berikut:

Referensi | Kode sumber | Paket (pypi) | Sampel

Tautan ini mereferensikan API OpenAI untuk Python. Tidak ada OpenAI Python SDK khusus Azure. Pelajari cara beralih antara layanan OpenAI dan Azure OpenA.

Menambahkan data Anda menggunakan portal Azure AI Foundry

Petunjuk / Saran

Anda dapat menggunakan Azure Developer CLI untuk membuat sumber daya yang diperlukan secara terprogram untuk Azure OpenAI On Your Data

Navigasikan ke portal Azure AI Foundry dan masuk dengan kredensial yang memiliki akses ke sumber daya Azure OpenAI Anda.

  1. Anda dapat membuat proyek Azure AI Foundry dengan mengeklik Buat proyek, atau melanjutkan langsung dengan mengklik tombol pada petak Peta Fokus Azure OpenAI di Azure AI Foundry Models .

    Tangkapan layar halaman utama portal Azure AI Foundry.

  2. Pilih Obrolan pada Playgrounds di panel kiri, dan pilih penerapan model Anda.

  3. Di Chat Playground, pilih Tambahkan Data Anda dan kemudian Tambahkan Sumber Data

    Cuplikan layar ruang percobaan obrolan di Azure AI Foundry.

  4. Di panel yang muncul, pilih Unggah file (pratinjau) di bawah Pilih sumber data. Azure OpenAI memerlukan sumber daya penyimpanan dan sumber daya pencarian untuk mengakses dan mengindeks data Anda.

    Petunjuk / Saran

    1. Agar Azure OpenAI mengakses akun penyimpanan Anda, Anda harus mengaktifkan Berbagi sumber daya lintas asal (CORS). Jika CORS belum diaktifkan untuk sumber daya Azure Blob Storage, pilih Aktifkan CORS.

    2. Pilih sumber daya Azure AI Search Anda, dan pilih pengakuan bahwa menyambungkannya akan menimbulkan penggunaan di akun Anda. Lalu pilih Berikutnya.

    Cuplikan layar memperlihatkan opsi untuk memilih sumber data di portal Azure AI Foundry.

  5. Pada panel Unggah file , pilih Telusuri file dan pilih file yang Anda unduh dari bagian prasyarat , atau data Anda sendiri. Lalu pilih Unggah file. Lalu pilih Berikutnya.

  6. Pada panel Manajemen data , Anda dapat memilih apakah akan mengaktifkan pencarian semantik atau pencarian vektor untuk indeks Anda.

    Penting

    • Pencarian semantik dan pencarian vektor tunduk pada harga tambahan. Anda perlu memilih SKU Dasar atau lebih tinggi untuk mengaktifkan pencarian semantik atau pencarian vektor. Lihat perbedaan tingkat harga dan batas layanan untuk informasi selengkapnya.
    • Untuk membantu meningkatkan kualitas pengambilan informasi dan respons model, sebaiknya aktifkan pencarian semantik untuk bahasa sumber data berikut: Inggris, Prancis, Spanyol, Portugis, Italia, Jerman, Cina(Zh), Jepang, Korea, Rusia, dan Arab.
  7. Tinjau detail yang Anda masukkan, dan pilih Simpan dan tutup. Anda sekarang dapat mengobrol dengan model dan akan menggunakan informasi dari data Anda untuk membangun respons.

Mengambil informasi sumber daya

Anda perlu mengambil informasi berikut untuk mengautentikasi aplikasi Anda dengan sumber daya Azure OpenAI Anda. Mulai cepat ini mengasumsikan Anda telah mengunggah data Anda ke akun penyimpanan blob Azure dan membuat indeks Azure AI Search. Lihat Menambahkan data Anda menggunakan portal Azure AI Foundry.

Nama variabel Nilai
AZURE_OPENAI_ENDPOINT Nilai ini dapat ditemukan di bagian Kunci & Titik Akhir saat memeriksa sumber daya Azure OpenAI Anda dari portal Microsoft Azure. Contoh titik akhir adalah: https://my-resoruce.openai.azure.com.
AZURE_OPENAI_DEPLOYMENT_NAME Nilai ini sesuai dengan nama kustom yang Anda pilih untuk penyebaran saat Anda menyebarkan model. Nilai ini dapat ditemukan di bawahPenyebaran Manajemen >Sumber Dayadi portal Microsoft Azure.
AZURE_AI_SEARCH_ENDPOINT Nilai ini dapat ditemukan di bagian Gambaran Umum saat memeriksa sumber daya Pencarian Azure AI Anda dari portal Microsoft Azure.
AZURE_AI_SEARCH_INDEX Nilai ini sesuai dengan nama indeks yang Anda buat untuk menyimpan data Anda. Anda dapat menemukannya di bagian Gambaran Umum saat memeriksa sumber daya Azure AI Search Anda dari portal Microsoft Azure.

Pelajari selengkapnya tentang autentikasi tanpa kunci dan mengatur variabel lingkungan.

Membuat lingkungan Python

  1. Buat folder baru bernama openai-python untuk proyek Anda dan file kode Python baru bernama main.py. Ubah menjadi direktori tersebut:
mkdir openai-python
cd openai-python
  1. Instal Pustaka Python berikut:
pip install openai
pip install python-dotenv

Membuat aplikasi Python

  1. Dari direktori proyek, buka file main.py dan tambahkan kode berikut:
import os
import openai
import dotenv

dotenv.load_dotenv()

endpoint = os.environ.get("AZURE_OPENAI_ENDPOINT")
api_key = os.environ.get("AZURE_OPENAI_API_KEY")
deployment = os.environ.get("AZURE_OPENAI_DEPLOYMENT_NAME")

client = openai.AzureOpenAI(
    azure_endpoint=endpoint,
    api_key=api_key,
    api_version="2024-10-21",
)

completion = client.chat.completions.create(
    model=deployment,
    messages=[
        {
            "role": "user",
            "content": "What are my available health plans?",
        },
    ],
    extra_body={
        "data_sources":[
            {
                "type": "azure_search",
                "parameters": {
                    "endpoint": os.environ["AZURE_AI_SEARCH_ENDPOINT"],
                    "index_name": os.environ["AZURE_AI_SEARCH_INDEX"],
                    "authentication": {
                        "type": "api_key",
                        "key": os.environ["AZURE_AI_SEARCH_API_KEY"],
                    }
                }
            }
        ],
    }
)

print(f"{completion.choices[0].message.role}: {completion.choices[0].message.content}")

Penting

Untuk produksi, gunakan cara aman untuk menyimpan dan mengakses kredensial Anda seperti Azure Key Vault. Untuk informasi selengkapnya tentang keamanan kredensial, lihat artikel keamanan ini.

  1. Jalankan perintah berikut:
python main.py

Aplikasi mencetak respons dalam format JSON yang cocok untuk digunakan dalam banyak skenario. Ini termasuk jawaban atas kueri dan kutipan Anda dari file yang Anda unggah.

Prasyarat

Sumber daya berikut:

Menambahkan data Anda menggunakan portal Azure AI Foundry

Petunjuk / Saran

Anda dapat menggunakan Azure Developer CLI untuk membuat sumber daya yang diperlukan secara terprogram untuk Azure OpenAI On Your Data

Navigasikan ke portal Azure AI Foundry dan masuk dengan kredensial yang memiliki akses ke sumber daya Azure OpenAI Anda.

  1. Anda dapat membuat proyek Azure AI Foundry dengan mengeklik Buat proyek, atau melanjutkan langsung dengan mengklik tombol pada petak Peta Fokus Azure OpenAI di Azure AI Foundry Models .

    Tangkapan layar halaman utama portal Azure AI Foundry.

  2. Pilih Obrolan pada Playgrounds di panel kiri, dan pilih penerapan model Anda.

  3. Di Chat Playground, pilih Tambahkan Data Anda dan kemudian Tambahkan Sumber Data

    Cuplikan layar ruang percobaan obrolan di Azure AI Foundry.

  4. Di panel yang muncul, pilih Unggah file (pratinjau) di bawah Pilih sumber data. Azure OpenAI memerlukan sumber daya penyimpanan dan sumber daya pencarian untuk mengakses dan mengindeks data Anda.

    Petunjuk / Saran

    1. Agar Azure OpenAI mengakses akun penyimpanan Anda, Anda harus mengaktifkan Berbagi sumber daya lintas asal (CORS). Jika CORS belum diaktifkan untuk sumber daya Azure Blob Storage, pilih Aktifkan CORS.

    2. Pilih sumber daya Azure AI Search Anda, dan pilih pengakuan bahwa menyambungkannya akan menimbulkan penggunaan di akun Anda. Lalu pilih Berikutnya.

    Cuplikan layar memperlihatkan opsi untuk memilih sumber data di portal Azure AI Foundry.

  5. Pada panel Unggah file , pilih Telusuri file dan pilih file yang Anda unduh dari bagian prasyarat , atau data Anda sendiri. Lalu pilih Unggah file. Lalu pilih Berikutnya.

  6. Pada panel Manajemen data , Anda dapat memilih apakah akan mengaktifkan pencarian semantik atau pencarian vektor untuk indeks Anda.

    Penting

    • Pencarian semantik dan pencarian vektor tunduk pada harga tambahan. Anda perlu memilih SKU Dasar atau lebih tinggi untuk mengaktifkan pencarian semantik atau pencarian vektor. Lihat perbedaan tingkat harga dan batas layanan untuk informasi selengkapnya.
    • Untuk membantu meningkatkan kualitas pengambilan informasi dan respons model, sebaiknya aktifkan pencarian semantik untuk bahasa sumber data berikut: Inggris, Prancis, Spanyol, Portugis, Italia, Jerman, Cina(Zh), Jepang, Korea, Rusia, dan Arab.
  7. Tinjau detail yang Anda masukkan, dan pilih Simpan dan tutup. Anda sekarang dapat mengobrol dengan model dan akan menggunakan informasi dari data Anda untuk membangun respons.

Mengambil informasi sumber daya

Anda perlu mengambil informasi berikut untuk mengautentikasi aplikasi Anda dengan sumber daya Azure OpenAI Anda. Mulai cepat ini mengasumsikan Anda telah mengunggah data Anda ke akun penyimpanan blob Azure dan membuat indeks Azure AI Search. Lihat Menambahkan data Anda menggunakan portal Azure AI Foundry.

Nama variabel Nilai
AZURE_OPENAI_ENDPOINT Nilai ini dapat ditemukan di bagian Kunci & Titik Akhir saat memeriksa sumber daya Azure OpenAI Anda dari portal Microsoft Azure. Contoh titik akhir adalah: https://my-resoruce.openai.azure.com.
AZURE_OPENAI_DEPLOYMENT_NAME Nilai ini sesuai dengan nama kustom yang Anda pilih untuk penyebaran saat Anda menyebarkan model. Nilai ini dapat ditemukan di bawahPenyebaran Manajemen >Sumber Dayadi portal Microsoft Azure.
AZURE_AI_SEARCH_ENDPOINT Nilai ini dapat ditemukan di bagian Gambaran Umum saat memeriksa sumber daya Pencarian Azure AI Anda dari portal Microsoft Azure.
AZURE_AI_SEARCH_INDEX Nilai ini sesuai dengan nama indeks yang Anda buat untuk menyimpan data Anda. Anda dapat menemukannya di bagian Gambaran Umum saat memeriksa sumber daya Azure AI Search Anda dari portal Microsoft Azure.

Pelajari selengkapnya tentang autentikasi tanpa kunci dan mengatur variabel lingkungan.

Contoh perintah PowerShell

Model obrolan Azure OpenAI dioptimalkan untuk bekerja dengan input yang diformat sebagai percakapan. Variabel messages melewati array kamus dengan peran yang berbeda dalam percakapan yang digambarkan oleh sistem, pengguna, alat, dan asisten. Variabel dataSources terhubung ke indeks Azure Cognitive Search Anda, dan memungkinkan model Azure OpenAI merespons menggunakan data Anda.

Untuk memicu respons dari model, Anda harus diakhir dengan pesan pengguna yang menunjukkan bahwa itu adalah giliran asisten untuk merespons.

Petunjuk / Saran

Ada beberapa parameter yang dapat Anda gunakan untuk mengubah respons model, seperti temperature atau top_p. Lihat dokumentasi referensi untuk informasi selengkapnya.

# Azure OpenAI metadata variables
   $openai = @{
       api_key     = $Env:AZURE_OPENAI_API_KEY
       api_base    = $Env:AZURE_OPENAI_ENDPOINT # your endpoint should look like the following https://YOUR_RESOURCE_NAME.openai.azure.com/
       api_version = '2023-07-01-preview' # this may change in the future
       name        = 'YOUR-DEPLOYMENT-NAME-HERE' #This will correspond to the custom name you chose for your deployment when you deployed a model.
   }

   $acs = @{
       search_endpoint     = 'YOUR ACS ENDPOINT' # your endpoint should look like the following https://YOUR_RESOURCE_NAME.search.windows.net/
       search_key    = 'YOUR-ACS-KEY-HERE' # or use the Get-Secret cmdlet to retrieve the value
       search_index = 'YOUR-INDEX-NAME-HERE' # the name of your ACS index
   }

   # Completion text
   $body = @{
    dataSources = @(
        @{
            type = 'AzureCognitiveSearch'
            parameters = @{
                    endpoint = $acs.search_endpoint
                    key = $acs.search_key
                    indexName = $acs.search_index
                }
        }
    )
    messages = @(
            @{
                role = 'user'
                content = 'What are my available health plans?'
            }
    )
   } | convertto-json -depth 5

   # Header for authentication
   $headers = [ordered]@{
       'api-key' = $openai.api_key
   }

   # Send a completion call to generate an answer
   $url = "$($openai.api_base)/openai/deployments/$($openai.name)/extensions/chat/completions?api-version=$($openai.api_version)"

   $response = Invoke-RestMethod -Uri $url -Headers $headers -Body $body -Method Post -ContentType 'application/json'
   return $response.choices.messages[1].content

Contoh output

The available health plans in the Contoso Electronics plan and benefit packages are the Northwind Health Plus and Northwind Standard plans.

Penting

Untuk produksi, gunakan cara aman untuk menyimpan dan mengakses kredensial Anda seperti Manajemen Rahasia PowerShell dengan Azure Key Vault. Untuk informasi selengkapnya tentang keamanan kredensial, lihat artikel keamanan ini.

Mengobrol dengan model Anda menggunakan aplikasi web

Untuk mulai mengobrol dengan model Azure OpenAI yang menggunakan data Anda, Anda dapat menyebarkan aplikasi web menggunakan portal Azure AI Foundry atau kode contoh yang kami sediakan di GitHub. Aplikasi ini menyebarkan menggunakan layanan aplikasi Azure, dan menyediakan antarmuka pengguna untuk mengirim kueri. Aplikasi ini dapat digunakan dengan model Azure OpenAI yang menggunakan data Anda, atau model yang tidak menggunakan data Anda. Lihat file readme di repositori untuk petunjuk tentang persyaratan, penyiapan, dan penyebaran. Anda dapat secara opsional menyesuaikan logika frontend dan backend aplikasi web dengan membuat perubahan pada kode sumber.

Prasyarat

Sumber daya berikut:

Referensi | Kode sumber | Paket (Go) | Sampel

Menambahkan data Anda menggunakan portal Azure AI Foundry

Petunjuk / Saran

Anda dapat menggunakan Azure Developer CLI untuk membuat sumber daya yang diperlukan secara terprogram untuk Azure OpenAI On Your Data

Navigasikan ke portal Azure AI Foundry dan masuk dengan kredensial yang memiliki akses ke sumber daya Azure OpenAI Anda.

  1. Anda dapat membuat proyek Azure AI Foundry dengan mengeklik Buat proyek, atau melanjutkan langsung dengan mengklik tombol pada petak Peta Fokus Azure OpenAI di Azure AI Foundry Models .

    Tangkapan layar halaman utama portal Azure AI Foundry.

  2. Pilih Obrolan pada Playgrounds di panel kiri, dan pilih penerapan model Anda.

  3. Di Chat Playground, pilih Tambahkan Data Anda dan kemudian Tambahkan Sumber Data

    Cuplikan layar ruang percobaan obrolan di Azure AI Foundry.

  4. Di panel yang muncul, pilih Unggah file (pratinjau) di bawah Pilih sumber data. Azure OpenAI memerlukan sumber daya penyimpanan dan sumber daya pencarian untuk mengakses dan mengindeks data Anda.

    Petunjuk / Saran

    1. Agar Azure OpenAI mengakses akun penyimpanan Anda, Anda harus mengaktifkan Berbagi sumber daya lintas asal (CORS). Jika CORS belum diaktifkan untuk sumber daya Azure Blob Storage, pilih Aktifkan CORS.

    2. Pilih sumber daya Azure AI Search Anda, dan pilih pengakuan bahwa menyambungkannya akan menimbulkan penggunaan di akun Anda. Lalu pilih Berikutnya.

    Cuplikan layar memperlihatkan opsi untuk memilih sumber data di portal Azure AI Foundry.

  5. Pada panel Unggah file , pilih Telusuri file dan pilih file yang Anda unduh dari bagian prasyarat , atau data Anda sendiri. Lalu pilih Unggah file. Lalu pilih Berikutnya.

  6. Pada panel Manajemen data , Anda dapat memilih apakah akan mengaktifkan pencarian semantik atau pencarian vektor untuk indeks Anda.

    Penting

    • Pencarian semantik dan pencarian vektor tunduk pada harga tambahan. Anda perlu memilih SKU Dasar atau lebih tinggi untuk mengaktifkan pencarian semantik atau pencarian vektor. Lihat perbedaan tingkat harga dan batas layanan untuk informasi selengkapnya.
    • Untuk membantu meningkatkan kualitas pengambilan informasi dan respons model, sebaiknya aktifkan pencarian semantik untuk bahasa sumber data berikut: Inggris, Prancis, Spanyol, Portugis, Italia, Jerman, Cina(Zh), Jepang, Korea, Rusia, dan Arab.
  7. Tinjau detail yang Anda masukkan, dan pilih Simpan dan tutup. Anda sekarang dapat mengobrol dengan model dan akan menggunakan informasi dari data Anda untuk membangun respons.

Prasyarat ID Microsoft Entra

Untuk autentikasi tanpa kunci yang direkomendasikan dengan ID Microsoft Entra, Anda perlu:

  • Instal Azure CLI yang digunakan untuk autentikasi tanpa kunci dengan ID Microsoft Entra.
  • Tetapkan peran ke Cognitive Services User akun pengguna Anda. Anda dapat menetapkan peran di portal Microsoft Azure di bawah Kontrol akses (IAM)>Menambahkan penetapan peran.

Pengaturan

  1. Buat folder dall-e-quickstart baru dan buka folder mulai cepat dengan perintah berikut:

     mkdir dall-e-quickstart && cd dall-e-quickstart
    
  2. Untuk autentikasi tanpa kunci yang direkomendasikan dengan ID Microsoft Entra, masuk ke Azure dengan perintah berikut:

     az login
    

Mengambil informasi sumber daya

Anda perlu mengambil informasi berikut untuk mengautentikasi aplikasi Anda dengan sumber daya Azure OpenAI Anda. Mulai cepat ini mengasumsikan Anda telah mengunggah data Anda ke akun penyimpanan blob Azure dan membuat indeks Azure AI Search. Lihat Menambahkan data Anda menggunakan portal Azure AI Foundry.

Nama variabel Nilai
AZURE_OPENAI_ENDPOINT Nilai ini dapat ditemukan di bagian Kunci & Titik Akhir saat memeriksa sumber daya Azure OpenAI Anda dari portal Microsoft Azure. Contoh titik akhir adalah: https://my-resoruce.openai.azure.com.
AZURE_OPENAI_DEPLOYMENT_NAME Nilai ini sesuai dengan nama kustom yang Anda pilih untuk penyebaran saat Anda menyebarkan model. Nilai ini dapat ditemukan di bawahPenyebaran Manajemen >Sumber Dayadi portal Microsoft Azure.
AZURE_AI_SEARCH_ENDPOINT Nilai ini dapat ditemukan di bagian Gambaran Umum saat memeriksa sumber daya Pencarian Azure AI Anda dari portal Microsoft Azure.
AZURE_AI_SEARCH_INDEX Nilai ini sesuai dengan nama indeks yang Anda buat untuk menyimpan data Anda. Anda dapat menemukannya di bagian Gambaran Umum saat memeriksa sumber daya Azure AI Search Anda dari portal Microsoft Azure.

Pelajari selengkapnya tentang autentikasi tanpa kunci dan mengatur variabel lingkungan.

Jalankan mulai cepat

Kode sampel dalam panduan memulai cepat ini menggunakan Microsoft Entra ID untuk autentikasi tanpa kunci yang direkomendasikan. Jika Anda lebih suka menggunakan kunci API, Anda dapat mengganti NewDefaultAzureCredential implementasi dengan NewKeyCredential.

azureOpenAIEndpoint := os.Getenv("AZURE_OPENAI_ENDPOINT")
credential, err := azidentity.NewDefaultAzureCredential(nil)
client, err := azopenai.NewClient(azureOpenAIEndpoint, credential, nil)

Untuk menjalankan sampel:

  1. Buat file baru bernama quickstart.go. Salin kode berikut ke dalam file quickstart.go .

    package main
    
    import (
     "context"
     "fmt"
     "log"
     "os"
    
     "github.com/Azure/azure-sdk-for-go/sdk/ai/azopenai"
     "github.com/Azure/azure-sdk-for-go/sdk/azcore"
     "github.com/Azure/azure-sdk-for-go/sdk/azcore/to"
    )
    
    func main() {
     azureOpenAIEndpoint := os.Getenv("AZURE_OPENAI_ENDPOINT")
     credential, err := azidentity.NewDefaultAzureCredential(nil)
     client, err := azopenai.NewClient(azureOpenAIEndpoint, credential, nil)
    
     modelDeploymentID := os.Getenv("AZURE_OPENAI_DEPLOYMENT_NAME")
    
     // Azure AI Search configuration
     searchIndex := os.Getenv("AZURE_AI_SEARCH_INDEX")
     searchEndpoint := os.Getenv("AZURE_AI_SEARCH_ENDPOINT")
     searchAPIKey := os.Getenv("AZURE_AI_SEARCH_API_KEY")
    
     if modelDeploymentID == "" || azureOpenAIEndpoint == "" || searchIndex == "" || searchEndpoint == "" || searchAPIKey == "" {
     	fmt.Fprintf(os.Stderr, "Skipping example, environment variables missing\n")
     	return
     }
    
     client, err := azopenai.NewClientWithKeyCredential(azureOpenAIEndpoint, credential, nil)
    
     if err != nil {
     	// Implement application specific error handling logic.
     	log.Printf("ERROR: %s", err)
     	return
     }
    
     resp, err := client.GetChatCompletions(context.TODO(), azopenai.ChatCompletionsOptions{
     	Messages: []azopenai.ChatRequestMessageClassification{
     		&azopenai.ChatRequestUserMessage{Content: azopenai.NewChatRequestUserMessageContent("What are my available health plans?")},
     	},
     	MaxTokens: to.Ptr[int32](512),
     	AzureExtensionsOptions: []azopenai.AzureChatExtensionConfigurationClassification{
     		&azopenai.AzureSearchChatExtensionConfiguration{
     			// This allows Azure OpenAI to use an Azure AI Search index.
     			// Answers are based on the model's pretrained knowledge
     			// and the latest information available in the designated data source. 
     			Parameters: &azopenai.AzureSearchChatExtensionParameters{
     				Endpoint:  &searchEndpoint,
     				IndexName: &searchIndex,
     				Authentication: &azopenai.OnYourDataAPIKeyAuthenticationOptions{
     					Key: &searchAPIKey,
     				},
     			},
     		},
     	},
     	DeploymentName: &modelDeploymentID,
     }, nil)
    
     if err != nil {
     	// Implement application specific error handling logic.
     	log.Printf("ERROR: %s", err)
     	return
     }
    
     fmt.Fprintf(os.Stderr, "Extensions Context Role: %s\nExtensions Context (length): %d\n",
     	*resp.Choices[0].Message.Role,
     	len(*resp.Choices[0].Message.Content))
    
     fmt.Fprintf(os.Stderr, "ChatRole: %s\nChat content: %s\n",
     	*resp.Choices[0].Message.Role,
     	*resp.Choices[0].Message.Content,
     )
    }
    
  2. Jalankan perintah berikut untuk membuat modul Go baru:

     go mod init quickstart.go
    
  3. Jalankan go mod tidy untuk menginstal dependensi yang diperlukan:

     go mod tidy
    
  4. Jalankan perintah berikut untuk menjalankan sampel:

     go run quickstart.go
    

Aplikasi mencetak respons termasuk jawaban atas kueri dan kutipan Anda dari file yang Anda unggah.

Prasyarat

Sumber daya berikut:

Menambahkan data Anda menggunakan portal Azure AI Foundry

Petunjuk / Saran

Anda dapat menggunakan Azure Developer CLI untuk membuat sumber daya yang diperlukan secara terprogram untuk Azure OpenAI On Your Data

Navigasikan ke portal Azure AI Foundry dan masuk dengan kredensial yang memiliki akses ke sumber daya Azure OpenAI Anda.

  1. Anda dapat membuat proyek Azure AI Foundry dengan mengeklik Buat proyek, atau melanjutkan langsung dengan mengklik tombol pada petak Peta Fokus Azure OpenAI di Azure AI Foundry Models .

    Tangkapan layar halaman utama portal Azure AI Foundry.

  2. Pilih Obrolan pada Playgrounds di panel kiri, dan pilih penerapan model Anda.

  3. Di Chat Playground, pilih Tambahkan Data Anda dan kemudian Tambahkan Sumber Data

    Cuplikan layar ruang percobaan obrolan di Azure AI Foundry.

  4. Di panel yang muncul, pilih Unggah file (pratinjau) di bawah Pilih sumber data. Azure OpenAI memerlukan sumber daya penyimpanan dan sumber daya pencarian untuk mengakses dan mengindeks data Anda.

    Petunjuk / Saran

    1. Agar Azure OpenAI mengakses akun penyimpanan Anda, Anda harus mengaktifkan Berbagi sumber daya lintas asal (CORS). Jika CORS belum diaktifkan untuk sumber daya Azure Blob Storage, pilih Aktifkan CORS.

    2. Pilih sumber daya Azure AI Search Anda, dan pilih pengakuan bahwa menyambungkannya akan menimbulkan penggunaan di akun Anda. Lalu pilih Berikutnya.

    Cuplikan layar memperlihatkan opsi untuk memilih sumber data di portal Azure AI Foundry.

  5. Pada panel Unggah file , pilih Telusuri file dan pilih file yang Anda unduh dari bagian prasyarat , atau data Anda sendiri. Lalu pilih Unggah file. Lalu pilih Berikutnya.

  6. Pada panel Manajemen data , Anda dapat memilih apakah akan mengaktifkan pencarian semantik atau pencarian vektor untuk indeks Anda.

    Penting

    • Pencarian semantik dan pencarian vektor tunduk pada harga tambahan. Anda perlu memilih SKU Dasar atau lebih tinggi untuk mengaktifkan pencarian semantik atau pencarian vektor. Lihat perbedaan tingkat harga dan batas layanan untuk informasi selengkapnya.
    • Untuk membantu meningkatkan kualitas pengambilan informasi dan respons model, sebaiknya aktifkan pencarian semantik untuk bahasa sumber data berikut: Inggris, Prancis, Spanyol, Portugis, Italia, Jerman, Cina(Zh), Jepang, Korea, Rusia, dan Arab.
  7. Tinjau detail yang Anda masukkan, dan pilih Simpan dan tutup. Anda sekarang dapat mengobrol dengan model dan akan menggunakan informasi dari data Anda untuk membangun respons.

Mengambil informasi sumber daya

Anda perlu mengambil informasi berikut untuk mengautentikasi aplikasi Anda dengan sumber daya Azure OpenAI Anda. Mulai cepat ini mengasumsikan Anda telah mengunggah data Anda ke akun penyimpanan blob Azure dan membuat indeks Azure AI Search. Lihat Menambahkan data Anda menggunakan portal Azure AI Foundry.

Nama variabel Nilai
AZURE_OPENAI_ENDPOINT Nilai ini dapat ditemukan di bagian Kunci & Titik Akhir saat memeriksa sumber daya Azure OpenAI Anda dari portal Microsoft Azure. Contoh titik akhir adalah: https://my-resoruce.openai.azure.com.
AZURE_OPENAI_DEPLOYMENT_NAME Nilai ini sesuai dengan nama kustom yang Anda pilih untuk penyebaran saat Anda menyebarkan model. Nilai ini dapat ditemukan di bawahPenyebaran Manajemen >Sumber Dayadi portal Microsoft Azure.
AZURE_AI_SEARCH_ENDPOINT Nilai ini dapat ditemukan di bagian Gambaran Umum saat memeriksa sumber daya Pencarian Azure AI Anda dari portal Microsoft Azure.
AZURE_AI_SEARCH_INDEX Nilai ini sesuai dengan nama indeks yang Anda buat untuk menyimpan data Anda. Anda dapat menemukannya di bagian Gambaran Umum saat memeriksa sumber daya Azure AI Search Anda dari portal Microsoft Azure.

Pelajari selengkapnya tentang autentikasi tanpa kunci dan mengatur variabel lingkungan.

Contoh perintah cURL

Model obrolan Azure OpenAI dioptimalkan untuk bekerja dengan input yang diformat sebagai percakapan. Variabel messages melewati array kamus dengan peran yang berbeda dalam percakapan yang digambarkan oleh sistem, pengguna, alat, dan asisten. Variabel dataSources tersambung ke indeks Azure AI Search Anda, dan memungkinkan model Azure OpenAI merespons menggunakan data Anda.

Untuk memicu respons dari model, Anda harus diakhir dengan pesan pengguna yang menunjukkan bahwa itu adalah giliran asisten untuk merespons.

Petunjuk / Saran

Ada beberapa parameter yang dapat Anda gunakan untuk mengubah respons model, seperti temperature atau top_p. Lihat dokumentasi referensi untuk informasi selengkapnya.

curl -i -X POST $AZURE_OPENAI_ENDPOINT/openai/deployments/$AZURE_OPENAI_DEPLOYMENT_NAME/chat/completions?api-version=2024-10-21 \
-H "Content-Type: application/json" \
-H "api-key: $AZURE_OPENAI_API_KEY" \
-d \
'
{
    "data_sources": [
        {
            "type": "azure_search",
            "parameters": {
                "endpoint": "'$AZURE_AI_SEARCH_ENDPOINT'",
                "index_name": "'$AZURE_AI_SEARCH_INDEX'",
                "authentication": {
                    "type": "api_key",
                    "key": "'$AZURE_AI_SEARCH_API_KEY'"
                }
            }
        }
    ],
    "messages": [
        {
            "role": "user",
            "content": "What are my available health plans?"
        }
    ]
}
'

Contoh output

{
    "id": "12345678-1a2b-3c4e5f-a123-12345678abcd",
    "model": "gpt-4",
    "created": 1709835345,
    "object": "extensions.chat.completion",
    "choices": [
        {
            "index": 0,
            "finish_reason": "stop",
            "message": {
                "role": "assistant",
                "content": "The available health plans in the Contoso Electronics plan and benefit packages are the Northwind Health Plus and Northwind Standard plans. [doc1].",
                "end_turn": true,
                "context": {
                    "citations": [
                        {
                            "content": "...",
                            "title": "...",
                            "url": "https://mysearch.blob.core.windows.net/xyz/001.txt",
                            "filepath": "001.txt",
                            "chunk_id": "0"
                        }
                    ],
                    "intent": "[\"Available health plans\"]"
                }
            }
        }
    ],
    "usage": {
        "prompt_tokens": 3779,
        "completion_tokens": 105,
        "total_tokens": 3884
    },
    "system_fingerprint": "fp_65792305e4"
}

Mengobrol dengan model Anda menggunakan aplikasi web

Untuk mulai mengobrol dengan model Azure OpenAI yang menggunakan data Anda, Anda dapat menyebarkan aplikasi web menggunakan portal Azure AI Foundry atau kode contoh yang kami sediakan di GitHub. Aplikasi ini menyebarkan menggunakan layanan aplikasi Azure, dan menyediakan antarmuka pengguna untuk mengirim kueri. Aplikasi ini dapat digunakan dengan model Azure OpenAI yang menggunakan data Anda, atau model yang tidak menggunakan data Anda. Lihat file readme di repositori untuk petunjuk tentang persyaratan, penyiapan, dan penyebaran. Anda dapat secara opsional menyesuaikan logika frontend dan backend aplikasi web dengan membuat perubahan pada kode sumber.

Membersihkan sumber daya

Jika Anda ingin membersihkan dan menghapus sumber daya Azure OpenAI atau Azure AI Search, Anda dapat menghapus sumber daya atau grup sumber daya. Menghapus grup sumber daya juga menghapus sumber daya apa pun yang terkait dengannya.

Langkah berikutnya