제가 이걸 만들기 시작한 이유는 단순했습니다.
저는 현재 Codex 계정 2개와 Claude 계정 1개를 구독해서 사용하고 있습니다.
그런데 실제로 여러 계정을 사용하다 보면 꽤 귀찮습니다.
이 계정은 얼마나 남았는지,
언제 리셋되는지,
어떤 계정을 먼저 써야 하는지,
하나가 막히면 다음 계정으로 어떻게 넘길지.
결국 사람이 직접 계정을 바꿔가면서 관리하게 됩니다.
그래서 아예 제가 가진 여러 구독을 하나의 엔드포인트 뒤에 묶고,
어떤 계정을 사용할지는 OpenLLMs가 알아서 결정하도록 만들고 있습니다.

여러 구독을 하나의 엔드포인트로
구조는 생각보다 단순합니다.
Codex 2개 + Claude 1개가 있다고 하면
각 계정을 OpenLLMs에 연결합니다.
그리고 클라이언트에서는 각각의 계정을 신경 쓰지 않고
OpenLLMs의 엔드포인트만 바라봅니다.
그 뒤에서 어떤 계정으로 요청을 보낼지는
설정한 라우팅 정책에 따라 결정됩니다.
현재 제가 실제로 쓰고 있는 환경도
Claude 1개
Codex 2개
총 3개 계정을 연결해놓은 상태입니다.
llms status를 실행하면 각 계정의 상태와
남아 있는 쿼터, 리셋까지 남은 시간도 한 번에 볼 수 있습니다.
라우팅 방식도 여러 개 만들었습니다
사람마다 구독을 사용하는 방식이 다르기 때문에
단순 라운드로빈 하나만 넣지는 않았습니다.

failover
가장 단순한 방식입니다.
주 계정을 먼저 사용하고 문제가 생기면
다음 백업 계정으로 넘어갑니다.
평소에는 특정 계정을 주력으로 쓰고 싶은 경우에 적합합니다.
balance
건강한 계정들에 요청을 분산합니다.
여러 계정을 비슷하게 사용하고 싶을 때 쓰는 방식입니다.
prefer-primary
주 계정을 우선 사용하되
대략 80/20 정도로 다른 계정에도 요청을 분산합니다.
주력 계정은 유지하면서
다른 구독도 같이 활용하고 싶을 때 사용합니다.
fill-first
한 계정을 먼저 사용합니다.
해당 계정을 사용할 수 없게 되면
그다음 계정으로 넘어갑니다.
여러 계정의 사용량을 골고루 나누기보다
하나씩 채워서 쓰고 싶은 경우입니다.
quota-first
제가 개인적으로 필요했던 기능 중 하나입니다.
현재 남은 한도가 더 많은 계정을 우선 사용합니다.
예를 들어
A 계정 20%
B 계정 70%
가 남아 있다면 B를 우선 사용하는 식입니다.
여러 구독을 가지고 있는데 한쪽만 계속 소모되는 걸 줄일 수 있습니다.
reset-soon
단순히 남은 양만 보는 게 아니라
리셋 시점도 이용합니다.
7일 창 기준으로 리셋이 가까운 계정부터 먼저 사용합니다.
어차피 곧 한도가 다시 생길 계정이라면
남은 쿼터를 먼저 사용하는 게 낫다는 생각에서 만들었습니다.
steward
조금 더 적극적으로 판단하는 방식입니다.
잔여 쿼터와 리셋까지 남은 시간을 같이 보고
어떤 계정을 먼저 사용하는 게 효율적인지 점수를 계산합니다.
OAuth 계정을 사용할 때 우선적으로 활용하는 정책입니다.
정책마다 URL도 따로 만들 수 있습니다
라우팅 정책 하나만 정해서 전체에 적용하는 방식도 아닙니다.
예를 들어
/r/codex-quota-first/v1
같은 라우트에는 quota-first를 적용하고,
다른 라우트에는 failover나 다른 정책을 적용할 수 있습니다.
그래서 사용하는 클라이언트나 작업 성격에 따라
같은 계정들을 서로 다른 방식으로 사용할 수 있게 만들었습니다.
정책은 llms route에서 선택하고
현재 상태는 llms status에서 확인합니다.
셀프호스팅부터 무료 클라우드까지
처음부터 특정 서버를 반드시 사용해야 하는 서비스로 만들고 싶지는 않았습니다.
OpenLLMs는 MIT 라이선스 오픈소스로 공개했습니다.
직접 관리하고 싶다면
자기 서버에 셀프호스팅해서 사용하면 됩니다.
코드도 공개되어 있으니
필요하면 직접 수정해서 자기 환경에 맞춰 사용할 수도 있습니다.
반대로
"나는 서버 설치하고 관리하는 것까지는 귀찮다"
하는 분들을 위해 무료 클라우드 버전도 같이 준비하고 있습니다.
즉,
직접 운영하고 싶은 사람 → MIT 오픈소스 셀프호스팅
그냥 연결해서 쓰고 싶은 사람 → 무료 클라우드
두 가지 방향을 모두 가져가려고 합니다.
제가 만들고 싶은 건 또 하나의 AI 모델이 아닙니다
요즘은 모델 자체가 너무 빠르게 좋아지고 있습니다.
그래서 OpenLLMs가 모델을 대체할 이유도 없다고 생각합니다.
제가 해결하고 싶은 건 그 위쪽입니다.
이미 가지고 있는 여러 AI 구독을
어떻게 조금 더 편하게 사용할 것인가.
어떤 계정의 한도가 얼마나 남았는지 사람이 계속 확인하지 않고,
하나가 막혔을 때 직접 계정을 바꾸지 않고,
곧 리셋될 쿼터를 그냥 버리지 않고,
필요에 따라 여러 구독을 하나의 엔드포인트 뒤에서 자동으로 나눠 쓰는 것.
지금은 이 부분을 계속 만들고 있습니다.
현재 제가 실제로 사용하면서 테스트 중입니다
현재 제 환경에서는
Codex 2개
Claude 1개
를 연결해 실제로 사용하고 있습니다.
스크린샷처럼 llms status에서 보면
각 계정의 상태,
남은 쿼터,
리셋까지 남은 기간,
현재 라우트,
월간 요청 및 토큰 사용량
등을 한 번에 확인할 수 있습니다.
아직 계속 만들고 있는 단계라 부족한 부분도 많습니다.
직접 사용하면서 필요한 라우팅 정책이나 기능을 계속 추가해볼 생각입니다.
OpenLLMs는 MIT 오픈소스로 공개되어 있습니다.
셀프호스팅해서 직접 사용해보셔도 되고,
무료 클라우드 버전도 준비하고 있습니다.
GitHub 👇
https://github.com/goodtekxyz/openllms
여러 AI 구독을 같이 사용하시는 분들이 있다면
어떤 방식으로 계정을 나눠 쓰고 계신지도 궁금합니다.
"이런 라우팅 방식도 있었으면 좋겠다" 하는 게 있다면
편하게 의견 주세요.