Bagikan melalui


Mulai Cepat: Mulai menggunakan Asisten Azure OpenAI (Pratinjau)

Asisten Azure OpenAI (Pratinjau) memungkinkan Anda membuat asisten AI yang disesuaikan dengan kebutuhan Anda melalui instruksi kustom dan ditambah oleh alat tingkat lanjut seperti penerjemah kode, dan fungsi kustom.

Penting

Beberapa fitur yang dijelaskan dalam artikel ini mungkin hanya tersedia dalam pratinjau. Pratinjau ini disediakan tanpa perjanjian tingkat layanan, dan kami tidak merekomendasikannya untuk beban kerja produksi. Fitur tertentu mungkin tidak didukung atau mungkin memiliki kemampuan terbatas. Untuk mengetahui informasi selengkapnya, lihat Ketentuan Penggunaan Tambahan untuk Pratinjau Microsoft Azure.

Prasyarat

  • Langganan Azure - Buat langganan gratis.
  • Sumber daya hub Azure AI dengan model yang disebarkan. Untuk informasi selengkapnya tentang penyebaran model, lihat panduan penyebaran sumber daya.
  • Proyek Azure AI di Azure AI Studio.

Buka Azure AI Studio (Pratinjau)

Catatan

Meskipun Anda dapat menggunakan Azure OpenAI Studio, sebaiknya gunakan langkah-langkah di sini untuk menggunakan Azure AI Studio. AI Studio memungkinkan Anda menggunakan Asisten v2 yang menyediakan beberapa peningkatan seperti alat pencarian file yang lebih cepat dan mendukung lebih banyak file.

  1. Masuk ke Azure AI Studio.

  2. Buka proyek Anda atau buat proyek baru di Azure AI Studio.

  3. Dari gambaran umum proyek Anda, pilih Asisten, yang terletak di bawah Taman bermain Proyek.

    Taman bermain Asisten memungkinkan Anda menjelajahi, membuat prototipe, dan menguji Asisten AI tanpa perlu menjalankan kode apa pun. Dari halaman ini, Anda dapat dengan cepat melakukan iterasi dan bereksperimen dengan ide-ide baru.

    Taman bermain menyediakan beberapa opsi untuk mengonfigurasi Asisten Anda. Dalam langkah-langkah berikut, Anda akan menggunakan panel penyiapan Asisten untuk membuat asisten AI baru.

    Nama Keterangan
    Nama asisten Nama penyebaran Anda yang terkait dengan model tertentu.
    Petunjuk Instruksi mirip dengan pesan sistem di sinilah Anda memberikan panduan model tentang bagaimana hal itu harus bersifat dan konteks apa pun yang harus dirujuk saat menghasilkan respons. Anda dapat menjelaskan kepribadian asisten, memberi tahu apa yang harus dan tidak boleh dijawab, dan memberi tahunya cara memformat respons. Anda juga dapat memberikan contoh langkah-langkah yang harus diambil saat menjawab respons.
    Penyebaran Di sinilah Anda mengatur penyebaran model mana yang akan digunakan dengan asisten Anda.
    Fungsi Buat definisi fungsi kustom untuk model untuk merumuskan panggilan API dan menyusun output data berdasarkan spesifikasi Anda. Tidak digunakan dalam mulai cepat ini.
    Penerjemah kode Penerjemah kode menyediakan akses ke lingkungan Python terkotakpasir yang dapat digunakan untuk memungkinkan model menguji dan menjalankan kode.
    File Anda dapat mengunggah hingga 10.000 file, dengan ukuran file maksimum 512 MB untuk digunakan dengan alat. Tidak digunakan dalam mulai cepat ini.

    Cuplikan layar konfigurasi Asisten tanpa semua nilai yang diisi.

Buat Asisten pertama Anda

  1. Pilih penyebaran Anda dari menu dropdown Penyebaran .

  2. Dari menu drop-down Penyetelan asisten, pilih Baru.

  3. Beri nama Asisten Anda.

  4. Masukkan instruksi berikut "Anda adalah asisten AI yang dapat menulis kode untuk membantu menjawab pertanyaan matematika"

  5. Pilih penyebaran model. Sebaiknya uji dengan salah satu model gpt-4 terbaru.

  6. Pilih tombol mengaktifkan penerjemah kode.

  7. Pilih Simpan.

    Cuplikan layar asisten dengan detail konfigurasi yang dimasukkan.

  8. Masukkan pertanyaan untuk dijawab oleh asisten: "Saya perlu menyelesaikan persamaan 3x + 11 = 14. Dapatkah Anda membantu saya?"

  9. Pilih tombol Tambahkan dan jalankan

    The solution to the equation (3x + 11 = 14) is (x = 1).
    

    Meskipun kita dapat melihat jawaban itu benar, untuk mengonfirmasi bahwa model menggunakan penerjemah kode untuk mendapatkan jawaban ini, dan bahwa kode yang ditulisnya valid daripada hanya mengulangi jawaban dari data pelatihan model, kita akan mengajukan pertanyaan lain.

  10. Masukkan pertanyaan tindak lanjut: "Tunjukkan kode yang Anda jalankan untuk mendapatkan solusi ini."

    Sure. The code is very straightforward
    
    # calculation
    x = (14 - 11) / 3
    x
    
    
    First, we subtract 11 from 14, then divide the result by 3. This gives us the value of x which is 1.0.
    

    Cuplikan layar sesi percakapan di taman bermain Asisten.

