Bagikan melalui


Tutorial: Bagian 3 - Mengevaluasi dan menyebarkan aplikasi obrolan kustom dengan SDK alur perintah

Dalam tutorial ini, Anda menggunakan SDK alur perintah (dan pustaka lain) untuk mengevaluasi dan menyebarkan aplikasi obrolan yang Anda buat di Bagian 2 dari seri tutorial. Di bagian tiga ini, Anda mempelajari cara:

  • Mengevaluasi kualitas respons aplikasi obrolan
  • Menyebarkan aplikasi obrolan ke Azure
  • Verifikasi penyebaran

Tutorial ini adalah bagian ketiga dari tutorial tiga bagian.

Prasyarat

  • Lengkapi bagian 2 dari seri tutorial untuk membangun aplikasi obrolan.

  • Anda harus memiliki izin yang diperlukan untuk menambahkan penetapan peran di langganan Azure Anda. Memberikan izin berdasarkan penetapan peran hanya diizinkan oleh Pemilik sumber daya Azure tertentu. Anda mungkin perlu meminta bantuan kepada pemilik langganan Azure Anda (siapa yang mungkin admin TI Anda) untuk bantuan terkait akses titik akhir nanti dalam tutorial.

Mengevaluasi kualitas respons aplikasi obrolan

Sekarang setelah Anda mengetahui aplikasi obrolan merespons dengan baik kueri Anda, termasuk dengan riwayat obrolan, saatnya untuk mengevaluasi bagaimana hal itu di beberapa metrik yang berbeda dan lebih banyak data.

Anda menggunakan evaluator alur perintah dengan himpunan data evaluasi dan get_chat_response() fungsi target, lalu menilai hasil evaluasi.

Setelah menjalankan evaluasi, Anda kemudian dapat melakukan penyempurnaan pada logika Anda, seperti meningkatkan permintaan sistem Anda, dan mengamati bagaimana respons aplikasi obrolan berubah dan meningkat.

Mengatur model evaluasi Anda

Pilih model evaluasi yang ingin Anda gunakan. Ini bisa sama dengan model obrolan yang Anda gunakan untuk membangun aplikasi. Jika Anda menginginkan model yang berbeda untuk evaluasi, Anda perlu menyebarkannya, atau menentukannya jika sudah ada. Misalnya, Anda mungkin menggunakan gpt-35-turbo untuk penyelesaian obrolan Anda, tetapi ingin menggunakan gpt-4 untuk evaluasi karena mungkin berkinerja lebih baik.

Tambahkan nama model evaluasi Anda di file .env Anda:

AZURE_OPENAI_EVALUATION_DEPLOYMENT=<your evaluation model deployment name>

Membuat himpunan data evaluasi

Gunakan himpunan data evaluasi berikut, yang berisi contoh pertanyaan dan jawaban yang diharapkan (kebenaran).

  1. Buat file bernama eval_dataset.jsonl di folder rag-tutorial Anda. Lihat struktur kode aplikasi untuk referensi.

  2. Tempelkan himpunan data ini ke dalam file:

    {"chat_input": "Which tent is the most waterproof?", "truth": "The Alpine Explorer Tent has the highest rainfly waterproof rating at 3000m"}
    {"chat_input": "Which camping table holds the most weight?", "truth": "The Adventure Dining Table has a higher weight capacity than all of the other camping tables mentioned"}
    {"chat_input": "How much do the TrailWalker Hiking Shoes cost? ", "truth": "The Trailewalker Hiking Shoes are priced at $110"}
    {"chat_input": "What is the proper care for trailwalker hiking shoes? ", "truth": "After each use, remove any dirt or debris by brushing or wiping the shoes with a damp cloth."}
    {"chat_input": "What brand is for TrailMaster tent? ", "truth": "OutdoorLiving"}
    {"chat_input": "How do I carry the TrailMaster tent around? ", "truth": " Carry bag included for convenient storage and transportation"}
    {"chat_input": "What is the floor area for Floor Area? ", "truth": "80 square feet"}
    {"chat_input": "What is the material for TrailBlaze Hiking Pants?", "truth": "Made of high-quality nylon fabric"}
    {"chat_input": "What color does TrailBlaze Hiking Pants come in?", "truth": "Khaki"}
    {"chat_input": "Can the warrenty for TrailBlaze pants be transfered? ", "truth": "The warranty is non-transferable and applies only to the original purchaser of the TrailBlaze Hiking Pants. It is valid only when the product is purchased from an authorized retailer."}
    {"chat_input": "How long are the TrailBlaze pants under warrenty for? ", "truth": " The TrailBlaze Hiking Pants are backed by a 1-year limited warranty from the date of purchase."}
    {"chat_input": "What is the material for PowerBurner Camping Stove? ", "truth": "Stainless Steel"}
    {"chat_input": "Is France in Europe?", "truth": "Sorry, I can only queries related to outdoor/camping gear and equipment"}
    

