00 Configuração
Notas do instrutor para o módulo 00 — tempo, roteiro, falhas comuns e etapas de recuperação.
Guia do facilitador para a lição 00 Configuração.
Antes da sessão — provisione uma chave compartilhada para os participantes (uso justo)
Em uma sessão pública com instrutor, não entregue sua chave pessoal do OpenRouter — nem uma chave sem limite — a desconhecidos. A API de gerenciamento (provisionamento) do OpenRouter cria programaticamente chaves específicas com um limite rígido de créditos, mantendo o custo do workshop limitado e justo.
1. Crie uma chave de gerenciamento (uma vez). OpenRouter → Settings → Management API Keys (openrouter.ai/settings/management-keys) → Create New Key. Ela pode criar, inspecionar e excluir outras chaves e gastar na sua conta; trate-a como credencial administrativa.
export OPENROUTER_PROVISIONING_KEY=sk-or-v1-<management-key> # instructor only — never share2. Provisione a chave compartilhada com limite rígido. O repositório inclui o auxiliar (scripts/provision_workshop_keys.py), que chama POST https://openrouter.ai/api/v1/keys:
# one shared key the whole room uses, capped at $20 total (reset daily at 00:00 UTC):
python -m scripts.provision_workshop_keys --name "Agent Arena $(date +%F)" --limit 20 --dailyA resposta de criação exibe a string da chave uma única vez; copie-a e entregue-a como OPENROUTER_API_KEY. Depois, somente o hash pode ser recuperado para inspeção ou exclusão. Prefere curl puro? Use a mesma chamada:
curl -s https://openrouter.ai/api/v1/keys \
-H "Authorization: Bearer $OPENROUTER_PROVISIONING_KEY" \
-H "content-type: application/json" \
-d '{"name":"Agent Arena workshop","limit":20}'Mais justo para turmas grandes. Com uma chave compartilhada, uma pessoa pode consumir todo o orçamento. Para mais de 20 participantes, crie uma chave limitada por pessoa:
python -m scripts.provision_workshop_keys --name "Agent Arena $(date +%F)" --limit 2 --count 30Isso cria 30 chaves, cada uma limitada a US$ 2. Distribua uma por participante.
3. Monitore e limpe. Inspecione os gastos durante a sessão e exclua as chaves ao terminar:
python -m scripts.provision_workshop_keys --list
python -m scripts.provision_workshop_keys --delete <keyHash>A chave de gerenciamento pode gastar e criar/excluir chaves na sua conta. Mantenha-a somente no .env do instrutor, nunca em materiais, slides ou no repositório compartilhado. Os participantes recebem apenas a chave provisionada normal e limitada sk-or-v1-….
Dimensionamento: os modelos são da categoria econômica flash-lite e a grade tem apenas 6 × 3 = 18 configurações. Um limite compartilhado de US$ 20 cobre com folga uma turma inteira executando a Arena algumas vezes; é uma proteção contra loops fora de controle, não um orçamento apertado.
Tempo
~25 a 30 minutos quando as contas já existem; reserve mais tempo para criá-las.
- 5 min — criar as três contas (OpenRouter, Langfuse Cloud e ClickHouse Cloud) se isso não foi feito no dia anterior.
- 5 min — clonar o repositório, criar o ambiente virtual e instalar dependências.
- 5 min — preencher
.env. - 5 min — executar
source .env && scripts/arena.sh upe confirmar o dashboard emhttp://localhost:5174.
Antes da sessão, abra OpenRouter → Settings → Privacy → Data Policies → Zero Data Retention, desative Non-frontier (cinza/desligado) e teste o Qwen com a chave do participante. O Qwen usa o endpoint sem ZDR da Alibaba; ativar ZDR para modelos non-frontier gera No endpoints available matching your guardrail restrictions and data policy mesmo com a Alibaba permitida e guardrails flexíveis. Essa configuração é da conta e não pode ser relaxada pela API de gerenciamento nem por parâmetro. Use-a somente para a carga sintética do workshop e respeite as exigências da sua organização para dados reais.
Roteiro
- Comece nomeando as três contas — OpenRouter, ClickHouse Cloud e Langfuse Cloud — e deixe claro que o Langfuse entra no primeiro módulo, antes da escolha de qualquer modelo. Ele não é um complemento de produção adicionado no Módulo 03: executará a competição e preservará as evidências ao longo do lançamento, investigação e melhoria.
- Aponte o caminho de código compartilhado no diagrama:
agents/é usado poreval/harness.py(benchmark) eserving/api.py(produção), portanto o que é medido hoje é exatamente o que será lançado no Módulo 03. - Narre o que
scripts/arena.sh upfaz: cria o bancoarena, o usuário somente leituraarena_ro, gera dados sintéticos de e-commerce no ClickHouse, cria as viewsv_*e inicia a API e a interface web do dashboard. - Avise que a aba Leaderboard estará vazia ao fim do módulo. Isso é correto e prepara o Módulo 01.
Falhas comuns
- Placeholder
OPENROUTER_API_KEYmantido comosk-or-...— o harness falhará com401ao chamar um modelo no Módulo 01. Peça que confirmem agora uma chave real em.env. ARENA_RO_PASSWORDvazio —scripts/arena.sh upainda criaarena_ro, mas a política de senhas do serviço pode rejeitar o cliente. Defina qualquer valor não vazio.- Serviço ClickHouse Cloud ainda provisionando — um serviço novo pode levar alguns minutos para aceitar conexões; espere e execute
scripts/arena.sh upnovamente. .envnão carregado — executesource .env && scripts/arena.sh upna mesma linha;scripts/arena.sh upsozinho em um shell novo falha por ausência deCLICKHOUSE_CLOUD_*.- Porta 5174 (ou 8000) em uso — há um processo antigo.
scripts/arena.sh stoplimpa os servidores antes de repetirup.
Etapas de recuperação
- Recrie tudo com
source .env && scripts/arena.sh up. É idempotente, não usa Aurora, ClickPipes ou ClickStack e recria o bancoarena, o usuárioarena_ro, os dados sintéticos e as viewsv_*, depois reinicia a API e a interface. Os resultados do benchmark permanecem no Langfuse. - Se apenas os servidores locais travaram,
scripts/arena.sh stopseguido descripts/arena.sh serveé mais rápido que umupcompleto. - Verifique o estado com
scripts/arena.sh status; ele mostra a API, a interface e a contagem de linhas de cada viewv_*. - Se o
.envainda contém placeholders, obtenha a credencial real e executescripts/arena.sh upnovamente.