Math Challenge
Mais

Larry Profe — portando Larry para Math Challenge

mc-37 · Publicado: · por Math Challenge Research · 2.544 palavras

Resumo executivo

Larry já existe no iOS como copiloto EN/ES sobre Workers AI (kimi-k2.6 → gpt-oss-120b → resposta enlatada), com um prompt de sistema bilíngue único, um protocolo de “tool calling” feito à mão (JSON em uma linha) e auditoria durável no D1. Nada disso usa a API do Claude — seria a primeira integração do Claude neste repositório.

O dono já decidiu: Larry Profe usa a API do Claude com roteamento por dificuldade (Haiku/Sonnet/Opus). O precedente mais próximo no repositório não é o chat livre, mas src/larry/contador/explain.ts: uma descoberta determinística entra, um LLM a explica em linguagem natural sem recalcular nada, com fallback para um modelo. Larry Profe deve seguir exatamente esse padrão: o motor de avaliação decide o que está certo ou errado; Claude apenas explica, no idioma, idade e tom corretos, nunca envergonhando a criança.

136 palavras

Este documento foi traduzido do original em inglês por Claude (Anthropic) e verificado automaticamente contra a fonte: cada número, URL, marcador de citação e marca [unverified] corresponde ao original. A prosa em si ainda não foi revisada por um editor humano nativo.

Estado de verificação

Este documento não traz nenhuma marca [unverified]. Cada afirmação está ligada a uma fonte numerada abaixo.

[unverified] significa que a afirmação está na pesquisa mas não foi confirmada contra uma fonte primária na sessão que a produziu. É publicada em vez de removida, porque um corpus que esconde suas lacunas não é verificável.

Como esta pesquisa foi produzida

Os 47 documentos foram produzidos em 2026-07-31 por agentes independentes, cada um com instrução de não inventar citações e de marcar como [unverified] o que não pudesse confirmar contra uma fonte primária. A cota de busca na web da sessão se esgotou no meio do caminho e os agentes seguintes trabalharam por download direto de fontes primárias. Vários sites (ftc.gov, ico.org.uk) bloqueiam download automatizado, e por isso certas afirmações jurídicas estão marcadas de propósito.

O que existe hoje — caminhos de arquivos e referências de linha deste repositório

O que deve mudar para um tutor de matemática infantil

  1. Tom, não “honest coach”. A persona do iOS tem como alvo engenheiros adultos B2B que podem aceitar uma correção direta. Uma criança nunca deve se sentir envergonhada — mais rigoroso que “humor nunca zomba das características das pessoas”.
  2. Cinco idiomas, não dois. O tipo 'en'|'es' e o detector de lista de palavras em locale.ts não se estendem a FR/PT/DE, e o padrão de prompts.ts “escreva cada linha duas vezes” multiplicaria em 5× os tokens do prompt para conteúdo quase nunca usado por chamada — construa um prompt de idioma único por locale.
  3. A correção matemática não pode depender do LLM. Uma resposta errada da ferramenta IOS é uma pista de UI ruim; uma explicação errada do Larry Profe ensina ativamente matemática incorreta. É exatamente por isso que o formato de contador/explain.ts “LLM explica, nunca calcula” está correto e o loop livre de chat.ts não está.
  4. Vocabulário por faixa etária, explícito no prompt (faixa de idade como parâmetro), não deixado para o modelo inferir a partir do tom.
  5. Roteamento de modelo é novo — ADR-006 descreve roteamento híbrido Workers-AI-first; Larry Profe inverte isso (Claude-first, três níveis de dificuldade, sem Workers AI), conforme o briefing do proprietário.
  6. Retire ou suavize o estado de avatar denying para um produto infantil — a linguagem corporal de balançar a cabeça (larry.css:87-98) lê-se como “você está errado”; prefira thinkingpresenting para correções.

Tabela de roteamento de modelo

Os IDs de modelo e os preços vêm do skill claude-api (em cache em 2026-06-24; o preço de introdução do Sonnet 5 vale até 2026-08-31), não da memória de treinamento. As estimativas de custo pressupõem um prefixo de system prompt compartilhado (coberto em cache mais adiante) mais um payload por chamada de {problema, passos do aluno, veredicto de correção}; são estimativas a validar contra prompts reais, não medições.

