riandika's picture
update
6dda27b
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)