이플젝은 해당 로봇들에서 시작했다. 포케보 큐브 너무 귀엽고 신기했다. 사실 이영상은 1년전에 봤었고 실제로 만들기에는 벅찬 실력이었다.
부트캠프를 하면서 만들기 충분한 실력이 되었고, ai는 gpt 로 대체할수 있을것 같았다.
처음 이 플젝을 구상할때부터 api 사용량이 너무 많을것 같아 걱정했다.
실시간 구현은 아니지만, 미리 대화 리스트를 받아놓고 각 로봇에 마치 대화하는것처럼 뿌려주는 방식이 확실히 대화가 끝나기 전까지 한번만 요청을 보내므로 api 사용량을 극단적으로 낮출수있을것 같아 이방식을 차용했다.

전체적인 구상도이다.
처음 개발할 당시, recoil 을 활용하여, count 변수를 전역 state 로 만들려고했다.
여기서 count state 는 로봇의 말할 순서를 정해주는 변수라고 보면된다. 따라서 Bot 컴포넌트에 해당 state 가 필요하다. 초기에는 Bots 에서 바로내려주면 되어서, 상관이없는데,
restart 버튼과 상호작용하기위해서는 전역상태가 좋다.
사실 recoil 전역 상태가 count 말고도, isTalking, isLoading 등이 있었다.
생각해보니, isTalking 과 isLoading 은 restart 와 상호작용 할필요 없고, Bots 에서 받는 count state 로 렌더링시 계산해 내려주기만 하면 되기에,
count 와 useMessageList 에서 내려준 비동기 데이터로 Bots 에 해당 변수들을 만들어 전역 상태를 없앴다.
session storage 에 토큰이 없을시 token form 컴포넌트를 띄워 입력하게 만들었다.
토큰을 입력받으면 session storage 로 토큰을 캐싱했다. 그래서 세션동안엔 token form 을 렌더링하지 않게했다.
토큰이 올바른지 체크하는 gpt api 경로가 따로 있는지 몰라서 일단 gpt 답변이 작게 오도록 prompting 을 했다. 예컨데,
"hi" 로 보내면 "hello whatcan i do for you" 이런식으로 짧은 문장이 올것이라 예상해 gpt 토큰 사용량을 줄였다.
restart 가 아직 잘 동작하지 않는다..
restart 버튼 클릭시 api 를 받아와야하는데 이전 에 받아온 데이터를 그대로 쓴다.
봇 들이 움직이는 기능을 추가하려한다. 그래서 충돌시 대화를 출력하도록 할 예정이다.
gpt 프롬프팅을 더 공부해서 이상한 답변이 안오도록 수정할예정이다.
아직 완성단계는 아니지만..
깃헙

혹시 개발하셨나요?? 유튜브 보고 찾다가 여기까지 들어오게 되었습니다.