TPACK 기반 수업 디자이너 개발 과정: AI 모델 연동 및 핵심 기능 구현
안녕하세요, ‘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 기반의 수업 아이디어를 생성하고, 이를 저장하고 공유할 수 있는 기본적인 시스템을 구축했습니다. 다음 글에서는 평가 및 댓글 시스템, 그리고 관리자 기능의 구현에 대해 더 자세히 다루도록 하겠습니다.