Developer's Development
[플레이데이터 SK네트웍스 Family AI 캠프 17기] 11주차 회고 본문
Hello World 👋🏻
바쁜 일상에 부딪혀 일주일 늦게 지난주의 회고를 가져온 주인장입니다.
정신없이 한 주를 보내고 나니 벌써 9월 중순을 향해 달려가고 있네요.
그래도 더 늦기 전에, 지난 한 주 동안 무엇을 배우고 어떤 도전을 했는지 차분히 정리하며 기록을 남겨볼게요 🏃🏻♀️
📅 공부 기록
- 2025.09.01 - [LLM] - 3.3.10 [LLM] 실습 (OpenAI API)
- 2025.09.02 - [LLM] - 3.3.11 [LLM] Ollama
- 2025.09.13 - [LLM] - 3.3.12 [LLM] 프롬프트 엔지니어링: 벡터 데이터베이스
- 2025.09.13 - [LLM] - 3.3.13 [LLM] 프롬프트 엔지니어링 응용: LangChain
- 2025.09.13 - [LLM] - 3.3.14 [LLM] 프롬프트 엔지니어링 응용: RAG
지난주에는 단순한 LLM 활용을 넘어, LLM을 더욱 똑똑하고 유용하게 만드는 심화 기술들을 공부했어요.
외부 API나 로컬 모델을 다루는 것에서 시작해,
벡터 데이터베이스에 지식을 저장하고,
LangChain으로 복잡한 작업 흐름을 설계하고,
최종적으로 RAG(검색 증강 생성)를 통해 모델이 최신 정보와 전문 지식을 참조하여 답변하게 만드는 전체 과정을 배우며,
LLM 애플리케이션의 무한한 가능성을 엿볼 수 있었어요.
📝 실습 기록
- Voice Chatbot
https://github.com/mylee99125/VoiceChatBot
GitHub - mylee99125/VoiceChatBot
Contribute to mylee99125/VoiceChatBot development by creating an account on GitHub.
github.com
지난주에는 음성 인식을 통해 두 명의 사용자가 롯데 자이언츠 퀴즈쇼에 참여하는 인터랙티브 게임을 구현했어요.
AI는 롯데 자이언츠 관련 퀴즈를 출제하는 '퀴즈 갈매기' 호스트 역할을 맡아, 전체 게임 흐름을 음성으로 안내하고 사용자와 상호작용해요.
하지만 RAG와 파인튜닝 없이 LLM의 내장 지식과 프롬프트 엔지니어링만으로 구현해야 한다는 전제 조건이 너무 어렵게 느껴졌어요.
모델의 환각(Hallucination)을 막고, 정확한 최신 퀴즈를 내도록 하는 것이 가장 큰 도전이었습니다.
❌ 발견했던 오류와 해결 과정
역시나 가장 큰 문제는 LLM이 잘못된 사실을 기반으로 퀴즈를 출제하거나, 없는 사실을 지어내는 환각 현상이었습니다.
예를 들어, 존재하지 않는 선수의 기록을 묻거나, 틀린 연도의 우승 기록을 퀴즈로 내는 경우가 많았죠.
RAG를 사용할 수 없었기 때문에, 이 문제를 해결하기 위해 시스템 프롬프트에 엄청난 양의 규칙과 예시를 추가해야 했습니다.
"출제하는 모든 퀴즈의 정답은 반드시 검증된 사실이어야 하며, 절대 지어내면 안 된다.", "주관적이거나 애매한 질문을 절대 하지 않는다."와 같은 아주 구체적이고 강력한 제약 조건을 프롬프트에 명시하고, 양질의 퀴즈 예시(Few-shot)를 여러 개 제공하는 방식으로 모델의 답변 경향을 유도했습니다.
프롬프트가 점점 길고 복잡해졌지만, 이런 내용을 통해 환각 현상을 상당 부분 제어할 수 있었어요.
비록 프롬프트 엔지니어링만으로는 최신 정보를 반영하거나 모든 오류를 막는 데 한계가 있었지만, 두 명의 사용자를 구분하고, 점수를 기록하는 음성 봇을 완성할 수 있었어요.
이 과정을 통해 프롬프트 엔지니어링의 가능성과 명확한 한계를 동시에 느낄 수 있었던 값진 경험이었어요 ✨

💭 KPT
Keep
RAG나 파인튜닝 없이 오직 프롬프트 엔지니어링만으로 복잡한 멀티유저 게임 로직을 구현해 보려고 끝까지 시도한 점이 좋았어요.
제약 조건 속에서 LLM의 성능을 끌어내는 경험을 통해, 프롬프트 설계의 중요성을 깨달을 수 있었어요.
또한, STT, LLM, TTS를 결합하여 인터랙티브한 음성 경험을 만들어낸 것 자체도 큰 성취였습니다.
Problem
LLM의 환각 현상을 완벽하게 제어하지 못했던 점이 가장 아쉬웠어요.
아무리 프롬프트를 정교하게 짜도, 모델이 학습하지 않은 최신 정보나 특정 세부 사실에 대해서는 오류가 발생할 수밖에 없다는 한계를 명확히 느꼈어요.
또한, 게임의 상태(점수, 턴 등)를 모두 프롬프트에 담아 전달하다 보니, 대화가 길어질수록 프롬프트가 너무 무거워지고 관리하기 어려워지는 문제도 있었습니다.
Try
이번 주에 배운 RAG와 벡터 데이터베이스를 프로젝트에 즉시 적용해보고 싶어요.
롯데 자이언츠의 최신 선수 기록, 역사 등 신뢰할 수 있는 데이터를 벡터 DB에 저장하고, 챗봇이 이 정보를 참조하여 퀴즈를 내도록 구현한다면 환각 문제를 근본적으로 해결할 수 있을 거예요.
또한, 복잡한 애플리케이션의 흐름을 LangChain을 이용해 체계적으로 관리하여, 유지보수가 용이한 코드를 작성하는 연습도 해봐야겠습니다.
늦었지만, 이렇게 한 주를 정리하고 나니 뿌듯한 마음이 드네요.
힘든 제약 조건 덕분에 오히려 RAG와 같은 새로운 기술의 필요성을 더욱 절실하게 느낄 수 있었던 아이러니한 한 주였습니다.
이제는 문제를 회피하는 것이 아니라, 더 나은 기술을 통해 정면으로 돌파할 수 있는 무기를 얻은 기분이에요.
앞으로 배운 기술들을 활용해 어떤 재미있는 것들을 만들게 될지, 스스로도 기대가 되어요.
그럼 저는 다음 주에 또 다른 성장 이야기로 찾아올게요!
'회고' 카테고리의 다른 글
| [플레이데이터 SK네트웍스 Family AI 캠프 17기] 13주차 회고 (0) | 2025.09.28 |
|---|---|
| [플레이데이터 SK네트웍스 Family AI 캠프 17기] 12주차 회고 (3) | 2025.09.14 |
| [플레이데이터 SK네트웍스 Family AI 캠프 17기] 10주차 회고 (3) | 2025.09.01 |
| [플레이데이터 SK네트웍스 Family AI 캠프 17기] 9주차 회고 (6) | 2025.08.24 |
| [플레이데이터 SK네트웍스 Family AI 캠프 17기] 8주차 회고 (1) | 2025.08.21 |