Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
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.
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 .
Pilih Obrolan pada Playgrounds di panel kiri, dan pilih penerapan model Anda.
Di Chat Playground, pilih Tambahkan Data Anda dan kemudian Tambahkan Sumber Data
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
- Lihat sumber daya berikut untuk informasi selengkapnya:
- Untuk dokumen dan himpunan data dengan teks panjang, sebaiknya gunakan skrip persiapan data yang tersedia.
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.
Pilih sumber daya Azure AI Search Anda, dan pilih pengakuan bahwa menyambungkannya akan menimbulkan penggunaan di akun Anda. Lalu pilih Berikutnya.
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.
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.
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.
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.
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 .
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:
- Langganan Azure - Buat langganan secara gratis.
- Unduh contoh data dari GitHub jika Anda tidak memiliki data Anda sendiri.
- .NET 8 SDK
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.
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 .
Pilih Obrolan pada Playgrounds di panel kiri, dan pilih penerapan model Anda.
Di Chat Playground, pilih Tambahkan Data Anda dan kemudian Tambahkan Sumber Data
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
- Lihat sumber daya berikut untuk informasi selengkapnya:
- Untuk dokumen dan himpunan data dengan teks panjang, sebaiknya gunakan skrip persiapan data yang tersedia.
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.
Pilih sumber daya Azure AI Search Anda, dan pilih pengakuan bahwa menyambungkannya akan menimbulkan penggunaan di akun Anda. Lalu pilih Berikutnya.
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.
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.
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:
- Azure OpenAI
- Azure Blob Storage
- Pencarian Azure AI
- Resource Azure OpenAI ditempatkan di wilayah yang didukung dan dengan model yang didukung.
- Pastikan Anda diberi setidaknya peran Kontributor Cognitive Services untuk sumber daya Azure OpenAI.
- 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.
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 .
Pilih Obrolan pada Playgrounds di panel kiri, dan pilih penerapan model Anda.
Di Chat Playground, pilih Tambahkan Data Anda dan kemudian Tambahkan Sumber Data
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
- Lihat sumber daya berikut untuk informasi selengkapnya:
- Untuk dokumen dan himpunan data dengan teks panjang, sebaiknya gunakan skrip persiapan data yang tersedia.
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.
Pilih sumber daya Azure AI Search Anda, dan pilih pengakuan bahwa menyambungkannya akan menimbulkan penggunaan di akun Anda. Lalu pilih Berikutnya.
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.
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.
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
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>
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.
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
Langganan Azure - Buat langganan secara gratis.
Azure CLI yang digunakan untuk autentikasi tanpa kata sandi di lingkungan pengembangan lokal, buat konteks yang diperlukan dengan masuk dengan Azure CLI.
Sumber daya Azure OpenAI disebarkan di wilayah yang didukung dan dengan model yang didukung.
Pastikan Anda diberi setidaknya peran Kontributor Cognitive Services untuk sumber daya Azure OpenAI.
Unduh contoh data dari GitHub jika Anda tidak memiliki data Anda sendiri.
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.
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 .
Pilih Obrolan pada Playgrounds di panel kiri, dan pilih penerapan model Anda.
Di Chat Playground, pilih Tambahkan Data Anda dan kemudian Tambahkan Sumber Data
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
- Lihat sumber daya berikut untuk informasi selengkapnya:
- Untuk dokumen dan himpunan data dengan teks panjang, sebaiknya gunakan skrip persiapan data yang tersedia.
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.
Pilih sumber daya Azure AI Search Anda, dan pilih pengakuan bahwa menyambungkannya akan menimbulkan penggunaan di akun Anda. Lalu pilih Berikutnya.
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.
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.
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
Buat folder
use-data-quickstart
baru dan buka folder mulai cepat dengan perintah berikut:mkdir use-data-quickstart && cd use-data-quickstart
Buat
package.json
dengan perintah berikut:npm init -y
Instal pustaka klien OpenAI untuk JavaScript dengan:
npm install openai
Untuk autentikasi tanpa kata sandi yang direkomendasikan :
npm install @azure/identity
Menambahkan kode JavaScript
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); });
Masuk ke Azure dengan perintah berikut:
az login
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
Langganan Azure - Buat langganan secara gratis.
Azure CLI yang digunakan untuk autentikasi tanpa kata sandi di lingkungan pengembangan lokal, buat konteks yang diperlukan dengan masuk dengan Azure CLI.
Sumber daya Azure OpenAI disebarkan di wilayah yang didukung dan dengan model yang didukung.
Pastikan Anda diberi setidaknya peran Kontributor Cognitive Services untuk sumber daya Azure OpenAI.
Unduh contoh data dari GitHub jika Anda tidak memiliki data Anda sendiri.
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.
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 .
Pilih Obrolan pada Playgrounds di panel kiri, dan pilih penerapan model Anda.
Di Chat Playground, pilih Tambahkan Data Anda dan kemudian Tambahkan Sumber Data
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
- Lihat sumber daya berikut untuk informasi selengkapnya:
- Untuk dokumen dan himpunan data dengan teks panjang, sebaiknya gunakan skrip persiapan data yang tersedia.
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.
Pilih sumber daya Azure AI Search Anda, dan pilih pengakuan bahwa menyambungkannya akan menimbulkan penggunaan di akun Anda. Lalu pilih Berikutnya.
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.
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.
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
Buat folder
use-data-quickstart
baru dan buka folder mulai cepat dengan perintah berikut:mkdir use-data-quickstart && cd use-data-quickstart
Buat
package.json
dengan perintah berikut:npm init -y
package.json
Perbarui ke ECMAScript dengan perintah berikut:npm pkg set type=module
Instal pustaka klien OpenAI untuk JavaScript dengan:
npm install openai
Untuk autentikasi tanpa kata sandi yang direkomendasikan :
npm install @azure/identity
Menambahkan kode TypeScript
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); });
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"] }
Transpile dari TypeScript ke JavaScript.
tsc
Masuk ke Azure dengan perintah berikut:
az login
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:
- Azure OpenAI
- Azure Blob Storage
- Pencarian Azure AI
- Resource Azure OpenAI ditempatkan di wilayah yang didukung dan dengan model yang didukung.
- Pastikan Anda diberi setidaknya peran Kontributor Cognitive Services untuk sumber daya Azure OpenAI.
- Unduh contoh data dari GitHub jika Anda tidak memiliki data Anda sendiri.
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.
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 .
Pilih Obrolan pada Playgrounds di panel kiri, dan pilih penerapan model Anda.
Di Chat Playground, pilih Tambahkan Data Anda dan kemudian Tambahkan Sumber Data
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
- Lihat sumber daya berikut untuk informasi selengkapnya:
- Untuk dokumen dan himpunan data dengan teks panjang, sebaiknya gunakan skrip persiapan data yang tersedia.
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.
Pilih sumber daya Azure AI Search Anda, dan pilih pengakuan bahwa menyambungkannya akan menimbulkan penggunaan di akun Anda. Lalu pilih Berikutnya.
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.
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.
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
- 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
- Instal Pustaka Python berikut:
pip install openai
pip install python-dotenv
Membuat aplikasi Python
- 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.
- 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:
- Azure OpenAI
- Azure Blob Storage
- Pencarian Azure AI
- Resource Azure OpenAI ditempatkan di wilayah yang didukung dan dengan model yang didukung.
- Pastikan Anda diberi setidaknya peran Kontributor Cognitive Services untuk sumber daya Azure OpenAI.
- 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.
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 .
Pilih Obrolan pada Playgrounds di panel kiri, dan pilih penerapan model Anda.
Di Chat Playground, pilih Tambahkan Data Anda dan kemudian Tambahkan Sumber Data
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
- Lihat sumber daya berikut untuk informasi selengkapnya:
- Untuk dokumen dan himpunan data dengan teks panjang, sebaiknya gunakan skrip persiapan data yang tersedia.
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.
Pilih sumber daya Azure AI Search Anda, dan pilih pengakuan bahwa menyambungkannya akan menimbulkan penggunaan di akun Anda. Lalu pilih Berikutnya.
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.
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.
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:
- Azure OpenAI
- Azure Blob Storage
- Pencarian Azure AI
- Resource Azure OpenAI ditempatkan di wilayah yang didukung dan dengan model yang didukung.
- Pastikan Anda diberi setidaknya peran Kontributor Cognitive Services untuk sumber daya Azure OpenAI.
- Unduh contoh data dari GitHub jika Anda tidak memiliki data Anda sendiri.
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.
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 .
Pilih Obrolan pada Playgrounds di panel kiri, dan pilih penerapan model Anda.
Di Chat Playground, pilih Tambahkan Data Anda dan kemudian Tambahkan Sumber Data
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
- Lihat sumber daya berikut untuk informasi selengkapnya:
- Untuk dokumen dan himpunan data dengan teks panjang, sebaiknya gunakan skrip persiapan data yang tersedia.
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.
Pilih sumber daya Azure AI Search Anda, dan pilih pengakuan bahwa menyambungkannya akan menimbulkan penggunaan di akun Anda. Lalu pilih Berikutnya.
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.
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.
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
Buat folder
dall-e-quickstart
baru dan buka folder mulai cepat dengan perintah berikut:mkdir dall-e-quickstart && cd dall-e-quickstart
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:
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, ) }
Jalankan perintah berikut untuk membuat modul Go baru:
go mod init quickstart.go
Jalankan
go mod tidy
untuk menginstal dependensi yang diperlukan:go mod tidy
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:
- Azure OpenAI
- Azure Blob Storage
- Pencarian Azure AI
- Resource Azure OpenAI ditempatkan di wilayah yang didukung dan dengan model yang didukung.
- Pastikan Anda diberi setidaknya peran Kontributor Cognitive Services untuk sumber daya Azure OpenAI.
- 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.
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 .
Pilih Obrolan pada Playgrounds di panel kiri, dan pilih penerapan model Anda.
Di Chat Playground, pilih Tambahkan Data Anda dan kemudian Tambahkan Sumber Data
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
- Lihat sumber daya berikut untuk informasi selengkapnya:
- Untuk dokumen dan himpunan data dengan teks panjang, sebaiknya gunakan skrip persiapan data yang tersedia.
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.
Pilih sumber daya Azure AI Search Anda, dan pilih pengakuan bahwa menyambungkannya akan menimbulkan penggunaan di akun Anda. Lalu pilih Berikutnya.
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.
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.
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
- Pelajari selengkapnya tentang menggunakan data Anda di Azure OpenAI di Model Azure AI Foundry
- Kode sampel aplikasi obrolan di GitHub.