Mengevaluasi dengan evaluator alur prompt

Sekarang tentukan skrip evaluasi yang akan:

  • evaluate Impor fungsi dan evaluator dari paket alur evals Prompt.
  • Muat himpunan data sampel .jsonl .
  • Hasilkan pembungkus fungsi target di sekitar logika aplikasi obrolan kami.
  • Jalankan evaluasi, yang mengambil fungsi target, dan menggabungkan himpunan data evaluasi dengan respons dari aplikasi obrolan.
  • Hasilkan satu set metrik yang dibantu GPT (relevansi, groundedness, dan koherensi) untuk mengevaluasi kualitas respons aplikasi obrolan.
  • Keluarkan hasilnya secara lokal, dan catat hasilnya ke proyek cloud.

Skrip memungkinkan Anda meninjau hasilnya secara lokal, dengan menghasilkan hasil di baris perintah, dan ke file json.

Skrip ini juga mencatat hasil evaluasi ke proyek cloud sehingga Anda dapat membandingkan eksekusi evaluasi di UI.

  1. Buat file bernama evaluate.py di folder rag-tutorial Anda.

  2. Tambahkan kode berikut. dataset_path Perbarui dan evaluation_name agar sesuai dengan kasus penggunaan Anda.

    import json
    import os
    
    # set environment variables before importing any other code
    from dotenv import load_dotenv
    
    load_dotenv()
    
    import pandas as pd
    
    from promptflow.core import AzureOpenAIModelConfiguration
    from promptflow.evals.evaluate import evaluate
    from promptflow.evals.evaluators import (
        RelevanceEvaluator,
        GroundednessEvaluator,
        CoherenceEvaluator,
    )
    
    # Helper methods
    def load_jsonl(path):
        with open(path, "r") as f:
            return [json.loads(line) for line in f.readlines()]
    
    
    def copilot_wrapper(*, chat_input, **kwargs):
        from copilot_flow.copilot import get_chat_response
    
        result = get_chat_response(chat_input)
    
        parsedResult = {"answer": str(result["reply"]), "context": str(result["context"])}
        return parsedResult
    
    
    def run_evaluation(eval_name, dataset_path):
    
        model_config = AzureOpenAIModelConfiguration(
            azure_deployment=os.getenv("AZURE_OPENAI_EVALUATION_DEPLOYMENT"),
            api_version=os.getenv("AZURE_OPENAI_API_VERSION"),
            azure_endpoint=os.getenv("AZURE_OPENAI_ENDPOINT"),
        )
    
        # Initializing Evaluators
        relevance_eval = RelevanceEvaluator(model_config)
        groundedness_eval = GroundednessEvaluator(model_config)
        coherence_eval = CoherenceEvaluator(model_config)
    
        output_path = "./eval_results.jsonl"
    
        result = evaluate(
            target=copilot_wrapper,
            evaluation_name=eval_name,
            data=dataset_path,
            evaluators={
                "relevance": relevance_eval,
                "groundedness": groundedness_eval,
                "coherence": coherence_eval,
            },
            evaluator_config={
                "relevance": {"question": "${data.chat_input}"},
                "coherence": {"question": "${data.chat_input}"},
            },
            # to log evaluation to the cloud AI Studio project
            azure_ai_project={
                "subscription_id": os.getenv("AZURE_SUBSCRIPTION_ID"),
                "resource_group_name": os.getenv("AZURE_RESOURCE_GROUP"),
                "project_name": os.getenv("AZUREAI_PROJECT_NAME"),
            },
        )
    
        tabular_result = pd.DataFrame(result.get("rows"))
        tabular_result.to_json(output_path, orient="records", lines=True)
    
        return result, tabular_result
    
    
    if __name__ == "__main__":
        eval_name = "tutorial-eval"
        dataset_path = "./eval_dataset.jsonl"
    
        result, tabular_result = run_evaluation(
            eval_name=eval_name, dataset_path=dataset_path
        )
    
        from pprint import pprint
    
        pprint("-----Summarized Metrics-----")
        pprint(result["metrics"])
        pprint("-----Tabular Result-----")
        pprint(tabular_result)
        pprint(f"View evaluation results in AI Studio: {result['studio_url']}")
    

