Quay lại blog

Công cụ & tích hợpHướng dẫn

Kết nối LibreChat với CheapTokens: custom endpoint trong librechat.yaml

Thêm endpoint CheapTokens vào LibreChat tự host: một mục trong librechat.yaml, key dưới dạng biến môi trường, ba model trong menu.

Bởi CheapTokens TeamĐã xuất bản 5 phút đọc

Mục cấu hình LibreChat trỏ đến API CheapTokens
Trên trang này
  1. Mục này cần gì
  2. Kết nối trong ba bước
  3. Ba model trong một menu
  4. Nếu endpoint không hiện ra hoặc trả lời bằng lỗi

LibreChat của bạn đang chạy, nhưng menu model chỉ hiển thị những gì có sẵn. Để thêm CheapTokens, bạn viết một mục endpoints.custom trong librechat.yaml: tên, base URL https://api.cheaptokens.dev/v1, key dưới dạng biến môi trường và danh sách các model id. Khởi động lại container, và một endpoint "CheapTokens" sẽ xuất hiện trong menu.

Tên các trường bên dưới lấy từ tài liệu tham chiếu custom endpoint của LibreChat (nhánh docs "Latest (dev)", kiểm tra ngày 30 tháng 10 năm 2026). Trang này không ghi số phiên bản, nên nếu bản cài của bạn cũ hơn và một trường hoạt động khác đi, hãy đối chiếu với tài liệu cho bản phát hành của bạn. Phía API là API trong tài liệu của chúng tôi: định dạng OpenAI Chat Completions, một số dư cho mọi model.

Mục này cần gì#

Bốn trường là bắt buộc, và mỗi trường có một nhiệm vụ rõ ràng:

  • name — tên của endpoint trong menu.
  • apiKey — key. Tài liệu khuyến nghị dùng tham chiếu như ${VAR} thay vì chính key, để bí mật không nằm trong YAML.
  • baseURL — nơi gửi request: https://api.cheaptokens.dev/v1.
  • models.default — danh sách model id hiển thị trong menu.

Có hai trường tùy chọn đáng thiết lập. titleConvo: true cho phép LibreChat đặt tên cho các cuộc trò chuyện của bạn (tiêu đề được tạo trừ khi nó là false), và modelDisplayLabel là nhãn bên cạnh câu trả lời (mặc định là "AI"). models.fetch mặc định là false, nên LibreChat sẽ không hỏi API để lấy danh sách model; menu lấy từ models.default. Đó là lý do các id bên dưới được viết đầy đủ.

Kết nối trong ba bước#

Từng bước một

Kết nối LibreChat (Docker)

Cấp key cho container

Key phải đến được container LibreChat dưới dạng biến môi trường. Tài liệu LibreChat cho phép bạn đặt biến trong docker-compose.override.yml dưới environment, nên hãy tạo file đó cạnh docker-compose.yml. Tên biến là do bạn chọn, chọn gì cũng được, chỉ cần giữ giống hệt trong YAML:

yaml
services:
  api:
    environment:
      CHEAPTOKENS_API_KEY: ct_your_key_here

Giá trị là placeholder: hãy dùng key từ dashboard CheapTokens của bạn.

Thêm endpoint vào librechat.yaml

Tạo librechat.yaml cạnh docker-compose.yml. Cấu trúc theo ví dụ Mistral trong tài liệu LibreChat, với địa chỉ và id của chúng tôi:

yaml
endpoints:
  custom:
    - name: 'CheapTokens'
      apiKey: '${CHEAPTOKENS_API_KEY}'
      baseURL: 'https://api.cheaptokens.dev/v1'
      models:
        default:
          - 'zai-org/GLM-5.3-Flash'
          - 'deepseek-ai/DeepSeek-V4-Flash-0731'
          - 'MiniMaxAI/MiniMax-M2.7'
      titleConvo: true
      modelDisplayLabel: 'CheapTokens'

Mount file và khởi động lại

Container phải thấy được file. Thêm volumes vào cùng docker-compose.override.yml, để nó giờ chứa cả hai:

yaml
services:
  api:
    environment:
      CHEAPTOKENS_API_KEY: ct_your_key_here
    volumes:
      - ./librechat.yaml:/app/librechat.yaml

Sau đó áp dụng:

bash
docker compose up -d
Từ key đến menu: biến môi trường, librechat.yaml, mount, rồi CheapTokens trong danh sách model
Đường đi từ key đến endpoint CheapTokens trong menu LibreChat

