Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Интерпретатор кода агента SRE позволяет выполнять команды кода Python и оболочки в безопасной изолированной среде песочницы. Используйте интерпретатор кода для анализа данных, создания визуализаций, создания отчетов PDF и автоматизации операций с файлами, не покидая беседу агента SRE.
В этой статье вы узнаете, как:
- Выполнение кода Python для анализа данных и создания визуализаций
- Выполнение команд оболочки для операций с файлами
- Создание и скачивание отчетов PDF
- Работа с файлами в среде песочницы
Предпосылки
Чтобы создать агент, необходимо предоставить агенту правильные разрешения, настроить правильные параметры и предоставить доступ к нужным ресурсам:
Учетная запись Azure. Требуется учетная запись Azure с активной подпиской. Если ее нет, можно создать учетную запись бесплатно.
Контекст безопасности. Убедитесь, что у учетной записи пользователя есть
Microsoft.Authorization/roleAssignments/writeразрешения в качестве администратора управления доступом на основе ролей или администратора доступа пользователей.Параметры брандмауэра: добавьте
*.azuresre.aiв список разрешений в параметрах брандмауэра. Некоторые профили сети могут блокировать доступ к*.azuresre.aiдомену по умолчанию.
Как работает интерпретатор кода
Интерпретатор кода агента SRE выполняется в изолированном сеансе приложений контейнеров Azure со следующими характеристиками:
- Нет сетевого доступа: песочница не может выполнять исходящие HTTP-запросы или HTTPS.
-
Процесс не вызывается: команды, как
subprocessиos.systemблокируются. -
Установка пакета отсутствует:
pip installиconda installне доступна. -
Изолированная файловая система: все файлы должны сохраняться в
/mnt/data/.
Эти ограничения обеспечивают безопасную и предсказуемую выполнение кода. Общие библиотеки для обработки и анализа данных, такие как pandas, matplotlib и seaborn, предварительно установлены.
Начало работы с интерпретатором кода
Средства интерпретатора кода автоматически доступны в беседах агента SRE. Попросите агента выполнять задачи с помощью естественного языка.
Примеры подсказок
Попробуйте начать работу с этими запросами:
- "Анализ данных CSV и создание диаграммы с инцидентами по категориям".
- "Создайте сводку PDF о сегодняшних инцидентах".
- "Анализ этого JSON-файла и извлечение шаблонов ошибок".
- "Вывод списка всех файлов в сеансе и отображение их размеров".
Ваш первый скрипт Python
В следующем примере показано, как создать визуализацию:
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)
При успешном выполнении кода агент возвращает встроенный образ в беседе.
Сценарии
Анализ данных инцидентов
Используйте интерпретатор кода для преобразования необработанных данных инцидентов в полезные аналитические сведения и визуализации.
Попросите агента SRE создать CSV-файл всех инцидентов, произошедших в течение последнего месяца, с помощью следующего запроса:
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`.Используйте Python для анализа шаблонов инцидентов и выявления тенденций:
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)
Создание визуализаций
Создайте диаграммы для обмена данными.
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
Создайте форматированные PDF-документы для заинтересованных лиц.
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()
Агент возвращает ссылку на скачивание для созданного PDF-файла.
Обработка файлов журнала
Поиск и анализ файлов журналов с помощью команд оболочки.
# 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
Справочник инструментов
Интерпретатор кода предоставляет следующие средства:
ExecutePythonCode
Выполняет код Python в изолированной песочнице.
| Параметр | Тип | Обязательно | Description |
|---|---|---|---|
pythonCode |
струна | Да | Код Python для запуска (до 20 000 символов) |
timeoutSeconds |
целое число | нет | Время ожидания выполнения в секундах (по умолчанию: 120, максимум: 900) |
Выходные данные: изображения показываются встроенными как markdown. Файлы данных возвращаются в виде ссылок на скачивание.
СоздатьPdfОтчет
Создает PDF-документы из кода Python.
| Параметр | Тип | Обязательно | Description |
|---|---|---|---|
pythonCode |
струна | Да | Код Python, создающий PDF-файл |
expectedOutputFilename |
струна | Да | Путь, в котором сохраняется PDF-файл (например, report.pdf) |
saveAsFilename |
струна | Да | Скачивание имени файла (например, daily_summary.pdf) |
timeoutSeconds |
целое число | нет | Время ожидания выполнения в секундах (по умолчанию: 180, максимум: 900) |
RunShellCommand
Выполняет команды командной оболочки в песочнице.
| Параметр | Тип | Обязательно | Description |
|---|---|---|---|
command |
струна | Да | Команда оболочки для запуска |
explanation |
струна | нет | Описание для входа с помощью команды |
isBackground |
булевый | нет | Это должно быть false (фоновые задачи не поддерживаются) |
timeoutSeconds |
целое число | нет | Время ожидания выполнения (по умолчанию: 120, максимум: 240) |
Замечание
Команды выполняются из /mnt/data/. Используйте относительные пути и цепочные команды, используя ; вместо &&.
Операции с файлами
| Tool | Description |
|---|---|
ReadSessionFile |
Считывает содержимое файла из /mnt/data/. |
SearchSessionFiles |
Выполняет поиск текста в файлах с помощью шаблонов grep-style. |
ListSessionFiles |
Выводит список всех файлов в сеансе с метаданными. |
GetSessionFile |
Загружает файл из сеанса. |
UploadFileToSession |
Отправляет файл для дальнейшей обработки. |
Поддерживаемые типы файлов
- Изображения: PNG, JPG, GIF, SVG, WebP, BMP, TIFF, EPS
- Данные: CSV, TSV, Excel, JSON, XML, YAML, HDF5, NetCDF, pickle
- Документы: PDF, HTML, Markdown, форматы Office
- Код: Python, записные книжки Jupyter, R, SQL
- Архивы: ZIP, TAR, GZ
Ограничения
По соображениям безопасности система блокирует следующие операции:
| Категория | Заблокированные операции |
|---|---|
| Порождение процессов |
subprocess
os.system
os.popen
os.spawn*
|
| Доступ к сети | Исходящие HTTP/HTTPS-запросы |
| Установка пакета |
pip install, conda install |
| Файловая система | Доступ за пределами /mnt/data/ |
Устранение неполадок интерпретатора кода
Выполнение кода завершается ошибкой
- Убедитесь, что код не использует заблокированные операции, такие как
subprocessили сетевые вызовы. - Убедитесь, что все пути к файлам указывают на
/mnt/data/. - Убедитесь, что ваш код не превышает 20 000 символов.
Файлы не отображаются в выходных данных
- Подтвердите, что вы сохраняете файлы в
/mnt/data/. - Используйте
ListSessionFilesдля проверки создания файла. - Убедитесь, что расширение файла поддерживается.
Ошибки, связанные с истечением времени ожидания
-
timeoutSecondsУвеличьте параметр (максимум 900 секунд). - Оптимизируйте код, чтобы сократить время выполнения.
- Разделение больших операций на небольшие блоки.