Entrar ou criar conta

Laboratório: Agente Tributário Comparador de Regimes com Claude Agent SDK e OpenAI Agents SDK

Você vai implementar um agente multiagente em Python, capaz de comparar regimes tributários fictícios com premissas explícitas e memória de consultas, usando Claude Agent SDK e OpenAI Agents SDK, rodando localmente. Em cerca de 2 horas, terá um fluxo validado de ponta a ponta, com prompts versionados, ferramentas, testes e guardrails.

Planejamento tributário e consultas fiscais com Claude Agent SDK + OpenAI Agents SDK
Ligado ao treinamento Planejamento tributário e consultas fiscais com Claude Agent SDK + OpenAI Agents SDK

Roteiro para estudo em ambiente de laboratório ou de teste. Execute apenas em equipamentos, redes e contas que você tenha autorização para usar, com backup e homologação próprios. Comandos podem causar indisponibilidade ou perda de dados. Software e marcas citados pertencem aos seus titulares. Termos de Uso.

Status de validaçãoNão validado pela Upnetix: roteiro derivado da documentação oficial, para você executar e validar
Duração estimada
120 min
Passos
13
Validações
5
Versões da documentação consultada
Python 3.10 ou superior · Claude Agent SDK (Python) a versão estável atual · OpenAI Agents SDK (Python) a versão estável atual
Objetivo

Demonstrar, na prática, como construir e operar um agente tributário que compara regimes fiscais fictícios, registra consultas e permite revisão humana, usando Claude Agent SDK e OpenAI Agents SDK em Python. O laboratório cobre desde a configuração do ambiente até a execução de casos de teste, com avaliação automatizada, tracing e aplicação de guardrails, tudo em software livre e respeitando as premissas de segurança e LGPD.

Topologia

Um notebook ou VM local (192.168.56.10) executa o agente Python, que usa Claude Agent SDK e OpenAI Agents SDK para orquestrar os modelos Claude e GPT. Não há conexão externa obrigatória além das APIs dos provedores (chaves de API via variáveis de ambiente). O agente recebe perguntas do usuário, consulta as ferramentas internas (simulador de regimes e memória de consultas) e retorna respostas com premissas explícitas, registrando logs locais.


+-------------------+
|   Usuário local   |
+--------+----------+
         |
         v
+-------------------+
|  Python Agent App |
+----+--------+-----+
     |        |
     v        v
Claude SDK  OpenAI SDK
     |        |
   Modelos   Modelos
     |        |
+----+--------+-----+
|  Ferramentas locais |
+--------------------+

Equipamentos e software

ItemRequisito, licença ou versão
Notebook ou VM x86_642 vCPU, 4 GB RAM, 10 GB disco, 1 porta Ethernet
PythonPSF · 3.10 ou superior
Claude Agent SDK (Python)Apache 2.0 · a versão estável atual
OpenAI Agents SDK (Python)MIT · a versão estável atual

