자율학습 도우미 에이전트 및
힌트 챗봇 시스템 구현

Socratic 교육 기법, RAG(NotebookLM), 그리고 에이전트 스킬화를 활용한 스마트 화학교육 시스템 구축

01

강의 구성 요약

02

Pedagogy

AI 튜터와 소크라테스식(Socratic) 대화법

지식을 일방적으로 주입하거나 정답을 즉시 알려주는 챗봇은 학생의 문제 해결 능력을 오히려 감퇴시킵니다.

소크라테스식 문답법은 학생이 제출한 답안의 오개념을 포착하고, 스스로 정답에 도달하도록 **단계별 유도 질문(Hinting)과 비계(Scaffolding)**를 제공하여 메타인지를 자극하는 화학교육 설계론입니다.

03

챗봇 시스템 아키텍처

학습 UI (Next.js)
챗봇 API (FastAPI)
LLM / RAG (NotebookLM)
구조 검증 (RDKit)

학생은 3D 뷰어와 채팅 창을 통해 시각적으로 분자를 탐구하며, 백엔드에서는 RDKit으로 구조적 사실을 검증하고 LLM이 교과서 자료(RAG)를 바탕으로 개인화된 힌트를 출력합니다.

04

Quiz Generator

RDKit 기반 분자 퀴즈 자동 생성

SMILES 식을 입력하면, RDKit 화학 엔진이 해당 분자의 물리화학적 속성을 분석하여 동적으로 퀴즈를 코딩화합니다.

05

분자 구조 기반 퀴즈 생성 코드

def generate_chemistry_quiz(mol):
    # RDKit으로 분자 구조 특성 분석
    from rdkit.Chem import Lipinski, Crippen
    hbd = Lipinski.NumHDonors(mol)
    hba = Lipinski.NumHAcceptors(mol)
    logp = Crippen.MolLogP(mol)
    
    quiz_pool = []
    if hbd > 0:
        quiz_pool.append({
            "question": "이 분자가 물과 수소결합을 형성할 때, 수소 원자를 제공하는 공여체(Donor)로 작동할 수 있는 작용기가 존재하나요?",
            "hint": "O-H 또는 N-H 결합을 가진 원자단을 찾아보세요."
        })
    if logp < 0:
        quiz_pool.append({
            "question": "이 분자의 LogP 값이 음수라는 것은 물에 대한 용해도가 높음을 의미할까요, 낮음을 의미할까요?",
            "hint": "LogP(옥탄올/물 분배계수)가 작을수록 친수성이 강해집니다."
        })
    return quiz_pool
06

Prompt Engineering

소크라테스식 힌트 생성을 위한 프롬프트

LLM이 직접적인 정답을 말하지 못하도록 철저한 역할 가이드라인을 담은 **System Prompt**를 작성해야 합니다.

SYSTEM_PROMPT = """너는 화학교육을 돕는 소크라테스식 튜터 에이전트다.
1. 절대 학생에게 정답 분자 이름이나 구조식을 직접 제공하지 마라.
2. 학생이 잘못된 화학 개념을 말할 경우, 직접 교정해 주지 말고 반문이나 비유를 들어 오개념을 스스로 깨닫게 하라.
3. 3D 뷰어 화면의 구조적 특징(예: 결합의 대칭성, 전기음성도가 높은 산소 원자의 유무)을 관찰하도록 유도하라.
4. 답변은 친절하고 격려하는 어조를 유지하되, 한 번에 하나의 작은 단서만 제공하라."""
07

Web API

FastAPI 챗봇 API 라우트 설계

대화 흐름을 관리하기 위해 이전 메시지 내역(Session History)과 현재 활성화된 분자의 구조 정보를 동시 수집하여 처리하는 엔드포인트를 설계합니다.

08

FastAPI 챗봇 핵심 엔드포인트 구현

from fastapi import APIRouter
from pydantic import BaseModel
from typing import List, Dict

router = APIRouter()

class ChatMessage(BaseModel):
    role: str # "user" or "assistant"
    content: str

class HintRequest(BaseModel):
    smiles: str
    quiz_context: str
    history: List[ChatMessage]

@router.post("/chat/hint")
async def get_socratic_hint(req: HintRequest):
    # RDKit으로 사실 관계 검증 및 교재 RAG 결합
    verified_context = verify_structure_facts(req.smiles)
    # LLM API 호출 (SYSTEM_PROMPT와 history 및 context 결합)
    response_text = await call_llm_tutor(req.history, verified_context, req.quiz_context)
    return {"reply": response_text}
09

Next.js 챗봇 학습 UI 설계

학생은 화면 한편에 3Dmol.js로 로드된 분자 구조를 조작하고, 바로 옆 대화창에서 AI 튜터와 화학 원리를 상호 토론합니다.

10

Next.js Chat UI 컴포넌트 코드

import { useState } from "react";

export default function ChemistryChat({ smiles, quizContext }) {
    const [messages, setMessages] = useState([]);
    const [input, setInput] = useState("");

    const sendMessage = async () => {
        const userMsg = { role: "user", content: input };
        const newHistory = [...messages, userMsg];
        setMessages(newHistory);
        setInput("");

        const res = await fetch("/api/chat/hint", {
            method: "POST",
            headers: { "Content-Type": "application/json" },
            body: JSON.stringify({ smiles, quiz_context: quizContext, history: newHistory })
        });
        const data = await res.json();
        setMessages([...newHistory, { role: "assistant", content: data.reply }]);
    };

    return (
        
{messages.map((m, i) =>
{m.content}
)}
setInput(e.target.value)} />
); }
11

