Compartilhar via


Executar código usando o interpretador de código no Agente SRE do Azure

O interpretador de código do Agente SRE permite executar comandos de código e shell do Python em um ambiente de área restrita segura e isolada. Use o Interpretador de Código para analisar dados, criar visualizações, gerar relatórios PDF e automatizar operações de arquivo sem sair da conversa do 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 arquivo
  • Gerar e baixar relatórios PDF
  • Trabalhar com arquivos no ambiente de área restrita

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 certos:

Como funciona o interpretador de código

O interpretador de código do Agente SRE é executado em uma sessão isolada dos Aplicativos de Contêiner do Azure com as seguintes características:

  • Sem acesso à rede: o sandbox não pode fazer solicitações HTTP ou HTTPS de saída.
  • Nenhuma geração de processo: comandos como subprocess e os.system são bloqueados.
  • Nenhuma instalação de pacote: pip install e conda install não estão disponíveis.
  • Sistema de arquivos isolado: todos os arquivos devem ser salvos em /mnt/data/.

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

Introdução ao interpretador de código

As ferramentas de interpretador de código estão disponíveis automaticamente em suas conversas do Agente SRE. Peça ao agente para executar tarefas usando linguagem natural.

Prompts de exemplo

Experimente estes prompts para começar:

  • "Analise esses dados CSV e crie um gráfico mostrando incidentes por categoria."
  • "Gere um resumo em PDF dos incidentes de hoje."
  • "Analise este arquivo JSON e extraia os padrões de erro."
  • "Liste todos os arquivos na sessão e mostre seus tamanhos."

Seu primeiro script Python

O exemplo a seguir 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 êxito, o agente retorna a imagem como parte da conversa.

Cenários

Analisar dados de incidentes

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

  1. Peça ao Agente SRE para criar um arquivo CSV de todos os incidentes ocorridos no último mês usando 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 o 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

Gere 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 os stakeholders.

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 retorna um link de download para o PDF gerado.

Processar arquivos de log

Pesquise e analise arquivos de log usando 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

Referência da ferramenta

O Interpretador de Código fornece as seguintes ferramentas:

ExecutePythonCode

Executa o código python em uma área restrita isolada.

Parâmetro Tipo Obrigatório Description
pythonCode cadeia Yes Código python a ser executado (até 20.000 caracteres)
timeoutSeconds inteiro Não Tempo limite de execução em segundos (padrão: 120, máximo: 900)

Saída: As imagens são exibidas em formato Markdown. Os arquivos de dados retornam como links de download.

GerarRelatórioPdf

Cria documentos PDF com base no código Python.

Parâmetro Tipo Obrigatório Description
pythonCode cadeia Yes Código python que cria um arquivo PDF
expectedOutputFilename cadeia Yes Caminho em que o PDF é salvo (por exemplo, report.pdf)
saveAsFilename cadeia Yes Baixar nome do arquivo (por exemplo, daily_summary.pdf)
timeoutSeconds inteiro Não Tempo limite de execução em segundos (padrão: 180, máximo: 900)

RunShellCommand

Executa comandos de shell na sandbox.

Parâmetro Tipo Obrigatório Description
command cadeia Yes Comando shell a ser executado
explanation cadeia Não Descrição para fazer logon com o comando
isBackground boolean Não Deve ser false (não há suporte para trabalhos em segundo plano)
timeoutSeconds inteiro Não Tempo limite de execução (padrão: 120, máximo: 240)

Observação

Os comandos são executados em /mnt/data/. Use caminhos relativos e comandos de cadeia usando ; em vez de &&.

Operações de arquivo

Tool Description
ReadSessionFile Lê o conteúdo de um arquivo de /mnt/data/.
SearchSessionFiles Pesquisa texto em arquivos usando padrões de estilo grep.
ListSessionFiles Lista todos os arquivos na sessão com metadados.
GetSessionFile Baixa um arquivo da sessão.
UploadFileToSession Carrega um arquivo para processamento adicional.

Tipos de arquivo com suporte

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

Limitações

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

Categoria Operações bloqueadas
Geração de processos subprocess, os.system, , os.popenos.spawn*
Acesso de rede Solicitações HTTP/HTTPS de saída
Instalação do pacote pip install, conda install
Sistema de arquivos Acesso externo /mnt/data/

Solucionar problemas do interpretador de código

Falha na execução do código

  • Verifique se o código não usa operações bloqueadas como subprocess ou chamadas de rede.
  • Verifique se todos os caminhos de arquivo apontam para /mnt/data/.
  • Verifique se o código tem menos de 20.000 caracteres.

Os arquivos não aparecem na saída

  • Confirme se você salvou arquivos em /mnt/data/.
  • Use ListSessionFiles para verificar a criação de arquivo.
  • Verifique se a extensão de arquivo tem suporte.

Erros do tempo limite

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