Anda juga dapat berkonsultasi dengan log di panel kanan untuk mengonfirmasi bahwa penerjemah kode digunakan dan untuk memvalidasi kode yang dijalankan untuk menghasilkan respons. Penting untuk diingat bahwa sementara penerjemah kode memberi model kemampuan untuk menanggapi pertanyaan matematika yang lebih kompleks dengan mengonversi pertanyaan menjadi kode dan berjalan di lingkungan Python terkotakpasir, Anda masih perlu memvalidasi respons untuk mengonfirmasi bahwa model menerjemahkan pertanyaan Anda dengan benar ke dalam representasi kode yang valid.

Konsep kunci

Saat menggunakan taman bermain Asisten, ingatlah konsep berikut.

Alat

Asisten individu dapat mengakses hingga 128 alat termasuk code interpreter, serta alat kustom apa pun yang Anda buat melalui fungsi.

Sesi obrolan

Sesi obrolan juga dikenal sebagai utas dalam API Asisten adalah tempat percakapan antara pengguna dan asisten terjadi. Tidak seperti panggilan penyelesaian obrolan tradisional tidak ada batasan jumlah pesan dalam utas. Asisten akan secara otomatis mengompres permintaan agar sesuai dengan batas token input model.

Ini juga berarti bahwa Anda tidak mengontrol berapa banyak token yang diteruskan ke model selama setiap giliran percakapan. Mengelola token diabstraksi dan ditangani sepenuhnya oleh Assistants API.

Pilih tombol Hapus obrolan untuk menghapus riwayat percakapan saat ini.

Di bawah kotak input teks ada dua tombol:

  • Tambahkan pesan tanpa menjalankan.
  • Tambahkan dan jalankan.

Log

Log menyediakan rekam jepret terperinci tentang apa yang dilakukan oleh aktivitas API asisten.

Perlihatkan panel

Secara default ada tiga panel: pengaturan asisten, sesi obrolan, dan Log. Tampilkan panel memungkinkan Anda untuk menambahkan, menghapus, dan mengatur ulang panel. Jika Anda pernah menutup panel dan perlu mendapatkannya kembali, gunakan Tampilkan panel untuk memulihkan panel yang hilang.

Membersihkan sumber daya

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

Atau Anda dapat menghapus asisten, atau utas melalui API Asisten.

Lihat juga

Dokumentasi | referensi Paket kode | sumber Pustaka (PyPi) |

Prasyarat

  • Langganan Azure - buat langganan gratis
  • Python 3.8 atau versi yang lebih baru
  • Pustaka Python berikut: os, openai (Versi 1.x diperlukan)
  • 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 dengan model yang kompatibel di wilayah yang didukung.
  • Sebaiknya tinjau catatan transparansi AI yang Bertanggung Jawab dan sumber daya AI Bertanggung Jawab lainnya untuk membiasakan diri dengan kemampuan dan batasan Layanan Azure OpenAI.
  • Sumber daya Azure OpenAI dengan model yang gpt-4 (1106-preview) disebarkan digunakan untuk menguji contoh ini.

Untuk autentikasi tanpa kata sandi, Anda perlu

  1. Gunakan paket azure-identity.
  2. Tetapkan peran ke Cognitive Services User akun pengguna Anda. Ini dapat dilakukan di portal Azure di bawah Kontrol akses (IAM)>Tambahkan penetapan peran.
  3. Masuk dengan Azure CLI seperti az login.

Penyiapan

  1. Instal pustaka klien OpenAI Python dengan:
pip install openai
  1. Untuk autentikasi tanpa kata sandi yang direkomendasikan :
pip install azure-identity

Catatan

  • Pencarian file dapat menyerap hingga 10.000 file per asisten - 500 kali lebih banyak dari sebelumnya. Solusi ini cepat, mendukung kueri paralel melalui pencarian multi-utas, dan fitur pemeringkatan ulang dan penulisan ulang kueri yang ditingkatkan.
    • Penyimpanan vektor adalah objek baru di API. Setelah file ditambahkan ke penyimpanan vektor, file secara otomatis diurai, dipotong, dan disematkan, dibuat siap untuk dicari. Penyimpanan vektor dapat digunakan di seluruh asisten dan utas, menyederhanakan manajemen dan penagihan file.
  • Kami telah menambahkan dukungan untuk tool_choice parameter yang dapat digunakan untuk memaksa penggunaan alat tertentu (seperti pencarian file, penerjemah kode, atau fungsi) dalam eksekusi tertentu.

Catatan

Pustaka ini dikelola oleh OpenAI. Lihat riwayat rilis untuk melacak pembaruan terbaru ke pustaka.

Mengambil kunci dan titik akhir

Agar berhasil melakukan panggilan terhadap layanan Azure OpenAI, Anda memerlukan hal berikut:

Nama variabel Nilai
ENDPOINT Nilai ini dapat ditemukan di bagian Kunci dan Titik Akhir saat memeriksa sumber daya Anda dari portal Azure. Atau, Anda dapat menemukan nilainya di kode Tampilan Playground>Azure OpenAI Studio>. Contoh titik akhir adalah: https://docs-test-001.openai.azure.com/.
API-KEY Nilai ini dapat ditemukan di bagian Kunci dan Titik Akhir saat memeriksa sumber daya Anda dari portal Azure. Anda dapat menggunakan KEY1 atau KEY2.
DEPLOYMENT-NAME Nilai ini akan sesuai dengan nama kustom yang Anda pilih untuk penyebaran pada saat Anda menyebarkan model. Nilai ini dapat ditemukan di bawah Penyebaran Model Manajemen>Sumber Daya di portal Azure atau di bawah Penyebaran Manajemen>di Azure OpenAI Studio.

Buka sumber daya Anda di portal Azure. Kunci dan Titik Akhir dapat ditemukan di bagian Manajemen Sumber Daya. Salin titik akhir dan kunci akses Anda karena keduanya diperlukan untuk mengautentikasi panggilan API Anda. Anda dapat menggunakan KEY1 atau KEY2. Selalu miliki dua kunci untuk memungkinkan Anda memutar dan meregenerasi kunci dengan aman tanpa menyebabkan gangguan layanan.

