Code uitvoeren met behulp van code-interpreter in Azure SRE Agent

Met de SRE Agent-code-interpreter kunt u Python-code- en shellopdrachten uitvoeren in een beveiligde, geïsoleerde sandbox-omgeving. Gebruik Code Interpreter om gegevens te analyseren, visualisaties te maken, PDF-rapporten te genereren en bestandsbewerkingen te automatiseren zonder uw SRE Agent-gesprek te verlaten.

In dit artikel leert u het volgende:

  • Python-code uitvoeren om gegevens te analyseren en visualisaties te maken
  • Shell-opdrachten uitvoeren voor bestandsbewerkingen
  • PDF-rapporten genereren en downloaden
  • Werken met bestanden in de sandbox-omgeving

Vereiste voorwaarden

Als u een agent wilt maken, moet u uw agent de juiste machtigingen verlenen, de juiste instellingen configureren en toegang verlenen tot de juiste resources:

  • Azure-account: u hebt een Azure-account met een actief abonnement nodig. Als u dat nog niet hebt, kunt u gratis een account maken.

  • Beveiligingscontext: zorg ervoor dat uw gebruikersaccount de Microsoft.Authorization/roleAssignments/write machtigingen heeft als op rollen gebaseerd toegangsbeheerbeheerder of beheerder van gebruikerstoegang.

  • Firewallinstellingen: Voeg toe *.azuresre.ai aan de acceptatielijst in uw firewallinstellingen. Sommige netwerkprofielen blokkeren standaard de toegang tot *.azuresre.ai het domein.

Hoe code-interpreter werkt

De SRE-agentcode-interpreter wordt uitgevoerd in een geïsoleerde Azure Container Apps-sessie met de volgende kenmerken:

  • Geen netwerktoegang: de sandbox kan geen uitgaande HTTP- of HTTPS-aanvragen indienen.
  • Geen processen starten: De opdrachten zoals subprocess en os.system worden geblokkeerd.
  • Geen pakketinstallatie: pip install en conda install zijn niet beschikbaar.
  • Geïsoleerd bestandssysteem: alle bestanden moeten worden opgeslagen in /mnt/data/.

Deze beperkingen zorgen ervoor dat code-uitvoering veilig en voorspelbaar is. Algemene data science-bibliotheken zoals pandas, matplotlib en seaborn zijn vooraf geïnstalleerd.

Aan de slag met code-interpreter

Hulpprogramma's voor code-interpreters zijn automatisch beschikbaar in uw SRE Agent-gesprekken. Vraag de agent om taken uit te voeren met behulp van natuurlijke taal.

Voorbeelden van aanwijzingen

Probeer deze aanwijzingen om aan de slag te gaan:

  • "Analyseer deze CSV-gegevens en maak een grafiek met incidenten per categorie."
  • "Genereer een PDF-overzicht van de incidenten van vandaag."
  • "Parseert dit JSON-bestand en extraheer de foutpatronen."
  • "Geef alle bestanden in de sessie weer en geef hun grootte weer."

Uw eerste Python-script

In het volgende voorbeeld ziet u hoe u een visualisatie maakt:

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)

Wanneer de code is uitgevoerd, retourneert de agent de inline-afbeelding in het gesprek.

Scenariën

Incidentgegevens analyseren

Gebruik code-interpreter om onbewerkte incidentgegevens om te zetten in bruikbare inzichten en visualisaties.

  1. Vraag de SRE-agent om een CSV-bestand te maken van alle incidenten die in de afgelopen maand zijn opgetreden met behulp van de volgende prompt:

    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. Gebruik Python om incidentpatronen te analyseren en trends te identificeren:

    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)
    

Visualisaties maken

Grafieken genereren om inzichten te communiceren.

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)

PDF-rapporten genereren

Opgemaakte PDF-documenten maken voor belanghebbenden.

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

De agent retourneert een downloadkoppeling voor de gegenereerde PDF.

Logboekbestanden verwerken

Zoek en analyseer logboekbestanden met behulp van shell-opdrachten.

