Verificando acesso...

MÓDULO 6.2 beta

🚀 Operacionalização avançada: A/B, canários, rollback (beta)

Levar para produção: A/B em prompt, canários por modelo, rollback, observabilidade contínua. O que se aprende rodando, não no laboratório.

6
Tópicos
65
Minutos
Avançado
Nível
Avançado
Tipo

Tudo que você aprendeu até aqui se prova em produção. Aqui você vê padrões para deploy seguro: A/B, canário, rollback rápido, observabilidade. Este módulo é beta — práticas amadurecem com a indústria.

🚦 Anatomia do deploy seguro de LLM

Não é sobre ter coragem — é sobre ter os switches certos antes de precisar deles.

💡 Implemente kill switch antes de qualquer rollout

Não confie em rollback. Kill switch deve estar em produção e testado antes da primeira liberação. Sem isso, você está exposto a desastre.

1

🆎 A/B em prompt: variant + métrica primária

Decisão por dado, não opinião

A/B em prompt: roteia % do tráfego para variant, mede métrica primária com significância estatística. Distingue 'achei que melhorou' de 'melhorou medido'. Atenção a sample size: 100 amostras raramente bastam; calcule N necessário antes de rodar.

roteamento e cálculo de significância
from scipy.stats import ttest_ind

def roteia(user_id: str) -> str:
    return 'v1.1.0' if hash(user_id) % 100 < 10 else 'v1.0.0'

# Após coletar dados:
scores_a = [...]  # n=500 da v1.0.0
scores_b = [...]  # n=500 da v1.1.0
t, p = ttest_ind(scores_a, scores_b)
if p < 0.05 and scores_b.mean() > scores_a.mean():
    print('promote v1.1.0')
📑 Resumo navegável
O que é: Roteia % do tráfego para variant. Mede métrica primária (groundedness, satisfação) com significância estatística.
Por que aprender: Mudanças em prompt são frequentes; A/B distingue 'achei que melhorou' de 'melhorou medido'.
Conceitos-chave: A/B test, variant routing, statistical significance, sample size.
2

🐤 Canário: rollout incremental

5% → 25% → 100%

Canário é rollout incremental: 5% → 25% → 100% se métricas mantêm. Mudança de modelo (de Claude 4.5 para 4.6) pode quebrar 5% dos casos. Canário pega antes do fan-out total. Sem canário, você está apostando sua produção na qualidade do release notes do provedor.

cronograma típico de canário
Fase% tráfegoDuraçãoCritério para subir
1. canário inicial5%24-48hp95 ≤ baseline + 10%, sem incidentes
2. canário expandido25%24-48hmétricas qualitativas estáveis
3. promoção plena100%
📑 Resumo navegável
O que é: Liberar mudança para 5% do tráfego, observar métricas + custo + erro. Subir gradualmente se OK.
Por que aprender: Mudança de modelo (de Claude 4.5 para 4.6) pode quebrar 5% dos casos. Canário pega antes do fan-out.
Conceitos-chave: Canary release, progressive rollout, blast radius, kill switch.
3

↩️ Rollback rápido: pré-requisito de canário

1 click

Rollback em <1 min é pré-requisito de canário. Versão anterior fica 'quente' (warm cache, modelo carregado). Botão único reverte. Sem isso, canário é teatro: você descobre o problema mas não tem como sair dele rápido.

feature flag para hot rollback
VARIANT_ATIVO = featureflag.get('llm_variant', 'v1.0.0')

def chamar_llm(query):
    if VARIANT_ATIVO == 'v1.0.0':
        return pipeline_v1_0_0(query)
    elif VARIANT_ATIVO == 'v1.1.0':
        return pipeline_v1_1_0(query)
    # rollback = mudar VARIANT_ATIVO no flag service (segundos)
📑 Resumo navegável
O que é: Botão 'voltar' que reverte para versão anterior em segundos. Versão anterior precisa estar 'quente' (warm cache).
Por que aprender: Sem rollback, canário é teatro. Quando dá problema, você precisa MUITO de voltar rápido.
Conceitos-chave: Hot rollback, warm standby, version pinning, traffic shift.
4

📈 Observabilidade contínua: o que monitorar

Métricas + alertas

Em produção, problemas se manifestam em números antes de virarem reclamações. Dashboards essenciais: latência p50/p95, erro rate, custo, hit de cache, qualidade contínua (judge automático em %). Alertas em desvios significativos — não em valor absoluto.

SLOs típicos para LLM em produção

  • Disponibilidade: 99.5% (provedor + retries).
  • Latência p95: ≤ 3× p50 (detecta cauda gorda).
  • Erro rate: ≤ 1% (excluindo erros do usuário).
  • Hit de cache: ≥ 70% em chats com prefixo grande.
  • Qualidade contínua: ≥ baseline -2 pp (judge automático).
📑 Resumo navegável
O que é: Dashboards: latência p50/p95, erro rate, custo, hit de cache, qualidade (LLM-judge contínuo). Alertas em desvios.
Por que aprender: Em produção, problemas se manifestam por números antes de virarem reclamação. Instrumentação detecta cedo.
Conceitos-chave: SLO, SLI, alerting, dashboard, distribution shift detection.
5

🛑 Kill switch: parar feature instantaneamente

Botão de emergência

Kill switch é flag de configuração que desabilita a feature LLM instantaneamente. Tráfego volta para fallback estático ou erro educativo. Modelo do provedor pode degradar do nada — kill switch dá tempo de investigar sem disaster. Implemente ANTES de qualquer rollout.

kill switch + fallback
def chamar_modelo(query):
    if not featureflag.is_enabled('llm_classify'):
        return fallback_estatico(query)  # ex.: regra heurística simples
    try:
        return pipeline_llm(query)
    except (ProviderError, TimeoutError) as e:
        log.error(f'llm fail: {e}')
        return fallback_estatico(query)
