2023. 5. 28. 17:19ㆍ취미로 하는 개발
DragGPT 익스텐션이 기본적으로 non-stream으로 동작하다 보니, 응답을 다 받기까지의 로딩 속도가 매우 답답하게 느껴지는 부분이 있었다.
고쳐야지... 하고 매번 생각만 하며 게으름을 피우다 보니 이제야 작업을 하게 되었다.
기존에 DragGPT를 만들며 재미있게 개발했던 포인트 중 하나는 XState였는데, 사실 이번에 코드를 오랜만에 보는 만큼 XState가 낯설게 느껴지지 않을까 하는 걱정이 있었다. 그러나 실제 개발 단계에서는 걱정을 무색하게 만들 정도로 편하게 작업할 수 있었다.
기존 채팅 상태머신에 receiving 상태를 하나 추가해서 작업하는 것만으로도 관심사를 많이 좁혀서 작업할 수 있었는데, state 패턴의 장점을 극한까지 느낀 것 같았다.
작업을 하면서 알게 된 사실인데, openai chat completion api에는 steam 모드에서 요청을 취소하는 기능이 없었다;;
물론 클라이언트 입장에서는 chunk 단위로 유저의 stop 지점에서 끊어서 저장하는 등의 작업을 할 수는 있었으나, api 서버 컴퓨팅 자원의 불필요한 사용을 막기 위해 중단 요청을 보낸다거나 하는 기능은 끝내 찾지 못했다.
그 밖에도 chrome.port를 사용한 에러 전달 과정에서 겪은 이상한 이슈(?)도 있긴 한데 아직 파악이 되지 않아 어떻게 공유를 해야 할지 모르겠다.
뭐 어쨌든... 미뤄왔던 숙원 사업을 하고 나니 이번 연휴를 너무 무익하게 보내는 것 같지는 않아서 기분이 좋다.
https://nookpi.tistory.com/166