Cuplikan layar bilah gambaran umum untuk sumber daya Azure OpenAI di portal Azure dengan titik akhir & lokasi kunci akses dilingkari dengan warna merah.

Variabel lingkungan

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

Penting

Jika Anda menggunakan kunci API, simpan dengan aman di tempat lain, seperti di Azure Key Vault. Jangan sertakan kunci API langsung dalam kode Anda, dan jangan pernah mempostingnya secara publik.

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

setx AZURE_OPENAI_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE" 
setx AZURE_OPENAI_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE" 

Membuat asisten

Dalam kode kita, kita akan menentukan nilai-nilai berikut:

Nama Keterangan
Nama asisten Nama penyebaran Anda yang terkait dengan model tertentu.
Petunjuk Instruksi mirip dengan pesan sistem di sinilah Anda memberikan panduan model tentang bagaimana hal itu harus bersifat dan konteks apa pun yang harus dirujuk saat menghasilkan respons. Anda dapat menjelaskan kepribadian asisten, memberi tahu apa yang harus dan tidak boleh dijawab, dan memberi tahunya cara memformat respons. Anda juga dapat memberikan contoh langkah-langkah yang harus diambil saat menjawab respons.
Model Di sinilah Anda mengatur nama penyebaran model mana yang akan digunakan dengan asisten Anda. Alat pengambilan memerlukan gpt-35-turbo (1106) atau gpt-4 (1106-preview) model. Atur nilai ini ke nama penyebaran Anda, bukan nama model kecuali sama.
Penerjemah kode Penerjemah kode menyediakan akses ke lingkungan Python terkotakpasir yang dapat digunakan untuk memungkinkan model menguji dan menjalankan kode.

Alat

Asisten individu dapat mengakses hingga 128 alat termasuk code interpreter, serta alat kustom apa pun yang Anda buat melalui fungsi.

Membuat aplikasi Python

Masuk ke Azure lalu az login buat dan jalankan asisten dengan contoh Python tanpa kata sandi yang direkomendasikan berikut:

import os
from azure.identity import DefaultAzureCredential, get_bearer_token_provider
from openai import AzureOpenAI

token_provider = get_bearer_token_provider(DefaultAzureCredential(), "https://cognitiveservices.azure.com/.default")

client = AzureOpenAI(
    azure_ad_token_provider=token_provider,
    azure_endpoint=os.environ["AZURE_OPENAI_ENDPOINT"],
    api_version="2024-05-01-preview",
)

# Create an assistant
assistant = client.beta.assistants.create(
    name="Math Assist",
    instructions="You are an AI assistant that can write code to help answer math questions.",
    tools=[{"type": "code_interpreter"}],
    model="gpt-4-1106-preview" # You must replace this value with the deployment name for your model.
)

# Create a thread
thread = client.beta.threads.create()

# Add a user question to the thread
message = client.beta.threads.messages.create(
    thread_id=thread.id,
    role="user",
    content="I need to solve the equation `3x + 11 = 14`. Can you help me?"
)

# Run the thread and poll for the result
run = client.beta.threads.runs.create_and_poll(
    thread_id=thread.id,
    assistant_id=assistant.id,
    instructions="Please address the user as Jane Doe. The user has a premium account.",
)

print("Run completed with status: " + run.status)

if run.status == "completed":
    messages = client.beta.threads.messages.list(thread_id=thread.id)
    print(messages.to_json(indent=2))

Untuk menggunakan kunci API layanan untuk autentikasi, Anda dapat membuat dan menjalankan asisten dengan contoh Python berikut:

import os
from openai import AzureOpenAI

client = AzureOpenAI(
    api_key=os.environ["AZURE_OPENAI_API_KEY"],
    azure_endpoint=os.environ["AZURE_OPENAI_ENDPOINT"],
    api_version="2024-05-01-preview",
)

# Create an assistant
assistant = client.beta.assistants.create(
    name="Math Assist",
    instructions="You are an AI assistant that can write code to help answer math questions.",
    tools=[{"type": "code_interpreter"}],
    model="gpt-4-1106-preview" # You must replace this value with the deployment name for your model.
)

# Create a thread
thread = client.beta.threads.create()

# Add a user question to the thread
message = client.beta.threads.messages.create(
    thread_id=thread.id,
    role="user",
    content="I need to solve the equation `3x + 11 = 14`. Can you help me?"
)

# Run the thread and poll for the result
run = client.beta.threads.runs.create_and_poll(
    thread_id=thread.id,
    assistant_id=assistant.id,
    instructions="Please address the user as Jane Doe. The user has a premium account.",
)

print("Run completed with status: " + run.status)

if run.status == "completed":
    messages = client.beta.threads.messages.list(thread_id=thread.id)
    print(messages.to_json(indent=2))

Output

Jalankan selesai dengan status: selesai

