Pi Agent: Non-Interactive Mode

Última atualização: 2026-08-31

--- title: "Modo Nao-Interativo" description: "Domine o modo nao-interativo (batch) do Pi Agent para pipelines de tarefas automatizadas, operacoes pipe e integracao com scripts." order: 6 lang: pt-br

Modo interativo é para exploração; modo não-interativo é para produção — sem supervisão, processamento em lote, orquestração de pipelines.


1. O que é o Modo Não-Interativo

Modo não-interativo significa que o Agent recebe entrada e executa automaticamente sem intervenção humana. Adequado para:


2. Uso Não-Interativo via CLI

(1) Execução Única

BASH
pi-agent run "Explain what this code does: def fib(n): return n if n < 2 else fib(n-1) + fib(n-2)"

(2) Ler Entrada de Arquivo

BASH
pi-agent run --input code.py "Review the code quality of this file"

(3) Pipe da Entrada Padrão

BASH
cat error.log | pi-agent run "Analyze these error logs and find the most common issues"

(4) Saída para Arquivo

BASH
pi-agent run --input data.csv "Analyze data trends" --output report.md

3. Processamento em Lote com Python

(1) Lote Básico

PYTHON
from pi_agent import Agent

agent = Agent(name="reviewer", system_prompt="You are a code review expert")

files = ["main.py", "utils.py", "config.py"]

for f in files:
    result = agent.run(f"Review code quality of {f}, give scores and improvement suggestions")
    print(f"=== {f} ===")
    print(result)
    print()

(2) Lote Paralelo

PYTHON
import asyncio
from pi_agent import AsyncAgent

async def review_file(filename):
    agent = AsyncAgent(name="reviewer")
    result = await agent.run(f"Review {filename}")
    return filename, result

async def main():
    files = ["main.py", "utils.py", "config.py", "tests.py"]
    tasks = [review_file(f) for f in files]
    results = await asyncio.gather(*tasks)

    for filename, result in results:
        print(f"=== {filename} ===")
        print(result)

asyncio.run(main())

4. Pipes e Integração com Scripts

Exemplo 1: Gerador de Mensagem de Commit Git (Dificuldade: ⭐⭐)

BASH
git diff --staged | pi-agent run "Generate a concise git commit message based on the code changes"

Exemplo 2: Pipeline de Análise de Logs (Dificuldade: ⭐⭐)

BASH
tail -100 /var/log/app.log | pi-agent run --skill log_analyzer "Extract errors and warnings, sort by frequency"

Exemplo 3: Relatório de Testes Automatizado (Dificuldade: ⭐⭐⭐)

PYTHON
from pi_agent import Agent
import subprocess

agent = Agent(name="qa", system_prompt="You are a QA engineer, analyze test results and generate reports")

result = subprocess.run(["pytest", "--tb=short"], capture_output=True, text=True)
report = agent.run(f"Analyze the following test results and generate a report:\n{result.stdout}\n{result.stderr}")

with open("test_report.md", "w") as f:
    f.write(report.text)

5. Códigos de Saída e Tratamento de Erros

Código de Saída Significado
0 Sucesso
1 Erro geral
2 Erro de configuração
3 Falha na chamada de API
4 Erro de execução de ferramenta
BASH
pi-agent run "Check deployment status" --skill devops
if [ $? -eq 0 ]; then
    echo "Check passed"
else
    echo "Check failed, exit code: $?"
fi

Python:

PYTHON
from pi_agent import Agent, AgentError

agent = Agent(name="checker")
try:
    result = agent.run("Verify configuration file")
    print("Verification passed:", result.text)
except AgentError as e:
    print(f"Execution failed: {e}")
    print(f"Error code: {e.code}")

6. Integração com Tarefas Agendadas

BASH
# crontab -e
0 9 * * * pi-agent run --skill daily_report "Generate today's project progress report" --output /reports/daily.md
0 0 * * 0 pi-agent run --skill code_review "Review this week's code changes" --output /reports/weekly.md

❓ Perguntas Frequentes

P: O modo não-interativo suporta streaming? R: Não por padrão, mas você pode usar a flag --stream. No entanto, piping geralmente não precisa de streaming. P: Existe limite de comprimento para entrada via pipe? R: Não há limite rígido, mas é limitado pela janela de contexto do modelo. Entradas muito longas são automaticamente truncadas ou divididas. P: E os limites de taxa da API durante processamento em lote? R: Pi Agent tem retry integrado. Você também pode adicionar asyncio.sleep() no código para controlar a frequência de requisições.


❓ Resumo


📝 Exercícios

  1. Básico (Dificuldade: ⭐): Execute uma tarefa única com pi-agent run e salve os resultados em um arquivo.
  2. Intermediário (Dificuldade: ⭐⭐): Escreva um script em lote para revisar todos os arquivos Python em um diretório.
  3. Avançado (Dificuldade: ⭐⭐⭐): Configure um git hook que gere automaticamente mensagens de commit com o Pi Agent antes de commitar.
Web-Tutorial.com

Equipe Técnica Web-Tutorial

Uma plataforma de tutoriais mantida por diversos desenvolvedores. Cada tutorial é escrito e revisado por profissionais da área correspondente. Trabalhamos para manter nosso conteúdo preciso e confiável — se encontrar algum problema, avise-nos.

100%