Contexto
Atualmente a Iara usa zero-shot prompting — ela recebe somente as instruções estáticas do system prompt + o diff do PR. Não há exemplos de "o que é uma boa review" no prompt.
A técnica de few-shot prompting consiste em incluir exemplos de entrada/saída no prompt para calibrar o comportamento do modelo. Quando esses exemplos são selecionados dinamicamente com base na similaridade com a entrada atual, chama-se dynamic few-shot.
Problema
Sem exemplos de calibração:
- O mesmo tipo de erro pode receber reviews inconsistentes entre PRs
- Não há como ensinar à Iara o "estilo" e nível de severidade preferido pelo time
- A qualidade do review depende 100% da capacidade zero-shot do modelo escolhido
Solução Proposta
Após um review gerado, armazenar no LanceDB um par (diff_chunk, review_comment) como exemplo. Nas próximas execuções, recuperar os exemplos mais similares ao diff atual e injetá-los no system prompt:
# No generate_system_prompt() ou no review_code()
if few_shot_examples:
prompt += "\n\n## EXEMPLOS DE REVIEWS ANTERIORES:\n"
for example in few_shot_examples:
prompt += f"\n### Diff:\n```diff\n{example.diff}\n```\n"
prompt += f"\n### Review:\n{example.review}\n"
Armazenamento
Criar uma nova tabela no LanceDB: review_examples, com schema:
diff_embedding (vetor) — para busca por similaridade
diff_snippet (texto) — trecho do diff original
review_text (texto) — review gerado pela Iara
created_at (timestamp)
Coleta dos exemplos
- Automática: após cada review bem-sucedido, salvar o par automaticamente
- Ou manual:
iara memory add-example --diff <file> --review <file>
Critérios de Aceite
Considerações de Privacidade
⚠️ Os exemplos contêm trechos de código real. O armazenamento é sempre local (LanceDB no runner ou na máquina do dev). Nada é enviado a servidores externos além do LLM escolhido (que já recebe o diff de qualquer forma).
Complexidade Estimada
🔴 Alta — requer novo schema no LanceDB, mudança no pipeline de review, lógica de embedding para exemplos, e testes de integração robustos
Contexto
Atualmente a Iara usa zero-shot prompting — ela recebe somente as instruções estáticas do system prompt + o diff do PR. Não há exemplos de "o que é uma boa review" no prompt.
A técnica de few-shot prompting consiste em incluir exemplos de entrada/saída no prompt para calibrar o comportamento do modelo. Quando esses exemplos são selecionados dinamicamente com base na similaridade com a entrada atual, chama-se dynamic few-shot.
Problema
Sem exemplos de calibração:
Solução Proposta
Após um review gerado, armazenar no LanceDB um par
(diff_chunk, review_comment)como exemplo. Nas próximas execuções, recuperar os exemplos mais similares ao diff atual e injetá-los no system prompt:Armazenamento
Criar uma nova tabela no LanceDB:
review_examples, com schema:diff_embedding(vetor) — para busca por similaridadediff_snippet(texto) — trecho do diff originalreview_text(texto) — review gerado pela Iaracreated_at(timestamp)Coleta dos exemplos
iara memory add-example --diff <file> --review <file>Critérios de Aceite
.iara.json)memory.few_shot_enabled: true/falseememory.few_shot_max_examples: 3Considerações de Privacidade
Complexidade Estimada
🔴 Alta — requer novo schema no LanceDB, mudança no pipeline de review, lógica de embedding para exemplos, e testes de integração robustos