- 운세 기능
- 댓글 기능
- 뱃지 기능
- 챗봇 기능
- 가벼운 진입 장벽: 누구나 즐길 수 있는 가벼운 콘텐츠로 가볍게 터치 하고 자연스럽게 서비스를 탐색하도록 돕습니다.
- 공감대 형성 : 단순한 운세가 아닌, 각 과정별 맞춤 운세를 제공하여 사용자에게 더욱 친근한 느낌으로 다가오도록 합니다.
- 재방문 유도 : 매일 바뀌는 운세를 통해 사용자의 재방문을 유도할 수 있습니다.
평가 기준
중요 순위 | 평가 항목 | 설명 |
---|---|---|
1 | ⚡ 응답 속도(시간) | 특히 운세는 실시간성이 중요 → 빠르게 응답되는지 |
2 | 🧠 성능 | 문장 품질, 감성 표현력, 문맥 이해력 |
3 | 🎯 목적 적합성 | - 한글 잘 되는지 + 운세의 텍스트 길이가 잘 맞는지 |
4 | 💸 경량화 | Colab, CPU 환경에서 잘 돌아가는지 / API 비용은 적은지 |
5 | 🔥 트렌드 성 | 현재 많이 사용되고, 커뮤니티/지원이 활발한 모델인지 |
6 | 🛠 파인튜닝 용이성 | LoRA, Unsloth, PEFT 등으로 커스터마이징 가능 여부 |
모델 선정 과정
모델명 | 출력 문장 품질 | 실질 조언력 🎯 | 표현 오류 |
응답 속도 ⏱️ | GPU 사용량 (GB) | 운세 생성 적합성 |
---|---|---|---|---|---|---|
Mistral-7B-Instruct-v0.3 | ✅ 매우 좋음 | ✅ 학습/문제 해결 균형 있게 제시 | ❌ 없음 | 7초 | 14.0 | 🟢 매우 적합 |
KORani-v3-13B | ✅ 좋음 | ✅ 실제 업무 상황을 반영한 현실적 조언 | ❌ 없음 | 46초 | 39.9 | 🟡 적합 (자원 많이 씀) |
Gukbap-Mistral-7B | ❌ 중복/불완전 | ✅ 있음 | 40초 | 27.9 | 🔴 부적합 | |
Eximius_Persona_5B-GGUF | ✅ 감성 우수 | ✅ 감정 표현 풍부, 창의적 조언 제공 | 38초 | 39.3 | 🟢 감성 운세에 적합 | |
Meta-LLaMA-3-8B-Instruct | ✅ 구조 매우 좋음 | ✅ 형식화된 JSON 운세, 명확한 어투 | ❌ 없음 | 1분 | 39.3 | 🟢 영어 운세에 최적 |
Gemma 3 1B Instruct | ✅ 매우 좋음 | ✅ 코드/배포/협업 항목별 구체적 조언 제시 | ❌ 없음 | 9초 | 2.2 | 🟢 매우 적합 |
TinyLlama-1.1B-Chat | ✅ 짧고 명확함 | ❌ 없음 | 5초 | 7.4 | 🟢 적합 (가볍고 빠름) | |
HyperCLOVAX-SEED-Text-Instruct-1.5B | ✅ 문장 구성 매우 안정적 | ✅ 운세 출력 + 공손한 표현 훌륭 | ❌ 없음 | 6초 | 8 | 🟢 매우 적합 |
최종 모델: 빠른 응답속도와 안정적인 출력을 고려하여 HyperCLOVAX로 선정됨.
- 사용자 요구 사항: 최대한 빠른 응답 요구
이슈 | 설명 | 해결 방법 | 결과 |
---|---|---|---|
JSON 형식 반환 실패 | 모델이 JSON 형식이 아닌 일반 문장, 마크다운, 스키마 설명 등을 반환함 | 정규표현식 (\{[\s\S]*?\}) 으로 마지막 JSON 블록만 추출 후 json.loads() 파싱. 예외 발생 시 HTTPException 으로 안전 처리. JsonOutputParser 로 구조 강제화 |
구조 일치 실패 문제 해결, fallback 로직으로 JSON 파싱 성공률 증가 |
성능(속도) 관련 | 사용자가 최대한 빠른 응답을 요구했으나, 초기 GPU 환경에서도 응답 시간이 9초 이상 발생 | - max_new_tokens 축소- 프롬프트 최소화 - sampling 파라미터 튜닝 ( temperature , top_p )- FP16 추론 적용 ( torch_dtype=torch.float16 )- 프롬프트 제외 디코딩 ( gen_ids 추출)- torch.inference_mode() 로 gradient 계산 제거- 토크나이저/모델 캐시 재사용 - 랜덤 노이즈 삽입으로 응답 다양성 확보 |
평균 응답 시간 9초 → 1.3초로 약 85.6% 속도 개선 |
a. 결과
L4 GPU 기준 평균 추론 속도 1.2~1.3초 | 실제 화면 |
---|---|
![]() |
![]() |
b. 회고
회고
KPT 분류 | 설명 |
---|---|
Keep (유지할 항목) | • 기능별 책임 구분이 잘 되어 있어 병렬 작업과 코드 정리가 수월했음. • 빠르게 MVP를 완성하고, 이후 모델 속도 및 응답 품질 개선을 지속한 점이 좋았음. |
Problem (문제점) | • 모델이 간헐적으로 JSON 형식으로 응답하지 않는 이슈가 있어, 기능 테스트를 반복적으로 수동으로 수행해야 했던 점이 번거로웠음. • 초기 파일 구조는 설정했지만, 각 파일에 어떤 내용을 작성해야 하는지 명확한 가이드가 없어 코드가 특정 파일에 몰리거나 일관성이 떨어졌고, 이후 리팩토링에 시간이 소요됨. • 기능이 잘 작동하는지에 대한 직관은 있었지만, 객관적으로 성능을 판단할 수 있는 명확한 기준이나 지표가 부족했음. |
Try (시도할 것) | • 자동 테스트 기능을 도입하여, 주요 API에 대해 FastAPI 기반 자동화 테스트 코드 작성하기. • 작업 기록, 에러 대응법, 디렉터리 구조, API 명세 등을 문서화하여 팀원 온보딩과 리뷰를 원활하게 하기. • 정답이 포함된 Top-5 기준 평가 방식 도입: 사전 정의된 질문 세트와 정답 리스트를 기반으로, 정답이 Top-5 안에 포함되면 100점, 없으면 0점 → 평균 점수로 성능 측정. • (향후) 성능 로그를 MongoDB에 자동 기록하고, 대시보드로 시각화하여 성능 비교 가능하도록 개선하기. |
- 사용자간 교류 유도 : 서로의 프로젝트에 반응하고 관심을 주는 문화를 만듭니다.
- 댓글 작성의 예시 제공 : AI가 각 프로젝트 마다 댓글을 달아주어 각 프로젝트에 대한 댓글 예시를 제공하게 되며, 댓글 작성에 부담을 낮춰줍니다.
- 피드백 기반의 성장 유도 : 각 팀의 아이디어, 기능을 기반으로한 댓글을 통해 개발자가 성장할 수 있는 환경을 제공합니다.
평가 기준
중요 순위 | 평가 항목 | 설명 |
---|---|---|
1 | 🧠 성능 | 문장 품질, 감성 표현력, 문맥 이해력 |
2 | 🎯 목적 적합성 | - 한글 잘 되는지 + 각 팀의 정보를 보고 알맞은 댓글을 생성할 수 있는지의 여부 |
3 | 💸 경량화 | Colab, CPU 환경에서 잘 돌아가는지 / API 비용은 적은지 |
4 | 🔥 트렌드 성 | 현재 많이 사용되고, 커뮤니티/지원이 활발한 모델인지 |
5 | ⚡ 응답 속도(시간) | 댓글 기능은 최대한 느리게 달릴 수록 좋음. |
모델 선정 과정
모델명 | 출력 문장 품질 | 실질 조언력 🎯 | 표현 오류 |
응답 속도 ⏱️ | GPU 사용량 (GB) | 댓글 생성 적합성 |
---|---|---|---|---|---|---|
Mistral-7B-Instruct-v0.3 | 칭찬 + 기술 언급 그러나 감성 부족 | ✅ 반복 표현 있음 | 10초 | 27.8 | 🟡 중간 | |
Gukbap-Mistral-7B | ✅ 진심 어린 칭찬 + 기술 언급 자연스러움 | ✅ 반복 표현 있음 | 10초 | 28.1 | 🟢 매우 적합 | |
TinyLlama-1.1B-Chat-v1.0 | ❌ 템플릿 출력 | ❌ 없음 | 6초 | 7.4 | 🔴 부적합 | |
Meta-LLaMA-3-8B-Instruct (GGUF) | ✅ 매우 좋음 | ✅ 진정성 + 구조적 설명 잘 어울림 | ❌ 없음 | 46초 | 0.0 (CPU 위주) | 🟡 적합 (느림) |
KORani-v3-13B | ✅ 좋음 | ✅ 채용담당자 관점 강조, 실용적 접근 | ❌ 없음 | 11초 | 39.3 | 🟡 적합 (VRAM↑) |
Gemma 3 1B Instruct | ✅ 매우 좋음 | ✅ 기술 요약 + 문장 정돈 잘됨 | ❌ 없음 | 2초 | 4.9 | 🟢 매우 적합 |
Eximius_Persona_5B-GGUF | ✅ 감성 표현 우수 | ✅ 사용자 입장 묘사 탁월 | 37초 | 0.0 (CPU 위주) | 🟢 감성 댓글 적합 | |
Meta-LLaMA-3-8B-Instruct.Q4_K_M | ✅ 영어 표현 좋음 | ✅ 개발자 대상 영문 리뷰에 적합 | ❌ 없음 | 46초 | 0.0 | 🟡 영어 리뷰용 |
HyperCLOVAX-SEED-Text-Instruct-1.5B | ✅ 문장 구성 매우 안정적 | ✅ 기술 요약 + 공손한 표현 훌륭 | ❌ 없음 | 10초 | 8 | 🟢 가장 균형 잡힌 성능 |
최종 모델 (Gemma 3 1B vs HyperCLOVAX-SEED 1.5B)
-> Gemma 3 1B Instruct로 선정됨.
-> 이유: 개발 과정에서 유사도 모델(sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2")로 입력 데이터와의 유사도를 측정하였으며, 평균적으로 0.4 ~ 0.8를 도출함. 0.3 ~ 0.7사이였던 HyperCLOVAX보다 할루시네이션이 적게 일어남. 더 긴 입력 프롬프트에 대해서도 댓글처럼 문장을 구성함.
a. 결과
"품앗이" 프로젝트 댓글 | "튜닝"프로젝트 댓글 | "미야옹즈"프로젝트 댓글 |
---|---|---|
![]() |
![]() |
![]() |
b. 회고
회고
KPT 분류 | 설명 |
---|---|
Keep (유지할 항목) | [팀] • 적극적인 커뮤니케이션과 협업 분위기: 각자의 의견을 자유롭게 말할 수 있었음. 논의가 필요한 사항에 대해 타운홀에서 대화할 것을 요청하면 흔쾌히 수락해주는 분위기가 좋았음. • 역할 분담과 책임감 있는 태도: 각자 맡은 파트를 책임감 있게 끝까지 마무리해주는 모습이 좋았음. • 빠른 피드백: 특히 평일 퇴근 후, 주말에 보내는 요청사항에 대해 빠르게 대응해주는 점이 좋았음. [개인] • 기획부터 배포까지 전체 흐름을 경험: 단순히 기능 구현에 그치지 않고, 아이디어 발굴 → 기획 설계 → 모델 선택 → API 구성 → 배포까지 End-to-End 전체 개발 프로세스를 경험함. 이를 통해 전체 그림을 보는 시야가 생김. • 모델의 전체 프로세스에 대한 고민: 성능을 고려하여 모델을 고르고, 프롬프팅 및 파라미터 튜닝을 하며 AI 코드를 직접 설계함. 특히 비동기 작업을 위한 큐 생성 과정은 실전에서 도움이 될 것임. • 문제 해결: 배포 과정에서 생긴 오류를 해결하며 로그 추적 및 디버깅 경험을 쌓음. |
Problem (문제점) | [팀] • 정보 공유의 부족: API 명세서 수정, UI 변경 등의 주요 변경사항이 사전에 공유되지 않아 다른 파트에 영향을 주었음. 작업을 번복하며 디버깅에 하루 이상이 소요됨. [개인] • 완성 댓글 퀄리티의 불명확성: 처음부터 어떤 댓글이 ‘좋은 댓글’인지 명확한 기준이 없어 딜레마에 빠졌고, 방향성 정립이 어려웠음. |
Try (시도할 것) | [팀] • 주요 변경사항 공유를 위한 기본 프로세스 마련: API 명세 변경, UI 수정, DB 스키마 변경 등 타인에게 영향을 줄 수 있는 변경사항은 사전 공유가 필요함. [개인] • 기획 초기 단계에서 '완성 기준'을 명확히 설정하고, 순서도를 그려 개발 중간의 혼란을 줄일 계획. |