{
  "data": [
    {
      "id": "msg_4SuWxTubHsHpt5IlBTO5Hyw9",
      "assistant_id": "asst_cYqL1RuwLyFV3HU1gkaE2k0K",
      "attachments": [],
      "content": [
        {
          "text": {
            "annotations": [],
            "value": "The solution to the equation \\(3x + 11 = 14\\) is \\(x = 1\\)."
          },
          "type": "text"
        }
      ],
      "created_at": 1716397091,
      "metadata": {},
      "object": "thread.message",
      "role": "assistant",
      "run_id": "run_hFgBPbUtO8ZNTnNPC8PgpH1S",
      "thread_id": "thread_isb7spwRycI5ueT9E7357aOm"
    },
    {
      "id": "msg_Z32w2E7kY5wEWhZqQWxIbIUB",
      "assistant_id": null,
      "attachments": [],
      "content": [
        {
          "text": {
            "annotations": [],
            "value": "I need to solve the equation `3x + 11 = 14`. Can you help me?"
          },
          "type": "text"
        }
      ],
      "created_at": 1716397025,
      "metadata": {},
      "object": "thread.message",
      "role": "user",
      "run_id": null,
      "thread_id": "thread_isb7spwRycI5ueT9E7357aOm"
    }
  ],
  "object": "list",
  "first_id": "msg_4SuWxTubHsHpt5IlBTO5Hyw9",
  "last_id": "msg_Z32w2E7kY5wEWhZqQWxIbIUB",
  "has_more": false
}

Memahami tataan hasil Anda

Dalam contoh ini, kami membuat asisten dengan penerjemah kode diaktifkan. Ketika kita mengajukan pertanyaan matematika kepada asisten, itu menerjemahkan pertanyaan ke dalam kode python dan menjalankan kode di lingkungan terkotakpasir untuk menentukan jawaban atas pertanyaan. Kode yang dibuat model dan pengujian untuk sampai pada jawabannya adalah:

from sympy import symbols, Eq, solve  
  
# Define the variable  
x = symbols('x')  
  
# Define the equation  
equation = Eq(3*x + 11, 14)  
  
# Solve the equation  
solution = solve(equation, x)  
solution  

Penting untuk diingat bahwa sementara penerjemah kode memberi model kemampuan untuk menanggapi kueri yang lebih kompleks dengan mengonversi pertanyaan menjadi kode dan menjalankan kode tersebut secara berulang di kotak pasir Python sampai mencapai solusi, Anda masih perlu memvalidasi respons untuk mengonfirmasi bahwa model menerjemahkan pertanyaan Anda dengan benar ke dalam representasi kode yang valid.

Membersihkan sumber daya

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

Lihat juga

Dokumentasi | referensi Paket kode sumber | (NuGet)

Prasyarat

Penyiapan

Buat aplikasi .NET Core baru

  1. Di jendela konsol (seperti cmd, PowerShell, atau Bash), gunakan dotnet new perintah untuk membuat aplikasi konsol baru dengan nama azure-openai-quickstart:

    dotnet new console -n azure-openai-assistants-quickstart
    
  2. Ubah ke direktori folder aplikasi yang baru dibuat dan buat aplikasi dengan dotnet build perintah :

    dotnet build
    

    Output build tidak boleh berisi peringatan atau kesalahan.

    ...
    Build succeeded.
     0 Warning(s)
     0 Error(s)
    ...
    
  3. Instal pustaka klien OpenAI .NET dengan perintah tambahkan paket dotnet:

    dotnet add package Azure.AI.OpenAI --prerelease
    

Mengambil kunci dan titik akhir

Agar berhasil melakukan panggilan terhadap Azure OpenAI, Anda memerlukan titik akhir dan kunci.

Nama variabel Nilai
ENDPOINT Nilai ini dapat ditemukan di bagian Kunci & Titik Akhir saat memeriksa sumber daya Anda dari portal Microsoft Azure. Atau, Anda dapat menemukan nilainya di Azure OpenAI Studio>Playground>Tampilan Kode. Contoh titik akhir adalah: https://docs-test-001.openai.azure.com/.
API-KEY Nilai ini dapat ditemukan di bagian Kunci & Titik Akhir saat memeriksa sumber daya Anda dari portal Microsoft Azure. Anda dapat menggunakan KEY1 atau KEY2.

Buka sumber daya Anda di portal Azure. Bagian Kunci & Titik Akhir dapat ditemukan di bagian Manajemen Sumber Daya. Salin titik akhir dan kunci akses Anda karena keduanya diperlukan untuk mengautentikasi panggilan API Anda. Anda dapat menggunakan KEY1 atau KEY2. Selalu miliki dua kunci untuk memungkinkan Anda memutar dan meregenerasi kunci dengan aman tanpa menyebabkan gangguan layanan.

Cuplikan layar antarmuka pengguna gambaran umum untuk sumber daya Azure OpenAI di portal Azure dengan titik akhir dan lokasi kunci akses yang dilingkari dengan warna merah.

Variabel lingkungan

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

Penting

Jika Anda menggunakan kunci API, simpan dengan aman di tempat lain, seperti di Azure Key Vault. Jangan sertakan kunci API langsung dalam kode Anda, dan jangan pernah mempostingnya secara publik.

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

setx AZURE_OPENAI_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE" 
setx AZURE_OPENAI_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE" 

Autentikasi tanpa kata sandi lebih aman daripada alternatif berbasis kunci dan merupakan pendekatan yang direkomendasikan untuk menyambungkan ke layanan Azure. Jika Anda memilih autentikasi Tanpa Kata Sandi, Anda harus menyelesaikan hal berikut:

  1. Tambahkan paket Azure.Identity.

    dotnet add package Azure.Identity
    
  2. Tetapkan peran ke Cognitive Services User akun pengguna Anda. Ini dapat dilakukan di portal Azure pada sumber daya OpenAI Anda di bawah Kontrol akses (IAM)>Tambahkan penetapan peran.

  3. Masuk ke Azure menggunakan Visual Studio atau Azure CLI melalui az login.

Membuat asisten

Program.cs Perbarui file dengan kode berikut untuk membuat asisten:

using Azure;
using Azure.AI.OpenAI.Assistants;

// Assistants is a beta API and subject to change
// Acknowledge its experimental status by suppressing the matching warning.
string endpoint = Environment.GetEnvironmentVariable("AZURE_OPENAI_ENDPOINT");
string key = Environment.GetEnvironmentVariable("AZURE_OPENAI_API_KEY");

