LLM 기반 교육 도구 개발: 배운 점들
요약
본 글은 정답을 바로 제시하는 대신 개념적 질문으로 학생을 안내하는 소크라테스식 튜터링 에이전트 구축 과정을 다룹니다. OpenAI SDK와 Oxlo.ai API를 활용하여 시스템 프롬프트 정의, 대화형 루프 구축, 구조화된 평가 기능을 구현한 개발 가이드입니다.
핵심 포인트
- 시스템 프롬프트가 모델 제어의 핵심 역할을 합니다.
- 대화 흐름 유지를 위해 메시지 리스트 관리가 중요합니다.
- JSON 모드를 활용하여 개념 마스터 여부를 구조적으로 평가할 수 있습니다.
- Oxlo.ai 사용 시 비용 예측이 용이하다는 장점이 있습니다.
우리는 정답을 바로 제시하는 대신 개념적인 질문을 통해 학생들을 안내하는 소크라테스식 튜터링 에이전트를 구축하고 있습니다. 이 버전을 내부 엔지니어 온보딩 도구에 적용한 경험이 있는데, 핵심은 모델이 너무 일찍 해결책을 알려주지 않도록 제어하는 것이었습니다. 제가 어떻게 만들었는지 소개합니다.
준비물
- Python 3.10 이상
- OpenAI SDK:
pip install openai - https://portal.oxlo.ai에서 받은 Oxlo.ai API 키
무료 Oxlo.ai 계정은 하루에 60개의 요청을 포함하며, 이는 프로토타이핑에 충분합니다. 프로덕션으로 전환할 경우, 요청당 고정된 가격 정책 덕분에 학생들이 긴 코드 블록이나 스택 트레이스를 채팅창에 붙여넣어도 비용 예측이 용이합니다. 자세한 내용은 https://oxlo.ai/pricing를 참조하세요.
1단계: 클라이언트 설정
먼저 Oxlo.ai에 접근할 수 있는지 확인했습니다. OpenAI SDK를 드롭인 대체재로 사용하고 스모크 테스트를 위해 빠른 모델을 선택했습니다.
from openai import OpenAI
client = OpenAI(base_url="https://api.oxlo.ai/v1", api_key="YOUR_OXLO_API_KEY")
...
2단계: 시스템 프롬프트 정의
시스템 프롬프트가 전체 제품입니다. 저는 이를 엄격하게 유지했습니다: 한 번에 하나의 질문만, 완전한 해결책은 금지하며, 학생이 개념을 마스터했는지 코드가 알 수 있도록 명확한 표시를 포함합니다.
from openai import OpenAI
client = OpenAI(base_url="https://api.oxlo.ai/v1", api_key="YOUR_OXLO_API_KEY")
...
3단계: 대화형 루프 구축
모델이 전체 대화 흐름을 파악할 수 있도록 메시지 리스트를 유지합니다. 또한 무한정 진행되는 세션을 방지하기 위해 루프를 최대 열 번으로 제한했습니다.
import os
from openai import OpenAI
...
4단계: 구조화된 평가 추가
튜터가 세션 완료를 표시한 후, 학생이 실제로 개념을 마스터했는지 확인하기 위해 JSON 모드를 사용하여 두 번째 모델 호출을 실행합니다. 이 작업은 범위가 좁기 때문에 더 작은 모델을 사용했습니다.
import json
import os
from openai import OpenAI
...
실행하기
스크립트를 tutor.py로 저장하고, 키를 설정한 다음, 실행합니다.
실행하기
스크립트를 tutor.py로 저장하고, 키를 설정한 다음, 실행합니다.
export OXLO_API_KEY="sk-oxlo.ai-..."
python tutor.py
Oxlo.ai에서 llama-3.3-70b를 사용하여 테스트한 실제 기록입니다:
Tutor가 준비되었습니다. 종료하려면 'exit'을 입력하세요.
Tutor: 정답으로 넘어가기 전에, 병합 정렬(merge sort)의 구조를 살펴보겠습니다. 이 알고리즘은 배열을 재귀적으로 분할합니다. n개의 요소로 시작했을 때, 모든 하위 배열이 하나의 요소를 가질 때까지 대략 몇 개의 분할 레벨이 있나요?
...
마무리
이 패턴은 시스템 프롬프트가 모델을 엄격하게 제약하기 때문에 작동합니다. 만약 더 심화된 주제를 튜터링하고 싶다면, 클라이언트 코드를 변경하지 않고도 더 깊은 추론(reasoning)을 얻기 위해 Oxlo.ai에서 llama-3.3-70b 대신 kimi-k2.6으로 교체하세요.
구체적인 다음 단계 두 가지는 다음과 같습니다. 루프를 웹 소켓(web socket)에 연결하여 학생들이 브라우저에서 사용할 수 있게 하고, 평가자(evaluator)의 JSON 출력을 데이터베이스에 저장하여 학생별 실제 학습 성과를 추적할 수 있도록 하세요.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기