Faixa de dificuldadeID do modelo$/MTok entrada / saídaTokens estimados entrada → saídaCusto estimado / 1.000 explicaçõesMeta de latência
Aritmética básicaclaude-haiku-4-5$1,00 / $5,00~300 → ~150~$1,05< 1,5 s, sem streaming necessário
Nível intermediário (frações, álgebra, geometria)claude-sonnet-5$3,00 / $15,00 (intro $2/$10 até 2026-08-31)~500 → ~300~$6,00 (intro ~$4,00)2–4 s, stream se > ~3 s
Avançado (cálculo tensorial, integrais duplas, provas)claude-opus-5$5,00 / $25,00~800 → ~600 + pensamento adaptativo~$19 floor, realisticamente $35–605–15 s; deve stream

A arquitetura do prompt — esqueleto proposto, 5 idiomas, regras rígidas

Partindo do padrão “cada linha duas vezes” de prompts.ts, construa um prompt por (localidade, faixa etária, nível), com o inglês exibido (FR/PT/DE/ES são renderizações paralelas de um único idioma, não concatenações):

You are Larry Profe, Larry the orange rhinoceros, teaching math to
[AGE_BAND] students. Same character as always — just teaching math now.

WHAT YOU RECEIVE: a JSON verdict from the grading engine (problem, student
steps, which were correct, where the error started, its classification).
You do NOT grade or recompute. Every number/step you reference MUST come
verbatim from that JSON.

WHAT YOU DO:
1. Say specifically what the student did right (not just "good job").
2. Explain what went wrong and why — the real misconception, not "wrong answer."
3. Walk through the correct process, like a patient professor, at a level a
   [AGE_BAND] student can follow.
4. End on encouragement, never on the mistake.

HARD RULES:
- Never call a student "bad at math," "slow," or any variant — mistakes are
  how math is learned.
- Never use sarcasm, exasperation, or a disappointed tone, even softened.
- Never invent or alter a number/step/verdict not in the provided JSON.
- Never compare the student to other students or a class average.
- Never skip "what you did right," even if everything was wrong — find
  something true and specific (effort, a correct partial step, right
  approach/wrong arithmetic).
- If asked something outside math tutoring, redirect kindly to a
  parent/teacher.

LANGUAGE: Reply only in [LOCALE_NAME]. Never mix languages or offer translation.
VOCABULARY: [age-band guidance — e.g. ages 6-8: concrete objects, no jargon;
ages 13+: precise terminology expected.]

Reserve os esquemas de ferramenta output_config.format / strict: true para a transferência do motor de avaliação → Larry-Profe (o backend próprio do Math Challenge valida esse JSON, não o Claude) — a saída deste prompt é prosa simples transmitida em fluxo, não dados estruturados.

Estratégia de cache e controle de custos

Duas camadas independentes:

  1. Cache de prompt do Claude no prefixo estável (persona + regras + um idioma + uma faixa etária). Por modelo, por prefixo — gravações custam 1,25× (TTL de 5 min) ou 2× (1 h), leituras ~0,1×. Um TTL de 1 h com pré-aquecimento periódico (max_tokens: 0 requests, conforme shared/prompt-caching.md) atende ao tráfego intenso durante horas de lição de casa. Ignorar para Haiku a menos que o prefixo ultrapasse 4.096 tokens (veja acima).

  2. Cache de concepções equivocadas em nível de aplicação (D1/KV) — o mecanismo que o briefing do proprietário realmente solicita. Armazene em cache toda a explicação gerada, usando como chave (topic, misconception-classification, age-band, locale) — não a instância exata do problema, de modo que diferentes problemas de fração com o mesmo erro de “esquecer o denominador comum” utilizem a mesma entrada de cache. Reflete o padrão de consulta estática existente S3_ERROR_KB/METRIC_KB (src/larry/tools.ts:59-135), porém preenchido pela saída do Claude no momento da geração; recorra a uma chamada ao vivo em caso de falta e preencha o cache, espelhando a estrutura AI-then-template de contador/explain.ts. Registre cache_hit: boolean e os reais usage.input_tokens/usage.output_tokens em uma tabela de auditoria análoga à migração 0011 — não a estimativa text.length/4 que o audit.ts usa hoje.

  3. API em lote para semeadura em início frio — pré-gere as N principais concepções equivocadas por tópico antes do lançamento com 50% de desconto, convertendo a maior parte do tráfego inicial em leituras de cache desde o primeiro dia.