var openAIClient = new AzureOpenAIClient(new Uri(endpoint), new AzureKeyCredential(key));

// Use for passwordless auth
//var openAIClient = new AzureOpenAIClient(new Uri(endpoint), new DefaultAzureCredential()); 

FileClient fileClient = openAIClient.GetFileClient();
AssistantClient assistantClient = openAIClient.GetAssistantClient();

// First, let's contrive a document we'll use retrieval with and upload it.
using Stream document = BinaryData.FromString("""
            {
                "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
                        }
                    }
                ]
            }
            """).ToStream();

OpenAIFileInfo salesFile = await fileClient.UploadFileAsync(
    document,
    "monthly_sales.json",
    FileUploadPurpose.Assistants);

// Now, we'll create a client intended to help with that data
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(),
                new CodeInterpreterToolDefinition(),
            },
    ToolResources = new()
    {
        FileSearch = new()
        {
            NewVectorStores =
                    {
                        new VectorStoreCreationHelper([salesFile.Id]),
                    }
        }
    },
};

Assistant assistant = await assistantClient.CreateAssistantAsync(deploymentName, assistantOptions);

// Create and run a thread with a user query about the data already associated with the assistant
ThreadCreationOptions threadOptions = new()
{
    InitialMessages = { "How well did product 113045 sell in February? Graph its trend over time." }
};

ThreadRun threadRun = await assistantClient.CreateThreadAndRunAsync(assistant.Id, threadOptions);

// Check back to see when the run is done
do
{
    Thread.Sleep(TimeSpan.FromSeconds(1));
    threadRun = assistantClient.GetRun(threadRun.ThreadId, threadRun.Id);
} while (!threadRun.Status.IsTerminal);

// Finally, we'll print out the full history for the thread that includes the augmented generation
AsyncCollectionResult<ThreadMessage> messages
    = assistantClient.GetMessagesAsync(
        threadRun.ThreadId,
        new MessageCollectionOptions() { Order = MessageCollectionOrder.Ascending });

await foreach (ThreadMessage message in messages)
{
    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}");
                }
            }
        }
        if (!string.IsNullOrEmpty(contentItem.ImageFileId))
        {
            OpenAIFileInfo imageInfo = await fileClient.GetFileAsync(contentItem.ImageFileId);
            BinaryData imageBytes = await fileClient.DownloadFileAsync(contentItem.ImageFileId);
            using FileStream stream = File.OpenWrite($"{imageInfo.Filename}.png");
            imageBytes.ToStream().CopyTo(stream);

            Console.WriteLine($"<image: {imageInfo.Filename}.png>");
        }
    }
    Console.WriteLine();
}

Jalankan aplikasi menggunakan dotnet run perintah :

dotnet run

Output konsol harus menyerupai berikut:

[USER]: How well did product 113045 sell in February? Graph its trend over time.

[ASSISTANT]: Product 113045 sold 22 units in February. Let's visualize its sales trend over the given months (January through March).

I'll create a graph to depict this trend.

[ASSISTANT]: <image: 553380b7-fdb6-49cf-9df6-e8e6700d69f4.png>
The graph above visualizes the sales trend for product 113045 from January to March. As seen, the sales peaked in February with 22 units sold, and fluctuated over the period from January (12 units) to March (16 units).

If you need further analysis or more details, feel free to ask!

Membersihkan sumber daya

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

Lihat juga

Dokumentasi | referensi Paket kode | sumber Pustaka (npm) |

Prasyarat

Untuk autentikasi tanpa kata sandi, Anda perlu

  1. @azure/identity Gunakan paket.
  2. Tetapkan peran ke Cognitive Services User akun pengguna Anda. Ini dapat dilakukan di portal Azure di bawah Kontrol akses (IAM)>Tambahkan penetapan peran.
  3. Masuk dengan Azure CLI seperti az login.

Penyiapan

  1. Instal pustaka klien Asisten OpenAI untuk JavaScript dengan:

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

    npm install @azure/identity
    

Mengambil kunci dan titik akhir

Agar berhasil melakukan panggilan terhadap layanan Azure OpenAI, Anda memerlukan hal berikut:

Nama variabel Nilai
ENDPOINT Nilai ini dapat ditemukan di bagian Kunci dan Titik Akhir saat memeriksa sumber daya Anda dari portal Azure. Atau, Anda dapat menemukan nilainya di kode Tampilan Playground>Azure OpenAI Studio>. Contoh titik akhir adalah: https://docs-test-001.openai.azure.com/.
API-KEY Nilai ini dapat ditemukan di bagian Kunci dan Titik Akhir saat memeriksa sumber daya Anda dari portal Azure. Anda dapat menggunakan KEY1 atau KEY2.
DEPLOYMENT-NAME Nilai ini akan sesuai dengan nama kustom yang Anda pilih untuk penyebaran pada saat Anda menyebarkan model. Nilai ini dapat ditemukan di bawah Penyebaran Model Manajemen>Sumber Daya di portal Azure atau di bawah Penyebaran Manajemen>di Azure OpenAI Studio.

Buka sumber daya Anda di portal Azure. Kunci dan Titik Akhir dapat ditemukan di bagian Manajemen Sumber Daya. Salin titik akhir dan kunci akses Anda karena keduanya diperlukan untuk mengautentikasi panggilan API Anda. Anda dapat menggunakan KEY1 atau KEY2. Selalu miliki dua kunci untuk memungkinkan Anda memutar dan meregenerasi kunci dengan aman tanpa menyebabkan gangguan layanan.

Cuplikan layar bilah gambaran umum untuk Sumber Daya OpenAI di portal Azure dengan titik akhir & lokasi kunci akses dilingkari dengan warna merah.

