Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Interpreter kodu agenta SRE umożliwia wykonywanie poleceń kodu i powłoki języka Python w bezpiecznym izolowanym środowisku piaskownicy. Użyj interpretera kodu, aby analizować dane, tworzyć wizualizacje, generować raporty PDF i automatyzować operacje na plikach bez opuszczania konwersacji agenta SRE.
W tym artykule dowiesz się, jak:
- Wykonywanie kodu w języku Python w celu analizowania danych i tworzenia wizualizacji
- Uruchamianie poleceń powłoki dla operacji na plikach
- Generowanie i pobieranie raportów PDF
- Praca z plikami w środowisku piaskownicy
Wymagania wstępne
Aby utworzyć agenta, musisz przyznać agentowi odpowiednie uprawnienia, skonfigurować odpowiednie ustawienia i udzielić dostępu do odpowiednich zasobów:
Konto platformy Azure: potrzebujesz konta platformy Azure z aktywną subskrypcją. Jeśli jeszcze go nie masz, możesz założyć konto za darmo.
Kontekst zabezpieczeń: upewnij się, że twoje konto użytkownika ma uprawnienia
Microsoft.Authorization/roleAssignments/writena rolach lub administratora dostępu użytkowników.Ustawienia zapory: dodaj
*.azuresre.aido listy dozwolonych w ustawieniach zapory. Niektóre profile sieciowe mogą domyślnie blokować dostęp do*.azuresre.aidomeny.
Jak działa interpreter kodu
Interpreter kodu agenta SRE działa w izolowanej sesji usługi Azure Container Apps z następującymi cechami:
- Brak dostępu do sieci: piaskownica nie może wysyłać wychodzących żądań HTTP lub HTTPS.
-
Brak funkcji duplikowania procesów: polecenia takie jak
subprocessios.systemsą blokowane. -
Brak instalacji pakietu:
pip installiconda installnie są dostępne. -
Izolowany system plików: wszystkie pliki muszą zostać zapisane w pliku
/mnt/data/.
Te ograniczenia zapewniają bezpieczeństwo i przewidywalność wykonywania kodu. Typowe biblioteki nauki o danych, takie jak pandas, matplotlib i seaborn, są wstępnie zainstalowane.
Wprowadzenie do interpretera kodu
Narzędzia interpretera kodu są automatycznie dostępne w konwersacjach agenta SRE. Poproś agenta o wykonywanie zadań przy użyciu języka naturalnego.
Przykładowe podpowiedzi
Spróbuj wykonać następujące podpowiedzi, aby rozpocząć pracę:
- "Przeanalizuj te dane CSV i utwórz wykres pokazujący zdarzenia według kategorii".
- "Wygeneruj podsumowanie dzisiejszych zdarzeń w formacie PDF".
- "Przeanalizuj ten plik JSON i wyodrębnij wzorce błędów".
- "Wyświetl listę wszystkich plików w sesji i pokaż ich rozmiary"."
Pierwszy skrypt języka Python
W poniższym przykładzie pokazano, jak utworzyć wizualizację:
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)
Po pomyślnym uruchomieniu kodu agent zwraca obraz bezpośrednio w rozmowie.
Scenariusze
Analizowanie danych zdarzenia
Użyj interpretera kodu, aby przekształcić nieprzetworzone dane zdarzenia w szczegółowe informacje i wizualizacje umożliwiające podejmowanie działań.
Poproś agenta SRE o utworzenie pliku CSV wszystkich zdarzeń, które wystąpiły w ciągu ostatniego miesiąca, korzystając z następującego monitu:
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`.Używanie języka Python do analizowania wzorców zdarzeń i identyfikowania trendów:
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)
Tworzenie wizualizacji
Generowanie wykresów w celu przekazywania szczegółowych informacji.
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)
Generowanie raportów PDF
Tworzenie sformatowanych dokumentów PDF dla osób biorących udział w projekcie.
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 zwraca link pobierania dla wygenerowanego pliku PDF.
Przetwarzanie plików dziennika
Wyszukiwanie i analizowanie plików dziennika przy użyciu poleceń powłoki.
# 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
Dokumentacja narzędzia
Interpreter kodu udostępnia następujące narzędzia:
ExecutePythonCode
Uruchamia kod języka Python w izolowanej piaskownicy.
| Parameter | Typ | Required | Description |
|---|---|---|---|
pythonCode |
ciąg | Tak | Kod języka Python do uruchomienia (maksymalnie 20 000 znaków) |
timeoutSeconds |
liczba całkowita | Nie. | Limit czasu wykonywania w sekundach (wartość domyślna: 120, maksymalna: 900) |
Dane wyjściowe: obrazy są wyświetlane wewnątrz jako znaczniki markdown. Pliki danych są zwracane jako linki pobierania.
GenerujRaportPdf
Tworzy dokumenty PDF na podstawie kodu w języku Python.
| Parameter | Typ | Required | Description |
|---|---|---|---|
pythonCode |
ciąg | Tak | Kod w języku Python, który tworzy plik PDF |
expectedOutputFilename |
ciąg | Tak | Ścieżka, w której jest zapisywany plik PDF (na przykład report.pdf) |
saveAsFilename |
ciąg | Tak | Pobierz nazwę pliku (na przykład daily_summary.pdf) |
timeoutSeconds |
liczba całkowita | Nie. | Limit czasu wykonywania w sekundach (wartość domyślna: 180, maksymalna: 900) |
RunShellCommand
Uruchamia polecenia powłoki w piaskownicy.
| Parameter | Typ | Required | Description |
|---|---|---|---|
command |
ciąg | Tak | Polecenie powłoki do uruchomienia |
explanation |
ciąg | Nie. | Opis rejestrowania za pomocą polecenia |
isBackground |
typ logiczny (boolowski) | Nie. | Musi być false (zadania w tle nie są obsługiwane) |
timeoutSeconds |
liczba całkowita | Nie. | Limit czasu wykonywania (wartość domyślna: 120, maksymalna: 240) |
Uwaga / Notatka
Polecenia są uruchamiane z /mnt/data/. Użyj ścieżek względnych i poleceń łańcucha przy użyciu ; zamiast &&.
Operacje na plikach
| Tool | Description |
|---|---|
ReadSessionFile |
Odczytuje zawartość pliku z pliku /mnt/data/. |
SearchSessionFiles |
Wyszukuje tekst w plikach przy użyciu wzorców w stylu grep. |
ListSessionFiles |
Wyświetla listę wszystkich plików w sesji z metadanymi. |
GetSessionFile |
Pobiera plik z sesji. |
UploadFileToSession |
Przekazuje plik do dalszego przetwarzania. |
Typy obsługiwanych plików
- Obrazy: PNG, JPG, GIF, SVG, WebP, BMP, TIFF, EPS
- Dane: CSV, TSV, Excel, JSON, XML, YAML, HDF5, NetCDF, pickle
- Dokumenty: PDF, HTML, Markdown, Formaty pakietu Office
- Kod: Python, notatniki Jupyter, R, SQL
- Archiwa: ZIP, TAR, GZ
Ograniczenia
Ze względów bezpieczeństwa system blokuje następujące operacje:
| Kategoria | Zablokowane operacje |
|---|---|
| Duplikowanie procesów |
subprocess, , os.system, , os.popenos.spawn* |
| Dostęp do sieci | Wychodzące żądania HTTP/HTTPS |
| Instalacja pakietu |
pip install, conda install |
| System plików | Dostęp na zewnątrz /mnt/data/ |
Rozwiązywanie problemów z interpreterem kodu
Wykonywanie kodu kończy się niepowodzeniem
- Sprawdź, czy kod nie używa zablokowanych operacji, takich jak
subprocessani wywołań sieciowych. - Sprawdź, czy wszystkie ścieżki plików wskazują wartość
/mnt/data/. - Upewnij się, że kod ma długość poniżej 20 000 znaków.
Pliki nie są wyświetlane w danych wyjściowych
- Potwierdź, że pliki zostały zapisane do
/mnt/data/. - Użyj polecenia
ListSessionFiles, aby zweryfikować tworzenie pliku. - Sprawdź, czy rozszerzenie pliku jest obsługiwane.
Błędy przekroczenia limitu czasu
-
timeoutSecondsZwiększ parametr (maksymalnie 900 sekund). - Zoptymalizuj kod, aby skrócić czas wykonywania.
- Podziel duże operacje na mniejsze fragmenty.