| | import os |
| | import time |
| |
|
| | import google.generativeai as genai |
| | import streamlit as st |
| |
|
| | |
| | genai.configure(api_key=os.environ["GEMINI_API_KEY"]) |
| |
|
| | |
| | generation_config = { |
| | "temperature": 0.5, |
| | "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, |
| | ) |
| |
|
| | |
| | st.title("개념 학습 도우미") |
| | st.write("개념을 입력하면 결정적/비결정적 속성, 사례, 비사례를 생성합니다.") |
| |
|
| | |
| | concept = st.text_input("개념 입력:") |
| |
|
| | |
| | output_area = st.empty() |
| |
|
| | |
| | if st.button("생성"): |
| | if concept: |
| | prompt = [ |
| | "사회교과 내용 전문가, 과학교과 내용 전문가, 개념학습 전문가", |
| | "input: 개념", |
| | "output: 개념의 결정적 속성\n\n개념의 비결정적 속성\n\n개념의 사례 10개\n\n개념의 비사례(매력적인 비사례 - 사례와 비슷해보이지만 비사례인 것) 10개", |
| | "input: 경제 생산", |
| | "output: ## 개념: 경제 생산\n\n**결정적 속성:** 인간의 욕구를 충족시키기 위한 재화 또는 용역의 창출.\n\n**비결정적 속성:** 생산 활동의 규모, 생산 장소, 생산에 사용되는 기술, 생산된 재화/용역의 유형, 생산 주체(개인, 기업, 정부 등), 이윤 창출 여부.\n\n\n**개념의 사례 10개:**\n\n1. 농부가 쌀을 재배하는 것\n2. 공장에서 자동차를 생산하는 것\n3. 미용사가 머리를 자르는 것\n4. 소프트웨어 개발자가 프로그램을 만드는 것\n5. 의사가 환자를 진료하는 것\n6. 교사가 학생들을 가르치는 것\n7. 작가가 소설을 쓰는 것\n8. 음악가가 작곡을 하는 것\n9. 요리사가 음식을 만드는 것\n10. 배달원이 음식을 배달하는 것\n\n\n**개념의 비사례(매력적인 비사례 - 사례와 비슷해 보이지만 비사례인 것) 10개:**\n\n1. **자연적으로 자라는 과일:** (인간의 개입 없이 자라므로 경제 생산 X)\n2. **취미로 그림을 그리는 것:** (판매 목적 없이 개인적인 만족을 위한 활동이므로 경제 생산 X. 단, 판매를 목적으로 한다면 경제 생산 O)\n3. **집에서 혼자 요리해 먹는 것:** (자신의 욕구 충족을 위한 활동이지만 시장에서 거래되지 않으므로 일반적으로 경제 생산으로 보지 않음. 단, 식당에서 요리하는 것은 경제 생산 O)\n4. **자원봉사 활동:** (대가 없이 타인을 돕는 활동이므로 경제 생산 X. 단, 봉사활동을 통해 급여를 받는다면 경제 생산 O)\n5. **주식 투자:** (자본을 투자하여 수익을 얻는 활동이지만, 새로운 재화나 용역을 창출하는 것은 아니므로 경제 생산 X)\n6. **중고 물품 거래:** (이미 생산된 재화의 소유권이 이전되는 것이므로 새로운 재화나 용역의 창출은 아님. 따라서 경제 생산 X)\n7. **부동산 임대:** (이미 존재하는 부동산을 통해 수익을 얻는 활동이지만 새로운 재화나 용역을 창출하는 것은 아니므로 경제 생산 X)\n8. **복권 당첨:** (우연에 의해 금전적 이득을 얻는 것이므로 경제 생산 X)\n9. **유산 상속:** (이미 존재하는 재산의 소유권이 이전되는 것이므로 경제 생산 X)\n10. **도박:** (재화나 용역의 창출과 관련 없는 금전적 활동이므로 경제 생산 X)", |
| | "input: 자연환경", |
| | "output: ## 개념: 자연환경\n\n**결정적 속성:** 인간의 활동에 의해 만들어지지 않은 지구상의 모든 생물적, 비생물적 요소들의 총체.\n\n**비결정적 속성:** 특정 지역, 기후, 생물 종류, 자연환경의 규모(숲, 사막, 바다 등).\n\n\n**개념의 사례 10개:**\n\n1. 아마존 열대 우림\n2. 히말라야 산맥\n3. 태평양\n4. 사하라 사막\n5. 남극 빙하\n6. 그랜드 캐니언\n7. 나이아가라 폭포\n8. 갈라파고스 제도\n9. 옐로스톤 국립공원\n10. 한강\n\n\n**개념의 비사례(매력적인 비사례 - 사례와 비슷해 보이지만 비사례인 것) 10개:**\n\n1. **공원:** (인공적으로 조성된 녹지 공간이므로 자연환경 X, 도시 환경에 가까움)\n2. **논:** (인간이 농사를 짓기 위해 인위적으로 만든 환경이므로 자연환경 X)\n3. **저수지:** (댐을 건설하여 인위적으로 물을 가두어 만든 것이므로 자연환경 X)\n4. **온실:** (식물 재배를 위해 인공적으로 온도, 습도 등을 조절하는 공간이므로 자연환경 X)\n5. **수족관:** (물고기 등 수중 생물을 인공적으로 관리하는 공간이므로 자연환경 X)\n6. **목장:** (가축을 기르기 위해 인위적으로 조성된 환경이므로 자연환경 X)\n7. **과수원:** (과일 나무를 재배하기 위해 인위적으로 조성된 환경이므로 자연환경 X)\n8. **고속도로:** (인간의 이동을 위해 건설된 인공 구조물이므로 자연환경 X)\n9. **아파트 단지:** (인간의 주거를 위해 건설된 인공 구조물이므로 자연환경 X)\n10. **광산:** (지하자원 채굴을 위해 인간이 개발한 공간이므로 자연환경 X. 채굴 전의 산은 자연환경이지만, 광산으로 개발된 이후에는 자연환경으로 보기 어려움)", |
| | f"input: {concept}", |
| | "output:", |
| | ] |
| |
|
| | full_text = "" |
| | try: |
| | response = model.generate_content(prompt, stream=True) |
| | for chunk in response: |
| | full_text += chunk.text |
| | output_area.text_area("개념 학습 내용", value=full_text, height=500, key=f"output_{time.time()}") |
| | time.sleep(0.05) |
| | except Exception as e: |
| | st.error(f"에러 발생: {str(e)}") |
| | else: |
| | st.warning("개념을 입력하세요.") |