Math Challenge
Mais

Larry Profe — trazer o Larry para o Math Challenge

mc-37 · Publicado: · por Math Challenge Research · 2544 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 bilingue único, um protocolo de "tool calling" feito à mão (JSON numa 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 proprietário 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 explica‑a em linguagem natural sem recalcular nada, com recurso a modelo. Larry Profe deve seguir exatamente esse padrão: o motor de avaliação decide o que está certo ou errado; o Claude apenas explica, no idioma, idade e tom corretos, nunca envergonhando a criança.

134 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 revista por um editor humano nativo.

Estado de verificação

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

[unverified] significa que a afirmação está na investigação 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 as suas lacunas não é verificável.

Como esta investigação foi produzida

Os 47 documentos foram produzidos a 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 quota de pesquisa na web da sessão esgotou-se a meio e os agentes seguintes trabalharam por descarregamento directo de fontes primárias. Vários sítios (ftc.gov, ico.org.uk) bloqueiam o descarregamento automatizado, e por isso certas afirmações jurídicas estão marcadas de propósito.

O que existe hoje — caminhos de ficheiros e referências de linhas neste repositório

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

  1. Tom, não “treinador honesto”. A persona do iOS destina‑se a engenheiros B2B adultos que podem aceitar uma correção direta. Uma criança nunca deve sentir vergonha — mais rigoroso que “o humor nunca zomba das características das pessoas”.
  2. Cinco línguas, não duas. 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 “escrever cada linha duas vezes” multiplicaria por 5 os tokens do prompt para conteúdo maioritariamente não usado por chamada — em vez disso, criar 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 má sugestão UI; uma explicação errada do Larry Profe ensina ativamente matemática incorreta. É precisamente por isso que o formato de contador/explain.ts — “LLM explica, nunca calcula” — está correto e o ciclo livre de chat.ts não o está.
  4. Vocabulário por faixa etária, explícito no prompt (faixa de idade como parâmetro), não deixado ao modelo para inferir a partir do tom.
  5. O roteamento de modelo é novo — o ADR‑006 descreve um roteamento híbrido Workers‑AI‑first; o Larry Profe inverte isto (Claude‑first, três níveis de dificuldade, sem Workers AI), conforme o briefing do proprietário.
  6. Retirar ou suavizar 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 “estás errado”; preferir thinkingpresenting para correções.

Tabela de roteamento de modelo

Pricing/model IDs are from the claude-api skill (cached 2026-06-24; Sonnet 5 intro pricing runs through 2026-08-31), not training memory. Cost estimates assume a shared system-prompt prefix (covered under caching below) plus a per-call payload of {problem, student steps, grading verdict}; figures are estimates to validate against real prompts, not measurements.

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
Médio (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 piso, realisticamente $35–60 quando tokens de pensamento são contabilizados5–15 s; deve fazer streaming

Notes:

A arquitetura dos prompts — esqueleto proposto, 5 línguas, regras rígidas

A partir do padrão «cada linha duas vezes» de prompts.ts, criar um prompt por (local, faixa etária, nível), com o inglês apresentado (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.]

Reservar output_config.format / strict: true para os esquemas de ferramentas do motor de avaliação → entrega a Larry‑Profe (o backend do Math Challenge valida esse JSON, não o Claude) — a saída deste prompt é prosa transmitida em fluxo, não dados estruturados.

Estratégia de caching e controlo de custos

Duas camadas independentes:

  1. Caching de prompts do Claude no prefixo estável (persona + regras + um idioma + uma faixa etária). Por modelo, por prefixo — custo de escrita 1,25× (TTL de 5 min) ou 2× (1 hora), leituras ~0,1×. Um TTL de 1 hora com pré‑aquecimento periódico (max_tokens: 0 requests, conforme shared/prompt-caching.md) adapta‑se ao tráfego de períodos de trabalhos de casa. Saltar para Haiku a menos que o prefixo ultrapasse 4.096 tokens (ver acima).
  2. Cache de conceções erradas a nível de aplicação (D1/KV) — o mecanismo que o próprio briefing do proprietário realmente pede. Cachear a explicação completa gerada, indexada por (topic, misconception-classification, age-band, locale) — não a instância exata do problema, por isso diferentes frações com o mesmo erro «esqueceu o denominador comum» utilizam a mesma entrada de cache. Reflete o padrão estático S3_ERROR_KB/METRIC_KB (src/larry/tools.ts:59-135), mas preenchido pela saída do Claude no momento da geração; em caso de miss, recorre a uma chamada ao vivo e preenche o cache, espelhando a forma AI‑then‑template de contador/explain.ts. Registar cache_hit: boolean e os reais usage.input_tokens/usage.output_tokens numa tabela de auditoria análoga à migração 0011 — não a estimativa audit.ts baseada em text.length/4 que se usa hoje.
  3. API em lote para semeadura a frio — pré‑gerar as N principais conceções erradas por tópico antes do lançamento a 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 da API Claude; não encaminhá‑lo pelo gateway Workers AI da IOS — o proprietário quer Claude, e o ADR‑006 é uma arquitetura distinta, centrada em Workers‑AI, para outro produto.
  2. Modelar o motor de avaliação como fonte da verdade, Claude apenas explica — seguir a forma de contador/explain.ts, não o laço livre de chat.ts.
  3. Abandonar o padrão de prompt bilingue‑inline; um prompt por local, pois 5 línguas aumentam a deriva entre idiomas e o custo.
  4. Receber o local como parâmetro explícito do cliente (Math Challenge já tem uma definição de idioma) em vez de inferi‑lo como faz locale.ts para IOS.
  5. Construir o router de nível de dificuldade no backend do Math Challenge (próximo à avaliação, que já conhece tópico/nível) — nunca deixar o Claude escolher o seu próprio nível de modelo.
  6. Tratar effort como um segundo eixo de roteamento independente da escolha do modelo; iniciar conservadoramente (medium no Opus 5) pois é a alavanca principal contra explosões de custos de tokens de pensamento.
  7. Registar os campos reais de usage do Claude no repositório de auditoria desde o primeiro dia, em vez de repetir a estimativa baseada em contagem de caracteres de audit.ts.
  8. Redigir um cânone de regras rígidas de segurança emocional paralela ao §4.2 de docs/larry.md, mas a partir do zero — as regras da IOS focam‑se na segurança de dados, não no bem‑estar emocional.
  9. Reutilizar LarryAvatar e a sua máquina de estados sem alterações, mas reconsiderar se o estado denying deveria alguma vez ser acionado a uma criança.
  10. Manter o cache de conceções erradas e o caching de prompts do Claude como sistemas distintos — resolvem problemas diferentes (evitar re‑envio de prefixo vs. evitar re‑geração de saída semanticamente idêntica) e fundi‑los compromete o objetivo «uma geração, não mil».
  11. Usar a API em lote para pré‑semear o cache de conceções erradas antes do lançamento e para retro‑alimentar novos tipos de erro descobertos em produção.
  12. Cada linha rígida e cada linha de prompt precisam de cópia EN/ES/FR/PT/DE revista por humanos — o tom que soa encorajador numa língua pode parecer condescendente noutro; não delegar isso à tradução em tempo de execução.

Questões abertas para o proprietário do projeto

  1. O router de nível de dificuldade reside no backend do Math Challenge (etiquetas do motor de avaliação tópico/nível), ou o Larry Profe deve re‑classificar 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 ano escolar)? Isto determina tanto as variantes de vocabulário quanto o número de combinações de prompts a authorizar (local × faixa etária × nível poderia 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 integral dupla e uma demonstração de cálculo tensorial plausivelmente exigem esforços diferentes)?
  4. Existe um orçamento de latência a nível de produto (por exemplo, «deve começar a transmitir dentro de 2 s ou mostrar estado de carregamento») que deva condicionar o streaming padrão por nível?
  5. Quem revê a cópia das regras rígidas e dos prompts em FR/PT/DE — um revisor de conteúdo educativo multilingue, ou tradução automática como rascunho a partir da versão EN/ES?
  6. O cache de conceções erradas precisa de TTL, ou uma explicação armazenada para um erro raro pode ser servida indefinidamente?
  7. O item «o que o estudante fez bem» tem de encontrar algo mesmo para uma resposta vazia ou adivinhada — e, em caso afirmativo, qual é o piso honesto (por exemplo, «tentou»)?

Fontes

Este documento cita ficheiros do repositório e outras investigações, 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 numa FAQ exigiria inventar respostas que o documento não tem.

Um de 51 documentos de investigação, 168 346 palavras no total, contadas na compilação a partir dos próprios ficheiros. Ler este documento no repositório