Correção do formato de respostas: remover prefixo 'FINAL ANSWER:' para compatibilidade com o sistema de avaliação
4fd266f
| 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() |