Configuração do LLM
Modelo padrão
O raro-reviewer usa o NVIDIA NIM com o modelo qwen/qwen2.5-coder-32b-instruct por padrão.
Para usar outro modelo, defina a variável NVIDIA_MODEL:
-e NVIDIA_MODEL="meta/llama-3.1-70b-instruct"
Endpoint
O SDK OpenAI é usado com o endpoint da NVIDIA NIM:
https://integrate.api.nvidia.com/v1
Formato de resposta
O LLM é instruído a responder apenas com JSON válido:
{
"findings": [
{
"line": 42,
"severity": "high",
"category": "security",
"message": "SQL injection vulnerability: user input directly in query"
}
]
}
Se não houver issues relevantes:
{"findings": []}
Prompt de sistema
O prompt instrui o LLM a:
- Analisar apenas linhas adicionadas (diff lines com
+) - Focar em 4 categorias:
bug,security,performance,clean_code - Responder com JSON estrutulado
- Não inventar problemas para preencher a resposta
Validação de resposta
A resposta do LLM é validada em duas etapas:
- Schema Pydantic: Verifica se o JSON segue o formato esperado
- Validação de linha: Verifica se cada
linenumber existe entre as linhas adicionadas no diff
Se qualquer finding referenciar uma linha que não está no diff, todo o arquivo é descartado (LlmParseError).
Limites
| Limite | Valor | Configurável |
|---|---|---|
| Linhas por arquivo | 800 | Sim (max_file_lines) |
| Timeout da chamada | Padrão OpenAI SDK | Não |
| Retries | Nenhum (v1) | Não |
Custos estimados
O NVIDIA NIM oferece créditos gratuitos para desenvolvimento. Para produção, consulte a tabela de preços da NVIDIA.
Fator principal de custo: número de arquivos alterados por MR × linhas adicionadas por arquivo.