개발 동기
나는 주로 ChatGPT를 활용한다. (Claude는 사용량 제한 있고, Gemini는 찰떡같이 알아듣지를 못한다.)
ChatGPT 아쉬운 점
- 구독 가격이 비싸다. 20+2(부가 가치세) 달러...
- 종종 OpenAI api는 멀쩡한데, ChatGPT 서비스가 불량이다.
- 모델 개선 관련 옵션을 끄지 않으면 대화를 훈련에 활용한다.
- 모델 개선 옵션과 무관하게, 대화 내역이 ChatGPT에 보관된다. 삭제할 수 있지만 암튼 모르는 거니까 종종 불안정하기도 하고
ChatGPT는 특정 주제에 특화된 세팅으로 대화를 시작할 수 있는 서비스가 있다.
Openai api를 사용해 보면 다룰 수 있는 많은 파라미터가 있는데, 그 요소들을 각 주제에 맞게 세팅했을 것이다.
맞춤 GPT를 꼭 활용하는 것이 아니라면, 사용한 만큼 내는 게 더 싸지 않을까?
그리고 중요한 코드나 파일을 가지고 대화한다면, ChatGPT를 거치지 않고 로컬에 기록/보관하는 게 안심이다.
openai api에 전송되긴 하지만 api에서 데이터를 수집해서 학습에 사용하진 않을 테니. (ChatGPT에서는 데이터를 수집하고 학습에 사용)
OpenAI API를 사용할 때, 기본적으로 사용자의 데이터는 모델 학습에 활용되지 않습니다. OpenAI는 사용자의 프라이버시와 데이터를 보호하기 위해 API 호출 시 수집된 데이터는 학습에 사용되지 않으며, 고객 지원이나 품질 모니터링을 위해서만 활용된다고 명시하고 있습니다.
프로젝트명 - SaveChat (기획, 개발)
해당 프로젝트에 가장 큰 특징은
- ChatGPT 구독 대비, api 사용으로 비용절감
- 로컬에 대화 내역 보관/기록
비용도 절감하고(save),
로컬에 저장하여 데이터 유출을 막으니까(save),
SaveChat로 정했다.
기능
화면과 기능은 ChatGPT와 비슷하다.
주요 차이점
- Openai API key를 넣고 사용한다.
- 대화 history는 로컬에 위치한 SQLite3 파일에 저장한다. (파일만 있으면 다른 PC에서도 history와 설정을 이어서 사용할 수 있다.)
- 사용한 토큰의 양을 시각화한다. (api 비용과 직결)
추가적인 기능들
- 대화 history를 얼마큼 전송할지, 최대 토큰을 설정한다.
- 대화 history를 전송할 때, 항상 고정할 대화를 지정한다. (ChatGPT에서도 메모리 관리나 맞춤 설정으로 세팅할 수 있다. 다만 사용을 더 직관적으로 만들어보자.)
- ex) 하나의 대화에서 100개의 채팅을 했다면, 최대 토큰에 맞춰 최근 대화순으로 전송할 건데 1번 대화 내용을 항상 고정하고 싶다면 사용.
- Openai api에 주요 파라미터를 커스텀 기능으로 제공한다.
사용 방법 (예정)
도커로 환경을 구성하고 배포하자.
사용자는 도커 이미지를 다운받아 실행하고 로컬 환경의 웹에서 사용한다.
진행 상황
지금은 채팅 시작하고, 대화하고, 저장되는 기능과 UI를 개발 중이다.