개발 기록1 (OpenAI 파인튜닝)
테스트잇 유명인 닮은꼴 테스트
테스트잇 유명인 닮은꼴 테스트
test-it.co.kr
이런 테스트가 좀 있다.
카톡으로 공유해서 한 번씩 해보는 장난 같은 사이트.
초딩들이 한 번씩 해볼만한 그런 느낌.
누가 더 아까운지 (외적으로) 테스트가 있으면 재밌을 것 같아서 만들어봄.
원래 사진을 업로드 하면 다른 사용자들이 투표해서 얼마나 아까운지 퍼센티지로 나타내려고 했는데 괜히 구현하기 복잡해질 게 뻔해서 그냥 AI한테 시키기로 결정했다.
bubble로 만들었고 딴 거 하면서 한 일주일 정도 걸렸다.
제일 먼저 이걸 gpt가 할 수 있는지를 살펴봤는데
한번에 말을 듣진 않았다.
그래도 상처받을 사람이 아니라는 인지를 계속 주니까 응답을 줬다.
💎 외모 분석 결과
🌟 더 매력적인 사람: 첫 번째 사람
👀 1. 눈
- 첫 번째 사람: 크고 둥글며 친근한 인상을 주는 눈매입니다. 쌍꺼풀이 자연스럽게 자리 잡아 부드럽습니다.
- 두 번째 사람: 날카로운 눈매로 성숙한 이미지를 주지만, 약간 차가운 인상을 남길 수 있습니다.
👃 2. 코
- 첫 번째 사람: 콧대가 적당히 높고 코끝이 둥글어 조화로운 이미지를 형성합니다.
- 두 번째 사람: 높은 콧대를 가졌지만 코끝이 약간 뾰족하여 강한 인상을 줄 수 있습니다.
👄 3. 입
- 첫 번째 사람: 도톰한 입술과 살짝 올라간 입꼬리가 생기를 더합니다.
- 두 번째 사람: 얇고 단정한 입술로 깔끔하지만 감정 표현이 부족해 보입니다.
😌 4. 얼굴형
- 첫 번째 사람: 부드러운 곡선형 얼굴로 대중적인 매력을 더합니다.
- 두 번째 사람: 날렵한 V라인이 성숙하지만 약간 차가운 인상을 줄 수 있습니다.
💇 5. 헤어스타일
- 첫 번째 사람: 밝은 브릿지가 들어간 긴 머리가 트렌디한 매력을 더합니다.
- 두 번째 사람: 단정한 단발 머리가 안정적이지만 다소 개성이 부족합니다.
✨ 6. 피부 상태
- 첫 번째 사람: 생기 있고 균일한 피부 톤이 돋보입니다.
- 두 번째 사람: 깨끗하지만 약간 칙칙한 피부 톤이 아쉽습니다.
💬 총평 첫 번째 사람은 밝고 친근한 매력을 가지고 있어 대중적인 호감을 얻기 쉽습니다.
⚠️ 아쉬운 점
- 첫 번째 사람: 피부의 약간의 트러블이 있습니다.
- 두 번째 사람: 차가운 눈매가 특정 취향으로 제한될 수 있습니다.
🏆 결론 첫 번째 사람이 더 매력적이라고 판단됩니다.
수정을 반복해서 위와 같은 형태의 답변을 출력하게 했다.
근데 이걸 API로 활용하려면 한번에 출력을 해야 하니까
OpenAI API를 알아봤는데 엄청 종류가 많았다.
그 중에 내가 이용해야 할 건 gpt-4이다.
(정확히는 API 종류는 Audio, Chat, Embedding... 이런 식으로 구분이 된다. 여기서 Chat 엔드포인트를 사용하는데 AI 모델이 gpt-4여야 하는 거다)
이미지를 분석해서 내가 원하는 형식으로 출력해야 하니 멀티모달이 되는 gpt-4밖에 없었다.
공식문서에 예시도 들어놔서 그대로 베껴서 만들었다.
나누고 있던 대화를 보내고 마지막에 내 명령으로 끝내면 답변이 돌아오는 구조다.
메세지에는 system, user, assistant가 있는데 자기가 하고 있던 말이 assistant로 입력이 되는 구조인 게 특이했다.
하여튼 처음에는 prompt가 엄청 길어서 (한번에 출력을 꼭 안 해서;;) 한번 호출할 때마다 토큰을 엄청 쓰는 것 같았다.
한번 fine-tuning을 해볼까 싶어서 열심히 찾아보면서 했다.
예시 문장을 100개 정도 gpt랑 노가다해서 만들었다. gpt는 한 번에 출력할 양을 정해둔 건지 100개씩 출력은 안 해줘서..
파이썬 라이브러리 깔고 CLI로 하고 있었는데 마지막에 오류가 났다. 알고보니 CLI 쓰는 건 2025년부터 없어지고 API 쓰는 방식으로 바뀌었다고...
보니까 그냥 웹에서 GUI로 할 수 있게 아주 유저친화적으로 바뀐 것 같다.
근데 입력 JSONL형식도 바뀌었다...
100개를 일일이 수정하기는 또 귀찮고,, gpt는 3개씩밖에 출력을 못하고..
그냥 귀찮아져서 프롬프트 수정하기로 했다.
fine-tuning할 정도로 어려운 주문은 아니긴 했다.
프롬프트를 text형식으로만 구성해서 응답을 받아보니까 토큰도 별로 안 쓰고 답변도 제대로 나옴.
한번 호출할 때마다 대충 $0.006정도 씀.
그럼 한 30초 광고 보게 하면 되지 않으려나?
대충 완성했다.
이제 도메인, 이름짓기, 공유 미리보기, 광고 알아보기, UI 개선 정도만 하면 된다.