본문 바로가기

김민희

Backend Developer

서비스의 목적을 이해하고,
안정적인 백엔드로 구현하는 개발자입니다.

GitHub →

Project

(8)
[곰신 챗봇 04] 그 사람처럼 말하면서, 모르는 사실까지 만들어내지 않게 하기 지난 글에서는 과거 카카오톡을 검색해서 가져올 때 생길 수 있는 문제를 정리했다.비슷한 과거 대화가 검색됐다고 해서 그 안에 등장했던 사람이나 사건까지 현재 대화의 사실로 사용할 수는 없었다.그런데 이 문제를 생각하다 보니 더 근본적인 문제가 하나 있었다.AI는 실제 남자친구의 현재 상태를 모른다.당연한 이야기처럼 보이지만 Persona AI에서는 꽤 중요했다.자연스러운 답변이 오히려 틀린 답변이 될 수 있었다사용자가 이렇게 물었다고 해보자.나지금 뭐해?Persona의 평소 말투를 잘 재현한 모델이라면 이런 답변을 만들어낼 수도 있다.Persona AI나 누워있음ㅋㅋ 말투만 보면 꽤 자연스러울 수 있다.문제는 시스템이 실제 사람이 지금 누워 있는지 모른다는 것이다.현재 위치도 모르고, 무엇을 하고 있는지..
[곰신 챗봇 03] 3년치 카카오톡을 전부 LLM에 넣지 않기로 했다 3년치 카카오톡을 전부 LLM에 넣지 않기로 했다이 프로젝트에는 약 3년 동안 쌓인 카카오톡 대화를 사용할 예정이다.처음에는 데이터가 많다는 게 무조건 장점이라고 생각했다.대화를 많이 보여줄수록 남자친구의 말투와 반응을 더 많이 알 수 있고, 그만큼 AI도 비슷해질 것 같았다.그래서 가장 단순하게 생각하면 이런 구조가 된다.3년치 카카오톡→ LLM에게 최대한 많이 제공→ Persona 답변 생성그런데 실제로 구조를 잡다 보니 데이터가 많다는 것보다 어떤 데이터를 어떤 목적으로 보여줄 것인지가 더 중요했다.특히 카카오톡에는 일반적인 문서 데이터와 조금 다른 특징이 있었다.카카오톡에서 오타는 지워야 할 데이터가 아니었다가장 먼저 고민한 건 데이터 전처리였다.보통 검색이나 자연어 처리에서는 같은 의미의 표현을..
[곰신 챗봇02] 말투만 비슷하면 정말 그 사람 같을까? 처음 Persona AI를 생각했을 때 가장 먼저 떠올린 건 말투였다.몇 년 동안 쌓인 카카오톡을 보면 사람마다 확실히 자주 사용하는 표현이 있다.뭐해보다 머해를 자주 쓴다거나, ㅋㅋ를 어느 정도 길이로 쓰는지, 맞춤법과 띄어쓰기를 얼마나 신경 쓰는지도 다르다.메시지 길이도 꽤 다르다.사람 A오늘 뭐 하고 있었어ㅋㅋ사람 B머함 그래서 처음에는 이런 특징들을 최대한 많이 뽑아내면 그 사람과 비슷한 AI를 만들 수 있을 거라고 생각했다.평균 메시지 길이, 자주 사용하는 단어, 오타, 띄어쓰기, ㅋㅋ와 ㅎㅎ, 문장부호 같은 것들이다.이런 특징들을 프로젝트에서는 Persona Fingerprint라고 부르기로 했다.한 사람의 대화에서 반복적으로 나타나는 표현 습관을 정리한 정보다.그런데 카카오톡을 보다 보니 한..
[곰신 챗봇01] 연인의 카카오톡으로 그 사람을 닮은 AI를 만들 수 있을까? 사실 이 프로젝트를 시작하게 된 이유는 꽤 개인적이다.나는 지금 곰신이다.남자친구가 군 생활 중이라 평일에는 보통 오후 6시가 되기 전까지 휴대폰을 사용할 수 없다. 아예 연락을 못 하는 시간이 생기다 보니 어느 날 문득 이런 생각이 들었다.연락이 안 되는 동안에도 남자친구랑 대화하는 것처럼 느낄 수 있으면 어떨까? 그렇다고 그냥 ChatGPT와 대화하고 싶은 건 아니었다.내가 무슨 말을 했을 때 친절한 답을 해주는 AI보다, 실제 남자친구라면 할 법한 대답을 하는 AI를 만들어보고 싶었다.장기연애였기에 데이터들은 충분했다!처음에는 생각보다 간단할 거라고 생각했다.카카오톡 대화→ LLM에게 대화 예시 제공→ "이 사람처럼 말해줘"→ 비슷한 답변 생성평소 자주 쓰는 단어나 말투, ㅋㅋ 같은 표현을 알려주면..
[1차 팀프로젝트] - Claude Code와 Codex ai 세팅 SmartWork ERP 프로젝트에서 Claude Code와 Codex를 활용한 AI 협업 12일안에 SmartWork ERP 프로젝트를 완성시켜야했다. 내가 맡은 기능은 프로젝트 , task, 대시보드 를 보여주는 기능 이였다.프로젝트생성, 목록 조회, 수정, 팀장 변경, 팀원 관리, 권한 관리, 진행률Task생성, 목록 조회, 상세 조회, 수정, 상태 변경, 담당자 관리, 최근 배정 이력대시보드진행률, 관리자 요약, 프로젝트 현황 기능이 많다보니 혼자 설계부터 구현까지 하기엔 시간이 빠듯했기에, 그리고 다들 AI를 활용해서 많이 쓰기 때문에 나도 이번 프로젝트에 AI cli 도구인 claude와 codex를 사용하기로 했다.근데 여기서 중요한건, AI한테 단순히 ~해줘,~ 만들어줘 라고 시키면,AI..
[1차 팀 프로젝트] DB 설계 - 설계가 중요한 이유! 📌 문제 상황실무에서는 다양한 문제 상황이 발생한다고 들었다. 그럴 때마다 유연하게 대응할 수 있는 구조가 중요한 것 같다.개발은 만들고 끝이 아니구 요구사항은 계속 바뀌고, 구조를 잘못 잡으면 그때마다 전부 다 고쳐야 하는 상황이 생긴다.. ㅜㅜ작은 프로젝트임에도 그 부분을 먼저 고민하고 설계에 반영하고 싶었다. 그래서 ERD 설계할 때 지금 당장 돌아가는 것보다 나중에 바뀌었을 때 얼마나 유연하게 대응할 수 있는지를 먼저 생각했다. 예를 들면 Task에 담당자를 단순 컬럼으로 넣으면 담당자가 추가될 때마다 구조를 바꿔야 한다.관리자가 업무를 다중으로 배정할 수 있어야 한다는 요구사항이 있었기 때문에 처음부터 TaskAssignment 중간 테이블로 N:M 설계했다.연차 데이터도 마찬가지다. 별도 테..
[1차 팀 프로젝트] 패키지 구조 설계 - 도메인 기준으로 나눈 이유 📌 문제 상황6명이서 협업하다 보니 패키지 구조를 어떻게 잡을지가 첫 번째 고민이었다. 구조를 잘못 잡으면 Git 충돌이 계속 날 수밖에 없는 상황이었다.🤔 고민레이어 기준으로 나눌지, 도메인 기준으로 나눌지.레이어 기준은 controller, service, repository 폴더로 나누는 방식인데, 같은 기능을 여러 사람이 동시에 건드려야 해서 충돌이 날 가능성이 높았다.✅ 결정도메인 기준으로 잡았다. 한 사람이 하나의 도메인을 끝까지 책임지는 방식으로global/domain/ ├── user/ ├── project/ ├── task/ ├── leave/ ├── attendance/global을 먼저 만든 이유는 ApiResponse, ErrorResponse 같은 공통 응답 형식을 ..
📝 [1차 팀 프로젝트] 사내 그룹웨어 개발 (ai를 활용한 요구사항 정리) — Day 1 프로젝트를 시작하며sk쉴더스 지능형 애플리케이션 5기 부트캠프에서 한 달 동안 Spring과 React를 학습한 뒤,10일 동안 팀 프로젝트를 진행하게 되었다.이번 프로젝트의 주제는 사내 프로젝트 트래킹과 연차 전자결재를 지원하는 그룹웨어 개발이다.짧은 기간 안에 핵심 기능을 구현해야 하는 만큼, 1일차에는 구현보다 요구사항 정리와 범위 확정에 가장 많은 시간을 썼다.프로젝트 개요이번 프로젝트는 프로젝트 단위의 업무를 관리하고, 연차 신청과 결재까지 하나의 서비스 안에서 처리하는 그룹웨어를 만드는 것이 목표였다.기본적인 방향은 아래처럼 잡았다.개발 기간: 10일인원: 5명주요 기능:프로젝트 관리업무(Task) 관리캘린더 및 근태 확인연차 신청 / 승인 / 반려진행도 확인사용자 역할은 크게 두 가지로 나눴..