Kinh nghiệm
6 phút đọc4 tháng 6, 2026349

LLM Gateway: Một API Gateway cho tất cả các LLM provider

Quản lý OpenAI, Anthropic, Google Vertex AI qua một endpoint duy nhất, track chi phí và phân tích hiệu suất - tất cả trong một tool open-source.

N

Nguyễn Nhật Long

@nguyennhatlong1303

LLM Gateway: Một API Gateway cho tất cả các LLM provider

Nếu bạn đang làm việc với LLM trong production, chắc chắn bạn đã từng đau đầu với bài toán này: app dùng OpenAI, nhưng muốn thử Anthropic Claude xem có rẻ hơn không, rồi lại có team khác đang test Google Gemini - và cuối tháng ngồi tổng hợp chi phí từ 3 cái dashboard khác nhau, không biết model nào đang ngốn tiền nhiều nhất. Đó chính xác là vấn đề mà LLM Gateway sinh ra để giải quyết.

Nó làm gì, nói thẳng luôn

LLM Gateway là một middleware layer đứng giữa application của bạn và các LLM provider. Thay vì app gọi thẳng tới api.openai.com hay api.anthropic.com, bạn chỉ cần gọi tới một endpoint duy nhất của gateway, rồi gateway lo phần còn lại - route request tới đúng provider, log lại token usage, tính cost, track latency.

Cái hay là nó compatible với OpenAI API format. Nghĩa là nếu code của bạn đang dùng OpenAI SDK, bạn chỉ cần đổi baseURL là xong, không cần refactor gì cả. Đây là điểm mình thấy team thiết kế khá thực dụng - họ không cố tạo ra một API mới, mà tận dụng luôn cái format mà cả ecosystem đã quen.

Kiến trúc bên trong

Nhìn vào codebase thì đây là một monorepo dùng pnpm workspaces + Turborepo, khá chuẩn cho một project TypeScript full-stack hiện đại. Cấu trúc thư mục chia ra:

  • apps/ - các ứng dụng chính (dashboard UI, API server)
  • packages/ - shared libraries, types, utilities
  • ee/ - Enterprise Edition features (có phần closed-source)
  • infra/ - infrastructure config
  • sql/ - database migrations

Stack chính là TypeScript xuyên suốt, backend dùng Node.js, database là PostgreSQL, có Redis cho caching/queuing. Deploy thì họ có sẵn Docker image và docker-compose.yml cho self-hosted.

Mình để ý phần http/ riêng biệt - đây là core gateway layer xử lý việc proxy request. Tách ra như vậy khá clean, dễ test độc lập.

Self-hosted setup thực tế

Theo kinh nghiệm của mình, phần này là yếu tố quyết định xem một tool open-source có đáng dùng hay không. LLM Gateway cung cấp unified Docker image, setup khá straightforward:

Terminal
1export LLM_GATEWAY_SECRET="$(openssl rand -base64 32 | tr -d '\n')"
2export GATEWAY_API_KEY_HASH_SECRET="$(openssl rand -base64 32 | tr -d '\n')"
3./scripts/run-unified-container.sh

Hoặc nếu muốn control hơn, dùng named volumes:

Terminal
1docker volume create llmgateway_postgres
2docker volume create llmgateway_redis
3
4docker run -d \
5 --name llmgateway \
6 --restart unless-stopped \
7 -p 3002:3002 \
8 -p 3003:3003 \
9 -p 3005:3005 \
10 -p 3006:3006 \
11 -p 4001:4001 \
12 -p 4002:4002 \
13 -v llmgateway_postgres:/var/lib/postgresql/data \
14 ...

Anh em lưu ý: đừng bind-mount host directory thẳng vào /var/lib/postgresql/data - PostgreSQL cần set permissions lúc init và hay bị lỗi tùy filesystem của host. Dùng named Docker volumes là an toàn nhất.

Cổng expose khá nhiều (6 ports), mỗi cái serve một service khác nhau. Nếu đứng sau một reverse proxy như Nginx hay Traefik thì cần config routing cẩn thận một chút.

Các tính năng đáng chú ý

Unified API với OpenAI-compatible format là killer feature. Bạn chỉ cần thay đổi một dòng config:

JavaScript
1// Trước
2const openai = new OpenAI({ apiKey: process.env.OPENAI_API_KEY });
3
4// Sau - không cần đổi gì khác
5const openai = new OpenAI({
6 apiKey: process.env.LLM_GATEWAY_KEY,
7 baseURL: 'https://your-gateway.com/v1'
8});

Usage analytics và cost tracking - đây là thứ mình thấy có giá trị thực sự nhất. Thay vì phải tự build dashboard để track token usage, LLM Gateway làm sẵn. Bạn biết được:

  • Tổng số request theo provider/model
  • Token consumed và estimated cost
  • Response time distribution
  • Error rate

