Mengaktifkan pelacakan dan mengumpulkan umpan balik untuk penyebaran alur
Penting
Item yang ditandai (pratinjau) dalam artikel ini sedang dalam pratinjau publik. 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.
Setelah menyebarkan APLIKASI AI Generatif dalam produksi, Anda mungkin ingin meningkatkan pemahaman dan mengoptimalkan performa. Lacak data untuk setiap permintaan, metrik agregat, dan umpan balik pengguna memainkan peran penting.
Dalam artikel ini, Anda belajar mengaktifkan pelacakan, mengumpulkan metrik agregat, dan mengumpulkan umpan balik pengguna selama waktu inferensi penyebaran alur Anda.
Prasyarat
- Azure CLI dan ekstensi Azure Pembelajaran Mesin ke Azure CLI.
- Proyek AI Studio. Jika Anda belum memiliki proyek, Anda dapat membuatnya di sini.
- An Application Insights. Jika Anda belum memiliki sumber daya Application Insights, Anda dapat membuatnya di sini.
- Kontrol akses berbasis peran Azure digunakan untuk memberikan akses ke operasi di Azure Pembelajaran Mesin. Untuk melakukan langkah-langkah dalam artikel ini, Anda harus memiliki izin Pemilik atau Kontributor pada grup sumber daya yang dipilih. Untuk informasi selengkapnya, lihat Kontrol akses berbasis peran di Azure AI Studio.
Menyebarkan alur untuk inferensi real-time
Setelah menguji alur dengan benar, baik aliran fleksibel atau aliran DAG, Anda dapat menyebarkan alur dalam produksi. Dalam artikel ini, kami menggunakan Sebarkan alur untuk inferensi real time sebagai contoh. Untuk alur fleksibel, Anda perlu menyiapkan file alih-alih flow.dag.yaml
flow.flex.yaml
.
Anda juga dapat menyebarkan ke platform lain, seperti kontainer Docker, kluster Kubernetes, dan banyak lagi.
Catatan
Anda perlu menggunakan gambar dasar alur prompt terbaru untuk menyebarkan alur, sehingga mendukung API pengumpulan pelacakan dan umpan balik.
Mengaktifkan pelacakan dan mengumpulkan metrik sistem untuk penyebaran Anda
Jika Anda menggunakan antarmuka pengguna studio untuk menyebarkan, maka Anda dapat mengaktifkan diagnostik Application Insights di langkah Penyebaran pengaturan>Tingkat Lanjut dalam wizard penyebaran, dengan cara data pelacakan dan metrik sistem dikumpulkan ke proyek yang ditautkan ke Application Insights.
Jika Anda menggunakan SDK atau CLI, Anda dapat dengan menambahkan properti app_insights_enabled: true
dalam file yaml penyebaran yang mengumpulkan data ke proyek yang ditautkan ke wawasan aplikasi.
app_insights_enabled: true
Anda juga dapat menentukan Application Insights lainnya dengan variabel APPLICATIONINSIGHTS_CONNECTION_STRING
lingkungan dalam file yaml penyebaran sebagai berikut. Anda dapat menemukan string koneksi Application Insights Anda di halaman Gambaran Umum di portal Azure.
environment_variables:
APPLICATIONINSIGHTS_CONNECTION_STRING: <connection_string>
Catatan
Jika Anda hanya mengatur app_insights_enabled: true
tetapi proyek Anda tidak memiliki sumber daya Application Insights yang ditautkan, penyebaran Anda tidak akan gagal tetapi tidak akan ada data yang dikumpulkan.
Jika Anda menentukan app_insights_enabled: true
variabel lingkungan dan di atas secara bersamaan, data pelacakan dan metrik akan dikirim ke proyek yang ditautkan ke wawasan aplikasi. Oleh karena itu, jika Anda ingin menentukan Application Insights yang berbeda, Anda hanya perlu menyimpan variabel lingkungan.
Jika Anda menyebarkan ke platform lain, Anda juga dapat menggunakan variabel APPLICATIONINSIGHTS_CONNECTION_STRING: <connection_string>
lingkungan untuk mengumpulkan data dan metrik pelacakan ke Application Insights yang di-speicifed.
Melihat data pelacakan di Application Insights
Jejak merekam peristiwa tertentu atau status aplikasi selama eksekusi. Ini dapat mencakup data tentang panggilan fungsi, nilai variabel, peristiwa sistem, dan banyak lagi. Jejak membantu memecah komponen aplikasi menjadi input dan output diskrit, yang sangat penting untuk penelusuran kesalahan dan pemahaman aplikasi. Anda dapat mempelajari lebih lanjut dari sini tentang jejak. Data pelacakan mengikuti spesifikasi OpenTelemetry.
Anda dapat melihat jejak terperinci dalam Application Insights yang ditentukan. Cuplikan layar berikut menunjukkan contoh peristiwa alur yang disebarkan yang berisi beberapa simpul. Di Application Insights -> Selidiki -> Pencarian transaksi, dan Anda dapat memilih setiap simpul untuk melihat jejak terperincinya.
Peristiwa jenis Dependensi merekam panggilan dari penyebaran Anda. Nama peristiwa tersebut adalah nama folder alur. Pelajari selengkapnya tentang Pencarian transaksi dan diagnostik di Application Insights.
Melihat metrik sistem di Application Insights
Nama Metrik | Jenis | Dimensi | Deskripsi |
---|---|---|---|
token_consumption | penghitung | -mengalir -simpul - llm_engine - token_type: prompt_tokens : TOKEN input LLM API; completion_tokens : TOKEN respons LLM API ; total_tokens = prompt_tokens + completion tokens |
Metrik konsumsi token OpenAI |
flow_latency | histogram | flow,response_code,streaming,response_type | biaya eksekusi permintaan, response_type berarti apakah itu penuh/firstbyte/lastbyte |
flow_request | penghitung | flow,response_code,exception,streaming | jumlah permintaan alur |
node_latency | histogram | flow,node,run_status | biaya eksekusi node |
node_request | penghitung | flow,node,exception,run_status | jumlah eksekusi node |
rpc_latency | histogram | flow,node,api_call | rpc biaya |
rpc_request | penghitung | flow,node,api_call,exception | jumlah rpc |
flow_streaming_response_duration | histogram | alur | biaya pengiriman respons streaming, dari mengirim byte pertama hingga mengirim byte terakhir |
Anda dapat menemukan Application Insights default ruang kerja di halaman gambaran umum ruang kerja Anda di portal Azure.
- Buka Application Insights, dan pilih Penggunaan dan perkiraan biaya dari navigasi kiri. Pilih Metrik kustom (Pratinjau), dan pilih Dengan dimensi, dan simpan perubahan.
- Pilih tab Metrik di navigasi kiri. Pilih metrik standar promptflow dari Namespace Metrik, dan Anda dapat menjelajahi metrik dari daftar dropdown Metrik dengan metode agregasi yang berbeda.
Mengumpulkan umpan balik dan mengirim ke Application Insights
Layanan alur prompt menyediakan API baru /feedback
untuk membantu pelanggan mengumpulkan umpan balik, payload umpan balik dapat berupa data format json apa pun, PF melayani hanya membantu pelanggan menyimpan data umpan balik ke rentang pelacakan. Data akan disimpan ke target eksportir pelacakan yang dikonfigurasi pelanggan. Ini juga mendukung penyebaran konteks pelacakan standar OpenTelemetry, yang mengatakan akan menghormati konteks jejak yang ditetapkan di header permintaan dan menggunakannya sebagai konteks rentang induk permintaan. Anda dapat memanfaatkan fungsionalitas pelacakan terdistribusi untuk menghubungkan jejak umpan balik ke jejak permintaan obrolannya.
Berikut ini adalah kode sampel yang menunjukkan cara menilai pelacakan yang diaktifkan titik akhir terkelola yang disebarkan alur dan mengirim umpan balik ke rentang jejak permintaan penilaian yang sama. Alur memiliki input question
dan chat_history
, dan output answer
. Setelah menilai titik akhir, kami mengumpulkan umpan balik dan mengirim ke Application Insights yang ditentukan saat menyebarkan alur.
import urllib.request
import json
import os
import ssl
from opentelemetry import trace, context
from opentelemetry.baggage.propagation import W3CBaggagePropagator
from opentelemetry.trace.propagation.tracecontext import TraceContextTextMapPropagator
from opentelemetry.sdk.trace import TracerProvider
# Initialize your tracer
tracer = trace.get_tracer("my.genai.tracer")
trace.set_tracer_provider(TracerProvider())
# Request data goes here
# The example below assumes JSON formatting which may be updated
# depending on the format your endpoint expects.
data = {
"question": "hello",
"chat_history": []
}
body = str.encode(json.dumps(data))
url = 'https://basic-chat-endpoint-0506.eastus.inference.ml.azure.com/score'
feedback_url = 'https://basic-chat-endpoint-0506.eastus.inference.ml.azure.com/feedback'
# Replace this with the primary/secondary key, AMLToken, or Microsoft Entra ID token for the endpoint
api_key = ''
if not api_key:
raise Exception("A key should be provided to invoke the endpoint")
# The azureml-model-deployment header will force the request to go to a specific deployment.
# Remove this header to have the request observe the endpoint traffic rules
headers = {'Content-Type':'application/json', 'Authorization':('Bearer '+ api_key), 'azureml-model-deployment': 'basic-chat-deployment' }
try:
with tracer.start_as_current_span('genai-request') as span:
ctx = context.get_current()
TraceContextTextMapPropagator().inject(headers, ctx)
print(headers)
print(ctx)
req = urllib.request.Request(url, body, headers)
response = urllib.request.urlopen(req)
result = response.read()
print(result)
# Now you can process the answer and collect feedback
feedback = "thumbdown" # Example feedback (modify as needed)
# Make another request to save the feedback
feedback_body = str.encode(json.dumps(feedback))
feedback_req = urllib.request.Request(feedback_url, feedback_body, headers)
urllib.request.urlopen(feedback_req)
except urllib.error.HTTPError as error:
print("The request failed with status code: " + str(error.code))
# Print the headers - they include the requert ID and the timestamp, which are useful for debugging the failure
print(error.info())
print(error.read().decode("utf8", 'ignore'))
Anda dapat melihat jejak permintaan bersama dengan umpan balik di Application Insights.
Penggunaan tingkat lanjut: ekspor jejak ke layanan pengumpul OpenTelemetry kustom
Dalam beberapa kasus, Anda mungkin ingin mengekspor data pelacakan ke layanan pengumpul OTel yang disebarkan, diaktifkan dengan mengatur "OTEL_EXPORTER_OTLP_ENDPOINT". Gunakan pengekspor ini saat Anda ingin menyesuaikan logika pemrosesan rentang Anda sendiri dan target persisten pelacakan Anda sendiri.