Fungsi utama di akhir memungkinkan Anda melihat hasil evaluasi secara lokal, dan memberi Anda tautan ke hasil evaluasi di AI Studio.

Jalankan skrip evaluasi

  1. Dari konsol Anda, masuk ke akun Azure Anda dengan Azure CLI:

    az login
    
  2. Instal paket yang diperlukan:

    pip install promptflow-evals
    pip install promptflow-azure
    
  3. Sekarang jalankan skrip evaluasi:

    python evaluate.py
    

Untuk informasi selengkapnya tentang menggunakan SDK alur perintah untuk evaluasi, lihat Mengevaluasi dengan SDK alur permintaan.

Menginterpretasikan output evaluasi

Dalam output konsol, Anda melihat untuk setiap pertanyaan jawaban dan metrik yang dirangkum dalam format tabel yang bagus ini. (Anda mungkin melihat kolom yang berbeda dalam output Anda.)

'-----Summarized Metrics-----'
{'coherence.gpt_coherence': 4.3076923076923075,
 'groundedness.gpt_groundedness': 4.384615384615385,
 'relevance.gpt_relevance': 4.384615384615385}

'-----Tabular Result-----'
                                             question  ... gpt_coherence
0                  Which tent is the most waterproof?  ...             5
1          Which camping table holds the most weight?  ...             5
2       How much does TrailWalker Hiking Shoes cost?   ...             5
3   What is the proper care for trailwalker hiking...  ...             5
4                What brand is the TrailMaster tent?   ...             1
5        How do I carry the TrailMaster tent around?   ...             5
6             What is the floor area for Floor Area?   ...             3
7    What is the material for TrailBlaze Hiking Pants  ...             5
8     What color do the TrailBlaze Hiking Pants come   ...             5
9   Can the warranty for TrailBlaze pants be trans...  ...             3
10  How long are the TrailBlaze pants under warren...  ...             5
11  What is the material for PowerBurner Camping S...  ...             5
12                               Is France in Europe?  ...             1

Skrip menulis hasil evaluasi lengkap ke ./eval_results.jsonl. Dan ada tautan di konsol untuk melihat hasil evaluasi di proyek Azure AI Studio Anda.

Catatan

Anda mungkin melihat ERROR:asyncio:Unclosed client session - ini dapat diabaikan dengan aman dan tidak memengaruhi hasil evaluasi.

Melihat hasil evaluasi di AI Studio

Setelah proses evaluasi selesai, ikuti tautan untuk melihat hasil evaluasi di halaman Evaluasi di Azure AI Studio.

Cuplikan layar memperlihatkan gambaran umum evaluasi di Azure AI Studio.

Anda juga dapat melihat baris individual dan melihat skor metrik per baris, dan melihat konteks/dokumen lengkap yang diambil. Metrik ini dapat membantu dalam menafsirkan dan men-debug hasil evaluasi.

Cuplikan layar memperlihatkan baris hasil evaluasi di Azure AI Studio.

Untuk informasi selengkapnya tentang hasil evaluasi di AI Studio, lihat Cara melihat hasil evaluasi di AI Studio.

