Köra kod med hjälp av kodtolkare i Azure SRE Agent

Med kodtolken för SRE Agent kan du köra Python-kod- och gränssnittskommandon i en säker, isolerad sandbox-miljö. Använd kodtolkare för att analysera data, skapa visualiseringar, generera PDF-rapporter och automatisera filåtgärder utan att lämna SRE Agent-konversationen.

I den här artikeln lär du dig att:

  • Köra Python-kod för att analysera data och skapa visualiseringar
  • Köra gränssnittskommandon för filåtgärder
  • Generera och ladda ned PDF-rapporter
  • Arbeta med filer i sandbox-miljön

Förutsättningar

Om du vill skapa en agent måste du ge agenten rätt behörigheter, konfigurera rätt inställningar och ge åtkomst till rätt resurser:

Så här fungerar kodtolkare

Kodtolkaren för SRE-agenten körs i en isolerad Azure Container Apps-session med följande egenskaper:

  • Ingen nätverksåtkomst: Sandbox-miljön kan inte göra utgående HTTP- eller HTTPS-begäranden.
  • Ingen process skapning: Kommandon som subprocess och os.system blockeras.
  • Ingen paketinstallation: pip install och conda install är inte tillgängliga.
  • Isolerat filsystem: Alla filer måste sparas i /mnt/data/.

Dessa begränsningar säkerställer att kodkörningen är säker och förutsägbar. Vanliga datavetenskapsbibliotek som pandas, matplotlib och seaborn är förinstallerade.

Kom igång med kodtolkare

Kodtolkarverktyg är automatiskt tillgängliga i dina SRE Agent-konversationer. Be agenten att utföra uppgifter med hjälp av naturligt språk.

Exempeluppmaningar

Prova de här anvisningarna för att komma igång:

  • "Analysera dessa CSV-data och skapa ett diagram som visar incidenter efter kategori."
  • "Generera en PDF-sammanfattning av dagens incidenter."
  • "Parsa den här JSON-filen och extrahera felmönstren."
  • "Visa alla filer i sessionen och visa deras storlekar."

Ditt första Python-skript

I följande exempel visas hur du skapar en visualisering:

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)

När koden körs framgångsrikt returnerar agenten bilden direkt i konversationen.

Scenarier

Analysera incidentdata

Använd kodtolkare för att omvandla rådata för incidenter till användbara insikter och visualiseringar.

  1. Be SRE-agenten att skapa en CSV-fil med alla incidenter som har inträffat under den senaste månaden med hjälp av följande uppmaning:

    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. Använd Python för att analysera incidentmönster och identifiera trender:

    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)
    

Skapa visualiseringar

Generera diagram för att kommunicera insikter.

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)

Generera PDF-rapporter

Skapa formaterade PDF-dokument för intressenter.

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()

Agenten returnerar en nedladdningslänk för den genererade PDF-filen.

Bearbeta loggfiler

Sök och analysera loggfiler med hjälp av gränssnittskommandon.

# 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

Verktygsreferens

Kodtolkaren innehåller följande verktyg:

ExecutePythonCode

Kör Python-kod i en isolerad sandbox-miljö.

Parameter Typ Krävs Description
pythonCode snöre Yes Python-kod som ska köras (upp till 20 000 tecken)
timeoutSeconds integer Nej Timeout för exekvering i sekunder (standard: 120, max: 900)

Utdata: Bilder visas direkt i markdown. Datafiler returneras som nedladdningslänkar.

GenereraPdfRapport

Skapar PDF-dokument från Python-kod.

Parameter Typ Krävs Description
pythonCode snöre Yes Python-kod som skapar en PDF-fil
expectedOutputFilename snöre Yes Sökväg där PDF-filen sparas (till exempel report.pdf)
saveAsFilename snöre Yes Ladda ned filnamn (till exempel daily_summary.pdf)
timeoutSeconds integer Nej Tidsgräns för exekvering i sekunder (standard: 180, max: 900)

RunShellCommand

Kör gränssnittskommandon i sandbox-miljön.

Parameter Typ Krävs Description
command snöre Yes Shell-kommando som ska köras
explanation snöre Nej Beskrivning för att logga med kommandot
isBackground booleskt Nej Måste vara false (bakgrundsjobb stöds inte)
timeoutSeconds integer Nej Tidsgräns för körning (standard: 120, max: 240)

Anmärkning

Kommandona körs från /mnt/data/. Använd relativa sökvägar och kedjekommandon genom att använda ; istället för &&.

Filåtgärder

Tool Description
ReadSessionFile Läser innehållet i en fil från /mnt/data/.
SearchSessionFiles Söker efter text i filer med hjälp av grep-liknande mönster.
ListSessionFiles Visar en lista över alla filer i sessionen med metadata.
GetSessionFile Laddar ned en fil från sessionen.
UploadFileToSession Laddar upp en fil för vidare bearbetning.

Filtyper som stöds

  • Bilder: PNG, JPG, GIF, SVG, WebP, BMP, TIFF, EPS
  • Data: CSV, TSV, Excel, JSON, XML, YAML, HDF5, NetCDF, pickle
  • Dokument: PDF, HTML, Markdown, Office-format
  • Kod: Python, Jupyter Notebooks, R, SQL
  • Arkiv: ZIP, TAR, GZ

Begränsningar

Av säkerhetsskäl blockerar systemet följande åtgärder:

Kategori Blockerade åtgärder
Processlekning subprocess, os.system, , os.popenos.spawn*
Nätverksåtkomst Utgående HTTP/HTTPS-begäranden
Paketinstallation pip install, conda install
Filsystem Åtkomst utanför /mnt/data/

Felsöka kodtolkare

Körning av kod misslyckas

  • Kontrollera att koden inte använder blockerade åtgärder som subprocess eller nätverksanrop.
  • Kontrollera att alla filsökvägar pekar på /mnt/data/.
  • Kontrollera att koden är under 20 000 tecken.

Filer visas inte i utdata

  • Bekräfta att du sparar filer i /mnt/data/.
  • Använd ListSessionFiles för att verifiera att filen har skapats.
  • Kontrollera att filnamnstillägget stöds.

Timeout-felmeddelanden

  • Öka parametern timeoutSeconds (högst 900 sekunder).
  • Optimera koden för att minska exekveringstiden.
  • Dela upp stora åtgärder i mindre segment.