SiCore TokenWorks
LLM APIAPI Gateway

실리콘-카본 상전이 엔지니어 회고: 단일 모델에서 멀티 모델 연동까지, 모델 게이트웨이가 해결한 것

SiCore TokenWorks Team·2026-10-05

작년 하반기에 우리는 크로스보더 물류 SaaS를 하는 팀에 기술 자문을 제공했는데, 그들의 AI 기능은 처음에 GPT-4o만 호출했고 꽤 안정적으로 돌아갔습니다. 그런데 이후 비즈니스 쪽에서 국산 모델을 추가하라고 요구했습니다. 계약 검토는 DeepSeek, 고객센터 화법은 Qwen, 마케팅 문구는 ERNIE로 처리하라는 것이었습니다. 3주 후, 그들의 백엔드 코드에는 4개의 SDK가 들어갔고, 인증 로직은 7개 파일에 흩어졌으며, 청구서는 맞지 않았고, 스트리밍 출력은 프런트엔드에서 어떤 때는 정상이고 어떤 때는 깨졌습니다. 문제는 모델 자체가 아니라 모델 게이트웨이 계층이 없다는 점이었습니다.

멀티 모델 연동의 함정은 결국 같은 곳에서 터진다

먼저 SDK 충돌입니다. OpenAI의 Python SDK와 국내 여러 업체의 SDK가 모두 client라는 이름을 쓰고 있었고, 의존성 버전이 서로 충돌했으며, Qwen과 ERNIE의 HTTP 클라이언트는 타임아웃 파라미터 처리 로직도 달랐습니다. 그들의 엔지니어가 마지막에 택한 방법은 각 모델마다 독립 가상환경을 만들고 subprocess로 호출을 격리하는 것이었습니다. 돌아가긴 했지만 운영 비용이 터무니없이 높았습니다.

다음은 Key 관리입니다. 네 개 업체의 콘솔은 각자 다른 Key 체계를 가지고 있었고, 어떤 것은 프로젝트 기준, 어떤 것은 애플리케이션 기준, 어떤 것은 하위 계정까지 나눴습니다. 테스트 환경과 운영 환경의 Key가 섞여 있었고, 한 번은 인턴이 운영 Key를 GitHub 공개 저장소에 커밋한 적이 있었습니다. 10분 안에 철회하긴 했지만 그날 오후 팀 전체가 호출 로그를 뒤졌습니다.

과금 기준은 더 골치 아팠습니다. DeepSeek는 token 기준 과금, Qwen 일부 모델은 입력과 출력을 분리해 가격을 매기고, ERNIE 일부 버전은 문자 수 과금이라는 유산 로직도 있었습니다. 재무팀은 월말에 통합 청구서 한 장을 원했지만, 엔지니어는 어쩔 수 없이 네 개의 CSV를 수동으로 내보내 매핑해야 했습니다. 스트리밍 출력 형식도 통일되어 있지 않아서, 어떤 것은 SSE의 data 필드를 반환하고, 어떤 것은 JSON으로 한 번 감쌌고, 프런트엔드 파싱 코드는 if else 투성이가 되었습니다.

모델 게이트웨이는 중간에서 정확히 무엇을 하는가

모델 게이트웨이의 본질은 리버스 프록시에 프로토콜 적응 계층을 더한 것으로, 외부에는 통일된 OpenAI 호환 인터페이스를 노출하고 내부에서는 요청을 각 업체가 이해할 수 있는 형식으로 번역합니다. 우리는 이후 다른 프로젝트에서 SiCore TokenWorks의 AI API 집계 기능으로 이체인을 재구성했고, 체감이 꽤 직접적이었습니다.

통합 인증이 첫 단계입니다. 비즈니스 쪽은 Key 하나만 받고, 게이트웨이 내부에서 각 업체 자격 증명 매핑을 유지하며, Key 교체, 할당량 제한, IP 허용 목록을 모두 게이트웨이 계층에서 처리합니다. 프로토콜 번역이 두 번째 단계로, OpenAI 형식의 messages 배열을 Qwen의 input, ERNIE의 prompt로 변환하고 응답은 다시 choices 구조로 통일해 되돌립니다. 스트리밍 출력의 chunk 형식도 이 계층에서 평탄화되어 프런트엔드는 파싱 로직 하나만 작성하면 됩니다.

라우팅 분배는 요청이 어느 모델로 갈지 결정합니다. 작업 유형별 정적 라우팅도 가능하고, 비용 기준 동적 선택도 가능합니다. 우리가 token8341의 멀티 모델 라우팅을 테스트할 때, 계약 검토클래스 요청은 DeepSeek-V3로 고정 라우팅하고, 짧은 텍스트 고객센터 요청은 Qwen의 경량 버전으로 라우팅했으며, 전체 호출 비용은 전부 GPT-4o로 보낼 때보다 약 60% 줄었습니다. 비용 귀속은 마지막 단계로, 게이트웨이가 비즈니스 태그 기준으로 포인트를 찍어 월말에 바로 분배 청구서를 내주므로 재무가 더 이상 수동으로 표를 짜맞출 필요가 없습니다.

실제 적용 시 몇 가지 실무 조언

첫째, 비즈니스 코드에서 업체 SDK를 직접 호출하지 마십시오. 모델을 하나만 연동하더라도 마찬가지입니다. 얇은 래퍼 계층을 남겨두면 나중에 모델을 추가할 때 변경량이 한 자릿수 차이 납니다. 둘째, Key는 반드시 게이트웨이 또는 키 관리 서비스를 거쳐야 합니다. 설정 파일에 하드코딩하는 방식은 언젠가 사고가 납니다. 셋째, 라우팅 전략은 먼저 정적으로 하고, 2주 정도 돌려 실제 호출 데이터가 쌓인 뒤에 동적 비용 라우팅을 고려하십시오. 그렇지 않으면 몇 푼 아끼려다 핵심 요청을 부적합한 모델로 보내기 쉽습니다.

선정 기준에서 두 가지를 보십시오. OpenAI SDK와 호환되는지, 호환이 된다는 것은 마이그레이션 비용이 거의 0이라는 뜻이고 base_url 한 줄만 바꾸면 전환됩니다. 사용량 기반 과금과 비용 귀속을 지원하는지, 이는 여러 비즈니스 라인이 하나의 AI 역량을 공유하는 기업에는 필수입니다. SiCore TokenWorks는 이 부분에서 국산 대형 모델 API를 전면 커버하고 사용량 기반 과금을 제공하며, 우리 프로젝트에서 비교해보니 청구 기준이 비교적 명확했습니다.

한 문장으로 정리하면: 모델 게이트웨이는 필수는 아니지만, 세 번째 모델을 연동해야 할 때 선택 사항에서 필요 사항으로 바뀝니다. 추가로 읽을 거리로는 OpenAI 호환 인터페이스 규격 문서를 보면 프로토콜 계층이 어떻게 설계됐는지 이해할 수 있어, 직접 래퍼를 작성할 때 시행착오를 줄일 수 있습니다.