Roteiro

  1. Preparar o ambiente Python

    Crie um ambiente virtual isolado para evitar conflitos de dependências.

    python3 -m venv ia-tributario-env
    source ia-tributario-env/bin/activate

    O que você deve ver: Prompt do terminal indica ambiente ativado, geralmente com (ia-tributario-env) à esquerda.

  2. Instalar dependências

    Instale Claude Agent SDK e OpenAI Agents SDK, além do FastAPI para testes HTTP e Pydantic para validação.

    pip install claude-agent-sdk-python openai-agents fastapi pydantic

    O que você deve ver: Mensagens de instalação concluída sem erros.

  3. Configurar variáveis de ambiente para as APIs

    Defina as chaves de API das plataformas Claude e OpenAI em variáveis de ambiente para segurança.

    export ANTHROPIC_API_KEY='SUA_CHAVE_CLAUDE'
    export OPENAI_API_KEY='SUA_CHAVE_OPENAI'

    O que você deve ver: Nenhuma saída. As variáveis ficam disponíveis na sessão.

  4. Criar o prompt de sistema versionado

    Crie um arquivo prompt_v1.txt com as instruções para o agente: sempre explicitar premissas, citar fontes e registrar cada consulta.

    echo 'Você é um agente tributário. Sempre explicite as premissas usadas, cite fontes fictícias como EXEMPLO, e registre cada consulta na memória. Decisões com efeito legal exigem revisão humana.' > prompt_v1.txt

    O que você deve ver: Arquivo prompt_v1.txt criado com o texto do sistema.

  5. Implementar ferramenta de comparação de regimes

    Implemente uma função Python que recebe dados fictícios (receita anual, número de funcionários) e retorna simulação de dois regimes (EXEMPLO Simples e EXEMPLO Lucro Presumido).

    cat <<EOF > compara_regimes.py
    def compara_regimes(receita_anual, funcionarios):
        premissas = 'Receita anual e número de funcionários são EXEMPLO.'
        resultado = {
            'Simples': {'alíquota': 'EXEMPLO 6%', 'imposto': receita_anual * 0.06},
            'Lucro Presumido': {'alíquota': 'EXEMPLO 12%', 'imposto': receita_anual * 0.12},
            'premissas': premissas
        }
        return resultado
    EOF

    O que você deve ver: Arquivo compara_regimes.py criado com função de simulação.

  6. Implementar ferramenta de memória de consultas

    Crie uma função que registra cada consulta em um arquivo local, garantindo rastreabilidade.

    cat <<EOF > memoria_consultas.py
    def registrar_consulta(pergunta, resposta):
        with open('memoria.txt', 'a') as f:
            f.write(f'Pergunta: {pergunta}\nResposta: {resposta}\n---\n')
    EOF

    O que você deve ver: Arquivo memoria_consultas.py criado.

  7. Montar o agente Claude com ferramenta customizada

    Implemente um agente Claude que usa o prompt_v1.txt e expõe a ferramenta compara_regimes.

    cat <<EOF > agente_claude.py
    from claude_agent_sdk import Agent, Tool
    from compara_regimes import compara_regimes
    
    with open('prompt_v1.txt') as f:
        prompt = f.read()
    
    class ComparaRegimesTool(Tool):
        name = 'compara_regimes'
        description = 'Compara regimes tributários fictícios.'
        parameters = {'receita_anual': float, 'funcionarios': int}
        def run(self, receita_anual, funcionarios):
            return compara_regimes(receita_anual, funcionarios)
    
    agent = Agent(
        instructions=prompt,
        tools=[ComparaRegimesTool()]
    )
    EOF

    O que você deve ver: Arquivo agente_claude.py criado com definição do agente e ferramenta.

  8. Montar o agente OpenAI com ferramenta de memória

    Implemente um agente OpenAI Agents SDK que usa o mesmo prompt e registra consultas.

    cat <<EOF > agente_openai.py
    from openai_agents import Agent, Tool
    from memoria_consultas import registrar_consulta
    
    with open('prompt_v1.txt') as f:
        prompt = f.read()
    
    class MemoriaTool(Tool):
        name = 'registrar_consulta'
        description = 'Registra consulta e resposta.'
        parameters = {'pergunta': str, 'resposta': str}
        def run(self, pergunta, resposta):
            registrar_consulta(pergunta, resposta)
            return {'status': 'registrado'}
    
    agent = Agent(
        name='Agente Tributário OpenAI',
        instructions=prompt,
        tools=[MemoriaTool()]
    )
    EOF

    O que você deve ver: Arquivo agente_openai.py criado com definição do agente e ferramenta.

  9. Orquestrar multiagente com FastAPI

    Monte uma API FastAPI que recebe perguntas, chama o agente Claude para simular regimes e registra a consulta com o agente OpenAI.

    cat <<EOF > app.py
    from fastapi import FastAPI
    from agente_claude import agent as claude_agent
    from agente_openai import agent as openai_agent
    
    app = FastAPI()
    
    @app.post('/comparar')
    def comparar(payload: dict):
        receita = payload.get('receita_anual', 100000)
        funcionarios = payload.get('funcionarios', 5)
        pergunta = payload.get('pergunta', 'Comparar regimes EXEMPLO')
        resposta = claude_agent.run({'receita_anual': receita, 'funcionarios': funcionarios})
        openai_agent.run({'pergunta': pergunta, 'resposta': str(resposta)})
        return {'resposta': resposta}
    EOF

    O que você deve ver: Arquivo app.py criado com endpoint /comparar.

  10. Adicionar guardrails de entrada e saída

    Implemente validação com Pydantic para garantir que só dados numéricos positivos sejam aceitos.

    cat <<EOF > schemas.py
    from pydantic import BaseModel, Field
    class CompararInput(BaseModel):
        receita_anual: float = Field(..., gt=0)
        funcionarios: int = Field(..., gt=0)
        pergunta: str
    EOF

    O que você deve ver: Arquivo schemas.py criado.

  11. Integrar validação à API

    Altere app.py para usar o schema CompararInput como parâmetro do endpoint.

    sed -i '/def comparar(payload: dict):/c\def comparar(payload: schemas.CompararInput):' app.py

    O que você deve ver: Linha do endpoint alterada para usar validação Pydantic.

  12. Rodar a aplicação

    Inicie o servidor FastAPI para expor o endpoint.

    uvicorn app:app --host 0.0.0.0 --port 8000

    O que você deve ver: Servidor rodando em http://0.0.0.0:8000 com logs de inicialização.

  13. Executar casos de teste automatizados

    Teste o endpoint com dados de EXEMPLO e verifique o registro na memória.

    curl -X POST http://localhost:8000/comparar -H 'Content-Type: application/json' -d '{"receita_anual": 200000, "funcionarios": 10, "pergunta": "Qual regime é melhor para minha empresa?"}'

    O que você deve ver: Resposta JSON com simulação dos regimes e arquivo memoria.txt atualizado.

Como saber que funcionou

TesteComandoCritério
Simular comparação válidacurl -X POST http://localhost:8000/comparar -H 'Content-Type: application/json' -d '{"receita_anual": 150000, "funcionarios": 7, "pergunta": "Comparar regimes EXEMPLO"}'Resposta contém chaves 'Simples', 'Lucro Presumido' e 'premissas'.
Verificar registro de consultatail -n 6 memoria.txtArquivo mostra pergunta e resposta recentes.
Testar guardrail de entrada negativacurl -X POST http://localhost:8000/comparar -H 'Content-Type: application/json' -d '{"receita_anual": -100, "funcionarios": 5, "pergunta": "Teste"}'Resposta HTTP 422 Unprocessable Entity.
Verificar logs de execuçãocat memoria.txtTodas as consultas feitas aparecem registradas.
Simular múltiplas consultasfor i in {1..3}; do curl -X POST http://localhost:8000/comparar -H 'Content-Type: application/json' -d '{"receita_anual": 100000, "funcionarios": 5, "pergunta": "Teste $i"}'; doneArquivo memoria.txt mostra todas as consultas feitas.

Troubleshooting

SintomaCausa provávelCorreção
Erro de importação ao rodar app.pyDependência não instalada ou ambiente virtual não ativadoAtive o ambiente virtual e reinstale os pacotes necessários.
Resposta HTTP 401 ao chamar APIsChave de API incorreta ou não definidaVerifique as variáveis de ambiente ANTHROPIC_API_KEY e OPENAI_API_KEY.
Arquivo memoria.txt não é atualizadoPermissão de escrita na pasta ou erro na função registrar_consultaGaranta permissão de escrita e revise a função de registro.
Resposta vazia ou erro 500 ao comparar regimesErro na chamada do agente ou parâmetros ausentesVerifique os parâmetros enviados e revise a integração entre agentes.
Servidor FastAPI não iniciaPorta 8000 já em usoAltere a porta no comando uvicorn ou libere a porta.

Segurança e hardening

  • Nunca inclua chaves de API em arquivos de código ou logs.
  • Permita escrita em memoria.txt apenas para o processo do agente.
  • Limite o acesso ao endpoint FastAPI à rede local durante testes.
  • Garanta que dados pessoais reais não sejam usados sem base legal.
  • Desative logs detalhados em produção ou remova dados sensíveis.

Checklist final

Referências

  1. Claude Agent SDK Documentation · Code.claude (code.claude.com)
  2. OpenAI Agents SDK Documentation · Openai.github (openai.github.io)
  3. FastAPI Documentation · FastAPI (fastapi.tiangolo.com)
  4. Pydantic Documentation · Docs.pydantic (docs.pydantic.dev)
  5. Lei Geral de Proteção de Dados (LGPD) · Presidência da República (Planalto) (planalto.gov.br)
Verificação editorial
Publicado
13/09/2026
Última revisão
13/09/2026
Versão do conteúdo
1.0
Referências
5 oficiais · 1 de normas ou órgãos
Revisão técnica
redação e revisão por IA, URLs conferidas na publicação
Status
Atual
Encontrou um erro? Escreva para comercial@upnetix.com.br com o endereço da página. A revisão semestral por IA nunca altera comandos ou configurações sem passar pela fila de revisão.