LLM 을 모아서 사용하는 API 를 개발중에 있습니다
페이지 정보
본문
아마 개발의 발단은 전에 "LLM 몇개를 쓰다보니 부담시럽..." 이라는 글로 시작했습니다.
(이전 글: https://damoang.net/free/1996156)
그냥 그때는 제공사에서 Chat 어쩌고 말고 API 로 사용하면 사용 패턴을 보았을 때
5달러로 연명이 가능하겠군! 싶어서 시작 했드렜죠.
욕심을 거듭하고 거듭하다 보니 지금은 "구현하는 김에 몇가지 프로바이더 더 붙여보자!" 해서
Anthropic (Claude 개발사), Gemini (Google), MistralAI 그리고 xAI 까지
API 문서 보면서 클라이언트 짜고 테스팅은 얼추 완료된 것 같습니다.
좋았던게 Gemini 랑 MistralAI 같은 경우에는 무료로 쓸 수 있는 부분이 있어서
쓰다가 한쪽 리밋 초과 (될 리가 없겠습니다만) 되면 기존 채팅을 다른 프로바이더
로 바꿔서 써볼 수도 있겠다는 아이디어도 생겼습니다. ㅎ
언어는 Spring 을 공부할 겸 해서 Kotlin + Spring 을 조합으로 진행중이고
WebFlux 가 좋다는 소리를 듣고 WebFlux 에 맞게 WebClient 짜서 돌리고 있습니다.
그 덕에 클라이언트도 WebFlux 에 맞게 만들어야 하다보니 손수 개발한 것 같습니다만...
그래도 배우는 것도 있으니 그리 힘들다 생각은 들지 않습니다.
다만 저 프로바이더들의 API 가 중구난방인 상태라 어느정도 Universal 하게 만들어야
하는 부분은 아직 숙제로 남아있고, Stream 을 MQ 에 집어넣고, OpenAI 호환 API 만들어서
MQ 에 들어간 메시지를 다시 빼서 OpenAI API 형식에 맞게 뱉어내는 과정도 필요합니다.
추가적으로 얼마 썼는지 통계 같은것들도 붙여줘야 하겠죠.
근데 각 프로바이더에서 얼마 썼는지는 제공하지 않아서 토큰 개수 로그만 쌓고
쓰는 중간중간에 로그 비교해보면서 얼마 썼는지는 체크하면서 맞춰가야 할 것 같습니다.
여기에 Frontend 붙여서 로그인하고 채팅하는 UI 도 만들어야 하겠죠.
일단은 단순하게 Duckduckgo AI Chat 같은 UI/UX 으로 만들어볼까 합니다.
(https://duckduckgo.com/aichat)
Spring, Kotlin 도 처음인데 사용해보니 되게 편리한게 좋습니다.
굳이 일일히 구현해서 사용할 필요가 없는게 가장 편하고, 에코시스템에서
기본적으로 제공하는 것들이 있어서 제공하는 공식 메뉴얼만 잘 읽는다는 전제
하에 크게 어려운 부분은 없는 것 같습니다.
뭉코건볼님의 댓글
이게 소규모일때에는 매출보다 비용이 클거 같은데, 규모의 경제?를 이루고 낙전 수입까지 곁들이면 마진을 남길 수도 있지 않을까 싶더라구요. 문제는 말씀하신대로.. 프로바이더 API들이 open ai 호환이 아닌 경우도 있고, 더 까다로운건 호환이긴 한데 응답 스트림 청크의 스펙 같은 부분이 미세하게 다른 경우들이 있어서 이 부분 맞춰주는게 복잡할거 같더라구요.
저는 비록 cursor의 노예이지만.. 성공적으로 개발 완료까지 이르시길 바라겠습니다 ㅎ
B739님의 댓글의 댓글
예를 들어서 Function Calling 을 사용하는 경우, 실행하고자 하는 Function 이 무엇인지를 먼저 사용자에게 문자열 Delta 로 넣어주는데, Function Calling 을 하는데 필요한 파라메터 같은 경우에는 JSON Delta 값으로 보내줘서 값을 다 받은 다음에 파싱하던지 하는 과정이 필요합니다.
예.. 뭐 귀찮은거죠. ㅋㅋㅋ
뭉코건볼님의 댓글의 댓글
가볍게 여러 모델로 chat API 사용해보고 싶은 수요를 노려보시는게 어떨까 합니다 ㅎ
칼쓰뎅님의 댓글
제 속도로 서비스 받으려면 claude 3.5나 gpt4o 쪽이 젤 무난한거 같습니다...
로컬로 운영하는걸 생각한다면 뭐 맥미니 64GB 2개 들여서 llama 70b 같은거
올려놓는것도 괜찮을성 싶지만 가격이 ㅎㅎㅎㅎ
B739님의 댓글의 댓글
호스팅하는 사이트가 있길레 테스트 삼아 말좀 걸어보고 로컬 에서 돌린거랑 비교해봤는데 너무 차이가 많이나네요.
그래서 로컬 GPU 는 안하기로 결정했습니다. 저 위의 프로바이더만 써도 충분합니다. ㅎㅎ
B739님의 댓글의 댓글
그만큼 컨트롤 하기가 (=잘 구슬리는게) 어려운 모델 중 하나인 것 같습니다.
근데 또 막상 테스트한 결과 보면 곧잘 하니... 구슬리는 방법을 연구해봐야 되겠습니다 ㅎㅎㅎ
https://github.com/minsing-jin/Korean-SAT-LLM-Leaderboard/blob/main/Korean_README.md
칼쓰뎅님의 댓글의 댓글
저 리스트중에 만만하게 로컬에서 해볼수 있는건 Meta-Llama-3.1-8B-Instruct-Turbo 같네요.
저번에 확실히 대충 써봤을때 Meta-Llama-3.1-8B-Instruct 가 좋더니만...역시 ㄷㄷㄷ
(mac이 부러웠던적이 단 한번도 없는데... ai모델 올려보면서 64gb램 가진 mac들이 부럽...ㅋㅋ)
불의정령님의 댓글
B739님의 댓글의 댓글
서비스 좋아 보입니다. 근데 API 를 선정함에 있어서, 저는 초기에 크레딧을 충전만 잘 해두고, 사용량을 제한해서 사용했으면 하거든요. Bedrock 계열의 서비스들이 결국에는 기업용이다 보니 "Pay-As-You-Go" (종량제) 방식으로 지불하고, 이런 것들을 컨트롤할 방법이 있다 한들 제대로 작동하지 않으니 쓰기가 꺼려집니다.
Lysithea님의 댓글
이것과 비슷하면서도 구현하시려는 기능이 약간 다르긴 하네요.. 혹시 참조가 되실까 하여 링크 걸어봅니다 ㅎㅎ
곰발자국✿님의 댓글