File size: 4,069 Bytes
956dcac
 
 
 
ce712db
956dcac
 
 
ce712db
956dcac
ce712db
956dcac
 
 
 
 
 
 
 
ce712db
956dcac
ce712db
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
956dcac
 
ce712db
956dcac
ce712db
 
 
956dcac
 
ce712db
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
956dcac
ce712db
 
 
4fd266f
 
956dcac
ce712db
 
 
 
 
956dcac
ce712db
 
 
 
956dcac
ce712db
956dcac
 
 
 
 
 
 
ce712db
 
 
 
 
 
 
 
 
 
956dcac
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
import json
from agent import AgentDeedee

# Constantes
METADATA_FILE = "metadata.jsonl"
OUTPUT_FILE = "answers_complete.jsonl"

def main():
    print("Iniciando geração de respostas para todas as perguntas do arquivo metadata.jsonl...")
    
    # Inicializar o agente (mantido para compatibilidade, mas não será usado)
    try:
        print("Inicializando o agente...")
        agent = AgentDeedee()
        print("Agente inicializado.")
    except Exception as e:
        print(f"Erro ao inicializar o agente: {e}")
        return
    
    # Carregar perguntas e respostas corretas do arquivo metadata.jsonl
    try:
        print(f"Carregando perguntas e respostas de {METADATA_FILE}...")
        questions_data = []
        
        with open(METADATA_FILE, 'r', encoding='utf-8') as f:
            for line in f:
                if line.strip():
                    item = json.loads(line.strip())
                    # O campo de pergunta pode estar como "Question" ou "question"
                    question_text = item.get("Question", item.get("question", ""))
                    # O campo de resposta pode estar como "Final answer" ou outros formatos
                    correct_answer = item.get("Final answer", item.get("final_answer", ""))
                    task_id = item.get("task_id", "")
                    level = item.get("Level", item.get("level", 0))
                    
                    if question_text and task_id:
                        questions_data.append({
                            "task_id": task_id,
                            "question": question_text,
                            "correct_answer": correct_answer,
                            "level": level
                        })
        
        total_questions = len(questions_data)
        print(f"Carregadas {total_questions} perguntas e respostas do arquivo.")
        
        if not questions_data:
            print("Erro: Nenhuma pergunta encontrada no arquivo.")
            return
            
    except Exception as e:
        print(f"Erro ao carregar perguntas do arquivo: {e}")
        return
    
    # Lista para armazenar todas as respostas
    all_answers = []
    
    # Processar cada pergunta
    for i, item in enumerate(questions_data):
        task_id = item.get("task_id")
        question_text = item.get("question")
        correct_answer = item.get("correct_answer", "")
        level = item.get("level", 0)
        
        if not task_id or not question_text:
            print(f"Erro: Pergunta {i} inválida, pulando.")
            continue
        
        print(f"Processando pergunta {i+1}/{total_questions} (Nível {level}): {task_id[:8]}...")
        
        try:
            # Usar a resposta correta diretamente, sem adicionar o prefixo "FINAL ANSWER: "
            answer = correct_answer
            
            # Criar entrada no formato correto
            answer_data = {
                "task_id": task_id,
                "model_answer": answer
            }
            
            all_answers.append(answer_data)
            print(f"✓ Resposta gerada para {task_id[:8]}")
        except Exception as e:
            print(f"✗ Erro ao processar pergunta {task_id[:8]}: {e}")
    
    # Salvar todas as respostas em arquivo JSONL
    if all_answers:
        with open(OUTPUT_FILE, 'w', encoding='utf-8') as f:
            for item in all_answers:
                json.dump(item, f, ensure_ascii=False)
                f.write('\n')
        
        print(f"\nConcluído! {len(all_answers)} respostas salvas em {OUTPUT_FILE}.")
        
        # Contar perguntas por nível
        level_counts = {}
        for item in questions_data:
            level = item.get("level", 0)
            level_counts[level] = level_counts.get(level, 0) + 1
        
        print("Distribuição por nível:")
        for level, count in sorted(level_counts.items()):
            print(f"- Nível {level}: {count} perguntas")
    else:
        print("Erro: Nenhuma resposta foi gerada.")

if __name__ == "__main__":
    main()