Variabel lingkungan

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

Penting

Jika Anda menggunakan kunci API, simpan dengan aman di tempat lain, seperti di Azure Key Vault. Jangan sertakan kunci API langsung dalam kode Anda, dan jangan pernah mempostingnya secara publik.

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

setx AZURE_OPENAI_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE" 
setx AZURE_OPENAI_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE" 

Tambahkan variabel lingkungan tambahan untuk nama penyebaran dan versi API:

  • AZURE_OPENAI_DEPLOYMENT_NAME: Nama penyebaran Anda seperti yang ditunjukkan dalam portal Azure.
  • OPENAI_API_VERSION: Pelajari selengkapnya tentang Versi API.
setx AZURE_OPENAI_DEPLOYMENT_NAME "REPLACE_WITH_YOUR_DEPLOYMENT_NAME" 
setx OPENAI_API_VERSION "REPLACE_WITH_YOUR_API_VERSION" 

Membuat asisten

Dalam kode kita, kita akan menentukan nilai-nilai berikut:

Nama Keterangan
Nama asisten Nama penyebaran Anda yang terkait dengan model tertentu.
Petunjuk Instruksi mirip dengan pesan sistem di sinilah Anda memberikan panduan model tentang bagaimana hal itu harus bersifat dan konteks apa pun yang harus dirujuk saat menghasilkan respons. Anda dapat menjelaskan kepribadian asisten, memberi tahu apa yang harus dan tidak boleh dijawab, dan memberi tahunya cara memformat respons. Anda juga dapat memberikan contoh langkah-langkah yang harus diambil saat menjawab respons.
Model Ini adalah nama penyebaran.
Penerjemah kode Penerjemah kode menyediakan akses ke lingkungan Python terkotakpasir yang dapat digunakan untuk memungkinkan model menguji dan menjalankan kode.

Alat

Asisten individu dapat mengakses hingga 128 alat termasuk code interpreter, serta alat kustom apa pun yang Anda buat melalui fungsi.

Masuk ke Azure lalu az login buat dan jalankan asisten dengan modul TypeScript tanpa kata sandi yang direkomendasikan berikut (index.ts):

import "dotenv/config";
import { AzureOpenAI } from "openai";
import {
  Assistant,
  AssistantCreateParams,
  AssistantTool,
} from "openai/resources/beta/assistants";
import { Message, MessagesPage } from "openai/resources/beta/threads/messages";
import { Run } from "openai/resources/beta/threads/runs/runs";
import { Thread } from "openai/resources/beta/threads/threads";

// Add `Cognitive Services User` to identity for Azure OpenAI resource
import {
  DefaultAzureCredential,
  getBearerTokenProvider,
} from "@azure/identity";

// Get environment variables
const azureOpenAIEndpoint = process.env.AZURE_OPENAI_ENDPOINT as string;
const azureOpenAIDeployment = process.env
  .AZURE_OPENAI_DEPLOYMENT_NAME as string;
const openAIVersion = process.env.OPENAI_API_VERSION as string;

// Check env variables
if (!azureOpenAIEndpoint || !azureOpenAIDeployment || !openAIVersion) {
  throw new Error(
    "Please ensure to set AZURE_OPENAI_DEPLOYMENT_NAME and AZURE_OPENAI_ENDPOINT in your environment variables."
  );
}

// Get Azure SDK client
const getClient = (): AzureOpenAI => {
  const credential = new DefaultAzureCredential();
  const scope = "https://cognitiveservices.azure.com/.default";
  const azureADTokenProvider = getBearerTokenProvider(credential, scope);
  const assistantsClient = new AzureOpenAI({
    endpoint: azureOpenAIEndpoint,
    apiVersion: openAIVersion,
    azureADTokenProvider,
  });
  return assistantsClient;
};

const assistantsClient = getClient();

const options: AssistantCreateParams = {
  model: azureOpenAIDeployment, // Deployment name seen in Azure AI Studio
  name: "Math Tutor",
  instructions:
    "You are a personal math tutor. Write and run JavaScript code to answer math questions.",
  tools: [{ type: "code_interpreter" } as AssistantTool],
};
const role = "user";
const message = "I need to solve the equation `3x + 11 = 14`. Can you help me?";

// Create an assistant
const assistantResponse: Assistant =
  await assistantsClient.beta.assistants.create(options);
console.log(`Assistant created: ${JSON.stringify(assistantResponse)}`);

// Create a thread
const assistantThread: Thread = await assistantsClient.beta.threads.create({});
console.log(`Thread created: ${JSON.stringify(assistantThread)}`);

// Add a user question to the thread
const threadResponse: Message =
  await assistantsClient.beta.threads.messages.create(assistantThread.id, {
    role,
    content: message,
  });
console.log(`Message created:  ${JSON.stringify(threadResponse)}`);

// Run the thread and poll it until it is in a terminal state
const runResponse: Run = await assistantsClient.beta.threads.runs.createAndPoll(
  assistantThread.id,
  {
    assistant_id: assistantResponse.id,
  },
  { pollIntervalMs: 500 }
);
console.log(`Run created:  ${JSON.stringify(runResponse)}`);

// Get the messages
const runMessages: MessagesPage =
  await assistantsClient.beta.threads.messages.list(assistantThread.id);
for await (const runMessageDatum of runMessages) {
  for (const item of runMessageDatum.content) {
    // types are: "image_file" or "text"
    if (item.type === "text") {
      console.log(`Message content: ${JSON.stringify(item.text?.value)}`);
    }
  }
}

Untuk menggunakan kunci layanan untuk autentikasi, Anda dapat membuat dan menjalankan asisten dengan modul TypeScript berikut (index.ts):

