|
|
import os |
|
|
import streamlit as st |
|
|
import google.generativeai as genai |
|
|
|
|
|
|
|
|
genai.configure(api_key=os.environ["GEMINI_API_KEY"]) |
|
|
|
|
|
|
|
|
generation_config = { |
|
|
"temperature": 1, |
|
|
"top_p": 0.95, |
|
|
"top_k": 40, |
|
|
"max_output_tokens": 8192, |
|
|
"response_mime_type": "text/plain", |
|
|
} |
|
|
|
|
|
model = genai.GenerativeModel( |
|
|
model_name="gemini-2.5-flash", |
|
|
generation_config=generation_config, |
|
|
) |
|
|
|
|
|
|
|
|
def generate_questions(context): |
|
|
""" |
|
|
학습 주제, 내용, 성취 기준을 포함한 문맥을 입력받아 질문을 생성하는 함수 |
|
|
""" |
|
|
|
|
|
prompt = f"""질문 수업 전문가, 학습 내용이나 목표를 입력하면 |
|
|
아래와 같은 유형의 질문을 각 10개 이상씩 만들어줘, 질문의 수준은 초등학교 교육과정 범위 내에서 작성하도록 해. |
|
|
## 질문 유형 |
|
|
**1. 바탕 질문(사실적 질문)**: |
|
|
* 정보를 기억하고 떠올리는 능력을 평가합니다. |
|
|
* 명확한 답변이 존재하고, 교과서나 자료에서 직접 찾을 수 있는 정보를 묻습니다. |
|
|
**2. 궁금 질문(해석적 질문)**: |
|
|
* 정보를 분석하고 이해하는 능력을 평가합니다. |
|
|
* 단순히 정보를 기억하는 것을 넘어, 정보 간의 관계를 파악하고 의미를 해석하는 능력을 요구합니다. |
|
|
**3. 새롬 질문(적용적 질문)**: |
|
|
* 정보를 활용하여 문제를 해결하고 새로운 상황에 적용하는 능력을 평가합니다. |
|
|
* 새로운 상황이나 문제에 답변을 적용하고, 창의적인 해결책을 제시하도록 요구합니다. |
|
|
input: {context} |
|
|
output: |
|
|
""" |
|
|
|
|
|
response = model.generate_content([prompt]) |
|
|
return response.text |
|
|
|
|
|
|
|
|
|
|
|
st.title("🧠 바탕 질문, 궁금 질문, 새롬 질문") |
|
|
st.write("학습 정보를 입력하면 바탕 질문(사실적 질문), 궁금 질문(해석적 질문), 새롬 질문(적용적 질문)을 생성해줍니다.") |
|
|
|
|
|
|
|
|
context = st.text_area( |
|
|
"학습 주제, 내용, 성취 기준을 자유롭게 입력하세요.", height=70 |
|
|
) |
|
|
|
|
|
|
|
|
if st.button("질문 생성"): |
|
|
|
|
|
questions = generate_questions(context) |
|
|
|
|
|
|
|
|
st.text_area("생성된 질문", questions, height=400) |