Spaces:
Paused
Paused
| import os | |
| import time | |
| import streamlit as st | |
| import google.generativeai as genai | |
| from streamlit_extras.colored_header import colored_header | |
| from streamlit_extras.add_vertical_space import add_vertical_space | |
| import markdown | |
| # Google Gemini API Key μ€μ | |
| 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.0-flash", | |
| generation_config=generation_config, | |
| ) | |
| def generate_lesson_plan(achievement_standard): | |
| """ | |
| νλ 컨μ μ μ λ ₯λ°μ νλμ μμ±ν©λλ€. | |
| μμνμ μ€μκ°μΌλ‘ μΆλ ₯ν©λλ€. | |
| Args: | |
| achievement_standard (str): νλ 컨μ | |
| Returns: | |
| str: μμ±λ νλ | |
| """ | |
| SYSTEM_PROMPT = """ | |
| λΉμ μ κ΅μνμ΅ νλ μ€κ³ μ λ¬Έκ°, κ΅κ³Όκ΅μ‘ λ΄μ© μ λ¬Έκ°, κ΅μ‘곡νμμ λλ€. | |
| μ μλλ€μ΄ νλ 컨μ λ° μκ°λ₯Ό μ λ ₯νλ©΄ νλμ μμΈνκ² μ€λͺ ν΄μ£ΌμΈμ.. | |
| λ€μμ νλ μ€κ³μ νμν μ 보μ λλ€. | |
| **νλ κ΅¬μ± μμ:** | |
| 1. νλ 컨μ λ° μκ° | |
| 2. νλ λͺ©ν | |
| 3. νλ λ¨κ³λ³ μλ΄ | |
| - 1λ¨κ³: 1λ¨κ³ νλ μλ΄ | |
| - 2λ¨κ³: 2λ¨κ³ νλ μλ΄ | |
| - 3λ¨κ³: 3λ¨κ³ νλ μλ΄ | |
| - 4λ¨κ³: 4λ¨κ³ νλ μλ΄... | |
| 4. νλ μ€λΉλ¬Ό λ° κΈ°κ΅¬ | |
| 5. νλμ μν μλ£ | |
| - νλμ νμν μλ£ | |
| - μΆκ° μΆμ² μλ£ | |
| 6. νλμ μ μμ | |
| - νμ μ μ₯ μ μμ | |
| - κ΅μ¬ μ μ₯ μ μμ | |
| 7. νμμκ² μ 곡ν νλ μλ΄ μλ£ | |
| * νλ μλ΄ μλ£λ μ΄λ±νμμ΄ μ΄ν΄ν μ μλλ‘ μ΅λν ꡬ체μ μ΄κ³ , λ¨κ³μ , λͺ μμ μΌλ‘ μλ΄ν΄μ£ΌμΈμ. | |
| """ | |
| prompt = [ | |
| SYSTEM_PROMPT, | |
| f"**νλ 컨μ :** {achievement_standard}", | |
| "**νλ:**", | |
| ] | |
| response = model.generate_content(prompt, stream=True) | |
| collected_text = "" | |
| for token in response: | |
| chunk = token.text | |
| collected_text += chunk | |
| yield collected_text # μ€μκ° μΆλ ₯μ μν΄ yield μ¬μ© | |
| time.sleep(0.03) # μΆλ ₯ μλ μ‘°μ | |
| # Streamlit Interface | |
| colored_header( | |
| label="νμ΅ νλ μ€κ³ λμ°λ―Έ", | |
| description="μ μλμ΄ νλμ 컨μ μ μ λ ₯νμλ©΄ νλμ ꡬ체μ μΌλ‘ μ€κ³ν΄μ€λλ€.", | |
| color_name="red-70", | |
| ) | |
| add_vertical_space(1) | |
| achievement_standard = st.text_area("νλ 컨μ λ° μκ° μ λ ₯", height=100) | |
| generate_button = st.button("νμ΅ νλ μμ±") | |
| # μΆλ ₯ μμ μ μ | |
| output_area = st.empty() | |
| if generate_button and achievement_standard: | |
| output_text = "" | |
| output_area.markdown(output_text) | |
| try: | |
| for partial_output in generate_lesson_plan(achievement_standard): | |
| output_text = partial_output | |
| output_area.markdown(output_text) | |
| except Exception as e: | |
| st.error(f"μ€λ₯κ° λ°μνμ΅λλ€: {str(e)}") | |
| # λ³΅μ¬ λ²νΌ μΆκ° | |
| if output_text: | |
| if st.button("μΆλ ₯ λ΄μ© 볡μ¬"): | |
| st.write(output_text) | |
| st.success("μΆλ ₯ λ΄μ©μ΄ 볡μ¬λμμ΅λλ€!") |