Laboratório: Agente de Prospecção Comercial com Claude Agent SDK, ElevenLabs e HeyGen
Você terá um agente de IA funcional que pesquisa leads, qualifica por critérios definidos e gera um vídeo de proposta personalizada, usando Python, Claude Agent SDK, ElevenLabs e HeyGen. O laboratório leva cerca de 2 horas.

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
- 13
- Validações
- 4
- Versões da documentação consultada
- Python a versão estável atual · Claude Agent SDK Python a versão estável atual · openai-agents-python a versão estável atual · ElevenLabs Python SDK a versão estável atual · requests a versão estável atual
Implementar um agente de prospecção comercial ponta a ponta, capaz de pesquisar leads fictícios, qualificar com base em critérios objetivos, gerar proposta textual e converter essa proposta em vídeo personalizado com voz sintética. O laboratório cobre a configuração dos SDKs, a orquestração do fluxo com Python, a definição de prompts versionados, ferramentas, casos de teste, guardrails e avaliação automatizada.
Topologia
Um notebook ou VM local executa o agente Python com Claude Agent SDK. O agente se conecta via internet às APIs do Claude (Anthropic), ElevenLabs (voz) e HeyGen (vídeo). Não há servidores externos próprios. Os dados de leads e catálogo são mockados localmente. Endereço de exemplo: 192.168.56.10.
┌─────────────┐
│ Usuário │
└─────┬───────┘
│
┌─────▼─────┐
│ Python │
│(Agente IA)│
└─┬────┬────┘
│ │
│ ├─────────────┐
│ │ │
Claude API ElevenLabs API HeyGen API
│ │ │Equipamentos e software
| Item | Requisito, licença ou versão |
|---|---|
| Notebook ou VM | 2 vCPU, 4 GB RAM, acesso à internet, Python 3.10+ |
| Python | PSF · a versão estável atual |
| Claude Agent SDK Python | Apache-2.0 · a versão estável atual |
| openai-agents-python | MIT · a versão estável atual |
| ElevenLabs Python SDK | MIT · a versão estável atual |
| requests | Apache-2.0 · a versão estável atual |
Roteiro
- Preparar ambiente Python isolado
Crie e ative um ambiente virtual para evitar conflitos de dependências.
python3 -m venv venv source venv/bin/activateO que você deve ver: Prompt do terminal mostra (venv) indicando ambiente ativo.
- Instalar dependências
Instale os SDKs necessários para Claude Agent, ElevenLabs, requests e OpenAI Agents.
pip install claude-agent-sdk-python elevenlabs openai-agents-python requestsO que você deve ver: Pacotes instalados sem erros.
- Configurar variáveis de ambiente para segredos
Defina as chaves de API como variáveis de ambiente para proteger os segredos.
export CLAUDE_API_KEY='SUA_CHAVE_CLAUDE' export ELEVEN_API_KEY='SUA_CHAVE_ELEVENLABS' export HEYGEN_API_KEY='SUA_CHAVE_HEYGEN'O que você deve ver: As variáveis ficam disponíveis na sessão atual.
- Criar arquivo de leads fictícios
Monte um arquivo JSON com leads para simular a pesquisa.
cat > leads.json <<EOF [ {"nome": "Empresa Exemplo", "segmento": "TI", "tamanho": 50, "email": "contato@exemplo.com"}, {"nome": "Comércio Fictício", "segmento": "Varejo", "tamanho": 12, "email": "vendas@ficticio.com"} ] EOFO que você deve ver: Arquivo leads.json criado com dois leads de exemplo.
- Definir prompt de sistema versionado para o agente
Crie um arquivo system_prompt_v1.txt com instruções claras: pesquisar leads, qualificar por segmento e tamanho, gerar proposta objetiva.
cat > system_prompt_v1.txt <<EOF Você é um agente comercial. Sua tarefa é: 1. Pesquisar leads no arquivo leads.json. 2. Qualificar leads do segmento 'TI' com mais de 20 funcionários. 3. Gerar uma proposta de serviço baseada no catálogo fictício. 4. A proposta deve ser objetiva e personalizada. EOFO que você deve ver: Arquivo system_prompt_v1.txt criado.
- Implementar ferramenta de pesquisa de leads
Implemente uma função Python que lê o leads.json e retorna os leads qualificados.
def pesquisar_leads(): import json with open('leads.json') as f: leads = json.load(f) return [lead for lead in leads if lead['segmento'] == 'TI' and lead['tamanho'] > 20]O que você deve ver: Função retorna apenas leads do segmento TI com mais de 20 funcionários.
- Implementar ferramenta de geração de proposta
Implemente uma função Python que recebe um lead e gera uma proposta textual baseada em catálogo fictício.
def gerar_proposta(lead): return f"Olá {lead['nome']},\n\nOferecemos conectividade dedicada de fibra óptica e suporte especializado para empresas de TI. Proposta EXEMPLO: 500 Mbps, instalação em até 10 dias úteis. Consulte condições vigentes.\n\nAtenciosamente,\nEquipe Comercial"O que você deve ver: Função retorna texto objetivo e personalizado para o lead.
- Integrar Claude Agent SDK com as ferramentas
Monte o agente Claude com prompt de sistema, ferramentas e guardrails simples (ex: não gerar proposta para leads não qualificados).
from claude_agent_sdk_python import Agent agent = Agent( name='AgenteComercial', system_prompt=open('system_prompt_v1.txt').read(), tools={'pesquisar_leads': pesquisar_leads, 'gerar_proposta': gerar_proposta}, guardrails={'output': lambda x: 'Proposta' in x} )O que você deve ver: Agente criado sem erros, pronto para orquestrar o fluxo.
- Executar fluxo de prospecção e geração de proposta
Rode o agente para pesquisar, qualificar e gerar proposta para o primeiro lead elegível.
leads = pesquisar_leads() if leads: proposta = gerar_proposta(leads[0]) print(proposta)O que você deve ver: Texto da proposta aparece no terminal.
- Converter proposta em áudio com ElevenLabs
Use o SDK ElevenLabs para sintetizar a proposta em voz.
from elevenlabs import ElevenLabs, Voice el = ElevenLabs(api_key=os.environ['ELEVEN_API_KEY']) audio = el.text_to_speech(text=proposta, voice_id='EXEMPLO_VOICE_ID') with open('proposta.mp3', 'wb') as f: f.write(audio)O que você deve ver: Arquivo proposta.mp3 criado com a proposta falada.
- Gerar vídeo personalizado com HeyGen
Envie o áudio e o texto para a API HeyGen para criar um vídeo de proposta com avatar.
import requests headers = {'x-api-key': os.environ['HEYGEN_API_KEY']} payload = { 'type': 'avatar', 'avatar_id': 'EXEMPLO_AVATAR_ID', 'script': proposta, 'audio_url': 'file://proposta.mp3', 'voice_id': 'EXEMPLO_VOICE_ID', 'output_format': 'mp4' } r = requests.post('https://api.heygen.com/v3/videos', headers=headers, json=payload) print(r.json())O que você deve ver: Resposta JSON com video_id e status 'waiting' ou 'processing'.
- Consultar status do vídeo e baixar resultado
Verifique o status do vídeo até estar 'completed' e faça download do arquivo.
video_id = r.json()['data']['video_id'] while True: resp = requests.get(f'https://api.heygen.com/v3/videos/{video_id}', headers=headers) status = resp.json()['data']['status'] if status == 'completed': video_url = resp.json()['data']['video_url'] break elif status == 'failed': raise Exception('Falha na geração do vídeo') time.sleep(10) # Download video = requests.get(video_url) with open('proposta_video.mp4', 'wb') as f: f.write(video.content)O que você deve ver: Arquivo proposta_video.mp4 salvo localmente.
- Registrar execução e avaliar resultado
Implemente registro simples em log.txt e defina critérios de aprovação: lead correto, proposta personalizada, áudio e vídeo gerados.
with open('log.txt', 'a') as log: log.write(f'Lead: {leads[0]['nome']}, Status: OK\n')O que você deve ver: Linha registrada em log.txt; todos os artefatos gerados.
Como saber que funcionou
| Teste | Comando | Critério |
|---|---|---|
| Verificar se apenas leads qualificados recebem proposta | cat log.txt | Só leads do segmento TI com mais de 20 funcionários aparecem no log. |
| Conferir personalização da proposta | cat proposta.mp3 | Nome do lead e segmento aparecem no áudio. |
| Checar geração e reprodução do vídeo | ffplay proposta_video.mp4 | Avatar fala a proposta personalizada. |
| Avaliar registro de execução | cat log.txt | Cada execução gera uma linha com nome do lead e status OK. |
Troubleshooting
| Sintoma | Causa provável | Correção |
|---|---|---|
| Erro de autenticação na Claude, ElevenLabs ou HeyGen | Chave de API ausente ou incorreta | Verifique variáveis de ambiente e chaves |
| Arquivo proposta.mp3 não criado | Erro na chamada do ElevenLabs | Confirme voice_id e limite de caracteres |
| Status do vídeo HeyGen não sai de 'waiting' | Áudio ou parâmetros inválidos | Revise payload e formato do áudio |
| Proposta não personalizada | Função gerar_proposta não usa dados do lead | Ajuste o template da proposta |
Segurança e hardening
- Nunca inclua chaves de API em código ou logs
- Minimize dados pessoais nos exemplos e artefatos
- Garanta que arquivos de áudio e vídeo não exponham informações sensíveis
- Restrinja permissões de leitura e gravação dos arquivos de segredos
- Apague artefatos sensíveis após o uso
Checklist final
Referências
- Claude Agent SDK Python · Code.claude (code.claude.com)
- ElevenLabs API Docs · Elevenlabs (elevenlabs.io)
- HeyGen API Docs · Developers.heygen (developers.heygen.com)
- Model Context Protocol · Modelcontextprotocol (modelcontextprotocol.io)
- Python Docs · 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
