Bagikan melalui


Menjalankan kode dengan menggunakan penerjemah kode di Azure SRE Agent

Penerjemah kode Agen SRE memungkinkan Anda menjalankan kode Python dan perintah shell di lingkungan kotak pasir yang aman dan terisolasi. Gunakan Penerjemah Kode untuk menganalisis data, membuat visualisasi, membuat laporan PDF, dan mengotomatiskan operasi file tanpa meninggalkan percakapan Agen SRE Anda.

Dalam artikel ini, Anda akan mempelajari cara:

  • Jalankan kode Python untuk menganalisis data dan membuat visualisasi
  • Menjalankan perintah shell untuk operasi file
  • Membuat dan mengunduh laporan PDF
  • Bekerja dengan file di lingkungan kotak pasir

Prasyarat

Untuk membuat agen, Anda perlu memberi agen Anda izin yang benar, mengonfigurasi pengaturan yang benar, dan memberikan akses ke sumber daya yang tepat:

  • Akun Azure: Anda memerlukan akun Azure dengan langganan aktif. Jika Anda belum memilikinya, Anda dapat membuat akun secara gratis.

  • Konteks keamanan: Pastikan akun pengguna Anda memiliki Microsoft.Authorization/roleAssignments/write izin sebagai Administrator Kontrol Akses Berbasis Peran atau Administrator Akses Pengguna.

  • Pengaturan firewall: Tambahkan *.azuresre.ai ke daftar yang diizinkan di pengaturan firewall Anda. Beberapa profil jaringan mungkin memblokir akses ke *.azuresre.ai domain secara default.

Cara kerja penerjemah kode

Penerjemah kode Agen SRE berjalan dalam sesi Azure Container Apps yang terisolasi dengan karakteristik berikut:

  • Tidak ada akses jaringan: Sandbox tidak dapat membuat permintaan HTTP atau HTTPS keluar.
  • Tidak ada proses pemijahan: Perintah seperti subprocess dan os.system diblokir.
  • Tidak ada penginstalan paket: pip install dan conda install tidak tersedia.
  • Sistem file terisolasi: Semua file harus disimpan ke /mnt/data/.

Pembatasan ini memastikan bahwa eksekusi kode aman dan dapat diprediksi. Pustaka ilmu data umum seperti panda, matplotlib, dan seaborn telah diinstal sebelumnya.

Mulai menggunakan penerjemah kode

Alat penerjemah kode tersedia secara otomatis dalam percakapan Agen SRE Anda. Minta agen untuk melakukan tugas dengan menggunakan bahasa alami.

Contoh arahan

Coba perintah ini untuk memulai:

  • "Analisis data CSV ini dan buat bagan yang menunjukkan insiden berdasarkan kategori."
  • "Hasilkan ringkasan PDF dari insiden hari ini."
  • "Uraikan file JSON ini dan ekstrak pola kesalahan."
  • "Cantumkan semua file dalam sesi dan tampilkan ukurannya."

Skrip Python pertama Anda

Contoh berikut menunjukkan cara membuat visualisasi:

import matplotlib.pyplot as plt
import numpy as np

# Generate sample data
categories = ['Critical', 'High', 'Medium', 'Low']
counts = [5, 12, 28, 45]

# Create bar chart
plt.figure(figsize=(10, 6))
plt.bar(categories, counts, color=['red', 'orange', 'yellow', 'green'])
plt.title('Incidents by Severity')
plt.xlabel('Severity Level')
plt.ylabel('Count')
plt.savefig('/mnt/data/incidents_by_severity.png', dpi=150)

Saat kode berhasil dijalankan, agen mengembalikan gambar sebaris dalam percakapan.

Skenario

Menganalisis data insiden

Gunakan penerjemah kode untuk mengubah data insiden mentah menjadi wawasan dan visualisasi yang dapat ditindaklanjuti.

  1. Minta Agen SRE untuk membuat file CSV dari semua insiden yang telah terjadi dalam sebulan terakhir menggunakan perintah berikut:

    Create a CSV file of all the incidents that 
    occurred in the last month.
    
    Name the file `incidents.csv` and save it
    to `/mnt/data`.
    
  2. Gunakan Python untuk menganalisis pola insiden dan mengidentifikasi tren:

    import pandas as pd
    
    # Load incident data
    df = pd.read_csv('/mnt/data/incidents.csv')
    
    # Calculate summary statistics
    summary = df.groupby('category').agg({
        'id': 'count',
        'resolution_time': 'mean'
    }).rename(columns={'id': 'count', 'resolution_time': 'avg_resolution_hours'})
    
    # Export results
    summary.to_csv('/mnt/data/incident_summary.csv')
    print(summary)
    

Membuat visualisasi

Buat bagan untuk mengomunikasikan wawasan.

import matplotlib.pyplot as plt
import seaborn as sns

# Load data
df = pd.read_csv('/mnt/data/incidents.csv')

