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 panduan cepat ini, Anda akan mempelajari cara membuat asisten AI minimal menggunakan pustaka SDK OpenAI atau Azure OpenAI. Asisten AI menyediakan fungsionalitas agenik untuk membantu pengguna menyelesaikan tugas menggunakan alat dan model AI. Di bagian depan, Anda akan mempelajari hal berikut:
- Komponen inti dan konsep asisten AI
- Cara membuat asisten menggunakan Azure OpenAI SDK
- Cara meningkatkan dan menyesuaikan kemampuan asisten
Prasyarat
- Instal .NET 8.0 atau yang lebih tinggi
- Visual Studio Code (opsional)
- Visual Studio (opsional)
- Kunci akses untuk model OpenAI
- Instal .NET 8.0 atau yang lebih tinggi
- Visual Studio Code (opsional)
- Visual Studio (opsional)
- Akses ke instans Azure OpenAI melalui Azure Identity atau kunci akses
Komponen inti asisten AI
Asisten AI berpusat pada alur percakapan dengan pengguna. Pengguna mengirim permintaan ke asisten pada utas percakapan, yang mengarahkan asisten untuk menyelesaikan tugas menggunakan alat yang tersedia. Asisten dapat memproses dan menganalisis data, membuat keputusan, dan berinteraksi dengan pengguna atau sistem lain untuk mencapai tujuan tertentu. Sebagian besar asisten mencakup komponen berikut:
| Komponen | Deskripsi |
|---|---|
| Asisten | Klien dan logika AI inti yang menggunakan model Azure OpenAI, mengelola utas percakapan, dan menggunakan alat yang dikonfigurasi. |
| Utas | Sesi percakapan antara asisten dan pengguna. Utas menyimpan pesan dan secara otomatis menangani pemangkasan agar konten sesuai dengan konteks model. |
| Pesan | Pesan yang dibuat oleh asisten atau pengguna. Pesan dapat menyertakan teks, gambar, dan file lainnya. Pesan disimpan dalam bentuk daftar pada utas. |
| jalankan | Aktivasi asisten untuk mulai beroperasi berdasarkan isi topik. Asisten menggunakan konfigurasinya dan urutan pesan untuk melakukan tugas dengan memanggil model dan alat. Sebagai bagian dari pelaksanaan, asisten menambahkan pesan ke utas. |
| Jalankan langkah-langkah | Daftar langkah-langkah terperinci yang diambil oleh asisten sebagai bagian dari sebuah sesi. Asisten dapat memanggil alat atau membuat pesan selama prosesnya. Memeriksa langkah-langkah pelaksanaan memungkinkan Anda memahami bagaimana asisten mencapai hasil akhirnya. |
Asisten juga dapat dikonfigurasi untuk menggunakan beberapa alat secara paralel untuk menyelesaikan tugas, termasuk yang berikut ini:
- Alat interpretasi kode: Menulis dan menjalankan kode di lingkungan eksekusi terisolasi.
- Panggilan fungsi: Menjalankan fungsi lokal kustom yang Anda tentukan dalam kode Anda.
- Kemampuan pencarian file: Meningkatkan pengetahuan asisten dari luar modelnya.
Dengan memahami komponen inti ini dan bagaimana mereka berinteraksi, Anda dapat membangun dan menyesuaikan asisten AI yang kuat untuk memenuhi kebutuhan spesifik Anda.
Membuat aplikasi .NET
Selesaikan langkah-langkah berikut untuk membuat aplikasi konsol .NET dan tambahkan paket yang diperlukan untuk bekerja dengan asisten:
Di jendela terminal, navigasikan ke direktori kosong di perangkat Anda dan buat aplikasi baru dengan perintah
dotnet new:dotnet new console -o AIAssistantTambahkan paket OpenAI ke aplikasi Anda:
dotnet add package OpenAIBuka aplikasi baru di editor pilihan Anda, seperti Visual Studio Code.
code .
Di jendela terminal, navigasikan ke direktori kosong di perangkat Anda dan buat aplikasi baru dengan perintah
dotnet new:dotnet new console -o AIAssistantTambahkan paket Azure.AI.OpenAI ke aplikasi Anda:
dotnet add package Azure.AI.OpenAIBuka aplikasi baru di editor pilihan Anda, seperti Visual Studio Code.
code .
Membuat klien asisten AI
Program.csBuka file dan ganti konten file dengan kode berikut untuk membuat klien yang diperlukan:using OpenAI; using OpenAI.Assistants; using OpenAI.Files; using Azure.AI.OpenAI; using Azure.Identity; // Create the OpenAI client OpenAIClient openAIClient = new("your-apy-key"); // For Azure OpenAI, use the following client instead: AzureOpenAIClient azureAIClient = new( new Uri("your-azure-openai-endpoint"), new DefaultAzureCredential()); #pragma warning disable OPENAI001 AssistantClient assistantClient = openAIClient.GetAssistantClient(); OpenAIFileClient fileClient = openAIClient.GetOpenAIFileClient();Buat dokumen sampel dalam memori dan unggah ke
OpenAIFileClient:// Create an in-memory document to upload to the file client using Stream document = BinaryData.FromBytes(""" { "description": "This document contains the sale history data for Contoso products.", "sales": [ { "month": "January", "by_product": { "113043": 15, "113045": 12, "113049": 2 } }, { "month": "February", "by_product": { "113045": 22 } }, { "month": "March", "by_product": { "113045": 16, "113055": 5 } } ] } """u8.ToArray()).ToStream(); // Upload the document to the file client OpenAIFile salesFile = fileClient.UploadFile( document, "monthly_sales.json", FileUploadPurpose.Assistants);Aktifkan kemampuan alat pencarian file dan penerjemah kode melalui
AssistantCreationOptions:// Configure the assistant options AssistantCreationOptions assistantOptions = new() { Name = "Example: Contoso sales RAG", Instructions = "You are an assistant that looks up sales data and helps visualize the information based" + " on user queries. When asked to generate a graph, chart, or other visualization, use" + " the code interpreter tool to do so.", Tools = { new FileSearchToolDefinition(), // Enable the assistant to search and access files new CodeInterpreterToolDefinition(), // Enable the assistant to run code for data analysis }, ToolResources = new() { FileSearch = new() { NewVectorStores = { new VectorStoreCreationHelper([salesFile.Id]), } } }, };Buat
Assistantdan buat utas untuk mengelola interaksi antara pengguna dan asisten:// Create the assistant Assistant assistant = assistantClient.CreateAssistant("gpt-4o", assistantOptions); // Configure and create the conversation thread ThreadCreationOptions threadOptions = new() { InitialMessages = { "How well did product 113045 sell in February? Graph its trend over time." } }; ThreadRun threadRun = assistantClient.CreateThreadAndRun(assistant.Id, threadOptions); // Sent the prompt and monitor progress until the thread run is complete do { Thread.Sleep(TimeSpan.FromSeconds(1)); threadRun = assistantClient.GetRun(threadRun.ThreadId, threadRun.Id); } while (!threadRun.Status.IsTerminal); // Get the messages from the thread run var messages = assistantClient.GetMessagesAsync( threadRun.ThreadId, new MessageCollectionOptions() { Order = MessageCollectionOrder.Ascending });Cetak pesan dan simpan gambar yang dihasilkan dari percakapan dengan asisten:
// Process the messages from the assistant await foreach (ThreadMessage message in messages) { // Print out the messages from the assistant Console.Write($"[{message.Role.ToString().ToUpper()}]: "); foreach (MessageContent contentItem in message.Content) { if (!string.IsNullOrEmpty(contentItem.Text)) { Console.WriteLine($"{contentItem.Text}"); if (contentItem.TextAnnotations.Count > 0) { Console.WriteLine(); } // Include annotations, if any foreach (TextAnnotation annotation in contentItem.TextAnnotations) { if (!string.IsNullOrEmpty(annotation.InputFileId)) { Console.WriteLine($"* File citation, file ID: {annotation.InputFileId}"); } if (!string.IsNullOrEmpty(annotation.OutputFileId)) { Console.WriteLine($"* File output, new file ID: {annotation.OutputFileId}"); } } } // Save the generated image file if (!string.IsNullOrEmpty(contentItem.ImageFileId)) { OpenAIFile imageInfo = fileClient.GetFile(contentItem.ImageFileId); BinaryData imageBytes = fileClient.DownloadFile(contentItem.ImageFileId); using FileStream stream = File.OpenWrite($"{imageInfo.Filename}.png"); imageBytes.ToStream().CopyTo(stream); Console.WriteLine($"<image: {imageInfo.Filename}.png>"); } } Console.WriteLine(); }Temukan dan buka gambar yang disimpan di direktori aplikasi
bin, yang harus menyerupai berikut ini: