성능이 다른 3가지 AI 모델로 과제를 수행해보는 체험 부스. 낮은 성능 모델로 좋은 답안을 만들어낼수록 점수 보너스가 커진다.
이 저장소는 채점(Evaluation) 서버다. 실제 참가자용 화면(프론트엔드)은 별도 프로젝트(chatbot-frontend, React + Vite)에 있다. 이 저장소 안의 components/BoothApp.tsx는 API 동작을 확인하기 위한 자체 테스트용 화면일 뿐, 부스 당일 실제로 쓰이는 화면이 아니다.
- 프론트엔드 (별도 프로젝트,
chatbot-frontend): 참가자가 보는 실제 화면. 과제 표시, 모델 선택, 생성 결과 표시, 제출 버튼을 담당. - 생성 서버 (별도 프로젝트, 이 저장소 밖에 있음):
beginner/intermediate/advanced3단계 모델로 답안을 생성한다. 규격은 GENERATION_API.md 참고. - 이 서버 (Next.js): 채점만 담당한다. 규격은 BACKEND_API.md 참고.
/api/evaluate로 요청이 오면 로컬 Ollama로 답안을 채점해 점수를 계산한다.
프론트엔드 ──POST /generate───────▶ 생성 서버 (다른 프로젝트, localhost:8000)
프론트엔드 ──POST /api/evaluate──▶ 이 서버 (Next.js) ──▶ 로컬 Ollama (채점)
프론트엔드가 이 서버와 다른 origin(포트)에서 뜨기 때문에, 이 서버의 API는 CORS를 열어둔 상태다 (lib/cors.ts).
- 참가자가 저성능(beginner)/중간(intermediate)/고성능(advanced) 모델 중 하나를 선택한다.
- 프론트가 생성 서버에
{model, prompt}를 POST해서 답안(response)을 받는다. - 참가자가 제출하면 프론트가 이 서버의
/api/evaluate에{model, prompt, response}를 POST한다 —prompt는 생성 요청 때 보낸 것과 동일해야 한다. - 이 서버가 로컬 Ollama(채점 전용 모델)로 답안을 채점하고,
score(기본 점수) × 모델 등급별 보너스 배율을final_score로 반환한다 (저성능일수록 배율이 큼: x1.3 / x1.15 / x1.0). 자세한 요청/응답 스키마는 BACKEND_API.md 참고.
- 생성 서버: 다른 프로젝트에서 실행되며 GENERATION_API.md 규격을 따른다.
- 채점용 로컬 LLM: Ollama를 설치하고 채점 모델을 받아둔다 (기본값 기준):
ollama pull llama3.1:8b
.env.example을 복사해.env.local을 만들고 필요하면 값을 수정한다.cp .env.example .env.local
npm install
npm run dev이 서버는 http://localhost:3000에서 뜬다. /api/evaluate, /api/health를 실제로 테스트하려면 Ollama가 떠 있어야 한다. (이 저장소의 자체 테스트 화면을 쓰려면 생성 서버도 함께 떠 있어야 한다.)
- 채점용 Ollama는
OLLAMA_HOST,GRADING_MODEL로 관리한다. Ollama를 다른 머신에서 돌린다면OLLAMA_HOST만 그 머신 주소로 바꾸면 된다 (예:http://192.168.0.10:11434). - 이 서버 자체의 배포 주소가 바뀌면, 프론트엔드 팀에 새 Base URL을 공유해야 한다 (BACKEND_API.md의 Base URL 섹션 참고).
- (자체 테스트 화면만 해당) 생성 서버 주소는
.env.local의NEXT_PUBLIC_GENERATION_API_URL로 관리한다.NEXT_PUBLIC_접두사가 붙은 값은 빌드 시점에 박히므로 값을 바꾸면 재시작/재빌드가 필요하다.
- app/api/evaluate/route.ts — 채점 API (이 서버의 핵심 엔드포인트, 규격은 BACKEND_API.md)
- app/api/health/route.ts — 상태 확인 API
- lib/ollama.ts — 채점용 로컬 Ollama 호출 클라이언트
- lib/models.ts — 모델 등급(beginner/intermediate/advanced)별 보너스 배율, 채점 모델 설정
- lib/cors.ts — 다른 origin(프론트엔드)의 요청을 허용하기 위한 CORS 헤더
- lib/tasks.ts, lib/generationClient.ts, components/BoothApp.tsx — 이 저장소 자체 테스트용 화면 (부스 당일 실제 프론트엔드 아님)
- BACKEND_API.md — 이 서버의 API 규격 (프론트엔드 팀 공유용)
- GENERATION_API.md — 생성 서버 API 규격 (다른 프로젝트 소유, 참고용 사본)