Spuštění kódu pomocí interpretu kódu v agentovi Azure SRE

Interpretátor kódu agenta SRE umožňuje spouštět kód Pythonu a příkazy shellu v izolovaném, zabezpečeném sandboxovém prostředí. Pomocí interpretu kódu můžete analyzovat data, vytvářet vizualizace, generovat sestavy PDF a automatizovat operace se soubory bez opuštění konverzace agenta SRE.

V tomto článku se naučíte:

  • Spuštění kódu Pythonu pro analýzu dat a vytváření vizualizací
  • Spouštění shell příkazů pro souborové operace
  • Generování a stahování sestav PDF
  • Práce se soubory v sandboxovém prostředí

Požadavky

Pokud chcete vytvořit agenta, musíte agentu udělit správná oprávnění, nakonfigurovat správná nastavení a udělit přístup k správným prostředkům:

  • Účet Azure: Potřebujete účet Azure s aktivním předplatným. Pokud ho ještě nemáte, můžete si zdarma vytvořit účet.

  • Kontext zabezpečení: Ujistěte se, že váš uživatelský účet má Microsoft.Authorization/roleAssignments/write oprávnění jako správce řízení přístupu na základě role nebo správce uživatelských přístupů.

  • Nastavení brány firewall: Přidejte *.azuresre.ai do seznamu povolených v nastavení brány firewall. Některé síťové profily můžou ve výchozím nastavení blokovat přístup k *.azuresre.ai doméně.

Jak interpret kódu funguje

Interpret kódu agenta SRE běží v izolované relaci Azure Container Apps s následujícími vlastnostmi:

  • Žádný přístup k síti: Sandbox nemůže provádět odchozí požadavky HTTP nebo HTTPS.
  • Žádné spouštění procesů: Příkazy jako subprocess a os.system jsou blokované.
  • Žádná instalace balíčku: pip install a conda install nejsou k dispozici.
  • Izolovaný systém souborů: Všechny soubory musí být uloženy do /mnt/data/souboru .

Tato omezení zajišťují zabezpečení a předvídatelné spouštění kódu. Předinstalované jsou běžné knihovny datových věd, jako jsou pandas, matplotlib a seaborn.

Začínáme s interpretem kódu

Nástroje interpretu kódu jsou automaticky dostupné v konverzacích agenta SRE. Požádejte agenta, aby prováděl úlohy pomocí přirozeného jazyka.

Ukázkové výzvy

Vyzkoušejte tyto výzvy, abyste mohli začít:

  • "Analyzujte tato data CSV a vytvořte graf zobrazující incidenty podle kategorií."
  • "Vygenerování souhrnu dnešních incidentů ve formátu PDF."
  • Parsujte tento soubor JSON a extrahujte vzory chyb.
  • "Vypište všechny soubory v relaci a zobrazte jejich velikosti."

První skript Pythonu

Následující příklad ukazuje, jak vytvořit vizualizaci:

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)

Když se kód úspěšně spustí, agent zobrazí obrázek přímo v konverzaci.

Scénáře

Analýza dat incidentů

Pomocí interpretu kódu můžete transformovat nezpracovaná data incidentů na užitečné přehledy a vizualizace.

  1. Požádejte agenta SRE, aby pomocí následující výzvy vytvořil soubor CSV se všemi incidenty, ke kterým došlo v posledním měsíci:

    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. Pomocí Pythonu můžete analyzovat vzory incidentů a identifikovat trendy:

    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)
    

Vytváření vizualizací

Generování grafů pro komunikaci přehledů

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)

Generování sestav PDF

Vytvářejte formátované dokumenty PDF pro zúčastněné strany.

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

Agent vrátí odkaz ke stažení pro vygenerovaný soubor PDF.

Zpracování souborů protokolu

Prohledávejte a analyzujte soubory protokolu pomocí příkazů shellu.

# 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

Referenční informace k nástrojům

Interpret kódu poskytuje následující nástroje:

ExecutePythonCode

Spustí kód Pythonu v izolovaném sandboxu.

Parameter Typ Povinné Description
pythonCode řetězec Ano Kód Pythonu ke spuštění (až 20 000 znaků)
timeoutSeconds integer Ne Časový limit spuštění v sekundách (výchozí hodnota: 120, maximum: 900)

Výstup: Obrázky se zobrazují vložené v rámci textu jako markdown. Datové soubory se vrátí jako odkazy ke stažení.

GeneratePdfReport

Vytvoří dokumenty PDF z kódu Pythonu.

Parameter Typ Povinné Description
pythonCode řetězec Ano Kód Pythonu, který vytvoří soubor PDF
expectedOutputFilename řetězec Ano Cesta, kam je soubor PDF uložený (například report.pdf)
saveAsFilename řetězec Ano Stáhnout název souboru (například daily_summary.pdf)
timeoutSeconds integer Ne Časový limit spuštění v sekundách (výchozí hodnota: 180, maximum: 900)

RunShellCommand

Provádí příkazy shellu v sandboxu.

Parameter Typ Povinné Description
command řetězec Ano Příkaz prostředí ke spuštění
explanation řetězec Ne Popis pro protokolování pomocí příkazu
isBackground Boolean Ne Musí to být false (úlohy na pozadí nejsou podporované).
timeoutSeconds integer Ne Časový limit spuštění (výchozí: 120, max: 240)

Poznámka:

Příkazy se spouštějí z /mnt/data/. Používejte relativní cesty a řetězení příkazů pomocí ; namísto &&.

Operace se soubory

Tool Description
ReadSessionFile Načte obsah souboru z /mnt/data/.
SearchSessionFiles Vyhledá text v souborech pomocí vzorů ve stylu grep.
ListSessionFiles Zobrazí seznam všech souborů v relaci s metadaty.
GetSessionFile Stáhne soubor z relace.
UploadFileToSession Nahraje soubor pro další zpracování.

Podporované typy souborů

  • Obrázky: PNG, JPG, GIF, SVG, WebP, BMP, TIFF, EPS
  • Data: CSV, TSV, Excel, JSON, XML, YAML, HDF5, NetCDF, pickle
  • Dokumenty: PDF, HTML, Markdown, formáty Office
  • Kód: Python, poznámkové bloky Jupyter, R, SQL
  • Archivy: ZIP, TAR, GZ

Omezení

Z bezpečnostních důvodů systém blokuje následující operace:

Kategorie Blokované operace
Vytváření procesů subprocess, os.system, , os.popenos.spawn*
Síťový přístup Odchozí požadavky HTTP/HTTPS
Instalace balíčku pip install, conda install
Systém souborů Přístup mimo /mnt/data/

Řešení potíží s interpretem kódu

Selhání spuštění kódu

  • Ověřte, že váš kód nepoužívá blokované operace, jako subprocess jsou nebo síťová volání.
  • Zkontrolujte, zda všechny cesty k souborům odkazují na /mnt/data/.
  • Ujistěte se, že váš kód má méně než 20 000 znaků.

Soubory se ve výstupu nezobrazují

  • Potvrďte, že soubory ukládáte do /mnt/data/.
  • Slouží ListSessionFiles k ověření vytvoření souboru.
  • Zkontrolujte, jestli je podporovaná přípona souboru.

Chyby časového limitu

  • timeoutSeconds Zvyšte parametr (maximálně 900 sekund).
  • Optimalizujte kód, abyste zkrátili dobu provádění.
  • Rozdělte velké operace na menší bloky dat.