이전 포스팅
2024.10.09 - [Side Project/TokenMetered] - 사이드 프로젝트) 개인용(로컬용) ChatGPT 만들기
사이드 프로젝트) 개인용(로컬용) ChatGPT 만들기
개발 동기나는 주로 ChatGPT를 활용한다. (Claude는 사용량 제한 있고, Gemini는 찰떡같이 알아듣지를 못한다.) ChatGPT 아쉬운 점 구독 가격이 비싸다. 20+2(부가 가치세) 달러... 종종 OpenAI api는 멀쩡한데
cornpip.tistory.com
TokenMeter
이전 포스팅에선 SaveChat 으로 프로젝트를 기획했는데 TokenMeter 로 이름을 바꿨다.
https://github.com/cornpip/TokenMeter
GitHub - cornpip/TokenMeter: Local ChatGPT
Local ChatGPT. Contribute to cornpip/TokenMeter development by creating an account on GitHub.
github.com
지금은 Nodejs, npm이 설치된 환경에서 소스 다운받고 npm run start 를 실행하면 사용할 수 있고,
다음 추가 feature로, Jupyter Lab(Docker)처럼 TokenMeter를 실행할 수 있도록 Docker 배포를 구상하고 있다.
사용 방법 (25-02)
깃헙에서 소스를 다운받고 npm run start 를 실행하면 http://localhost:5173/main 에 웹서비스가 올라가고
채팅 기록 DB는 server/database.db 에 저장된다.
1. 시작 화면의 우측 상단에 톱니바퀴를 클릭한다.

2. openai에서 발급받은 api key를 넣고 모델을 선택한다.

참고로 결제를 해두어야 한다. 예를 들어 10달러 넣어두면 api를 사용할 때마다 토큰량에 비례해 차감된다.
(최초 등록된 카드로 결제시 5달러가 추가로 빠져나가는데 나중에 되돌려준다.)
maximum send message count 항목은 message history 수를 정한다.
예를 들어 3이면 최근 3개의 대화를 history에 포함하여 api를 요청한다.
자세한 예시는 3. 내용을 보면서 확인하자. (현재는 3~4 정도로 사용하는 걸 추천한다.)

모델은 gpt-4o-2024-11-20 이 저렴하다.
chatgpt-4o-latest는 날짜 지정된 모델보다 비싸다. (batch api를 이용하면 싸다. 추후에 넣어볼 만한 feature)
자세한 Pricing은 홈페이지를 참고 https://platform.openai.com/docs/pricing

SelectBox에 없는 새로운 버전이 나왔다면 input에 직접 입력할 수 있다.
(단, 잘못 입력하면 api 요청 시 에러)
api-key를 입력하고 모델을 선택했다면 registration을 클릭하고 다시 main으로 돌아온다.
3. 대화를 시작하고 enter 또는 전송 아이콘을 클릭한다.


좌측에는 대화방을 선택/삭제 할 수 있다.

텍스트 에디터는 마크다운 문법을 사용한다. 줄 바꿈은 shift + enter 이다.

클립 아이콘이나 드래그&드롭으로 파일을 첨부할 수 있다. (25-02 현재는 이미지만 가능하다.)


대화 옆에 토큰량이 보이고 숫자를 클릭하면, 토큰 계산에 산정된 message history를 볼 수 있다.
위의 경우 config에서 설정한 message count=3 으로 앞의 3개의 message가 포함되어 전송되었다.
3개의 내용은 246 토큰, 1개의 답변은 1330 토큰이 들었다.
즉, 한 번의 질문/응답에 3개의 history를 사용했고 1576 토큰을 사용했다.
4. 이미지 생성



revised prompt는 이미지 생성에 최종적으로 사용된 프롬프트이다.
테스트 & 분석



평소 개발할 때 ChatGPT 대신 TokenMeter를 사용하며 테스트해 본 결과.
dall-e 사용을 제외하고도 하루 1달러를 넘어가는 날들이 있다.
많이 쓴다 해도 하루 1달러가 넘어가면 22달러 결제해서 쓰는 게 나은데
TokenMeter 메인 포인트 중 하나가 22달러보다 가성비 있게 사용할 수 있어야 하므로, 프로젝트의 존폐와 관련된 이슈다.

특히 코드를 주고받을 때 토큰 사용량이 많다.
코드를 길게 보내면 보통 긴 응답 코드 스니펫이 반환되고, 이런 message가 history에 그대로 누적되면 토큰이 크게 크게 사용된다.
현재 TokenMeter에는 history count 를 설정하여 보낼 message 수를 조절할 순 있지만, 텍스트에서 토큰량을 최적화하기 위한 기능은 없다.
프로젝트 존폐와 관련된 가성비가 성립하려면 텍스트(특히 코드 텍스트) 토큰량을 최적화할 필요가 있다.
향후 계획
local에서 돌릴만한 언어 관련 모델 몇 개를 띄울 생각이다.
예를 들면,
구현 코드를 의사 코드(pseudocode)로 요약하는 모델,
한글을 openai 프롬프트에 최적화된 영어로 바꾸는 모델 등
그래서 현재 구성에서
현재: DB 서버(node.js), 클라이언트(react, nginx)
추가: 모델 서빙 서버(FastAPI)
서빙 서버를 추가 개발하고 모델을 하나씩 추가하여 토큰 최적화 관련 기능을 제공하고자 한다.
후기
사이드 프로젝트가 오래 걸리는구나.
퇴근하고 밥 먹고 쉬고 정리 조금 하면 시간이 벌써...

퇴근 후 프로젝트에 집중할 수 있을 때, feature 1개 정도 commit 가능한 것 같다.
지금은 TokenMeter 장점이 아쉬운데
- 토큰 가성비 챙기고
- 기본적인 Custom prompt 기능들 추가하고
- 수요가 있는 task 하나를 목적으로 잡고 디테일한 기능들 추가하면
더 사용할만한 프로젝트가 될 것 같다.
그리고 TokenMeter는 내가 계속 사용할 수 있는 프로젝트여서 좋다.
나는 확실한 수요자이고 프로젝트에 지속성이 생긴다.
점차 더 좋은 개인 비서로 만들어나가면 될 거 같다.
'Side Project > TokenMeter' 카테고리의 다른 글
사이드 프로젝트) 개인용(로컬용) ChatGPT 만들기 (3) | 2024.10.09 |
---|