Mở LibreChat trong trình duyệt, bắt đầu cuộc trò chuyện mới và chọn CheapTokens trong menu endpoint. Ba model có trong danh sách. Gửi "Say hi in one sentence" và bạn sẽ nhận được câu trả lời. Nếu không, hãy chuyển đến phần cuối.

Ba model trong một menu#

Đây là phần khiến một chat tự host đáng để có. Giả sử bạn chạy nó cho một nhóm nhỏ. Hầu hết câu hỏi là thường ngày: viết lại email này, giải thích lỗi này. Với những việc đó, zai-org/GLM-5.3-Flash là đủ, với cửa sổ ngữ cảnh 390K và tối đa 8.192 token mỗi câu trả lời. Khi ai đó dán một tài liệu dài và muốn câu trả lời dài, họ chuyển cùng cuộc trò chuyện sang deepseek-ai/DeepSeek-V4-Flash-0731 (ngữ cảnh 380K, tối đa 32.768 token mỗi câu trả lời). MiniMaxAI/MiniMax-M2.7 (ngữ cảnh 180K) là ý kiến thứ ba khi hai câu trả lời mâu thuẫn. Không cần gói đăng ký thứ hai, không cần key thứ hai: cả ba đều được tính từ một số dư.

Cuộc trò chuyện đó tốn bao nhiêu? Lấy một nhóm năm người gửi 200 tin nhắn mỗi ngày, mỗi tin mang khoảng 3.000 token đầu vào (lịch sử tăng dần) và nhận về khoảng 500 token:

Mô hình Mỗi yêu cầu 200 yêu cầu OpenRouter, 200 yêu cầu
GLM-5.3-Flash $0.00008 $0.016 $0.0284
DeepSeek-V4-Flash $0.000095 $0.019 $0.056
MiniMax-M2.7 $0.00023 $0.045 $0.54

3.000 token đầu vào và 500 token đầu ra mỗi yêu cầu. Giá trên 1 triệu token là giá hiện hành và thay đổi cùng với biểu phí của chúng tôi; cột OpenRouter hiển thị giá tham chiếu cho cùng khối lượng công việc.

Trong bảng, giá của mỗi model cho 200 request đó được tính gộp cả đầu vào và đầu ra, và tổng lại rẻ hơn OpenRouter. Chọn hàng khớp với mức sử dụng của bạn và so sánh với trang giá.

Tự mình thử xemThử xem: gửi một câu hỏi cho hai modelHiện đáp án

Mở cuộc trò chuyện mới, chọn zai-org/GLM-5.3-Flash, và yêu cầu tóm tắt một đoạn bạn biết rõ. Chuyển model trong cùng menu sang deepseek-ai/DeepSeek-V4-Flash-0731, và hỏi lại. So sánh độ dài và giọng điệu của hai câu trả lời — đó là căn cứ để bạn chọn model mặc định.

Nếu endpoint không hiện ra hoặc trả lời bằng lỗi#

Hầu hết vấn đề là một trong ba trường hợp. Chọn trường hợp khớp với những gì bạn thấy:

Chọn trường hợp của bạn

Bạn thấy gì?

CheapTokens không có trong menu

LibreChat chưa đọc file của bạn. Kiểm tra rằng librechat.yaml được mount tại /app/librechat.yaml (file override ở trên), rằng thụt lề YAML còn nguyên, và rằng bạn đã chạy docker compose up -d sau khi thay đổi.

401 Unauthorized

Key bị thiếu hoặc sai. Kiểm tra rằng tên sau ${ trong librechat.yaml đúng chính xác là tên của biến môi trường, và rằng key không có khoảng trắng hay dấu ngoặc kép bị dán vào. Thêm về lỗi này trong API 401 hoặc 404.

404 hoặc lỗi model

Model id bị sai. Dùng id đầy đủ như deepseek-ai/DeepSeek-V4-Flash-0731; tên ngắn không được chấp nhận. Bạn có thể liệt kê id chính xác với các bước trong Liệt kê model với GET /v1/models.

Khi tin nhắn đầu tiên đã đi qua, bạn có thể thêm id vào models.default bất cứ khi nào muốn có thêm model trong menu. Thích một front end khác? Cùng ý tưởng, một base URL cộng với một key, có trong Kết nối Open WebUI với CheapTokens, và bức tranh tổng quát nằm trong API tương thích OpenAI: base_url là gì. Bản thân các model nằm trên trang GLM.