Multi-provider routing cho phép bạn config fallback - ví dụ nếu OpenAI trả về lỗi rate limit, tự động route sang Anthropic. Cái này cực kỳ hữu ích cho production workload.

So sánh với các alternatives

Nếu bạn đang so sánh với LiteLLM - đây là competitor gần nhất và cũng rất phổ biến trong community. LiteLLM có ecosystem lớn hơn, nhiều contributor hơn, nhưng LLM Gateway có dashboard UI khá polished và DX tốt hơn theo cảm nhận cá nhân của mình. LiteLLM thiên về Python ecosystem, còn LLM Gateway full TypeScript nên nếu team bạn là Node.js thì codebase dễ đọc hơn nhiều.

ToolOpen SourceSelf-hostedOpenAI-compatibleCost TrackingFallback Routing
LLM Gateway✅ Fully✅ Docker✅ Native✅ Built-in✅ Có
LiteLLM✅ Fully✅ Docker✅ Native✅ Built-in✅ Có
PortkeyPartial❌ Cloud only✅ Có✅ Có✅ Có
Kong + plugin✅ Fully✅ Có⚠️ Manual❌ Cần tự build⚠️ Phức tạp
Custom proxyN/A⚠️ Tự làm❌ Tự làm❌ Tự làm

Developer Experience thực tế

Mình đánh giá cao một số điểm về DX:

Monorepo setup chuẩn chỉnh - có .devcontainer config sẵn, .tool-versions cho asdf, Husky cho pre-commit hooks, ESLint config. Ai muốn contribute vào project thì onboarding khá nhanh.

CLAUDE.mdAGENTS.md - thú vị là họ có file hướng dẫn riêng cho AI agents làm việc với codebase. Đây là pattern mới nổi gần đây và mình thấy nó thực dụng - giúp Copilot hay Claude hiểu context của project tốt hơn.

Enterprise Edition (EE) tách biệt - phần ee/ là closed-source features cho enterprise customers. Cái này là business model phổ biến (open-core), nhưng anh em cần biết là một số advanced features sẽ không có trong bản community.

Một điểm trừ: 26 open issues và 36 pull requests đang pending - với một project 1.3k stars thì backlog này khá lớn. Không phải dealbreaker, nhưng cho thấy maintainer team đang bận và review cycle có thể chậm.

Ai nên dùng cái này?

LLM Gateway phù hợp nhất nếu bạn:

  • Đang build product dùng nhiều LLM provider và cần một layer abstraction
  • Cần track cost và usage theo team/project/feature
  • Muốn implement fallback strategy mà không tự code
  • Team là TypeScript/Node.js và muốn có thể đọc/modify source khi cần
  • Cần self-hosted vì data privacy requirements

Ngược lại, có thể không phù hợp nếu:

  • Bạn chỉ dùng một provider duy nhất và không có kế hoạch đổi - overhead không đáng
  • Team nhỏ, startup giai đoạn đầu - dùng hosted version ở llmgateway.io cho nhanh thay vì tự maintain infrastructure
  • Cần Python-native integration - LiteLLM sẽ fit hơn

Một vài điểm cần cân nhắc khi production

Theo kinh nghiệm của mình khi evaluate các API gateway kiểu này, có một số thứ cần test kỹ trước khi đưa vào production:

Latency overhead - mỗi request phải đi qua thêm một hop. Với LLM calls vốn đã có latency cao (vài giây), thêm vài chục ms của gateway thường không đáng kể, nhưng vẫn nên benchmark với workload thực tế của bạn.

Single point of failure - nếu gateway down thì toàn bộ LLM features của app bị ảnh hưởng. Cần plan cho high availability từ đầu - chạy multiple instances, có health check, có alerting.

Secret management - gateway cần lưu API keys của tất cả providers. Đây là sensitive data, cần đảm bảo secrets được encrypt at rest và access control được setup cẩn thận.

Tổng thể thì LLM Gateway là một project solid với 1.3k stars và đang active development. Nếu bạn đang build LLM-powered application và chưa có một gateway layer, đây là một trong những options đáng xem xét nhất trong TypeScript ecosystem hiện tại. Mình sẽ theo dõi thêm xem họ handle cái backlog PR kia như thế nào - đó sẽ là indicator tốt về long-term maintainability của project.

NN

Nguyễn Nhật Long

@nguyennhatlong1303

Nguyễn Nhật Long is a Senior Frontend Engineer and Frontend Team Leader with 7 years of experience building real-time fintech platforms. Specializing in React, Next.js, TypeScript, and React Native, shipping 10+ products across Web, Mobile, Telegram Mini-Apps, and Web3.

Thấy hay? Chia sẻ cho bạn bè!