Tài liệu

Tài liệu

NextChat

Bản NextChat tự lưu trữ kết nối với Kunavo qua các biến dành cho OpenAI vốn đã có sẵn: OPENAI_API_KEY chứa khóa, BASE_URL chứa URL gốc, CUSTOM_MODELS chứa các ID. Không cần fork hay bản vá.

Ba biến môi trường — OPENAI_API_KEY, BASE_URL (origin thuần) và CUSTOM_MODELS — đưa NextChat tự lưu trữ tới Claude và GPT qua một key.

Biến môi trường — cài đặt dự án Vercel, docker -e hoặc .env.local
CODE=your-access-password
OPENAI_API_KEY=sk-kn-...
BASE_URL=https://api.kunavo.com
HIDE_USER_API_KEY=1
CUSTOM_MODELS=-all,+claude-sonnet-5@OpenAI,+claude-opus-5@OpenAI,+claude-haiku-4-5@OpenAI,+gpt-5-6-sol@OpenAI,+gpt-5-6-terra@OpenAI
BASE_URL nhận URL gốc thuần, không có /v1. Trang tài liệu không có câu nào nói về hậu tố, nhưng hàng trong bảng của trang đã giải đáp: giá trị mặc định được tài liệu hóa là https://api.openai.com, không phải https://api.openai.com/v1 — NextChat sẽ nối phần còn lại của đường dẫn. Nếu tự thêm /v1, kết quả sẽ thành /v1/v1/chat/completions, trả về 404 và trông giống endpoint bị hỏng thay vì một lỗi nhập sai.
Bên giữ khóa là một quyết định về cấu hình triển khai, không phải mặc định. Khi đặt OPENAI_API_KEY, máy chủ sẽ gọi Kunavo bằng khóa của bạn và bất kỳ ai vượt qua CODE đều tiêu số dư của bạn. Tài liệu mô tả HIDE_USER_API_KEY=1 là "Nếu bạn không muốn người dùng nhập khóa API của riêng họ, hãy đặt giá trị này thành 1" — nếu để trống, mỗi khách truy cập có thể nhập khóa của riêng mình trong Settings, phù hợp với một phiên bản dùng chung.
Tiền tố -all và hậu tố @OpenAI không có trong bảng tài liệu hóa; bảng chỉ bao gồm +, - và name=displayName. Chúng được xác định từ mã thu thập mô hình của chính NextChat, cũng được đọc trong cùng ngày: -all xóa danh sách tích hợp để bộ chọn không đưa ra các ID Kunavo sẽ từ chối, còn @OpenAI gắn từng ID mới với nhà cung cấp OpenAI để gửi đến BASE_URL. ID không có hậu tố đó sẽ tạo nhà cung cấp mang tên chính nó và không đi theo đường dẫn bạn đã cấu hình. Hãy giữ nguyên cách viết hoa.
Kunavo không cung cấp mô hình chuyển văn bản thành giọng nói hoặc chuyển giọng nói thành văn bản, nên các tính năng giọng nói của NextChat không có gì để sử dụng tại đây. Đồng thời, hãy để trống ENABLE_BALANCE_QUERY: bước kiểm tra số dư gọi các tuyến thanh toán trên bảng điều khiển riêng của OpenAI, không nằm trong bề mặt tương thích OpenAI. Số dư của bạn nằm trên /app/billing.
Trang này được biên soạn dựa trên tài liệu của NextChat, không phải từ một lần chạy thử — Kunavo chưa chạy NextChat với endpoint này, và một trang hướng dẫn cấu hình đã xuất bản không phải là bài kiểm tra tính tương thích. Cả hai phía đều mô tả chat completions; mọi thứ ngoài phạm vi đó chưa được kiểm thử tại đây.
Chưa có khóa? Tạo tài khoản Kunavo, tạo khóa (bắt đầu bằng sk-kn-) và nạp tín dụng từ $10 — các lệnh gọi được thanh toán từ số dư đó và các lệnh gọi thất bại không bị tính phí. Sau đó, bảng điều khiển mở tại phần thiết lập NextChat.

Từng bước

  1. Tạo khóa tại /app/keys rồi sao chép khóa — khóa chỉ hiển thị một lần.
  2. Đặt OPENAI_API_KEY thành khóa đó và BASE_URL thành https://api.kunavo.com. Trên Vercel, đây là các biến môi trường của dự án; trong Docker, chúng là các cờ -e; khi chạy cục bộ, hãy đặt chúng trong .env.local.
  3. Đặt CODE thành mật khẩu truy cập, nếu không bản triển khai sẽ mở cho bất kỳ ai tìm thấy URL, trong khi khóa của bạn là thứ thanh toán chi phí.
  4. Liệt kê các id bạn muốn trong CUSTOM_MODELS, mỗi id có hậu tố @OpenAI, bắt đầu bằng -all để loại bỏ các mục tích hợp sẵn.
  5. Triển khai lại — máy chủ đọc các biến môi trường, vì vậy dự án Vercel cần một lần triển khai mới, còn container cần khởi động lại. Chỉ chỉnh sửa biến sẽ không làm thay đổi gì trong một phiên bản đang chạy.
  6. Mở ứng dụng, chọn một trong các id của bạn trong bộ chọn mô hình và gửi tin nhắn. Nếu nhận được phản hồi, ba biến đã khớp nhau.