# Create visualization
plt.figure(figsize=(12, 6))
sns.barplot(data=df, x='category', y='count', palette='viridis')
plt.title('Incidents by Category')
plt.xticks(rotation=45)
plt.tight_layout()
plt.savefig('/mnt/data/category_chart.png', dpi=150)

Hasilkan laporan PDF

Buat dokumen PDF yang diformat untuk pemangku kepentingan.

from reportlab.pdfgen import canvas
from reportlab.lib.pagesizes import letter

# Create PDF
c = canvas.Canvas('/mnt/data/weekly_report.pdf', pagesize=letter)

# Add content
c.setFont('Helvetica-Bold', 18)
c.drawString(72, 750, 'Weekly Incident Report')

c.setFont('Helvetica', 12)
c.drawString(72, 720, 'Period: January 10-17, 2026')
c.drawString(72, 700, 'Total incidents: 90')
c.drawString(72, 680, 'Critical incidents: 5')
c.drawString(72, 660, 'Average resolution time: 4.2 hours')

c.save()

Agen mengembalikan tautan unduhan untuk PDF yang dihasilkan.

Memproses file log

Cari dan analisis file log dengan menggunakan perintah shell.

# Count error occurrences by type
grep -E "ERROR|WARN|FATAL" application.log | sort | uniq -c | sort -rn
# Find the most recent log entries
tail -100 application.log

Referensi alat

Penerjemah Kode menyediakan alat berikut:

ExecutePythonCode

Menjalankan kode Python dalam kotak pasir terisolasi.

Pengaturan Tipe Diperlukan Description
pythonCode string Yes Kode Python untuk dijalankan (hingga 20.000 karakter)
timeoutSeconds bilangan bulat Tidak. Batas waktu eksekusi dalam detik (default: 120, maksimum: 900)

Output: Gambar ditampilkan sebaris dalam format markdown. File data ditampilkan sebagai tautan unduhan.

Menghasilkan Laporan PDF

Membuat dokumen PDF dari kode Python.

Pengaturan Tipe Diperlukan Description
pythonCode string Yes Kode Python yang membuat file PDF
expectedOutputFilename string Yes Jalur tempat PDF disimpan (misalnya, report.pdf)
saveAsFilename string Yes Unduh nama file (misalnya, daily_summary.pdf)
timeoutSeconds bilangan bulat Tidak. Batas waktu eksekusi dalam detik (default: 180, maksimum: 900)

JalankanPerintahShell

Menjalankan perintah shell dalam sandbox.

Pengaturan Tipe Diperlukan Description
command string Yes Perintah shell untuk dijalankan
explanation string Tidak. Deskripsi untuk log dengan perintah
isBackground Boolean Tidak. Harus false (pekerjaan latar belakang tidak didukung)
timeoutSeconds bilangan bulat Tidak. Batas waktu eksekusi (default: 120, maks: 240)

Nota

Perintah dijalankan dari /mnt/data/. Gunakan jalur relatif dan perintah rantai dengan menggunakan ; alih-alih &&.

Operasi file

Tool Description
ReadSessionFile Membaca konten file dari /mnt/data/.
SearchSessionFiles Mencari teks di dalam file menggunakan pola pencarian ala grep.
ListSessionFiles Mencantumkan semua file dalam sesi dengan metadata.
GetSessionFile Mengunduh file dari sesi.
UploadFileToSession Mengunggah file untuk diproses lebih lanjut.

Jenis file yang didukung

  • Gambar: PNG, JPG, GIF, SVG, WebP, BMP, TIFF, EPS
  • Data: CSV, TSV, Excel, JSON, XML, YAML, HDF5, NetCDF, pickle
  • Dokumen: PDF, HTML, Markdown, format Office
  • Kode: Python, Jupyter notebooks, R, SQL
  • Arsip: ZIP, TAR, GZ

Keterbatasan

Untuk alasan keamanan, sistem memblokir operasi berikut:

Kategori Operasi yang diblokir
Pemijahan proses subprocess,os.system,os.popen,os.spawn*
Akses jaringan Permintaan keluar HTTP/HTTPS
Penginstalan paket pip install, conda install
Sistem file Akses eksternal /mnt/data/

Memecahkan masalah penerjemah kode

Eksekusi kode gagal

  • Pastikan kode Anda tidak menggunakan operasi yang diblokir seperti subprocess atau panggilan jaringan.
  • Periksa apakah semua jalur file menunjuk ke /mnt/data/.
  • Pastikan kode Anda di bawah 20.000 karakter.

File tidak muncul dalam output

  • Konfirmasikan bahwa Anda menyimpan file ke /mnt/data/.
  • Gunakan ListSessionFiles untuk memverifikasi pembuatan file.
  • Periksa apakah ekstensi file didukung.

Kesalahan batas waktu

  • Tingkatkan timeoutSeconds parameter (maksimum 900 detik).
  • Optimalkan kode Anda untuk mengurangi waktu eksekusi.
  • Membagi operasi besar menjadi potongan yang lebih kecil.