10/3 ~ 10/13까지의 황금같은 연휴가 지나갔다... 😱
이번주부터는 스프린트2 기간이다.

먼저 지난 스프린트1때 LLM테스트 해보겠다고 가지고 있던 데이터 외에 찾은 데이터를 기존 데이터와 합쳤다. 그래서 원래의 데이터에 548개의 데이터를 더해 총 59208개의 데이터를 Pinecone에 적재시킨 후 다시 식단 추천을 받아보았다.

파인콘 인덱스에 데이터가 위처럼 들어가있고 LLM에게 식단을 짜달라고 했는데 아래처럼 나왔다.

우선 결과가 마음에 들지 않았다. 그 이유들은 다음과 같다.
- 아침/점심/저녁 추천에 "자료에 없음"이 너무 많음
- 칼로리도 마찬가지로 "자료에 없음"이 너무 많음
- 시각적으로 보기 불편함
- 현실적으로 해당 식사 시간대에 먹을법한 음식을 고려하지 않음
- 음식의 조화도 고려하지 않음 (한번 더 돌려보니 아침에 총각김치+저지방 우유 먹으라함..😤)
- 음식의 제품명으로 출력이 됨 (예를들어, "대구탕"이라는 순수 음식명으로 추천하고 싶은데 위 결과를 보면 "430chef 시원한 대구탕"라는 제품명으로 출력되는 문제)
그래서 팀 회의에 들어갔고 출력 포맷을 확실하게 정하기로 하였다. (+ 데이터도 순수 음식명만 들어가있는 548개의 데이터만으로 다시 Pinecone에 적재 후 이 데이터만으로 프롬프트 엔지니어링 진행하기로 함) 만약 우리가 추천해준 식단이 사용자가 마음에 들지 않으면 다른 후보로 추천받도록 할 것이다. 그래서 프롬프트의 출력 형식을 아래와 같이 두었다.
<출력 형식>
< {date} 식단 추천 >
아침
후보1 : 음식A + 음식B + 음식C (총 nnn kcal)
후보2 : 음식A + 음식B + 음식C (총 nnn kcal)
후보3 : 음식A + 음식B + 음식C (총 nnn kcal)
점심
후보1 : 음식A + 음식B + 음식C (총 nnn kcal)
후보2 : 음식A + 음식B + 음식C (총 nnn kcal)
후보3 : 음식A + 음식B + 음식C (총 nnn kcal)
저녁
후보1 : 음식A + 음식B + 음식C (총 nnn kcal)
후보2 : 음식A + 음식B + 음식C (총 nnn kcal)
후보3 : 음식A + 음식B + 음식C (총 nnn kcal)
그리고 그 결과 사용자 쿼리로 근육증가가 목표라고 하고 하루 총 칼로리는 2500kcal이내로 추천해달라고 하였더니 아래와 같은 결과가 나왔다.

확실히 데이터양이 적긴 하지만 순수 음식명만 있는 데이터로 진행해보니 나름 생각했던대로 잘 나오긴 하였고, 이제 하루가 아닌 우리의 목적인 일주일 치 식단을 짜달라고 하였으나 출력되다가 짤리고 말았다.
알아보니 7일 X (아침/점심/저녁 후보 3개씩) 총 63개의 식단을 출력해야하는데 토큰이 너무 커서 출력이 끊긴 것이어서 -> 일일 생성용 day_prompt(LLM 7번 호출)와 주간 요약용 week_prompt(LLM 1번 호출)로 역할 나누면 나중에 문제 생긴 날만 재생성할 수 있다고 하여 프롬프트를 수정하고 다시 LLM을 호출해보았다.


일주일 치 식단 추천이 짤리지 않고 나왔으나 그리 마음에 들지 않는다. 우선 하루의 총 칼로리도 평균적으로 1000kcal뿐이고, 같은 메뉴를 반복적으로 출력하고 있다. "오늘 먹은 음식을 내일도, 모레도 또 먹고 싶을까?" 그리고 "메뉴가 마음에 안들어서 새로고침하여 다른 후보 식단을 보는데 앞에서 본 후보랑 똑같은 메뉴가 많은데?"라는 의문점이 들어서 이를 더 보완하기 위해 프롬프트를 더욱 정교화해야할 것 같다. 10/18일은 2차 멘토링이 진행되고, 다음주는 이어서 스프린트2 기간으로 WBS 계획대로라면 POC를 진행해야해서 이번주보다 더욱 바쁠 것 같다.