# 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

Toolreferentie

Code Interpreter biedt de volgende hulpprogramma's:

ExecutePythonCode

Voert Python-code uit in een geïsoleerde sandbox.

Kenmerk Typologie Verplicht Description
pythonCode touw Yes Python-code die moet worden uitgevoerd (maximaal 20.000 tekens)
timeoutSeconds integer Nee. Time-out voor uitvoering in seconden (standaard: 120, maximum: 900)

Uitvoer: Afbeeldingen worden inline weergegeven met Markdown-opmaak. Gegevensbestanden worden geretourneerd als downloadlinks.

GenereerPdfRapport

Hiermee maakt u PDF-documenten op basis van Python-code.

Kenmerk Typologie Verplicht Description
pythonCode touw Yes Python-code waarmee een PDF-bestand wordt gemaakt
expectedOutputFilename touw Yes Pad waar het PDF-bestand is opgeslagen (bijvoorbeeld report.pdf)
saveAsFilename touw Yes Bestandsnaam downloaden (bijvoorbeeld daily_summary.pdf)
timeoutSeconds integer Nee. Time-out voor uitvoering in seconden (standaard: 180, maximum: 900)

VoerShellOpdrachtUit

Hiermee worden shell-opdrachten uitgevoerd in de sandbox.

Kenmerk Typologie Verplicht Description
command touw Yes Shell-opdracht om uit te voeren
explanation touw Nee. Beschrijving om met de opdracht te loggen
isBackground booleaan Nee. Moet zijn false (achtergrondtaken worden niet ondersteund)
timeoutSeconds integer Nee. Time-out voor uitvoering (standaard: 120, max: 240)

Opmerking

De opdrachten worden uitgevoerd vanaf /mnt/data/. Gebruik relatieve paden en ketenopdrachten met behulp ; van in plaats van &&.

Bestandsbewerkingen

Tool Description
ReadSessionFile Leest de inhoud van een bestand van /mnt/data/.
SearchSessionFiles Hiermee wordt gezocht naar tekst in bestanden met grep-stijlpatronen.
ListSessionFiles Een lijst met alle bestanden in de sessie met metagegevens.
GetSessionFile Hiermee downloadt u een bestand uit de sessie.
UploadFileToSession Uploadt een bestand voor verdere verwerking.

Ondersteunde bestandstypen

  • Afbeeldingen: PNG, JPG, GIF, SVG, WebP, BMP, TIFF, EPS
  • Gegevens: CSV, TSV, Excel, JSON, XML, YAML, HDF5, NetCDF, pickle
  • Documenten: PDF, HTML, Markdown, Office-indelingen
  • Code: Python, Jupyter-notebooks, R, SQL
  • Archieven: ZIP, TAR, GZ

Beperkingen

Om veiligheidsredenen blokkeert het systeem de volgende bewerkingen:

Categorie Geblokkeerde bewerkingen
Procesverwekking subprocess,os.system,os.popen,os.spawn*
Netwerktoegang Uitgaande HTTP-/HTTPS-aanvragen
Pakketinstallatie pip install, conda install
Bestandssysteem Toegang buiten /mnt/data/

Problemen met code-interpreter oplossen

Uitvoering van code mislukt

  • Controleer of uw code geen geblokkeerde bewerkingen zoals subprocess of netwerkoproepen gebruikt.
  • Controleer of alle bestandspaden verwijzen naar /mnt/data/.
  • Zorg ervoor dat uw code minder dan 20.000 tekens bevat.

Bestanden worden niet weergegeven in uitvoer

  • Bevestig dat u bestanden opslaat in /mnt/data/.
  • Gebruik ListSessionFiles om het maken van bestanden te verifiëren.
  • Controleer of de bestandsextensie wordt ondersteund.

Time-outfouten

  • Verhoog de timeoutSeconds parameter (maximaal 900 seconden).
  • Optimaliseer uw code om de uitvoeringstijd te verkorten.
  • Split grote bewerkingen in kleinere delen.