Setelah memverifikasi bahwa aplikasi obrolan bertingkah seperti yang diharapkan, Anda siap untuk menyebarkan aplikasi.

Menyebarkan aplikasi obrolan ke Azure

Sekarang mari kita lanjutkan dan sebarkan aplikasi obrolan ini ke titik akhir terkelola sehingga dapat dikonsumsi oleh aplikasi atau situs web eksternal.

Skrip penyebaran akan:

  • Membuat titik akhir online terkelola
  • Tentukan alur kami sebagai model
  • Menyebarkan alur kami ke lingkungan terkelola pada titik akhir yang memiliki variabel lingkungan kami
  • Rutekan semua lalu lintas ke penyebaran tersebut
  • Output tautan untuk melihat dan menguji penyebaran di Azure AI Studio

Penyebaran mendefinisikan konteks build (Dockerfile) yang bergantung pada requirement.txt yang ditentukan di folder alur kami, dan juga mengatur variabel lingkungan kami ke lingkungan yang disebarkan, sehingga kami dapat yakin bahwa aplikasi obrolan kami berjalan sama di lingkungan produksi seperti yang dilakukan secara lokal.

Konteks build untuk penyebaran (Dockerfile)

Lingkungan yang disebarkan memerlukan konteks build, jadi mari kita tentukan Dockerfile untuk lingkungan yang disebarkan. Skrip penyebaran membuat lingkungan berdasarkan Dockerfile ini. Buat Dockerfile ini di folder copilot_flow:

FROM mcr.microsoft.com/azureml/promptflow/promptflow-runtime:latest
COPY ./requirements.txt .
RUN pip install -r requirements.txt

Menyebarkan aplikasi obrolan ke titik akhir terkelola

Untuk menyebarkan aplikasi Anda ke titik akhir terkelola di Azure, buat titik akhir online, lalu buat penyebaran di titik akhir tersebut, lalu rutekan semua lalu lintas ke penyebaran tersebut.

Sebagai bagian dari pembuatan penyebaran, folder copilot_flow Anda dikemas sebagai model dan lingkungan cloud dibuat. Titik akhir disiapkan dengan autentikasi ID Microsoft Entra. Anda dapat memperbarui mode autentikasi yang Anda inginkan dalam kode, atau di Azure AI Studio di halaman detail titik akhir.

Penting

Menyebarkan aplikasi Anda ke titik akhir terkelola di Azure telah mengaitkan biaya komputasi berdasarkan jenis instans yang Anda pilih. Pastikan Anda mengetahui biaya terkait dan memiliki kuota untuk jenis instans yang Anda tentukan. Pelajari selengkapnya tentang titik akhir online.

Buat file deploy.py di folder rag-tutorial . Tambahkan kode berikut:

import os
from dotenv import load_dotenv

load_dotenv()

from azure.ai.ml import MLClient
from azure.identity import DefaultAzureCredential
from azure.ai.ml.entities import (
    ManagedOnlineEndpoint,
    ManagedOnlineDeployment,
    Model,
    Environment,
    BuildContext,
)

client = MLClient(
    DefaultAzureCredential(),
    os.getenv("AZURE_SUBSCRIPTION_ID"),
    os.getenv("AZURE_RESOURCE_GROUP"),
    os.getenv("AZUREAI_PROJECT_NAME"),
)
endpoint_name = "tutorial-endpoint"
deployment_name = "tutorial-deployment"

endpoint = ManagedOnlineEndpoint(
    name=endpoint_name,
    properties={
        "enforce_access_to_default_secret_stores": "enabled"  # for secret injection support
    },
    auth_mode="aad_token",  # using aad auth instead of key-based auth
)

# Get the directory of the current script
script_dir = os.path.dirname(os.path.abspath(__file__))

