Eseguire il codice usando l'interprete di codice nell'agente SRE di Azure

L'interprete del codice dell'agente SRE consente di eseguire i comandi del codice Python e della shell in un ambiente sandbox protetto e isolato. Usare l'interprete del codice per analizzare i dati, creare visualizzazioni, generare report PDF e automatizzare le operazioni sui file senza uscire dalla conversazione dell'agente SRE.

In questo articolo vengono illustrate le operazioni seguenti:

  • Eseguire codice Python per analizzare i dati e creare visualizzazioni
  • Eseguire i comandi della shell per le operazioni su file
  • Generare e scaricare report PDF
  • Usare i file nell'ambiente sandbox

Prerequisiti

Per creare un agente, è necessario concedere all'agente le autorizzazioni corrette, configurare le impostazioni corrette e concedere l'accesso alle risorse appropriate:

  • Account Azure: è necessario un account Azure con una sottoscrizione attiva. Se non si dispone già di un account, è possibile creare un account gratuitamente.

  • Contesto di sicurezza: assicurarsi che l'account utente disponga delle Microsoft.Authorization/roleAssignments/write autorizzazioni come Amministratore controllo degli accessi in base al ruolo o Amministratore accesso utenti.

  • Impostazioni del firewall: aggiungere *.azuresre.ai all'elenco consenti nelle impostazioni del firewall. Alcuni profili di rete potrebbero bloccare l'accesso al dominio di default *.azuresre.ai.

Funzionamento dell'interprete di codice

L'interprete del codice dell'agente SRE viene eseguito in una sessione isolata di App Contenitore di Azure con le caratteristiche seguenti:

  • Nessun accesso alla rete: la sandbox non può effettuare richieste HTTP o HTTPS in uscita.
  • Nessuna generazione di processi: i comandi come subprocess e os.system vengono bloccati.
  • Nessuna installazione del pacchetto: pip install e conda install non sono disponibili.
  • File system isolato: tutti i file devono essere salvati in /mnt/data/.

Queste restrizioni assicurano che l'esecuzione del codice sia sicura e prevedibile. Le librerie di data science comuni come pandas, matplotlib e seaborn sono preinstallate.

Introduzione all'interprete del codice

Gli strumenti dell'interprete del codice sono automaticamente disponibili nelle conversazioni dell'agente SRE. Chiedere all'agente di eseguire attività usando il linguaggio naturale.

Esempi di suggerimenti

Provare queste istruzioni per iniziare:

  • "Analizzare questi dati CSV e creare un grafico che mostra gli eventi imprevisti per categoria".
  • "Genera un riepilogo PDF degli eventi imprevisti di oggi".
  • "Analizzare questo file JSON ed estrarre i modelli di errore."
  • "Elencare tutti i file nella sessione e visualizzare le relative dimensioni".

Il primo script Python

L'esempio seguente illustra come creare una visualizzazione:

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)

Quando il codice viene eseguito correttamente, l'agente restituisce l'immagine integrata nella conversazione.

Scenari

Analizzare i dati degli eventi imprevisti

Usare l'interprete del codice per trasformare i dati non elaborati degli eventi imprevisti in visualizzazioni e informazioni dettagliate interattive.

  1. Chiedere all'agente SRE di creare un file CSV di tutti gli eventi imprevisti che si sono verificati nell'ultimo mese usando la richiesta seguente:

    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. Usare Python per analizzare i modelli di eventi imprevisti e identificare le tendenze:

    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)
    

Creare visualizzazioni

Generare grafici per comunicare informazioni dettagliate.

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)

Generare report PDF

Creare documenti PDF formattati per gli stakeholder.

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

L'agente restituisce un collegamento di download per il PDF generato.

Elaborare i file di log

Cercare e analizzare i file di log usando i comandi della 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

Informazioni di riferimento per gli strumenti

L'interprete del codice offre gli strumenti seguenti:

ExecutePythonCode

Esegue il codice Python in una sandbox isolata.

Parametro TIPO Obbligatorio Description
pythonCode string Yes Codice Python da eseguire (fino a 20.000 caratteri)
timeoutSeconds integer NO Timeout di esecuzione in secondi (valore predefinito: 120, massimo: 900)

Risultato: le immagini vengono visualizzate integrate come markdown. I file di dati vengono restituiti come collegamenti di download.

GeneraRapportoPdf

Crea documenti PDF dal codice Python.

Parametro TIPO Obbligatorio Description
pythonCode string Yes Codice Python che crea un file PDF
expectedOutputFilename string Yes Percorso in cui viene salvato il PDF (ad esempio, report.pdf)
saveAsFilename string Yes Scaricare il nome file (ad esempio, daily_summary.pdf)
timeoutSeconds integer NO Timeout di esecuzione in secondi (valore predefinito: 180, massimo: 900)

Esegui comando Shell

Esegue i comandi della shell nella sandbox.

Parametro TIPO Obbligatorio Description
command string Yes Comando shell da eseguire
explanation string NO Descrizione da registrare con il comando
isBackground boolean NO Deve essere false (i processi in background non sono supportati)
timeoutSeconds integer NO Timeout di esecuzione (impostazione predefinita: 120, max: 240)

Annotazioni

I comandi vengono eseguiti da /mnt/data/. Usare i percorsi relativi e i comandi della catena usando ; invece di &&.

Operazioni su file

Tool Description
ReadSessionFile Legge il contenuto di un file da /mnt/data/.
SearchSessionFiles Cerca testo all'interno di file usando modelli di tipo grep.
ListSessionFiles Elenca tutti i file nella sessione con i metadati.
GetSessionFile Scarica un file dalla sessione.
UploadFileToSession Carica un file per un'ulteriore elaborazione.

Tipi di file supportati

  • Immagini: PNG, JPG, GIF, SVG, WebP, BMP, TIFF, EPS
  • Dati: CSV, TSV, Excel, JSON, XML, YAML, HDF5, NetCDF, pickle
  • Documenti: PDF, HTML, Markdown, formati di Office
  • Codice: Python, Jupyter notebooks, R, SQL
  • Archivi: ZIP, TAR, GZ

Limitazioni

Per motivi di sicurezza, il sistema blocca le operazioni seguenti:

Categoria Operazioni bloccate
Generazione di processi subprocess, os.system, os.popenos.spawn*
Accesso alla rete Richieste HTTP/HTTPS in uscita
Installazione del pacchetto pip install, conda install
Sistema di file Accesso esterno /mnt/data/

Risolvere i problemi dell'interprete del codice

L'esecuzione del codice ha esito negativo

  • Verificare che il codice non usi operazioni bloccate come subprocess o chiamate di rete.
  • Verificare che tutti i percorsi dei file puntino a /mnt/data/.
  • Verificare che il codice sia inferiore a 20.000 caratteri.

I file non vengono visualizzati nell'output

  • Confermare di salvare i file in /mnt/data/.
  • Usare ListSessionFiles per verificare la creazione di file.
  • Verificare che l'estensione del file sia supportata.

Errori di timeout

  • Aumentare il timeoutSeconds parametro (massimo 900 secondi).
  • Ottimizzare il codice per ridurre il tempo di esecuzione.
  • Suddividere le operazioni di grandi dimensioni in blocchi più piccoli.