import "dotenv/config";
import { AzureOpenAI } from "openai";
import {
  Assistant,
  AssistantCreateParams,
  AssistantTool,
} from "openai/resources/beta/assistants";
import { Message, MessagesPage } from "openai/resources/beta/threads/messages";
import { Run } from "openai/resources/beta/threads/runs/runs";
import { Thread } from "openai/resources/beta/threads/threads";

// Get environment variables
const azureOpenAIKey = process.env.AZURE_OPENAI_KEY as string;
const azureOpenAIEndpoint = process.env.AZURE_OPENAI_ENDPOINT as string;
const azureOpenAIDeployment = process.env
  .AZURE_OPENAI_DEPLOYMENT_NAME as string;
const openAIVersion = process.env.OPENAI_API_VERSION as string;

// Check env variables
if (!azureOpenAIKey || !azureOpenAIEndpoint || !azureOpenAIDeployment || !openAIVersion) {
  throw new Error(
    "Please set AZURE_OPENAI_KEY and AZURE_OPENAI_ENDPOINT and AZURE_OPENAI_DEPLOYMENT_NAME in your environment variables."
  );
}

// Get Azure SDK client
const getClient = (): AzureOpenAI => {
  const assistantsClient = new AzureOpenAI({
    endpoint: azureOpenAIEndpoint,
    apiVersion: openAIVersion,
    apiKey: azureOpenAIKey,
  });
  return assistantsClient;
};

const assistantsClient = getClient();

const options: AssistantCreateParams = {
  model: azureOpenAIDeployment, // Deployment name seen in Azure AI Studio
  name: "Math Tutor",
  instructions:
    "You are a personal math tutor. Write and run JavaScript code to answer math questions.",
  tools: [{ type: "code_interpreter" } as AssistantTool],
};
const role = "user";
const message = "I need to solve the equation `3x + 11 = 14`. Can you help me?";

// Create an assistant
const assistantResponse: Assistant =
  await assistantsClient.beta.assistants.create(options);
console.log(`Assistant created: ${JSON.stringify(assistantResponse)}`);

// Create a thread
const assistantThread: Thread = await assistantsClient.beta.threads.create({});
console.log(`Thread created: ${JSON.stringify(assistantThread)}`);

// Add a user question to the thread
const threadResponse: Message =
  await assistantsClient.beta.threads.messages.create(assistantThread.id, {
    role,
    content: message,
  });
console.log(`Message created:  ${JSON.stringify(threadResponse)}`);

// Run the thread and poll it until it is in a terminal state
const runResponse: Run = await assistantsClient.beta.threads.runs.createAndPoll(
  assistantThread.id,
  {
    assistant_id: assistantResponse.id,
  },
  { pollIntervalMs: 500 }
);
console.log(`Run created:  ${JSON.stringify(runResponse)}`);

// Get the messages
const runMessages: MessagesPage =
  await assistantsClient.beta.threads.messages.list(assistantThread.id);
for await (const runMessageDatum of runMessages) {
  for (const item of runMessageDatum.content) {
    // types are: "image_file" or "text"
    if (item.type === "text") {
      console.log(`Message content: ${JSON.stringify(item.text?.value)}`);
    }
  }
}

Output

Assistant created: {"id":"asst_zXaZ5usTjdD0JGcNViJM2M6N","createdAt":"2024-04-08T19:26:38.000Z","name":"Math Tutor","description":null,"model":"daisy","instructions":"You are a personal math tutor. Write and run JavaScript code to answer math questions.","tools":[{"type":"code_interpreter"}],"fileIds":[],"metadata":{}}
Thread created: {"id":"thread_KJuyrB7hynun4rvxWdfKLIqy","createdAt":"2024-04-08T19:26:38.000Z","metadata":{}}
Message created:  {"id":"msg_o0VkXnQj3juOXXRCnlZ686ff","createdAt":"2024-04-08T19:26:38.000Z","threadId":"thread_KJuyrB7hynun4rvxWdfKLIqy","role":"user","content":[{"type":"text","text":{"value":"I need to solve the equation `3x + 11 = 14`. Can you help me?","annotations":[]},"imageFile":{}}],"assistantId":null,"runId":null,"fileIds":[],"metadata":{}}
Created run
Run created:  {"id":"run_P8CvlouB8V9ZWxYiiVdL0FND","object":"thread.run","status":"queued","model":"daisy","instructions":"You are a personal math tutor. Write and run JavaScript code to answer math questions.","tools":[{"type":"code_interpreter"}],"metadata":{},"usage":null,"assistantId":"asst_zXaZ5usTjdD0JGcNViJM2M6N","threadId":"thread_KJuyrB7hynun4rvxWdfKLIqy","fileIds":[],"createdAt":"2024-04-08T19:26:39.000Z","expiresAt":"2024-04-08T19:36:39.000Z","startedAt":null,"completedAt":null,"cancelledAt":null,"failedAt":null}
Message content: "The solution to the equation \\(3x + 11 = 14\\) is \\(x = 1\\)."
Message content: "Yes, of course! To solve the equation \\( 3x + 11 = 14 \\), we can follow these steps:\n\n1. Subtract 11 from both sides of the equation to isolate the term with x.\n2. Then, divide by 3 to find the value of x.\n\nLet me calculate that for you."
Message content: "I need to solve the equation `3x + 11 = 14`. Can you help me?"

Penting untuk diingat bahwa sementara penerjemah kode memberi model kemampuan untuk menanggapi kueri yang lebih kompleks dengan mengonversi pertanyaan menjadi kode dan menjalankan kode tersebut secara berulang di JavaScript sampai mencapai solusi, Anda masih perlu memvalidasi respons untuk mengonfirmasi bahwa model menerjemahkan pertanyaan Anda dengan benar ke dalam representasi kode yang valid.