📑 Resumo navegável
O que é: Flag de configuração que desabilita a feature LLM. Tráfego volta para fallback estático ou erro educativo.
Por que aprender: Modelo do provedor pode degradar do nada. Kill switch dá tempo de investigar sem disaster.
Conceitos-chave: Feature flag, kill switch, fallback, graceful degradation.
6

🔁 Eval contínuo em produção

Não só pré-deploy

Eval pré-deploy é necessário mas não suficiente. Modelos do provedor mudam; corpus muda; usuários mudam. Eval contínuo em produção (1-5% do tráfego avaliado por LLM-judge automático) captura drift sem esperar reclamação. Cuidado: judge consome tokens — orçar.

eval contínuo com sampling
from random import random

def chamar_llm_com_eval(query):
    resp = pipeline_llm(query)
    # 2% do tráfego é judgeado em background
    if random() < 0.02:
        scheduler.submit(judge_async, query, resp)
    return resp

def judge_async(query, resp):
    score = llm_judge_groundedness(query, resp)
    metrics.gauge('quality_continuous').record(score, tags={'variant': VARIANT_ATIVO})
📑 Resumo navegável
O que é: % pequena do tráfego é avaliada em tempo real (LLM-judge automático). Detecta drift sem esperar reclamação.
Por que aprender: Modelos provider mudam; corpus muda; usuários mudam. Eval só pré-deploy envelhece.
Conceitos-chave: Production eval, live judge, drift detection, sampling rate.

📑 Resumo navegável dos tópicos

1 🆎 A/B em prompt: variant + métrica primária — Decisão por dado, não opinião
O que é: Roteia % do tráfego para variant. Mede métrica primária (groundedness, satisfação) com significância estatística.
Por que aprender: Mudanças em prompt são frequentes; A/B distingue 'achei que melhorou' de 'melhorou medido'.
Conceitos-chave: A/B test, variant routing, statistical significance, sample size.
2 🐤 Canário: rollout incremental — 5% → 25% → 100%
O que é: Liberar mudança para 5% do tráfego, observar métricas + custo + erro. Subir gradualmente se OK.
Por que aprender: Mudança de modelo (de Claude 4.5 para 4.6) pode quebrar 5% dos casos. Canário pega antes do fan-out.
Conceitos-chave: Canary release, progressive rollout, blast radius, kill switch.
3 ↩️ Rollback rápido: pré-requisito de canário — 1 click
O que é: Botão 'voltar' que reverte para versão anterior em segundos. Versão anterior precisa estar 'quente' (warm cache).
Por que aprender: Sem rollback, canário é teatro. Quando dá problema, você precisa MUITO de voltar rápido.
Conceitos-chave: Hot rollback, warm standby, version pinning, traffic shift.
4 📈 Observabilidade contínua: o que monitorar — Métricas + alertas
O que é: Dashboards: latência p50/p95, erro rate, custo, hit de cache, qualidade (LLM-judge contínuo). Alertas em desvios.
Por que aprender: Em produção, problemas se manifestam por números antes de virarem reclamação. Instrumentação detecta cedo.
Conceitos-chave: SLO, SLI, alerting, dashboard, distribution shift detection.
5 🛑 Kill switch: parar feature instantaneamente — Botão de emergência
O que é: Flag de configuração que desabilita a feature LLM. Tráfego volta para fallback estático ou erro educativo.
Por que aprender: Modelo do provedor pode degradar do nada. Kill switch dá tempo de investigar sem disaster.
Conceitos-chave: Feature flag, kill switch, fallback, graceful degradation.
6 🔁 Eval contínuo em produção — Não só pré-deploy
O que é: % pequena do tráfego é avaliada em tempo real (LLM-judge automático). Detecta drift sem esperar reclamação.
Por que aprender: Modelos provider mudam; corpus muda; usuários mudam. Eval só pré-deploy envelhece.
Conceitos-chave: Production eval, live judge, drift detection, sampling rate.

✓ O que FAZER

  • A/B com métrica primária e sample size calculado
  • Canário 5% → 25% → 100% por dia
  • Kill switch testado e documentado
  • Eval contínuo em produção sampling 1-5%

✗ O que NÃO fazer

  • Eyeballing 'parece melhor'
  • Big bang rollout
  • 'Vamos torcer pra não dar problema'
  • Eval só em CI

🚫 Quando NÃO usar

💻 Exemplo de código

# Esquema de feature flag + canário
from random import random

def chamar_modelo(query: str, user_id: str) -> str:
    # Kill switch — flag externo (ex.: ConfigCat, LaunchDarkly, env var)
    if feature_flag("llm_enabled") is False:
        return fallback_estatico(query)

    # Canário: 5% recebe variant nova
    if hash(user_id) % 100 < 5:
        variant = "v1.1.0"
    else:
        variant = "v1.0.0"  # estável

    resposta = pipeline_llm(query, variant=variant)

    # Eval contínuo: 1% do tráfego é judgeado
    if random() < 0.01:
        score = judge_async(query, resposta)
        emit_metric("groundedness", score, tags={"variant": variant})

    return resposta

🏋️ Exercício hands-on

Adicione A/B + canário + kill switch + eval contínuo ao P5 (pipeline em produção). Demonstre rollback em 1 min. Em projetos/P5/.

📚 Bibliografia

🎯 Resumo do Módulo

  • A/B em prompt com métrica primária e significância.
  • Canário 5%→25%→100% — não big bang.
  • Kill switch antes de qualquer rollout.
  • Rollback hot <1 min — pré-requisito de canário.
  • Eval contínuo em produção captura drift.

Próximo Módulo:

Projeto Final P5 — Pipeline em produção