Đã kiểm tra đối chiếu với Trang Biến môi trường của NextChat vào 21 tháng 9, 2026. Cài đặt của bên thứ ba có thể thay đổi; nếu tên trường ở đây không còn khớp với những gì bạn thấy, trang đó là nguồn có thẩm quyền, không phải trang này.

Xác minh trước khi gỡ lỗi ứng dụng khách

Một yêu cầu sẽ xác định liệu lỗi nằm ở endpoint, khóa hay tệp cấu hình. Nếu lệnh này trả về JSON, cùng base URL và khóa sẽ hoạt động trong NextChat.

# Settles whether a failure is the endpoint, the key, or the client.
curl -sS https://api.kunavo.com/v1/models \
  -H "Authorization: Bearer sk-kn-..."

Đặt model id nào vào trường

Mọi mô hình văn bản đều có thể truy cập bằng model id — danh sách đang hoạt động là GET /v1/models, còn danh mục kèm giá nằm trên trang mô hình. Mức giá tính bằng USD trên mỗi 1M token, đầu vào / đầu ra.

ID mô hìnhKunavo vào / raPhù hợp ở đâu trong NextChat
claude-sonnet-5$1.40 / $7.00luồng trò chuyện thường ngày — các cuộc trò chuyện dài mà không phải canh số dư
claude-opus-5$3.50 / $17.50câu hỏi duy nhất trong tuần xứng đáng dùng mô hình đắt tiền
claude-haiku-4-5$0.70 / $3.50tóm tắt, đổi tên cuộc trò chuyện và những lượt trao đổi ngắn chiếm phần lớn hoạt động trên một phiên bản dùng chung
gpt-5-6-sol$2.00 / $12.00một họ mô hình thứ hai trong cùng bộ chọn, dùng chung một khóa
gpt-5-6-terra$0.70 / $4.20tài liệu dài được dán vào, trong đó cửa sổ ngữ cảnh là yếu tố quyết định
Thanh toán theo token từ số dư trả trước, không có phí hàng tháng — xem trang Thanh toán. Với ngữ cảnh lặp lại — chiếm phần lớn dữ liệu mà trình chỉnh sửa hoặc ứng dụng trò chuyện gửi đi — bộ nhớ đệm prompt ảnh hưởng đến hóa đơn nhiều hơn lựa chọn mô hình.

Câu hỏi thường gặp

Làm cách nào để trỏ NextChat đến một endpoint API tùy chỉnh?

Đặt BASE_URL thành origin của endpoint và OPENAI_API_KEY thành khóa được cấp, cả hai dưới dạng biến môi trường trên bản triển khai tự lưu trữ. Trang Biến môi trường của NextChat mô tả BASE_URL là "Ghi đè URL cơ sở của yêu cầu API OpenAI", vì vậy không cần chỉnh sửa mã: ứng dụng vẫn dùng định dạng giao tiếp OpenAI nhưng gửi yêu cầu đến nơi khác. Sau đó triển khai lại — các giá trị được máy chủ đọc, nên phiên bản đang chạy sẽ không nhận chúng.

BASE_URL của NextChat có cần kết thúc bằng /v1 không?

Không. NextChat tự nối đoạn phiên bản và đường dẫn, đó là lý do giá trị mặc định được tài liệu ghi cho BASE_URL là origin thuần https://api.openai.com thay vì https://api.openai.com/v1. Hãy ghi https://api.kunavo.com và không thêm gì nữa. Tự thêm hậu tố sẽ tạo ra đường dẫn bị lặp và lỗi 404, dễ khiến bạn hiểu nhầm rằng endpoint đang ngừng hoạt động.

Làm cách nào để thêm mô hình tùy chỉnh vào danh sách mô hình của NextChat?

CUSTOM_MODELS nhận một danh sách phân tách bằng dấu phẩy, trong đó + thêm mô hình, - ẩn mô hình và name=displayName đổi tên mô hình. Một id mà NextChat chưa biết sẽ được tạo ngay tại chỗ, vì vậy +claude-sonnet-5@OpenAI sẽ đưa id đó vào bộ chọn. Có hai chi tiết cần sao chép chính xác: bắt đầu danh sách bằng -all để các id OpenAI tích hợp sẵn biến mất thay vì gây lỗi khi có người chọn chúng, và giữ hậu tố @OpenAI để id được định tuyến qua BASE_URL thay vì đến nhà cung cấp mang tên mô hình đó.

NextChat nên dùng khóa API của máy chủ hay để mỗi người dùng tự dán khóa của họ?

Cả hai cách đều được hỗ trợ; lựa chọn tùy thuộc vào bên thanh toán. Khóa trong OPENAI_API_KEY thuộc về máy chủ, nên mọi khách truy cập vượt qua mật khẩu CODE đều dùng chung số dư đó — hợp lý cho phiên bản riêng tư, nhưng tốn kém khi chia sẻ liên kết. Nếu không đặt HIDE_USER_API_KEY, khách truy cập có thể nhập khóa riêng trong Settings và tự thanh toán; đặt biến này thành 1 sẽ xóa trường đó. Dù dùng cách nào, khóa cũng không đến trình duyệt, trừ khi chính người dùng nhập khóa tại đó.