# Define the path to the directory, appending the script directory to the relative path
copilot_path = os.path.join(script_dir, "copilot_flow")
deployment = ManagedOnlineDeployment(
    name=deployment_name,
    endpoint_name=endpoint_name,
    model=Model(
        name="copilot_flow_model",
        path=copilot_path,  # path to promptflow folder
        properties=[  # this enables the chat interface in the endpoint test tab
            ["azureml.promptflow.source_flow_id", "basic-chat"],
            ["azureml.promptflow.mode", "chat"],
            ["azureml.promptflow.chat_input", "chat_input"],
            ["azureml.promptflow.chat_output", "reply"],
        ],
    ),
    environment=Environment(
        build=BuildContext(
            path=copilot_path,
        ),
        inference_config={
            "liveness_route": {
                "path": "/health",
                "port": 8080,
            },
            "readiness_route": {
                "path": "/health",
                "port": 8080,
            },
            "scoring_route": {
                "path": "/score",
                "port": 8080,
            },
        },
    ),
    instance_type="Standard_DS3_v2",
    instance_count=1,
    environment_variables={
        "PRT_CONFIG_OVERRIDE": f"deployment.subscription_id={client.subscription_id},deployment.resource_group={client.resource_group_name},deployment.workspace_name={client.workspace_name},deployment.endpoint_name={endpoint_name},deployment.deployment_name={deployment_name}",
        "AZURE_OPENAI_ENDPOINT": os.getenv("AZURE_OPENAI_ENDPOINT"),
        "AZURE_SEARCH_ENDPOINT": os.getenv("AZURE_SEARCH_ENDPOINT"),
        "AZURE_OPENAI_API_VERSION": os.getenv("AZURE_OPENAI_API_VERSION"),
        "AZURE_OPENAI_CHAT_DEPLOYMENT": os.getenv("AZURE_OPENAI_CHAT_DEPLOYMENT"),
        "AZURE_OPENAI_EVALUATION_DEPLOYMENT": os.getenv(
            "AZURE_OPENAI_EVALUATION_DEPLOYMENT"
        ),
        "AZURE_OPENAI_EMBEDDING_DEPLOYMENT": os.getenv(
            "AZURE_OPENAI_EMBEDDING_DEPLOYMENT"
        ),
        "AZUREAI_SEARCH_INDEX_NAME": os.getenv("AZUREAI_SEARCH_INDEX_NAME"),
    },
)

# 1. create endpoint
created_endpoint = client.begin_create_or_update(
    endpoint
).result()  # result() means we wait on this to complete

# 2. create deployment
created_deployment = client.begin_create_or_update(deployment).result()

# 3. update endpoint traffic for the deployment
endpoint.traffic = {deployment_name: 100}  # 100% of traffic
client.begin_create_or_update(endpoint).result()

Penting

Titik akhir dan nama penyebaran harus unik dalam wilayah Azure. Jika Anda mendapatkan kesalahan bahwa titik akhir atau nama penyebaran sudah ada, coba nama yang berbeda.

Detail penyebaran output

Tambahkan baris berikut ke akhir skrip penyebaran Anda untuk melihat hasil evaluasi secara lokal, dan dapatkan tautan ke studio:

def get_ai_studio_url_for_deploy(
    client: MLClient, endpoint_name: str, deployment_name
) -> str:
    studio_base_url = "https://ai.azure.com"
    deployment_url = f"{studio_base_url}/projectdeployments/realtime/{endpoint_name}/{deployment_name}/detail?wsid=/subscriptions/{client.subscription_id}/resourceGroups/{client.resource_group_name}/providers/Microsoft.MachineLearningServices/workspaces/{client.workspace_name}&deploymentName={deployment_name}"

    return deployment_url


print("\n ~~~Deployment details~~~")
print(f"Your online endpoint name is: {endpoint_name}")
print(f"Your deployment name is: {deployment_name}")

print("\n ~~~Test in the Azure AI Studio~~~")
print("\n Follow this link to your deployment in the Azure AI Studio:")
print(
    get_ai_studio_url_for_deploy(
        client=client, endpoint_name=endpoint_name, deployment_name=deployment_name
    )
)

Sekarang, jalankan skrip dengan:

python deploy.py

Catatan

Penyebaran mungkin memakan waktu lebih dari 10 menit untuk diselesaikan. Kami sarankan Anda mengikuti langkah berikutnya untuk menetapkan akses ke titik akhir saat Anda menunggu.

