Spaces:
Build error
Build error
| import google.generativeai as genai | |
| import base64 | |
| import gradio as gr | |
| from dotenv import load_dotenv | |
| import os | |
| load_dotenv() | |
| token = os.getenv("GOOGLE_API_KEY") | |
| genai.configure(api_key=token) | |
| model = genai.GenerativeModel("gemini-1.5-flash") | |
| def proses_materi(nama_pdf, indikator_pencapaian): | |
| try: | |
| with open(nama_pdf, "rb") as doc_file: | |
| doc_data = base64.standard_b64encode(doc_file.read()).decode("utf-8") | |
| prompt = ( | |
| f"Buatkan daftar 5 pertanyaan dari file tersebut dengan poin indikator tujuan soal seperti: {indikator_pencapaian}. " | |
| "Format output harus sebagai berikut:\n" | |
| "---SOAL---\n" | |
| "1. [Pertanyaan 1]\n" | |
| "2. [Pertanyaan 2]\n" | |
| "3. [Pertanyaan 3]\n" | |
| "4. [Pertanyaan 4]\n" | |
| "5. [Pertanyaan 5]\n" | |
| "---JAWABAN---\n" | |
| "1. [Jawaban 1]\n" | |
| "2. [Jawaban 2]\n" | |
| "3. [Jawaban 3]\n" | |
| "4. [Jawaban 4]\n" | |
| "5. [Jawaban 5]\n" | |
| ) | |
| response = model.generate_content([{'mime_type': 'application/pdf', 'data': doc_data}, prompt]) | |
| response_text = response.text | |
| if "---SOAL---" in response_text and "---JAWABAN---" in response_text: | |
| soal, jawaban = response_text.split("---JAWABAN---") | |
| soal = soal.replace("---SOAL---", "").strip() | |
| jawaban = jawaban.strip() | |
| else: | |
| soal = response_text | |
| jawaban = "" | |
| return soal, jawaban | |
| except Exception as e: | |
| return f"Terjadi kesalahan: {str(e)}", "" | |
| def evaluate_answer(kunci_jawaban, jawaban_siswa): | |
| try: | |
| prompt = ( | |
| f"Diperlihatkan jawaban salah satu siswa sebagai berikut : {jawaban_siswa}, " | |
| f"Sementara jawaban yang benar pada kunci jawaban sebagai berikut {kunci_jawaban}. " | |
| "Berikan komentar yang padat terhadap jawaban siswamu dan berikan rate 0-10, " | |
| "dimana semakin tinggi ratingnya jika jawaban siswa tepat atau sesuai dengan yang ada di kunci jawaban" | |
| ) | |
| response = model.generate_content([prompt]) | |
| return response.text | |
| except Exception as e: | |
| return f"Terjadi kesalahan saat mengevaluasi: {str(e)}" | |
| with gr.Blocks() as demo: | |
| with gr.Row(): | |
| with gr.Column(): | |
| pdf_input = gr.File(label="Upload PDF", file_types=[".pdf"]) | |
| indicator_input = gr.Textbox(label="Indikator Pembelajaran", placeholder="Masukkan indikator pembelajaran...") | |
| submit_btn = gr.Button("Generate Questions and Answers") | |
| with gr.Column(): | |
| questions_output = gr.Textbox(label="Generated Questions", interactive=False) | |
| answers_output = gr.Textbox(label="Generated Answers", interactive=False) | |
| student_answer_input = gr.Textbox(label="Jawaban Siswa", placeholder="Masukkan jawaban siswa...") | |
| evaluate_btn = gr.Button("Evaluate Answer") | |
| evaluation_output = gr.Textbox(label="Evaluation Result", interactive=False) | |
| submit_btn.click( | |
| fn=proses_materi, | |
| inputs=[pdf_input, indicator_input], | |
| outputs=[questions_output, answers_output] | |
| ) | |
| evaluate_btn.click( | |
| fn=evaluate_answer, | |
| inputs=[answers_output, student_answer_input], | |
| outputs=evaluation_output | |
| ) | |
| demo.launch(debug=False) | |