Avaliação de respostas de questões subjetivas de exames passados da OAB por um modelo de IA
Etapas Realizadas:
- Importação do conjunto de dados de perguntas da OAB: o conjunto de dados de perguntas de provas passadas da OAB foi importado do GitHub, disponível publicamente no endereço web: https://github.com/maritaca-ai/oab-bench/blob/main/data/judge_prompts.jsonl.
- Importação do dataset de linha guia: o dataset de linha guia, contendo as respostas relacionadas às perguntas, foi importado do mesmo projeto do GitHub, pela URL: https://github.com/maritaca-ai/oab-bench/blob/main/data/oab_bench/reference_answer/guidelines.jsonl.
- Adição de números às questões: foram adicionados números às questões para facilitar a leitura humana, considerando que o contador em listas no Python inicia do zero.
- Análise e classificação do nível de dificuldade: foi realizada uma análise manual e interativa, com o auxílio de IA, para classificar o nível de dificuldade das questões, e essa informação foi incluída no conjunto de perguntas.
- Interseção entre dataframes: foi realizada uma interseção entre os dataframes de questões e de linha guia para reunir todas as informações relevantes em um único dataframe.
- Seleção de subconjunto de questões: por fim, um subconjunto das questões, especificamente da questão 31 à 40, foi retirado para análises mais focadas.
- Organização em Notebooks Separados: para otimização e organização, o arquivo responsável pela extração, limpeza e carga dos dados foi separado em um notebook à parte.
- Processamento de Questões por IA: outro notebook utilizou os dados do primeiro e percorreu todo o conjunto, submetendo as questões a diferentes modelos de IA.
- Estruturação da Pergunta em Markdown: a pergunta foi cuidadosamente estruturada em formato Markdown para maior detalhamento do conteúdo a ser enviado a uma IA via chave de API.
- Conteúdo do Markdown: o prompt Markdown incluiu os seguintes elementos: papel, categoria, contexto, dificuldade e instrução.
- Observações sobre Questões Tipo 'Peça': em análise manual dos dados, foi percebido que, do conjunto de 10 linhas, duas são peças (informação retirada do campo 'statement'). Nesses casos, o campo 'turns' (instrução) estava vazio, o que pode indicar que não se trata de uma questão tradicional. Mesmo assim, foram submetidas às IAs para observar o comportamento.
- Modelos de IA Utilizados: as questões foram enviadas a três modelos de IA: llama-3.1-8b-instant, meta-llama/llama-4-scout-17b-16e-instruct e gemini-3.1-flash-lite-preview. Esses modelos foram escolhidos por suas características e pela possibilidade de uso gratuito nesta atividade.
- Métrica de Avaliação: BERTScore: métrica quantitativa utilizada para avaliar a acurácia das respostas de cada IA, comparando-as com a linha guia.
- Tentativa de Avaliação por Juiz Online (IA): foi feita uma tentativa de utilizar um 'Juiz Online', uma quarta IA robusta, para avaliar as respostas. No entanto, as restrições de uso de IAs gratuitas impossibilitaram essa abordagem.
- Relatório Comparativo Final: ao final, foi gerado um relatório comparativo utilizando os resultados do BERTScore.
Resultados Encontrados:
Gráfico de Acurácia Geral
Pontuação das Respostas namétrica BERTScore
| Questão |
Dificuldade |
Llama3 (%) |
Llama4 (%) |
Gemini (%) |
| 31 |
Estagiário |
71.11 |
72.02 |
69.27 |
| 32 |
Juiz |
62.00 |
59.20 |
64.75 |
| 33 |
Juiz |
58.56 |
54.82 |
56.53 |
| 34 |
Juiz |
59.45 |
58.18 |
59.12 |
| 35 |
Juiz |
56.64 |
57.76 |
53.97 |
| 36 |
Estagiário |
67.14 |
71.60 |
71.06 |
| 37 |
Juiz |
56.88 |
55.30 |
56.33 |
| 38 |
Juiz |
56.82 |
54.37 |
54.61 |
| 39 |
Juiz |
56.84 |
52.42 |
58.31 |
| 40 |
Juiz |
57.93 |
52.89 |
53.95 |