Implicações de design

  1. Larry Profe é uma nova integração com a API do Claude; não o roteie através do gateway Workers AI da IOS — o proprietário quer Claude, e o ADR-006 é uma arquitetura diferente, orientada a Workers-AI, para outro produto.
  2. Modele o motor de avaliação como fonte da verdade, Claude apenas como explicador — siga a estrutura de contador/explain.ts, não o loop de ferramenta livre de chat.ts.
  3. Elimine o padrão de prompt bilíngue-inline; um prompt por localidade, já que 5 idiomas tornam a deriva entre idiomas dentro de um único prompt cara e propensa a erros.
  4. Receba a localidade como um parâmetro explícito do cliente (Math Challenge já possui uma configuração de idioma) em vez de inferi-la como locale.ts faz para a IOS.
  5. Construa o roteador de nível de dificuldade no backend do Math Challenge (ao lado da avaliação, que já conhece tópico/nível) — nunca deixe o Claude escolher seu próprio nível de modelo.
  6. Trate effort como um segundo eixo de roteamento independente da escolha do modelo; comece de forma conservadora (medium no Opus 5) já que é a alavanca principal contra o aumento de custo de tokens de pensamento.
  7. Registre os campos reais de usage do Claude no repositório de auditoria desde o primeiro dia, em vez de repetir a estimativa de contagem de caracteres de audit.ts.
  8. Escreva um cânon de regras rígidas de segurança infantil paralelo à lista de cinco itens da §4.2 de docs/larry.md, mas do zero — as regras da IOS tratam de segurança de dados, não de segurança emocional.
  9. Reutilize LarryAvatar e sua máquina de estados sem alterações, mas reconsidere se denying deveria ser acionado para uma criança.
  10. Mantenha o cache de concepções equivocadas e o cache de prompt do Claude como sistemas distintos — eles resolvem problemas diferentes (evitar reenvio de prefixo vs. evitar regeneração de saída semanticamente idêntica) e combiná-los entrega menos do objetivo “uma geração, não mil”.
  11. Use a API em lote para pré-popular o cache de concepções equivocadas antes do lançamento e para retroalimentar novos tipos de concepções encontradas em produção.
  12. Cada regra rígida e linha de prompt precisa de cópia revisada por humanos em EN/ES/FR/PT/DE — o tom que soa encorajador em um idioma pode parecer condescendente em outro; não deixe isso para tradução em tempo de execução.

Perguntas abertas para o dono do projeto

  1. O roteador de nível de dificuldade reside no backend do Math Challenge (tags do motor de avaliação tópico/nível), ou o Larry Profe deve reclassificar a dificuldade a partir do texto do problema?
  2. Quais são as faixas etárias reais (K-2/3-5/6-8/9-12, ou por série)? Isso determina tanto as variantes de vocabulário quanto o número de combinações de prompts em cache a serem criadas (localidade × faixa-etária × nível pode ser 5×4×3 = 60).
  3. O effort do Opus 5 deve ser fixo por nível, ou ajustável por tópico dentro de “avançado” (uma dupla integral e uma prova completa de cálculo tensorial podem precisar de esforços diferentes)?
  4. Existe um orçamento de latência a nível de produto (ex.: “deve iniciar o streaming em até 2 s ou mostrar um estado de carregamento”) que deve controlar o streaming padrão por nível?
  5. Quem revisa a cópia das regras rígidas e prompts em FR/PT/DE — um revisor de conteúdo educacional multilíngue, ou a tradução automática como rascunho inicial a partir da versão EN/ES?
  6. O cache de concepções equivocadas precisa de TTL, ou uma explicação em cache para uma concepção rara pode ser servida indefinidamente?
  7. A seção “o que o estudante fez certo” deve sempre encontrar algo, mesmo para uma resposta em branco ou adivinhada — e, se sim, qual é o limite honesto (ex.: “você tentou”)?

Fontes

Este documento cita arquivos do repositório e outras pesquisas, não uma lista numerada de fontes.

Perguntas que este documento deixa em aberto

Ficam sem resposta de propósito. São listadas, não resolvidas — transformá-las em FAQ exigiria inventar respostas que o documento não tem.

Um de 51 documentos de pesquisa, 168.346 palavras no total, contadas na compilação a partir dos próprios arquivos. Ler este documento no repositório