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.
Dasbor Aspire adalah bagian dari penawaran .NET Aspire . Dasbor memungkinkan pengembang untuk memantau dan memeriksa aplikasi terdistribusi mereka.
Dalam contoh ini, kita akan menggunakan mode mandiri dan mempelajari cara mengekspor data telemetri ke Dasbor Aspire, dan memeriksa data di sana.
Pengekspor
Eksportir bertanggung jawab untuk mengirim data telemetri ke tujuan. Baca selengkapnya tentang pengekspor di sini. Dalam contoh ini, kami menggunakan pengekspor OpenTelemetry Protocol (OTLP) untuk mengirim data telemetri ke Dasbor Aspire.
Prasyarat
- Penyebaran penyelesaian obrolan Azure OpenAI.
- Docker
- .Net SDK terbaru untuk sistem operasi Anda.
- Penyebaran penyelesaian obrolan Azure OpenAI.
- Docker
- Python 3.10, 3.11, atau 3.12 diinstal pada komputer Anda.
Catatan
Pengamatan Kernel Semantik belum tersedia untuk Java.
Siapkan
Membuat aplikasi konsol baru
Di terminal, jalankan perintah berikut untuk membuat aplikasi konsol baru di C#:
dotnet new console -n TelemetryAspireDashboardQuickstart
Navigasikan ke direktori proyek yang baru dibuat setelah perintah selesai.
Memasang paket yang diperlukan
Kernel Semantik
dotnet add package Microsoft.SemanticKernel
Pengekspor Konsol OpenTelemetry
dotnet add package OpenTelemetry.Exporter.OpenTelemetryProtocol
Membuat aplikasi sederhana dengan Semantic Kernel
Dari direktori proyek, buka Program.cs
file dengan editor favorit Anda. Kita akan membuat aplikasi sederhana yang menggunakan Semantic Kernel untuk mengirim permintaan ke model penyelesaian obrolan. Ganti konten yang ada dengan kode berikut dan isi nilai yang diperlukan untuk deploymentName
, endpoint
, dan apiKey
:
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Microsoft.SemanticKernel;
using OpenTelemetry;
using OpenTelemetry.Logs;
using OpenTelemetry.Metrics;
using OpenTelemetry.Resources;
using OpenTelemetry.Trace;
namespace TelemetryAspireDashboardQuickstart
{
class Program
{
static async Task Main(string[] args)
{
// Telemetry setup code goes here
IKernelBuilder builder = Kernel.CreateBuilder();
// builder.Services.AddSingleton(loggerFactory);
builder.AddAzureOpenAIChatCompletion(
deploymentName: "your-deployment-name",
endpoint: "your-azure-openai-endpoint",
apiKey: "your-azure-openai-api-key"
);
Kernel kernel = builder.Build();
var answer = await kernel.InvokePromptAsync(
"Why is the sky blue in one sentence?"
);
Console.WriteLine(answer);
}
}
}
Menambahkan telemetri
Jika Anda menjalankan aplikasi konsol sekarang, Anda harus mengharapkan untuk melihat kalimat yang menjelaskan mengapa langit berwarna biru. Untuk mengamati kernel melalui telemetri, ganti // Telemetry setup code goes here
komentar dengan kode berikut:
// Endpoint to the Aspire Dashboard
var endpoint = "http://localhost:4317";
var resourceBuilder = ResourceBuilder
.CreateDefault()
.AddService("TelemetryAspireDashboardQuickstart");
// Enable model diagnostics with sensitive data.
AppContext.SetSwitch("Microsoft.SemanticKernel.Experimental.GenAI.EnableOTelDiagnosticsSensitive", true);
using var traceProvider = Sdk.CreateTracerProviderBuilder()
.SetResourceBuilder(resourceBuilder)
.AddSource("Microsoft.SemanticKernel*")
.AddOtlpExporter(options => options.Endpoint = new Uri(endpoint))
.Build();
using var meterProvider = Sdk.CreateMeterProviderBuilder()
.SetResourceBuilder(resourceBuilder)
.AddMeter("Microsoft.SemanticKernel*")
.AddOtlpExporter(options => options.Endpoint = new Uri(endpoint))
.Build();
using var loggerFactory = LoggerFactory.Create(builder =>
{
// Add OpenTelemetry as a logging provider
builder.AddOpenTelemetry(options =>
{
options.SetResourceBuilder(resourceBuilder);
options.AddOtlpExporter(options => options.Endpoint = new Uri(endpoint));
// Format log messages. This is default to false.
options.IncludeFormattedMessage = true;
options.IncludeScopes = true;
});
builder.SetMinimumLevel(LogLevel.Information);
});
Akhirnya Batalkan komentar baris // builder.Services.AddSingleton(loggerFactory);
untuk menambahkan pabrik pencatat ke penyusun.
Silakan lihat artikel ini untuk informasi selengkapnya tentang kode penyiapan telemetri. Satu-satunya perbedaan di sini adalah kita menggunakan AddOtlpExporter
untuk mengekspor data telemetri ke Dasbor Aspire.
Membuat lingkungan virtual Python baru
python -m venv telemetry-aspire-dashboard-quickstart
Aktifkan lingkungan virtual.
telemetry-aspire-dashboard-quickstart\Scripts\activate
Memasang paket yang diperlukan
pip install semantic-kernel opentelemetry-exporter-otlp-proto-grpc
Membuat skrip Python sederhana dengan Semantic Kernel
Buat skrip Python baru dan buka dengan editor favorit Anda.
New-Item -Path telemetry_aspire_dashboard_quickstart.py -ItemType file
Kita akan membuat skrip Python sederhana yang menggunakan Semantic Kernel untuk mengirim permintaan ke model penyelesaian obrolan. Ganti konten yang ada dengan kode berikut dan isi nilai yang diperlukan untuk deployment_name
, endpoint
, dan api_key
:
import asyncio
import logging
from opentelemetry._logs import set_logger_provider
from opentelemetry.exporter.otlp.proto.grpc._log_exporter import OTLPLogExporter
from opentelemetry.exporter.otlp.proto.grpc.metric_exporter import OTLPMetricExporter
from opentelemetry.exporter.otlp.proto.grpc.trace_exporter import OTLPSpanExporter
from opentelemetry.metrics import set_meter_provider
from opentelemetry.sdk._logs import LoggerProvider, LoggingHandler
from opentelemetry.sdk._logs.export import BatchLogRecordProcessor
from opentelemetry.sdk.metrics import MeterProvider
from opentelemetry.sdk.metrics.export import PeriodicExportingMetricReader
from opentelemetry.sdk.metrics.view import DropAggregation, View
from opentelemetry.sdk.resources import Resource
from opentelemetry.sdk.trace import TracerProvider
from opentelemetry.sdk.trace.export import BatchSpanProcessor
from opentelemetry.semconv.resource import ResourceAttributes
from opentelemetry.trace import set_tracer_provider
from semantic_kernel import Kernel
from semantic_kernel.connectors.ai.open_ai import AzureChatCompletion
# Telemetry setup code goes here
async def main():
# Create a kernel and add a service
kernel = Kernel()
kernel.add_service(AzureChatCompletion(
api_key="your-azure-openai-api-key",
endpoint="your-azure-openai-endpoint",
deployment_name="your-deployment-name"
))
answer = await kernel.invoke_prompt("Why is the sky blue in one sentence?")
print(answer)
if __name__ == "__main__":
asyncio.run(main())
Menambahkan telemetri
Variabel lingkungan
Silakan lihat artikel ini untuk informasi selengkapnya tentang menyiapkan variabel lingkungan yang diperlukan untuk memungkinkan kernel memancarkan rentang untuk konektor AI.
Kode
Jika Anda menjalankan skrip sekarang, Anda harus mengharapkan untuk melihat kalimat yang menjelaskan mengapa langit berwarna biru. Untuk mengamati kernel melalui telemetri, ganti # Telemetry setup code goes here
komentar dengan kode berikut:
# Endpoint to the Aspire Dashboard
endpoint = "http://localhost:4317"
# Create a resource to represent the service/sample
resource = Resource.create({ResourceAttributes.SERVICE_NAME: "telemetry-aspire-dashboard-quickstart"})
def set_up_logging():
exporter = OTLPLogExporter(endpoint=endpoint)
# Create and set a global logger provider for the application.
logger_provider = LoggerProvider(resource=resource)
# Log processors are initialized with an exporter which is responsible
# for sending the telemetry data to a particular backend.
logger_provider.add_log_record_processor(BatchLogRecordProcessor(exporter))
# Sets the global default logger provider
set_logger_provider(logger_provider)
# Create a logging handler to write logging records, in OTLP format, to the exporter.
handler = LoggingHandler()
# Add filters to the handler to only process records from semantic_kernel.
handler.addFilter(logging.Filter("semantic_kernel"))
# Attach the handler to the root logger. `getLogger()` with no arguments returns the root logger.
# Events from all child loggers will be processed by this handler.
logger = logging.getLogger()
logger.addHandler(handler)
logger.setLevel(logging.INFO)
def set_up_tracing():
exporter = OTLPSpanExporter(endpoint=endpoint)
# Initialize a trace provider for the application. This is a factory for creating tracers.
tracer_provider = TracerProvider(resource=resource)
# Span processors are initialized with an exporter which is responsible
# for sending the telemetry data to a particular backend.
tracer_provider.add_span_processor(BatchSpanProcessor(exporter))
# Sets the global default tracer provider
set_tracer_provider(tracer_provider)
def set_up_metrics():
exporter = OTLPMetricExporter(endpoint=endpoint)
# Initialize a metric provider for the application. This is a factory for creating meters.
meter_provider = MeterProvider(
metric_readers=[PeriodicExportingMetricReader(exporter, export_interval_millis=5000)],
resource=resource,
views=[
# Dropping all instrument names except for those starting with "semantic_kernel"
View(instrument_name="*", aggregation=DropAggregation()),
View(instrument_name="semantic_kernel*"),
],
)
# Sets the global default meter provider
set_meter_provider(meter_provider)
# This must be done before any other telemetry calls
set_up_logging()
set_up_tracing()
set_up_metrics()
Silakan lihat artikel ini untuk informasi selengkapnya tentang kode penyiapan telemetri. Satu-satunya perbedaan di sini adalah kita menggunakan OTLP[Span|Metric|Log]Exporter
untuk mengekspor data telemetri ke Dasbor Aspire.
Catatan
Pengamatan Kernel Semantik belum tersedia untuk Java.
Memulai Dasbor Aspire
Ikuti instruksi di sini untuk memulai dasbor. Setelah dasbor berjalan, buka browser dan navigasi ke http://localhost:18888
untuk mengakses dasbor.
jalankan
Jalankan aplikasi konsol dengan perintah berikut:
dotnet run
Jalankan skrip Python dengan perintah berikut:
python telemetry_aspire_dashboard_quickstart.py
Catatan
Pengamatan Kernel Semantik belum tersedia untuk Java.
Memeriksa data telemetri
Setelah menjalankan aplikasi, buka dasbor untuk memeriksa data telemetri.
Tip
Ikuti panduan ini untuk menjelajahi antarmuka Dasbor Aspire.
Jejak
Jika ini adalah pertama kalinya Anda menjalankan aplikasi setelah memulai dasbor, Anda akan melihat satu jejak adalah Traces
tab . Klik jejak untuk melihat detail selengkapnya.
Dalam detail pelacakan, Anda dapat melihat rentang yang mewakili fungsi prompt dan rentang yang mewakili model penyelesaian obrolan. Klik rentang penyelesaian obrolan untuk melihat detail tentang permintaan dan respons.
Tip
Anda dapat memfilter atribut rentang untuk menemukan atribut yang Anda minati.
Log
Buka tab Structured
untuk melihat log yang dipancarkan oleh aplikasi. Silakan lihat panduan ini tentang cara bekerja dengan log terstruktur di dasbor.
Langkah berikutnya
Sekarang setelah Anda berhasil menghasilkan data telemetri ke Dasbor Aspire, Anda dapat menjelajahi lebih banyak fitur Kernel Semantik yang dapat membantu Anda memantau dan mendiagnosis aplikasi Anda: