Laboratório: Agente de Suporte Interno com Claude Agent SDK e OpenAI Agents SDK (Python) usando MCP
Você vai implementar um agente de suporte interno, com três ferramentas, usando Claude Agent SDK e OpenAI Agents SDK lado a lado, em Python. Em cerca de 2 horas, será possível comparar código, operação e integração MCP.

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.
- Duração estimada
- 120 min
- Passos
- 12
- Validações
- 5
- Versões da documentação consultada
- Python 3.10 ou superior · Claude Agent SDK a versão estável atual · OpenAI Agents SDK a versão estável atual · FastAPI a versão estável atual · Uvicorn a versão estável atual · requests a versão estável atual
Demonstrar, na prática, como criar e operar um agente de IA de suporte interno com três ferramentas (consulta de FAQ local, abertura de chamado e busca web), usando Claude Agent SDK e OpenAI Agents SDK, ambos integrados via Model Context Protocol. O laboratório mostra diferenças de implementação, configuração e execução, além de práticas obrigatórias de segurança, tracing e validação.
Topologia
Você usará um computador local (192.168.56.10) rodando duas instâncias Python: uma com Claude Agent SDK, outra com OpenAI Agents SDK. Ambas expõem endpoints HTTP (localhost:8001 e localhost:8002) para interação. As ferramentas são scripts Python locais e um conector MCP simulado. Não há dependências externas além das APIs dos provedores (Anthropic e OpenAI), acessadas via internet.
+-------------------+
| Seu computador |
| 192.168.56.10 |
| |
| +-------------+ |
| | Claude | |
| | Agent SDK |<--|---> Internet (Anthropic API)
| | (localhost:8001)|
| +-------------+ |
| |
| +-------------+ |
| | OpenAI | |
| | Agents SDK |<--|---> Internet (OpenAI API)
| | (localhost:8002)|
| +-------------+ |
+-------------------+
Equipamentos e software
| Item | Requisito, licença ou versão |
|---|---|
| PC ou VM x86_64 | 2 vCPU, 4 GB RAM, 1 porta Ethernet, Ubuntu 22.04 ou superior |
| Python | PSF · 3.10 ou superior |
| Claude Agent SDK | Apache 2.0 · a versão estável atual |
| OpenAI Agents SDK | MIT · a versão estável atual |
| FastAPI | MIT · a versão estável atual |
| Uvicorn | BSD · a versão estável atual |
| requests | Apache 2.0 · a versão estável atual |
Roteiro
- Preparar o ambiente Python
Crie um ambiente virtual para isolar dependências. Isso evita conflitos e facilita a limpeza.
python3 -m venv agente-lab source agente-lab/bin/activate pip install --upgrade pipO que você deve ver: Prompt do shell mostra (agente-lab) e pip atualizado.
- Instalar Claude Agent SDK e dependências
Instale o SDK do Claude Agent, FastAPI e Uvicorn para expor o agente via HTTP.
pip install claude-agent-sdk-python fastapi uvicornO que você deve ver: Pacotes instalados sem erro.
- Instalar OpenAI Agents SDK e dependências
Instale o SDK do OpenAI Agents, FastAPI e Uvicorn para expor o agente via HTTP.
pip install openai-agents openai fastapi uvicornO que você deve ver: Pacotes instalados sem erro.
- Configurar variáveis de ambiente para segredos
Defina as chaves de API Anthropic e OpenAI em variáveis de ambiente, nunca em código.
export ANTHROPIC_API_KEY='sua-chave-aqui' export OPENAI_API_KEY='sua-chave-aqui'O que você deve ver: Variáveis disponíveis na sessão (confirme com echo $ANTHROPIC_API_KEY).
- Criar ferramenta FAQ local (ambos os agentes)
Implemente uma função Python que consulta um dicionário FAQ local. Isso simula um conhecimento interno.
faq_data = {'horário': '8h às 18h', 'ramal TI': '1234'} def consulta_faq(pergunta): return faq_data.get(pergunta.lower(), 'Não encontrado')O que você deve ver: Função retorna resposta correta para perguntas do FAQ.
- Criar ferramenta de abertura de chamado (ambos os agentes)
Implemente uma função que simula abrir um chamado, salvando em um arquivo local. Isso permite rastreabilidade.
def abrir_chamado(usuario, descricao): with open('chamados.txt', 'a') as f: f.write(f'{usuario}: {descricao}\n') return 'Chamado aberto com sucesso.'O que você deve ver: Arquivo chamados.txt criado e atualizado a cada chamada.
- Criar ferramenta de busca web (ambos os agentes)
Implemente uma função que faz uma busca simples na web (exemplo: consulta um endpoint público). Use requests.
import requests def busca_web(termo): r = requests.get(f'https://duckduckgo.com/html/?q={termo}') if r.status_code == 200: return 'Busca realizada.' return 'Erro na busca.'O que você deve ver: Função retorna 'Busca realizada.' para termos válidos.
- Implementar agente com Claude Agent SDK
Monte o agente Claude com as três ferramentas e prompt de sistema versionado. Exponha endpoint HTTP.
Consulte a documentação oficial do Claude Agent SDK para o padrão de registro de ferramentas e integração FastAPI. Exemplo básico: from claude_agent_sdk import Agent from fastapi import FastAPI app = FastAPI() agent = Agent(system_prompt='v1: Suporte interno', tools=[consulta_faq, abrir_chamado, busca_web]) @app.post('/claude') def chat_claude(input: dict): return agent.run(input['mensagem'])O que você deve ver: Endpoint /claude ativo em localhost:8001, aceitando POST com campo mensagem.
- Implementar agente com OpenAI Agents SDK
Monte o agente OpenAI com as mesmas ferramentas e prompt de sistema versionado. Exponha endpoint HTTP.
Consulte a documentação oficial do OpenAI Agents SDK para o padrão de registro de ferramentas e integração FastAPI. Exemplo básico: from openai_agents import Agent from fastapi import FastAPI app = FastAPI() agent = Agent(name='suporte-interno', instructions='v1: Suporte interno', tools=[consulta_faq, abrir_chamado, busca_web]) @app.post('/openai') def chat_openai(input: dict): return agent.run(input['mensagem'])O que você deve ver: Endpoint /openai ativo em localhost:8002, aceitando POST com campo mensagem.
- Integrar MCP (Model Context Protocol) nos dois agentes
Implemente um endpoint MCP mínimo para ambos, permitindo interoperabilidade. Isso conecta agentes a fluxos externos.
Consulte https://modelcontextprotocol.io/docs para o payload MCP mínimo. Exemplo: @app.post('/mcp') def mcp_endpoint(input: dict): # parse input segundo MCP return agent.run(input['mensagem'])O que você deve ver: Endpoint /mcp ativo em ambos, aceitando payload MCP mínimo.
- Ativar tracing e logs
Configure logs detalhados para todas as ações dos agentes e ferramentas. Isso é obrigatório para revisão e auditoria.
import logging logging.basicConfig(level=logging.INFO) # Adicione logging.info em cada função de ferramenta e entrada/saída do agente.O que você deve ver: Arquivo ou console mostra logs das execuções.
- Rodar ambos os agentes simultaneamente
Inicie os servidores FastAPI/Uvicorn em portas distintas para Claude (8001) e OpenAI (8002).
uvicorn claude_app:app --host 0.0.0.0 --port 8001 & uvicorn openai_app:app --host 0.0.0.0 --port 8002 &O que você deve ver: Ambos os endpoints ativos e acessíveis via curl ou Postman.
Como saber que funcionou
| Teste | Comando | Critério |
|---|---|---|
| Enviar pergunta de FAQ para ambos os agentes | curl -X POST http://localhost:8001/claude -H 'Content-Type: application/json' -d '{"mensagem": "Qual o horário?"}' | Resposta correta do FAQ ('8h às 18h') |
| Abrir chamado via ambos os agentes | curl -X POST http://localhost:8002/openai -H 'Content-Type: application/json' -d '{"mensagem": "Abrir chamado: impressora travou"}' | Resposta 'Chamado aberto com sucesso.' e linha adicionada ao chamados.txt |
| Executar busca web via MCP | curl -X POST http://localhost:8001/mcp -H 'Content-Type: application/json' -d '{"mensagem": "Buscar: Python"}' | Resposta 'Busca realizada.' |
| Verificar logs de tracing | tail -f logs.txt | Entradas detalhadas de cada ação do agente |
| Comparar respostas dos dois agentes para o mesmo input | curl -X POST http://localhost:8002/openai -H 'Content-Type: application/json' -d '{"mensagem": "Qual o ramal TI?"}' | Respostas equivalentes ('1234') |
Troubleshooting
| Sintoma | Causa provável | Correção |
|---|---|---|
| Erro 401 ao chamar API externa | Chave de API não configurada ou inválida | Verifique variáveis de ambiente e permissões da chave |
| Função de ferramenta não executa | Registro incorreto da função no SDK | Confirme assinatura e registro conforme documentação do SDK |
| Endpoint HTTP não responde | Servidor FastAPI/Uvicorn não iniciado ou porta em uso | Verifique logs, portas e reinicie o servidor |
| Logs não aparecem | Configuração de logging ausente ou nível inadequado | Ajuste logging.basicConfig(level=logging.INFO) e reinicie |
| Respostas diferentes entre agentes | Diferença no prompt de sistema ou implementação de ferramenta | Padronize prompts e funções entre ambos |
Segurança e hardening
- Nunca exponha segredos em código ou logs
- Restrinja acesso às portas HTTP a redes confiáveis
- Implemente revisão humana para ações irreversíveis
- Garanta minimização de dados pessoais conforme LGPD
- Limite permissões dos arquivos de log e chamados.txt
Checklist final
Referências
- Claude Agent SDK Documentation · Code.claude (code.claude.com)
- OpenAI Agents SDK (Python) · Openai.github (openai.github.io)
- Model Context Protocol · Modelcontextprotocol (modelcontextprotocol.io)
- FastAPI Documentation · FastAPI (fastapi.tiangolo.com)
- Python Official Documentation · Python Software Foundation (docs.python.org)
- Publicado
- 13/09/2026
- Última revisão
- 13/09/2026
- Versão do conteúdo
- 1.0
- Referências
- 5 oficiais
- Revisão técnica
- redação e revisão por IA, URLs conferidas na publicação
- Status
- Atual