Setelah penyebaran selesai, Anda mendapatkan tautan ke halaman penyebaran Azure AI Studio, tempat Anda dapat menguji penyebaran.

Verifikasi penyebaran

Sebaiknya uji aplikasi Anda di Azure AI Studio. Jika Anda lebih suka menguji titik akhir yang disebarkan secara lokal, Anda dapat memanggilnya dengan beberapa kode kustom.

Perhatikan nama titik akhir Anda, yang Anda butuhkan untuk langkah-langkah berikutnya.

Akses titik akhir untuk sumber daya Azure OpenAI

Anda mungkin perlu meminta bantuan kepada pemilik langganan Azure Anda (yang mungkin admin TI Anda) untuk bantuan tentang bagian ini.

Sambil menunggu aplikasi disebarkan, Anda atau administrator dapat menetapkan akses berbasis peran ke titik akhir. Peran ini memungkinkan aplikasi berjalan tanpa kunci di lingkungan yang disebarkan, seperti yang dilakukan secara lokal.

Sebelumnya, Anda memberi akun Anda peran tertentu untuk dapat mengakses sumber daya menggunakan autentikasi ID Microsoft Entra. Sekarang, tetapkan titik akhir dengan peran Pengguna OpenAI Cognitive Services yang sama.

Catatan

Langkah-langkah ini mirip dengan cara Anda menetapkan peran untuk identitas pengguna Anda untuk menggunakan Layanan Azure OpenAI di mulai cepat.

Untuk memberi diri Anda akses ke sumber daya Azure AI Services yang Anda gunakan:

  1. Di AI Studio, buka proyek Anda dan pilih Pengaturan dari panel kiri.

  2. Di bagian Sumber daya tersambung, pilih nama koneksi dengan jenis AIServices.

    Cuplikan layar halaman pengaturan proyek, menyoroti cara memilih sumber daya layanan AI yang tersambung untuk membukanya.

    Catatan

    Jika Anda tidak melihat koneksi AIServices , gunakan koneksi Azure OpenAI sebagai gantinya.

  3. Pada halaman detail sumber daya, pilih tautan di bawah judul Sumber Daya untuk membuka sumber daya layanan AI di portal Azure.

    Cuplikan layar detail koneksi Layanan AI yang menunjukkan cara membuka sumber daya di portal Azure.

  4. Dari halaman kiri di portal Azure, pilih Kontrol akses (IAM)>+ Tambahkan>penetapan peran.

  5. Cari peran Pengguna OpenAI Cognitive Services lalu pilih. Kemudian pilih Berikutnya.

    Cuplikan layar halaman untuk memilih peran Pengguna OpenAI Cognitive Services.

  6. Pilih Identitas terkelola. Lalu pilih Pilih anggota.

  7. Di panel Pilih anggota yang terbuka, pilih Titik akhir online pembelajaran mesin untuk identitas Terkelola, lalu cari nama titik akhir Anda. Pilih titik akhir lalu pilih Pilih.

    Cuplikan layar memperlihatkan Pemilihan anggota untuk titik akhir online.

  8. Lanjutkan melalui wizard dan pilih Tinjau + tetapkan untuk menambahkan penetapan peran.

Catatan

Mungkin perlu waktu beberapa menit agar akses disebarluaskan. Jika Anda mendapatkan kesalahan yang tidak sah saat menguji di langkah berikutnya, coba lagi setelah beberapa menit.

Akses titik akhir untuk sumber daya Pencarian Azure AI

Anda mungkin perlu meminta bantuan kepada pemilik langganan Azure Anda (yang mungkin admin TI Anda) untuk bantuan tentang bagian ini.

