Executar código usando o code interpreter no Azure SRE Agent

O interpretador de código SRE Agent permite-lhe executar código Python e comandos shell num ambiente sandbox seguro e isolado. Use o Code Interpreter para analisar dados, criar visualizações, gerar relatórios PDF e automatizar operações de ficheiros sem sair da conversa com o seu Agente SRE.

Neste artigo, você aprenderá a:

  • Executar código Python para analisar dados e criar visualizações
  • Executar comandos de shell para operações de ficheiros
  • Gerar e descarregar relatórios PDF
  • Trabalhar com ficheiros no ambiente sandbox

Pré-requisitos

Para criar um agente, você precisa conceder ao agente as permissões corretas, definir as configurações corretas e conceder acesso aos recursos corretos:

Como funciona o interpretador de código

O interpretador de código SRE Agent executa-se numa sessão Azure Container Apps isolada com as seguintes características:

  • Sem acesso à rede: O sandbox não consegue fazer pedidos HTTP ou HTTPS de saída.
  • Sem geração de processos: Comandos como subprocess e os.system são bloqueados.
  • Sem instalação de pacotes: pip install e conda install não estão disponíveis.
  • Sistema de ficheiros isolado: Todos os ficheiros devem ser guardados em /mnt/data/.

Estas restrições garantem que a execução do código é segura e previsível. Bibliotecas comuns de ciência de dados como pandas, matplotlib e seaborn já estão pré-instaladas.

Comece a usar o interpretador de código

As ferramentas de interpretação de código estão automaticamente disponíveis nas conversas do seu Agente SRE. Peça ao agente para realizar tarefas usando linguagem natural.

Exemplos de sugestões

Experimente estes prompts para começar:

  • "Analise estes dados CSV e crie um gráfico com incidentes por categoria."
  • "Gerar um resumo em PDF dos incidentes de hoje."
  • "Analisa este ficheiro JSON e extrai os padrões de erro."
  • "Lista todos os ficheiros da sessão e mostra os seus tamanhos."

O teu primeiro script em Python

O exemplo seguinte demonstra como criar uma visualização:

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 o código é executado com sucesso, o agente devolve a imagem inline na conversa.

Cenários

Analisar dados de incidentes

Use um interpretador de código para transformar dados brutos de incidentes em insights acionáveis e visualizações.

  1. Peça ao Agente SRE que crie um ficheiro CSV com todos os incidentes ocorridos no último mês, utilizando o seguinte prompt:

    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 analisar padrões de incidentes e identificar tendências:

    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)
    

Criar visualizações

Gera gráficos para comunicar insights.

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)

Gerar relatórios PDF

Crie documentos PDF formatados para as partes interessadas.

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

O agente devolve um link de download para o PDF gerado.

Ficheiros de registo de processos

Pesquise e analise ficheiros de registo usando comandos 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

Referência da ferramenta

O Code Interpreter fornece as seguintes ferramentas:

ExecutePythonCode

Executa código Python numa sandbox isolada.

Parâmetro Tipo Obrigatório Description
pythonCode cadeia (de caracteres) Yes Código Python para executar (até 20.000 caracteres)
timeoutSeconds número inteiro Não Tempo de execução em segundos (padrão: 120, máximo: 900)

Saída: As imagens são exibidas em linha como markdown. Os ficheiros de dados retornam como links de download.

GerarRelatórioPdf

Cria documentos PDF a partir de código Python.

Parâmetro Tipo Obrigatório Description
pythonCode cadeia (de caracteres) Yes Código Python que cria um ficheiro PDF
expectedOutputFilename cadeia (de caracteres) Yes Caminho onde o PDF é guardado (por exemplo, report.pdf)
saveAsFilename cadeia (de caracteres) Yes Descarregar o nome do ficheiro (por exemplo, daily_summary.pdf)
timeoutSeconds número inteiro Não Tempo de execução em segundos (padrão: 180, máximo: 900)

RunShellCommand

Executa comandos shell na sandbox.

Parâmetro Tipo Obrigatório Description
command cadeia (de caracteres) Yes Comando shell para executar
explanation cadeia (de caracteres) Não Descrição a ser registada com o comando
isBackground Booleano Não Deve ser false (tarefas em segundo plano não são suportadas)
timeoutSeconds número inteiro Não Tempo limite de execução (padrão: 120, máximo: 240)

Observação

Os comandos correm de /mnt/data/. Use caminhos relativos e comandos em cadeia usando ; em vez de &&.

Operações de ficheiros

Tool Description
ReadSessionFile Lê o conteúdo de um ficheiro a partir de /mnt/data/.
SearchSessionFiles Pesquisa de texto dentro de ficheiros usando padrões ao estilo grep.
ListSessionFiles Lista todos os ficheiros da sessão com metadados.
GetSessionFile Descarrega um ficheiro da sessão.
UploadFileToSession Carrega um ficheiro para processamento posterior.

Tipos de ficheiro suportados

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

Limitações

Por razões de segurança, o sistema bloqueia as seguintes operações:

Categoria Operações bloqueadas
Geração de processos subprocess, os.system, os.popen, os.spawn*
Acesso à rede Pedidos HTTP/HTTPS de saída
Instalação do pacote pip install, conda install
Sistema de ficheiros Acesso exterior /mnt/data/

Interpretador de código para solução de problemas

Execução de código falha

  • Verifica se o teu código não usa operações bloqueadas, como subprocess chamadas de rede.
  • Verifique se todos os caminhos dos ficheiros apontam para /mnt/data/.
  • Certifique-se de que o seu código tem menos de 20.000 caracteres.

Os ficheiros não aparecem na saída

  • Confirme que guardou os ficheiros em /mnt/data/.
  • Usar ListSessionFiles para verificar a criação de ficheiros.
  • Verifique se a extensão do ficheiro é suportada.

Erros de tempo limite

  • Aumente o timeoutSeconds parâmetro (máximo 900 segundos).
  • Otimize o seu código para reduzir o tempo de execução.
  • Dividir grandes operações em partes mais pequenas.