RAG System

화학 지식 강화를 위한 RAG 기술

아무리 뛰어난 인공지능 모델이라도 전공 서적 구석의 표 정보, 교사의 배포 PPT 자료 속 예시 정보 등 미학습 최신 데이터는 할루시네이션(환각)을 일으킵니다.

RAG(검색 증강 생성)은 프롬프트 처리 전에 교과서, 참고자료 등 신뢰할 수 있는 소스 문서에서 정밀한 지식을 검색하여 컨텍스트로 LLM에 넘겨줌으로써 100% 신뢰도 높은 교육용 단서를 보장합니다.

12

Google NotebookLM 및 notebooklm-py

13

notebooklm-py 파이썬 연동 코드

import subprocess

def query_textbook_rag(question: str) -> str:
    # CLI 기반 notebooklm-py 호출 예시
    # 로컬에 설정된 chemistry_textbook 노트북 소스를 질의합니다.
    try:
        cmd = ["notebooklm", "ask", question]
        result = subprocess.run(cmd, capture_output=True, text=True, check=True)
        return result.stdout.strip()
    except Exception as e:
        # 백업 에러 핸들링
        return "교과 정보 조회가 일시적으로 차단되었습니다. 기본 원리를 기반으로 힌트를 주도록 처리합니다."
14

Antigravity 워크스페이스 스킬

우리가 개발한 챗봇 시스템과 RDKit 연산, 그리고 RAG 스크립트를 에이전트가 완벽히 제어하여 자율 유지보수하도록 워크스페이스 스킬로 묶어야 합니다.

Workspace Skill은 프로젝트 루트 내 .agents/skills/chemistry-tutor/ 위치에 패키징하여, 에이전트가 언제든 소환할 수 있는 도구 패키지로 구성됩니다.

15

Chemistry Tutor 스킬 디렉터리 구조

# chemistry-tutor 스킬 폴더 구조
.agents/skills/chemistry-tutor/
 ├─ SKILL.md                 # 에이전트의 도구 인식용 설명 및 YAML 메타데이터
 ├─ scripts/
 │   ├─ generate_quiz.py     # 분자 퀴즈 생성 스크립트
 │   └─ socratic_tutor.py    # 힌트 챗봇 테스트 드라이버
 └─ resources/
     └─ textbook_curriculum.txt  # 힌트용 공통 화학교육과정 텍스트 파일
16

SKILL.md 상세 정의 및 메타데이터

---
name: chemistry-tutor
description: 학생이 입력한 분자구조와 SMILES 식을 기반으로, 소크라테스식 퀴즈를 생성하고 단계별 힌트 피드백을 제공하는 자율 튜터 시스템을 제어합니다.
---

# Chemistry Tutor Skill

## When to use this skill
- 학생에게 화학 구조와 화학 결합 관련 문제를 제시하고 채점하고자 할 때
- 분자 구조 분석 웹앱의 챗봇 모듈을 통합 검증하거나 시뮬레이션 할 때

## How to use it
1. `python .agents/skills/chemistry-tutor/scripts/generate_quiz.py --smiles `를 실행하여 문제 템플릿을 생성합니다.
2. 학생의 답안이 입력되면 `socratic_tutor.py`를 실행하여 힌트를 얻습니다.
17

튜터 에이전트 런 스크립트 예제

# .agents/skills/chemistry-tutor/scripts/socratic_tutor.py
import sys
import argparse
from rdkit import Chem

def main():
    parser = argparse.ArgumentParser()
    parser.add_argument("--smiles", required=True)
    parser.add_argument("--answer", required=True)
    args = parser.parse_args()
    
    mol = Chem.MolFromSmiles(args.smiles)
    if not mol:
        print("Error: Invalid SMILES")
        sys.exit(1)
        
    print(f"[Tutor Log] SMILES '{args.smiles}' 에 대한 분석을 완료했습니다.")
    print(f"[Socratic Response] '{args.answer}'는 흥미로운 해석이군요! 분자 모형에서 대칭성이 극성 상쇄에 어떤 영향을 미쳤는지 한 번 더 생각해보세요.")

if __name__ == "__main__":
    main()
18

System Integration

에이전트의 도구 활용 및 자율 검증

워크스페이스 내에 이 스킬이 탑재되면, Antigravity 에이전트는 사용자의 별도 코딩 명령 없이도 스킬을 자동 인식합니다.

19

챗봇 연동 및 통합 테스트 시나리오

20

2부 강의 요약

우리는 화학 구조 데이터를 기반으로 퀴즈를 자동 제너레이션하고, 교과 지식 RAG(NotebookLM)를 융합하여 학생들의 자기주도적 오개념 극복을 돕는 소크라테스식 대화형 챗봇 시스템을 구축했습니다.

이러한 분자 시각화 모듈과 에이전트 튜터링 스킬 시스템의 통합은 향후 다른 과학/공학 교육 영역으로 즉각 이식 및 확장 가능한 고도의 디지털 교육 인프라의 표준입니다.

21

THANK YOU

Q&A 및 자율학습 도우미 구현 실습

22