Membersihkan sumber daya

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

Kode Sampel

Lihat juga

Prasyarat

Penyiapan

Mengambil kunci dan titik akhir

Agar berhasil melakukan panggilan terhadap Azure OpenAI, Anda memerlukan hal berikut:

Nama variabel Nilai
ENDPOINT Nilai ini dapat ditemukan di bagian Kunci & Titik Akhir saat memeriksa sumber daya Anda dari portal Microsoft Azure. Atau, Anda dapat menemukan nilai di Azure OpenAI Studio>Playground>Tampilan Kode. Contoh titik akhir adalah: https://docs-test-001.openai.azure.com/.
API-KEY Nilai ini dapat ditemukan di bagian Kunci & Titik Akhir saat memeriksa sumber daya Anda dari portal Microsoft Azure. Anda dapat menggunakan KEY1 atau KEY2.
DEPLOYMENT-NAME Nilai ini akan sesuai dengan nama kustom yang Anda pilih untuk penyebaran pada saat Anda menyebarkan model. Nilai ini dapat ditemukan di bagian Manajemen Sumber Daya>Penyebaran di portal Azure atau sebagai alternatif di bagianManajemen>Penyebaran di Azure OpenAI Studio.

Buka sumber daya Anda di portal Azure. Titik Akhir dan Kunci dapat ditemukan di bagian Manajemen Sumber Daya. Salin titik akhir dan kunci akses Anda karena keduanya diperlukan untuk mengautentikasi panggilan API Anda. Anda dapat menggunakan KEY1 atau KEY2. Selalu miliki dua kunci untuk memungkinkan Anda memutar dan meregenerasi kunci dengan aman tanpa menyebabkan gangguan layanan.

Cuplikan layar bilah gambaran umum untuk sumber daya Azure OpenAI di portal Azure dengan titik akhir & lokasi kunci akses dilingkari dengan warna merah.

Variabel lingkungan

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

Penting

Jika Anda menggunakan kunci API, simpan dengan aman di tempat lain, seperti di Azure Key Vault. Jangan sertakan kunci API langsung dalam kode Anda, dan jangan pernah mempostingnya secara publik.

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

setx AZURE_OPENAI_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE" 
setx AZURE_OPENAI_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE" 

REST API

Membuat asisten

Catatan

Dengan Azure OpenAI model , parameter memerlukan nama penyebaran model. Jika nama penyebaran model Anda berbeda dari nama model yang mendasar maka Anda akan menyesuaikan kode Anda dengan "model": "{your-custom-model-deployment-name}".

curl https://YOUR_RESOURCE_NAME.openai.azure.com/openai/assistants?api-version=2024-05-01-preview \
  -H "api-key: $AZURE_OPENAI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "instructions": "You are an AI assistant that can write code to help answer math questions.",
    "name": "Math Assist",
    "tools": [{"type": "code_interpreter"}],
    "model": "gpt-4-1106-preview"
  }'

Alat

Asisten individu dapat mengakses hingga 128 alat termasuk code interpreter, serta alat kustom apa pun yang Anda buat melalui fungsi.

Membuat utas

curl https://YOUR_RESOURCE_NAME.openai.azure.com/openai/threads \
  -H "Content-Type: application/json" \
  -H "api-key: $AZURE_OPENAI_API_KEY" \
  -d ''

Menambahkan pertanyaan pengguna ke utas

curl https://YOUR_RESOURCE_NAME.openai.azure.com/openai/threads/thread_abc123/messages \
  -H "Content-Type: application/json" \
  -H "api-key: $AZURE_OPENAI_API_KEY" \
  -d '{
      "role": "user",
      "content": "I need to solve the equation `3x + 11 = 14`. Can you help me?"
    }'

Jalankan utas

curl https://YOUR_RESOURCE_NAME.openai.azure.com/openai/threads/thread_abc123/runs \
  -H "api-key: $AZURE_OPENAI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "assistant_id": "asst_abc123",
  }'

Mengambil status eksekusi

curl https://YOUR_RESOURCE_NAME.openai.azure.com/openai/threads/thread_abc123/runs/run_abc123 \
  -H "api-key: $AZURE_OPENAI_API_KEY" \

Respons asisten

curl https://YOUR_RESOURCE_NAME.openai.azure.com/openai/threads/thread_abc123/messages \
  -H "Content-Type: application/json" \
  -H "api-key: $AZURE_OPENAI_API_KEY" \

Memahami tataan hasil Anda

Dalam contoh ini, kami membuat asisten dengan penerjemah kode diaktifkan. Ketika kita mengajukan pertanyaan matematika kepada asisten, itu menerjemahkan pertanyaan ke dalam kode python dan menjalankan kode di lingkungan terkotakpasir untuk menentukan jawaban atas pertanyaan. Kode yang dibuat model dan pengujian untuk sampai pada jawabannya adalah:

    from sympy import symbols, Eq, solve  
      
    # Define the variable  
    x = symbols('x')  
      
    # Define the equation  
    equation = Eq(3*x + 11, 14)  
      
    # Solve the equation  
    solution = solve(equation, x)  
    solution  

Penting untuk diingat bahwa sementara penerjemah kode memberi model kemampuan untuk menanggapi kueri yang lebih kompleks dengan mengonversi pertanyaan menjadi kode dan menjalankan kode tersebut secara berulang di kotak pasir Python sampai mencapai solusi, Anda masih perlu memvalidasi respons untuk mengonfirmasi bahwa model menerjemahkan pertanyaan Anda dengan benar ke dalam representasi kode yang valid.

Membersihkan sumber daya

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

Lihat juga