안녕하세요, ‘InnoClass: TPACK 기반 수업 디자이너’ 프로젝트의 개발 과정을 좀 더 상세히 소개해 드리겠습니다. 이번 글에서는 프로젝트의 초기 단계와 핵심 기능 구현에 대해 설명하겠습니다.

프로젝트 초기 설정

먼저, 필요한 라이브러리를 설치하고 기본 환경을 설정했습니다.

  • Streamlit: 웹 인터페이스 구축
  • OpenAI: AI 모델 연동
  • python-dotenv: 환경 변수 관리
  • pymongo: MongoDB 연결
import streamlit as st
import openai
from dotenv import load_dotenv
import os
from pymongo import MongoClient

OpenAI API 연동

OpenAI의 GPT-3.5-turbo 모델을 사용하여 TPACK 기반 아이디어를 생성하는 기능을 구현했습니다.

def generate_tpack_idea(content, pedagogy, technology):
    prompt = f"""

    ~~프롬프트~~

    # 아이디어 형식 지정...
    """

    response = openai.ChatCompletion.create(
        model="gpt-3.5-turbo",
        messages=[
            {"role": "system", "content": "당신은 TPACK 모델 전문가이자 교육 컨설턴트입니다."},
            {"role": "user", "content": prompt}
        ],
        max_tokens=0000,
        temperature=0.7
    )
    return response.choices[0].message['content'].strip()

MongoDB 연결 및 데이터 저장

생성된 아이디어를 저장하고 관리하기 위해 MongoDB를 연결했습니다.

mongo_uri = os.getenv("MONGODB_URI")
client = MongoClient(mongo_uri)
db = client.tpack_ideas

def save_idea_to_db(content, pedagogy, technology, idea):
    idea_doc = {
        "content": content,
        "pedagogy": pedagogy,
        "technology": technology,
        "idea": idea,
        "created_at": datetime.utcnow(),
        "ratings": [],
        "comments": []
    }
    return db.ideas.insert_one(idea_doc)

사용자 인터페이스 구현

Streamlit을 사용하여 사용자 친화적인 인터페이스를 구현했습니다.

def main():
    st.title("InnoClass: TPACK 기반 수업 디자이너")

    with st.expander("TPACK 모델이란?"):
        st.write("TPACK 모델 설명...")

    tab1, tab2 = st.tabs(["아이디어 만들기", "공유 아이디어"])

    with tab1:
        content = st.text_area("교과 내용 (Content Knowledge):")
        pedagogy = st.text_area("교수 방법 (Pedagogical Knowledge):")
        technology = st.text_area("활용할 기술 (Technological Knowledge):")

        if st.button("TPACK 아이디어 생성"):
            idea = generate_tpack_idea(content, pedagogy, technology)
            st.write(idea)
            # 아이디어 저장 로직...

    with tab2:
        # 저장된 아이디어 표시 로직...

아이디어 저장 및 공유 기능

생성된 아이디어를 데이터베이스에 저장하고, 다른 사용자들과 공유할 수 있는 기능을 구현했습니다.


if st.button("아이디어 저장 및 공유하기"):
    save_idea_to_db(content, pedagogy, technology, idea)
    st.success("아이디어를 저장 및 공유하였습니다.")
# 공유 아이디어 탭에서
ideas = get_ideas_from_db()
for idea in ideas:
    with st.expander(f"학습 주제: {idea['content'][:50]}..."):
        st.write(idea['idea'])
        # 평가 및 댓글 기능...

이러한 핵심 기능들을 구현함으로써, 사용자들이 AI의 도움을 받아 TPACK 기반의 수업 아이디어를 생성하고, 이를 저장하고 공유할 수 있는 기본적인 시스템을 구축했습니다. 다음 글에서는 평가 및 댓글 시스템, 그리고 관리자 기능의 구현에 대해 더 자세히 다루도록 하겠습니다.