Ejecución de código mediante el intérprete de código en el agente de SRE de Azure

El intérprete de código del agente SRE permite ejecutar comandos de shell y código de Python en un entorno de espacio aislado seguro. Use el intérprete de código para analizar datos, crear visualizaciones, generar informes PDF y automatizar las operaciones de archivos sin salir de la conversación del agente de SRE.

En este artículo aprenderá a:

  • Ejecución de código de Python para analizar datos y crear visualizaciones
  • Ejecución de comandos de shell para operaciones de archivo
  • Generación y descarga de informes PDF
  • Trabajar con archivos en el entorno de pruebas

Prerrequisitos

Para crear un agente, debe conceder al agente los permisos correctos, configurar las opciones correctas y conceder acceso a los recursos adecuados:

  • Cuenta de Azure: necesita una cuenta de Azure con una suscripción activa. Si no la tiene, puede crear una cuenta gratis.

  • Contexto de seguridad: asegúrese de que su cuenta de usuario tenga los Microsoft.Authorization/roleAssignments/write permisos como Administrador de control de acceso basado en roles o Administrador de acceso de usuario.

  • Configuración del firewall: agregue *.azuresre.ai a la lista de permitidos en la configuración del firewall. Algunos perfiles de red pueden bloquear el acceso al *.azuresre.ai dominio de forma predeterminada.

Funcionamiento del intérprete de código

El intérprete de código del agente SRE se ejecuta en una sesión aislada de Azure Container Apps con las siguientes características:

  • Sin acceso a la red: el espacio aislado no puede realizar solicitudes HTTP o HTTPS salientes.
  • No se genera ningún proceso: comandos como subprocess y os.system están bloqueados.
  • Sin instalación de paquetes: pip install y conda install no están disponibles.
  • Sistema de archivos aislado: todos los archivos deben guardarse en /mnt/data/.

Estas restricciones garantizan que la ejecución del código sea segura y predecible. Las bibliotecas comunes de ciencia de datos como pandas, matplotlib y seaborn están preinstaladas.

Introducción al intérprete de código

Las herramientas de intérprete de código están disponibles automáticamente en las conversaciones del agente de SRE. Pida al agente que realice tareas mediante lenguaje natural.

Ejemplos de indicaciones

Pruebe estas indicaciones para empezar:

  • "Analice estos datos CSV y cree un gráfico que muestre incidentes por categoría".
  • "Generar un resumen PDF de los incidentes actuales."
  • "Analice este archivo JSON y extraiga los patrones de error".
  • "Enumere todos los archivos de la sesión y muestre sus tamaños".

El primer script de Python

En el ejemplo siguiente se muestra cómo crear una visualización:

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)

Cuando el código se ejecuta correctamente, el agente devuelve la imagen insertada en la conversación.

Escenarios

Análisis de datos de incidentes

Use el intérprete de código para transformar los datos de incidentes sin procesar en información y visualizaciones procesables.

  1. Pida al agente de SRE que cree un archivo CSV de todos los incidentes que se han producido en el último mes mediante el siguiente mensaje:

    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. Use Python para analizar patrones de incidentes e identificar tendencias:

    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)
    

Creación de visualizaciones

Genere gráficos para comunicar información.

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)

Generación de informes PDF

Cree documentos PDF con formato para las partes interesadas.

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

El agente devuelve un vínculo de descarga para el PDF generado.

Procesar archivos de registro

Busque y analice los archivos de registro mediante comandos de 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

Referencia de herramientas

El intérprete de código proporciona las siguientes herramientas:

ExecutePythonCode

Ejecuta código de Python en un espacio aislado.

Parámetro Tipo Obligatorio Description
pythonCode cuerda / cadena Código de Python que se va a ejecutar (hasta 20 000 caracteres)
timeoutSeconds entero No Tiempo de espera de ejecución en segundos (valor predeterminado: 120, máximo: 900)

Salida: Las imágenes se muestran en línea, como Markdown. Los archivos de datos se ofrecen como enlaces de descarga.

GenerarInformePdf

Crea documentos PDF a partir del código de Python.

Parámetro Tipo Obligatorio Description
pythonCode cuerda / cadena Código de Python que crea un archivo PDF
expectedOutputFilename cuerda / cadena Ruta de acceso donde se guarda el PDF (por ejemplo, report.pdf)
saveAsFilename cuerda / cadena Descargar nombre de archivo (por ejemplo, daily_summary.pdf)
timeoutSeconds entero No Tiempo de espera de ejecución en segundos (valor predeterminado: 180, máximo: 900)

RunShellCommand

Ejecuta comandos de shell en el espacio aislado.

Parámetro Tipo Obligatorio Description
command cuerda / cadena Comando de shell para ejecutar
explanation cuerda / cadena No Descripción para registrar con el comando
isBackground boolean No Debe ser false (no se admiten trabajos en segundo plano)
timeoutSeconds entero No Tiempo de espera de ejecución (valor predeterminado: 120, máximo: 240)

Nota:

Los comandos se ejecutan desde /mnt/data/. Use rutas de acceso relativas y comandos de cadena mediante ; en lugar de &&.

Operaciones de archivo

Tool Description
ReadSessionFile Lee el contenido de un archivo de /mnt/data/.
SearchSessionFiles Busca texto dentro de archivos mediante patrones de estilo grep.
ListSessionFiles Enumera todos los archivos de la sesión con metadatos.
GetSessionFile Descarga un archivo de la sesión.
UploadFileToSession Carga un archivo para su posterior procesamiento.

Tipos de archivo compatibles

  • Imágenes: PNG, JPG, GIF, SVG, WebP, BMP, TIFF, EPS
  • Datos: CSV, TSV, Excel, JSON, XML, YAML, HDF5, NetCDF, pickle
  • Documentos: PDF, HTML, Markdown, formatos de Office
  • Código: Python, Jupyter Notebooks, R, SQL
  • Archivos: ZIP, TAR, GZ

Limitaciones

Por motivos de seguridad, el sistema bloquea las siguientes operaciones:

Categoría Operaciones bloqueadas
Generación de procesos subprocess, os.system, , os.popen, os.spawn*
Acceso de red Solicitudes HTTP/HTTPS salientes
Instalación del paquete pip install, conda install
Sistema de archivos Acceso desde fuera /mnt/data/

Solución de problemas del intérprete de código

Error en la ejecución del código

  • Compruebe que el código no usa operaciones bloqueadas como subprocess o llamadas de red.
  • Compruebe que todas las rutas de acceso de archivo apunten a /mnt/data/.
  • Asegúrese de que el código tiene menos de 20 000 caracteres.

Los archivos no aparecen en la salida

  • Confirme que guarda los archivos en /mnt/data/.
  • Use ListSessionFiles para comprobar la creación de archivos.
  • Compruebe que se admite la extensión de archivo.

Errores de tiempo de espera

  • Aumente el timeoutSeconds parámetro (máximo 900 segundos).
  • Optimice el código para reducir el tiempo de ejecución.
  • Divida las operaciones grandes en fragmentos más pequeños.