Mirip dengan cara Anda menetapkan peran Kontributor Data Indeks Pencarian ke layanan Pencarian Azure AI, Anda perlu menetapkan peran yang sama untuk titik akhir Anda.

  1. Di Azure AI Studio, pilih Pengaturan dan navigasikan ke layanan Pencarian Azure AI yang tersambung.

  2. Pilih tautan untuk membuka ringkasan sumber daya. Pilih tautan pada halaman ringkasan untuk membuka sumber daya di portal Azure.

  3. Dari halaman kiri di portal Azure, pilih Kontrol akses (IAM)>+ Tambahkan>penetapan peran.

    Cuplikan layar memperlihatkan Kontrol akses untuk sumber daya pencarian.

  4. Cari peran Kontributor Data Indeks Pencarian lalu pilih. Kemudian pilih Berikutnya.

  5. Pilih Identitas terkelola. Lalu pilih Pilih anggota.

  6. Di panel Pilih anggota yang terbuka, pilih Titik akhir online pembelajaran mesin untuk identitas Terkelola, lalu cari nama titik akhir Anda. Pilih titik akhir lalu pilih Pilih.

    Cuplikan layar memperlihatkan memilih titik akhir.

  7. Lanjutkan melalui wizard dan pilih Tinjau + tetapkan untuk menambahkan penetapan peran.

Catatan

Mungkin perlu waktu beberapa menit agar akses disebarluaskan. Jika Anda mendapatkan kesalahan yang tidak sah saat menguji di langkah berikutnya, coba lagi setelah beberapa menit.

Menguji penyebaran Anda di AI Studio

Setelah penyebaran selesai, Anda mendapatkan tautan yang berguna ke penyebaran Anda. Jika Anda tidak menggunakan tautan , navigasikan ke tab Penyebaran di proyek Anda dan pilih penyebaran baru Anda.

Cuplikan layar memperlihatkan gambaran umum penyebaran di Azure AI Studio.

Pilih tab Uji , dan coba ajukan pertanyaan di antarmuka obrolan.

Misalnya, ketik "Apakah sepatu pendakian Trailwalker tahan air?" dan masukkan.

Cuplikan layar memperlihatkan respons penyebaran di Azure AI Studio.

Melihat respons kembali memverifikasi penyebaran Anda.

Jika Anda mendapatkan kesalahan, pilih tab Log untuk mendapatkan detail selengkapnya.

Catatan

Jika Anda mendapatkan kesalahan yang tidak sah, akses titik akhir Anda mungkin belum diterapkan. Coba lagi dalam beberapa menit.

Memanggil aplikasi obrolan yang disebarkan secara lokal

Jika Anda lebih suka memverifikasi penyebaran secara lokal, Anda dapat memanggilnya melalui skrip Python.

Tentukan skrip yang akan:

  • Buat permintaan yang terbentuk dengan baik ke URL penilaian kami.
  • Posting permintaan dan tangani respons.

Buat file invoke-local.py di folder rag-tutorial Anda, dengan kode berikut. query Ubah dan endpoint_name (dan parameter lain sesuai kebutuhan) agar sesuai dengan kasus penggunaan Anda.

import os
from dotenv import load_dotenv

load_dotenv()

import requests
from azure.ai.ml import MLClient
from azure.identity import DefaultAzureCredential

query = "Are the trailwalker shoes waterproof?"
endpoint_name = "tutorial-endpoint"

client = MLClient(
    DefaultAzureCredential(),
    os.getenv("AZURE_SUBSCRIPTION_ID"),
    os.getenv("AZURE_RESOURCE_GROUP"),
    os.getenv("AZUREAI_PROJECT_NAME"),
)


scoring_url = client.online_endpoints.get(endpoint_name).scoring_uri

headers = {
    "Content-Type": "application/json",
    "Authorization": f"Bearer {client._credential.get_token('https://ml.azure.com').token}",
    "Accept": "application/json",
}

response = requests.post(
    scoring_url,
    headers=headers,
    json={"chat_input": query},
)
(print(response.json()["reply"]))

Anda akan melihat balasan aplikasi obrolan ke kueri Anda di konsol.

Catatan

Jika Anda mendapatkan kesalahan yang tidak sah, akses titik akhir Anda mungkin belum diterapkan. Coba lagi dalam beberapa menit.

Membersihkan sumber daya

Untuk menghindari timbulnya biaya Azure yang tidak perlu, Anda harus menghapus sumber daya yang Anda buat dalam tutorial ini jika tidak lagi diperlukan. Untuk mengelola sumber daya, Anda dapat menggunakan portal Azure.