Tài liệu BazaarLink
BazaarLink là cổng API AI thống nhất cho Đài Loan — cung cấp truy cập đến hàng trăm mô hình từ OpenAI, Anthropic, Google, Meta và nhiều hơn nữa qua một endpoint API tương thích OpenAI.
Read https://bazaarlink.ai/skill.md and follow the instructions to integrate BazaarLink into your app.Bảng giá
BazaarLink định giá mức sử dụng mô hình ở mức tăng bằng 0 (giống hệt với giá niêm yết chính thức của mỗi nhà cung cấp). Phí nền tảng được tính khi nạp tiền (tiền gửi): phí giao dịch 10%, cộng với 5% Đài Loan VAT trên các kênh TWD. Được lập hóa đơn bằng USD với báo giá TWD và hóa đơn thống nhất điện tử. Tự nạp tiền khi bạn sử dụng; doanh nghiệp có thể thu xếp thanh toán hàng tháng (Net-30, có thể thương lượng).
Cách hoạt động
- Consumption (ghi nợ): mỗi lệnh gọi API được tính phí theo mức sử dụng mã thông báo thực tế theo giá niêm yết USD chính thức của nhà cung cấp, được khấu trừ từ số dư của bạn — không cộng dồn, không tính thêm phí tiêu thụ.
- Nạp tiền (tiền gửi): TWD được chuyển đổi thành USD theo tỷ giá bán theo thời gian thực và được thêm vào số dư của bạn; phí giao dịch 10% được tính khi nạp tiền.
- → Thẻ tín dụng: áp dụng phí cố định US$0.60 bổ sung; một biên lai được phát hành. Các kênh
- → TWD: 5% Đài Loan VAT được thêm vào và phát hành hóa đơn thống nhất điện tử Đài Loan.
- → Chuyển khoản ngân hàng: đối với các khoản nạp tiền lớn hơn hoặc dành cho doanh nghiệp, hãy liên hệ với chúng tôi để sắp xếp chuyển khoản ngân hàng và lập hóa đơn tùy chỉnh.
- Invoicing: hóa đơn thống nhất điện tử được hỗ trợ cho quy trình chi phí ở Đài Loan; các công ty cần mua sắm hoặc thanh toán hàng tháng có thể sắp xếp các điều khoản doanh nghiệp (Net-30, có thể thương lượng).
Về tỷ giá hối đoái
Chuyển đổi ngoại hối sử dụng tỷ giá thời gian thực; thanh toán hàng tháng sử dụng tỷ giá tại thời điểm thanh toán (sao kê), trong khi các khoản nạp tiền trả trước chuyển đổi theo tỷ giá tại thời điểm nạp tiền. Tỷ lệ và dấu thời gian được giữ lại cùng với hồ sơ thanh toán.
Bảo vệ thanh toán cho yêu cầu thất bại
Nếu yêu cầu upstream thất bại mà không có dữ liệu sử dụng có thể quyết toán, BazaarLink tự động hoàn lại toàn bộ khoản đã giữ. Lần gọi đó bị tính 0 USD ngay cả khi stream đã bắt đầu trước khi lỗi.
- Không thể kết nối upstream, yêu cầu bị từ chối hoặc không có kết quả sử dụng được
- Stream dừng trước khi nhận bản ghi usage cuối cùng, kể cả sau khi đã trả một phần nội dung
- Phản hồi không có usage hoặc chỉ có đối tượng usage rỗng với mọi giá trị bằng 0
0 token đầu ra không phải lúc nào cũng miễn phí
Nếu yêu cầu kết thúc bình thường và nhà cung cấp trả usage hợp lệ, BazaarLink sẽ quyết toán usage đó. Không nên chỉ dựa vào token đầu ra để xác định miễn phí: phản hồi có 0 token đầu ra vẫn có thể bị tính token đầu vào hoặc chi phí upstream hợp lệ đã báo cáo. Hãy kiểm tra usage.cost hoặc bản ghi Hoạt động để biết khoản phí cuối cùng.
Bắt đầu nhanh
Ba cách tích hợp
Bắt đầu trong vòng 5 phút. BazaarLink hoàn toàn tương thích với OpenAI SDK — chỉ cần thay đổi
Base URL
https://bazaarlink.ai/api/v1Sử dụng OpenAI SDK
BazaarLink hoàn toàn tương thích với OpenAI SDK. Chỉ cần thay đổi base URL và khóa API — tất cả code khác giữ nguyên.
sk-bl-.✗ gpt-4.1 claude-sonnet-4.6 gemini-2.5-flash
Dùng khóa riêng của bạn (BYOK)
Gắn khóa API của nhà cung cấp upstream của riêng bạn (giao diện tương thích OpenAI hoặc Anthropic) vào tài khoản cá nhân hoặc tổ chức — các yêu cầu đủ điều kiện sẽ đi thẳng lên upstream qua khóa của bạn, với hai chế độ dự phòng seamless hoặc strict. Khóa cá nhân quản lý ở tab BYOK trên trang khóa; tổ chức quản lý trong cài đặt tổ chức. Đến cài đặt BYOK →
Lọc nội dung
Bảo vệ nội dung hai chiều cho lưu lượng API của bạn: yêu cầu chứa prompt injection bị chặn (400), dữ liệu nhạy cảm trong yêu cầu và phản hồi (khóa API, số thẻ, số định danh, v.v.) được tự động che. Quy tắc và danh sách miễn trừ có thể tùy chỉnh, kèm thống kê sử dụng. Đến cài đặt lọc nội dung →
Di chuyển từ OpenRouter
API của BazaarLink tương thích với OpenRouter — hầu hết các tích hợp chỉ cần đổi hai giá trị: base URL thành https://bazaarlink.ai/api/v1 và khóa API thành khóa BazaarLink bắt đầu bằng sk-bl-.
- Cơ sở URL: https://openrouter.ai/api/v1 → https://bazaarlink.ai/api/v1
- Khóa API: sk-or-... → sk-bl-... (tạo tại /keys)
- ID mô hình: cùng định dạng provider/model (ví dụ anthropic/claude-sonnet-4.6); danh mục đầy đủ tại GET /api/v1/models
- Dự phòng models[], tùy chọn định tuyến nhà cung cấp, streaming, gọi công cụ và đầu ra có cấu trúc dùng cùng cấu trúc request
Xác thực
Tất cả yêu cầu API cần header Authorization với khóa API.
Authorization: Bearer sk-bl-YOUR_API_KEYLấy khóa API từ bảng điều khiển. Giữ khóa an toàn — không để lộ trong code phía client.
Header tùy chọn
Nguyên tắc
BazaarLink được thiết kế dựa trên ba nguyên tắc cốt lõi:
1. Giao diện thống nhất
Một API, một SDK, hàng trăm mô hình. Chuyển đổi giữa OpenAI, Anthropic, Google Gemini, Meta Llama và các nhà cung cấp khác mà không cần thay đổi code — chỉ thay đổi ID mô hình.
2. Tối ưu giá
BazaarLink tự động định tuyến đến nhà cung cấp hiệu quả chi phí nhất cho mô hình bạn chọn. Bạn chỉ trả cho những gì sử dụng, thanh toán USD với hỗ trợ hóa đơn đầy đủ.
3. Độ sẵn sàng cao
Chuyển đổi dự phòng tự động nghĩa là nếu một nhà cung cấp gặp sự cố, yêu cầu được chuyển hướng liền mạch. Không cần thay đổi code, không có thời gian chết.
Đa phương thức
BazaarLink hỗ trợ đầu vào đa phương thức — gửi hình ảnh, âm thanh và tệp cùng với văn bản đến các mô hình hỗ trợ. Nội dung được chuyển tiếp đến nhà cung cấp upstream.
Phương thức được hỗ trợ
Ví dụ:
Gửi hình ảnh
Sử dụng định dạng mảng content với các phần image_url. Định dạng hỗ trợ: PNG, JPEG, WebP và GIF (bao gồm GIF động). Bạn có thể bao gồm nhiều hình ảnh trong một tin nhắn — mỗi cái là một phần image_url riêng:
Giới hạn
BazaarLink áp dụng hai giới hạn độc lập: giới hạn tốc độ cho số yêu cầu mỗi phút, và giới hạn tín dụng cho chi tiêu tài khoản. Vượt giới hạn tốc độ sẽ nhận HTTP 429; hết tín dụng sẽ nhận HTTP 402.
Giới hạn tốc độ
Giới hạn tốc độ theo người dùng (không theo khóa), đo bằng yêu cầu mỗi phút (RPM). Không có giới hạn hàng ngày. Tier được xác định tự động bởi số dư tín dụng tài khoản.
Khi vượt giới hạn tốc độ, bạn nhận phản hồi 429 với header Retry-After. Triển khai exponential backoff khi thử lại.
Response
Mỗi response thành công đều bao gồm các header rate limit để client có thể theo dõi:
X-RateLimit-Limit: 200 # Max requests per minute for your tier
X-RateLimit-Remaining: 198 # Remaining requests in current window
X-RateLimit-Reset: 1740000060 # Unix timestamp when the window resets
X-Request-Id: chatcmpl-abc123 # Unique request ID for debuggingGiới hạn tín dụng
Phản hồi 402 nghĩa là số dư tài khoản hoặc hạn mức chi tiêu của khóa đã về 0 — không phải do bạn gửi yêu cầu quá nhanh. Phản hồi này không có header rate limit, và nếu giới hạn bị chạm giữa lúc streaming, bạn sẽ nhận sự kiện lỗi SSE thay vì thay đổi mã trạng thái HTTP.
Phanh Khẩn Cấp Cá Nhân
Hạn mức chi tiêu USD cố định theo cửa sổ 1 phút và 1 giờ, áp dụng cho tất cả API key của bạn. Khi vượt ngưỡng, các yêu cầu mới nhận HTTP 429; cửa sổ tự động đặt lại theo ranh giới đồng hồ.
Tạo hình ảnh
Tạo hình ảnh qua /v1/chat/completions với modalities:["image"], hoặc /v1/images/generations tương thích OpenAI DALL·E.
curl -N https://bazaarlink.ai/api/v1/chat/completions \
-H "Authorization: Bearer $BAZAARLINK_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"openai/gpt-5.4-image-2","messages":[{"role":"user","content":"a red cat on a sofa"}],"modalities":["image","text"],"stream":true}'Luồng đầy đủ (streaming, chỉnh sửa ảnh, giao thức SSE, danh sách mô hình) xem tại API Reference →
Tạo video
Luồng 3 bước không đồng bộ (submit → poll → content). Tạo video mất từ 30 giây đến 5 phút.
curl https://bazaarlink.ai/api/v1/videos \
-H "Authorization: Bearer $BAZAARLINK_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"alibaba/wan2.7-t2v","prompt":"a bird flying over mountains","duration":3}'
# → 202 { "id": "vjob_xxx", "status": "pending" }Luồng đầy đủ (polling, tải xuống, loại tác vụ, lưu ý) xem tại API Reference →
Đầu vào PDF
Gửi tài liệu PDF trực tiếp trong tin nhắn đến các mô hình hỗ trợ đầu vào PDF gốc (ví dụ: Claude, Gemini). BazaarLink chuyển tệp thẳng đến mô hình — tính phí như input token thông thường, không phụ phí hay bước xử lý thêm.
Định dạng được hỗ trợ
- Tài liệu PDF (văn bản, hình ảnh, bảng, quét)
- URL dữ liệu base64
- Tài liệu nhiều trang
- Chỉ PDF không có mật khẩu
Đầu vào video
Gửi tệp video đến các mô hình hỗ trợ đầu vào video để phân tích, tạo chú thích, hoặc trả lời câu hỏi về cảnh và sự kiện. Dùng được URL trực tiếp hoặc base64 data URI — URL hiệu quả hơn cho video công khai; base64 dành cho tệp cục bộ hoặc video riêng tư.
Định dạng được hỗ trợ
MP4 (H.264)MPEGMOVWebMKhóa API quản lý
Khóa quản lý được thiết kế để quản lý khóa theo chương trình. Không thể gọi mô hình AI.
Tạo khóa quản lý
Vào trang Management API Keys và nhấp "Create" — đây là trang riêng, không phải lựa chọn loại trên trang API Keys thông thường.
Liệt kê khóa
Tạo khóa con
Cập nhật khóa
Thu hồi khóa
DELETE https://bazaarlink.ai/api/v1/keys/:id
Authorization: Bearer sk-bl-YOUR_MGMT_KEY
# Returns 204 No Content on successTruy vấn số dư
Truy vấn sử dụng
GET https://bazaarlink.ai/api/v1/usage?period=month
Authorization: Bearer sk-bl-YOUR_MGMT_KEY
# period: day | week | month | yearGhi nhận ứng dụng
Xác định ứng dụng trong header yêu cầu.
Header khả dụng
| Header | Description |
|---|---|
| HTTP-Referer | URL trang web của bạn, để theo dõi sử dụng và phân tích (tùy chọn) |
| X-Title | Tên ứng dụng, hiển thị trong bảng điều khiển (tùy chọn) |
Mã lỗi
Error Trạng thái
Các endpoint suy luận mô hình trả về một phong bì lỗi tương thích với OpenAI. Trường type có thể thay đổi hoặc bị lược bỏ; hãy dùng trạng thái HTTP và error.code cho logic chương trình thay vì phân tích thông báo.
{
"error": {
"message": "Insufficient credits. Please top up to continue.",
"type": "invalid_request_error",
"code": "insufficient_credits"
}
}HTTP và error.code
Before streaming, the HTTP status identifies the broad failure class. error.code is either that number or a stable string for a specific remedy. Prefer the string code when present, otherwise use the HTTP status.
Mã thanh toán có thể đọc được bằng máy
A 402 can represent different controls. Use these stable codes to choose the correct action.
Stable error.code catalog
These string codes are emitted by public inference and media paths. Branch on the string code when present; the HTTP status remains the broad failure class.
Giới hạn tỷ lệ, ngân sách và phanh khẩn cấp
These controls can reject an otherwise valid request and require different recovery actions.
Compatibility note: rate-limit and emergency-brake paths currently emit numeric error.code values. Use HTTP status, Retry-After, and the documented response message.
Trạng thái tài nguyên video và phương tiện
Video validation commonly returns numeric code 400. Missing jobs return 404, retired models 410, unfinished video content 409, and invalid video byte ranges 416.
Chính sách thử lại
Retry only failures that may recover without changing the request. Honor Retry-After or use exponential backoff with jitter. Do not stack SDK and manual retries.
Xử lý lỗi
Định dạng lỗi Streaming
Lỗi xảy ra trước khi stream token trả về phản hồi HTTP lỗi tiêu chuẩn với body JSON.
After a stream starts, the HTTP response is already 200. Parse each SSE data frame and treat a top-level error or choices[0].finish_reason === "error" as a failed, incomplete response.
Nếu stream thất bại giữa chừng, BazaarLink sẽ phát một sự kiện SSE cuối cùng chứa đối tượng error ở cấp cao nhất, theo sau là data: [DONE]. Các chunk được chuyển tiếp nguyên văn từ một số upstream có thể đặt lỗi trên choice (choices[0].finish_reason === "error") — hãy xử lý cả hai trường hợp.
Gọi công cụ
Gọi công cụ (còn gọi là gọi hàm) cho phép mô hình gọi các hàm bên ngoài mà bạn định nghĩa. Mô hình quyết định khi nào gọi công cụ và tạo tham số có cấu trúc — code của bạn thực thi hàm và trả về kết quả để tiếp tục hội thoại.
Mô hình được hỗ trợ
Hầu hết mô hình tiên tiến hỗ trợ gọi công cụ. Dưới đây là một số lựa chọn phổ biến:
Định nghĩa công cụ
Mỗi công cụ là đối tượng JSON mô tả hàm mô hình có thể gọi. Trường parameters sử dụng JSON Schema.
Tùy chọn tool_choice
Luồng hoàn chỉnh
Gọi công cụ là quy trình đa lượt: (1) gửi yêu cầu với công cụ → (2) mô hình trả về tool_calls → (3) thực thi hàm → (4) gửi kết quả lại → (5) mô hình tạo phản hồi cuối cùng.
Gọi công cụ song song
Một số mô hình có thể gọi nhiều công cụ trong một phản hồi. Xử lý từng lệnh gọi và trả về tất cả kết quả:
Gọi công cụ khi streaming
Khi streaming, các lệnh gọi công cụ đến dưới dạng delta từng phần được đánh chỉ số theo vị trí — tích lũy chuỗi tham số của mỗi delta theo chỉ số cho đến khi finish_reason trở thành "tool_calls", báo hiệu lệnh gọi đã hoàn tất.
Vòng lặp Agent đơn giản
Một mẫu chung tiếp tục gọi mô hình khi mô hình còn yêu cầu công cụ, và dừng lại khi mô hình trả về câu trả lời cuối cùng — dùng max_iterations để tránh vòng lặp vô hạn.
Thực hành tốt nhất khi định nghĩa hàm
- Dùng tên cụ thể, rõ nghĩa — get_weather_forecast thay vì chỉ weather.
- Viết mô tả rõ ràng về chức năng và thời điểm nên dùng — mô hình chỉ dựa vào đoạn văn bản này để quyết định có gọi hay không.
- Giới hạn giá trị bằng enum khi có thể và thêm ví dụ trong mô tả để giảm khả năng tham số bị sai định dạng.
- Chỉ đánh dấu required cho các trường thực sự bắt buộc — trường tùy chọn phải thực sự có thể bỏ qua.
Đầu ra có cấu trúc
Buộc mô hình trả về JSON hợp lệ khớp với schema. Điều này thiết yếu để xây dựng ứng dụng đáng tin cậy phân tích đầu ra mô hình theo chương trình.
Phương pháp 1: response_format (JSON Schema)
để bắt buộc tuân thủ JSON Schema nghiêm ngặt:
Mẹo
- Sử dụng tên thuộc tính rõ ràng, mô tả — mô hình sử dụng chúng làm ngữ cảnh.
- Thêm mô tả vào thuộc tính schema để hướng dẫn mô hình.
- Đặt strict: true để đảm bảo tuân thủ schema (có thể tăng độ trễ nhẹ).
- Giữ schema đơn giản — schema lồng sâu có thể giảm chất lượng đầu ra.
- Thử nghiệm với các mô hình khác nhau — một số xử lý schema phức tạp tốt hơn.
AHỗ trợ điền trước
Thêm một tin nhắn assistant chưa hoàn chỉnh làm mục cuối để yêu cầu tiếp tục trên các tuyến mô hình tương thích.
Chuyển đổi tin nhắn
Tự động chuyển đổi tin nhắn để phù hợp với giới hạn ngữ cảnh mô hình. Khi tin nhắn vượt quá cửa sổ ngữ cảnh, chuyển đổi thông minh cô đọng hội thoại bằng cách xóa tin nhắn ở giữa.
Sử dụng
Loại chuyển đổi
Hành vi mặc định
Mô hình có ngữ cảnh ≤8k tự động bật middle-out. Đối với mô hình ngữ cảnh lớn hơn, chọn tham gia rõ ràng.
Không lưu trữ dữ liệu
BazaarLink không lưu trữ nội dung tin nhắn theo mặc định.
Xử lý dữ liệu hiện tại
- Nội dung tin nhắn: không lưu trữ, bị xóa sau xử lý
- Metadata thanh toán: số token, thời gian, ID mô hình
- Nhật ký sử dụng: chỉ thống kê yêu cầu
- Chuyển tiếp upstream: tuân theo chính sách quyền riêng tư của họ
Bộ nhớ đệm Prompt
Bộ nhớ đệm prompt tái sử dụng token prompt đã tính toán, giảm đáng kể chi phí và độ trễ.
Cách hoạt động
Việc có cần cấu hình hay không tùy thuộc vào nhà cung cấp. Các mô hình họ OpenAI tự động cache tiền tố prompt dài và lặp lại — không cần thay đổi request. Các mô hình Claude (Anthropic) chỉ cache khi request chứa điểm ngắt cache_control rõ ràng; BazaarLink không tự thêm điều này thay bạn, nên một request Claude không có marker sẽ không bao giờ được cache. BazaarLink chuyển tiếp nguyên vẹn các cache marker bạn gửi và báo cáo số token cache đọc/ghi thực tế trong phản hồi usage.
Token suy luận
Mô hình suy luận (ví dụ DeepSeek R1, o1 series) suy nghĩ nội bộ trước khi tạo câu trả lời cuối cùng. Các token nội bộ này được tính phí riêng.
Đọc token suy luận từ phản hồi
Điều khiển chế độ suy nghĩ
Một số mô hình hỗ trợ bật/tắt chế độ "suy nghĩ".
| Dòng mô hình | Tham số | Mặc định |
|---|---|---|
| qwen3-* | enable_thinking: boolean | false (mặc định nền tảng) |
| openai/o1, o3, o4-mini | reasoning_effort: "low" | "medium" | "high" | medium |
| deepseek/deepseek-r1 | — | Luôn bật (không thể tắt) |
Đối tượng reasoning thống nhất (Formaat mới)
BazaarLink cũng hỗ trợ đối tượng reasoning thống nhất, hoạt động trên tất cả dòng mô hình:
| Trường | Giá trị | Áp dụng cho |
|---|---|---|
| reasoning.effort | "xhigh" | "high" | "medium" | "low" | "none" | OpenAI o-series, Grok |
| reasoning.max_tokens | integer | Anthropic Claude, Gemini |
| reasoning.exclude | boolean | Ẩn suy nghĩ khỏi phản hồi (mô hình vẫn suy luận) |
Độ trễ & Hiệu suất
Tối ưu hóa độ trễ phản hồi API AI rất quan trọng cho trải nghiệm người dùng.
Yếu tố ảnh hưởng độ trễ
- Kích thước mô hình: mô hình lớn hơn (70B+) thường chậm hơn
- Tải nhà cung cấp: thay đổi theo nhà cung cấp và thời điểm
- Số lượng token: max_tokens cao hơn = thời gian hoàn thành lâu hơn
- Streaming vs. không streaming: stream: true cung cấp token đầu tiên nhanh hơn
- Độ dài ngữ cảnh: ngữ cảnh rất dài tăng thời gian xử lý
Mẹo tối ưu
- Ưu tiên streaming (stream: true) để cải thiện độ trễ cảm nhận
- Sử dụng biến thể :nitro để chọn nhà cung cấp thông lượng cao
- Chọn mô hình nhỏ hơn (flash/mini/haiku) cho tình huống nhạy cảm độ trễ
- Sử dụng provider.sort: "latency" để tự động chọn nhà cung cấp độ trễ thấp nhất
- Bật bộ nhớ đệm prompt để giảm độ trễ cho yêu cầu lặp lại
Tối ưu hóa Uptime
BazaarLink tối đa hóa tính khả dụng API qua nhiều lớp: chuyển đổi dự phòng tự động, circuit breaker và giám sát sức khỏe nhà cung cấp.
Cơ chế khả dụng
- Circuit breaker: tự động phát hiện và cô lập nhà cung cấp thất bại
- Chuyển đổi dự phòng: chuyển liền mạch sang nhà cung cấp dự phòng
- Giám sát sức khỏe: theo dõi liên tục tỷ lệ lỗi và độ trễ
- Logic thử lại: lỗi tạm thời (5xx) được tự động thử lại
Z
Rào chắn
Thêm cơ chế an toàn nội dung vào yêu cầu API để lọc nội dung có hại và thực thi chính sách tuân thủ. BazaarLink hiện chỉ cung cấp rào chắn lọc nội dung có thể tùy chỉnh ở cấp tổ chức (Organization); khóa API cá nhân (không thuộc tổ chức) không có thiết lập tương đương — an toàn nội dung hoàn toàn phụ thuộc vào hệ thống an toàn tích hợp riêng của từng nhà cung cấp mô hình upstream.
Tính năng dự kiến (chưa có cho cả khóa cá nhân lẫn tổ chức)
Hành vi hiện tại
Khóa API cá nhân: tất cả nhà cung cấp upstream có hệ thống an toàn nội dung riêng — phản hồi mô hình kích hoạt bộ lọc nội dung sẽ trả về với finish_reason: "content_filter", và BazaarLink không áp dụng lọc bổ sung. Khóa API tổ chức: org_admin có thể cấu hình quy tắc tùy chỉnh (chặn/che giấu/ghi nhận) tại "Content Filter Guardrails," áp dụng trước khi văn bản đến mô hình.
Cursor IDE
Đặt BazaarLink làm Override URL của OpenAI trong Cursor. Cài đặt với chuyển đổi Responses API tự động, chuẩn hóa định dạng tool, và quy ước tiền tố bz- cho các mô hình Claude.
Thiết lập nhanh
Trong Cursor, mở Settings → Models, sau đó:
- Đặt Override OpenAI Base URL thành https://bazaarlink.ai/v1
- Đặt Override OpenAI API Key thành khóa BazaarLink sk-bl-... của bạn
- Thêm tên mô hình mong muốn — xem bên dưới cho Claude (tiền tố bz-).
Tiền tố bz- (cho mô hình Claude)
Kiểm tra phía client của Cursor sẽ định tuyến mọi tên mô hình bắt đầu bằng claude- qua tích hợp Anthropic riêng của Cursor, bỏ qua Override URL của bạn. Để buộc Cursor gửi yêu cầu đến BazaarLink, thêm tiền tố bz- vào tên mô hình. Server gỡ tiền tố và phân giải phần còn lại qua alias map.
Các biến thể dấu chấm/gạch ngang được chuẩn hóa: bz-claude-sonnet-4.6 và bz-claude-sonnet-4-6 đều phân giải đến cùng mô hình.
Biến môi trường CURSOR_MODEL_MAP (override của vận hành)
Với BazaarLink tự host, đặt biến môi trường này để ánh xạ lại tên model phía Cursor sang canonical id của danh mục:
CURSOR_MODEL_MAP=gpt-claude-sonnet:anthropic/claude-sonnet-4.6,gpt-opus:anthropic/claude-opus-4.7Bây giờ gpt-claude-sonnet được nhập trong Cursor sẽ ánh xạ thành anthropic/claude-sonnet-4.6 ở phía server. Hữu ích khi bạn muốn Cursor nghĩ một mô hình thuộc họ GPT (để định tuyến qua Override URL) trong khi thực tế bạn phục vụ Claude.
Điều gì xảy ra tự động
Khi một yêu cầu đến /api/v1/chat/completions, BazaarLink áp dụng các chuyển đổi tương thích này một cách trong suốt — bạn không cần làm gì phía client:
- Tự phát hiện thân Responses API — nếu thân có input thay vì messages, nó được chuyển sang dạng Chat Completions (Cursor gửi định dạng Responses API cho các mô hình họ GPT).
- Bọc các định nghĩa tool phẳng — Cursor Agent gửi { name, description, parameters } không có wrapper function. Chúng tôi bọc để Anthropic không từ chối với Tool '' not found in provided tools.
- Ép định dạng tool_choice không đúng — Cursor gửi { type: "auto" } (dạng object, không có function). Quy chuẩn OpenAI yêu cầu dạng chuỗi cho auto/none/required, nên chúng tôi ép kiểu.
- Loại bỏ các trường chỉ dành cho OpenAI khi định tuyến đến nhà cung cấp không phải OpenAI — parallel_tool_calls, logprobs, top_logprobs, logit_bias, service_tier, user được loại bỏ trước khi chuyển tiếp (nếu không Anthropic trả về 400).
- Ánh xạ max_output_tokens → max_tokens và loại bỏ các trường chỉ dành cho Responses-API (previous_response_id, truncation, background, store). Trường reasoning được giữ lại cho các thân Chat-Completions gốc.
Chế độ Cursor Agent
Gọi tool hoạt động qua luồng tool-call Chat Completions tiêu chuẩn. Cursor gửi tools (Shell, Read, Write, Grep, v.v.) với tool_choice: "auto"; BazaarLink chuyển tiếp đến nhà cung cấp bạn chọn, nơi quyết định có gọi tool hay không. Các lời gọi tool trả về dưới dạng các delta tool_calls tiêu chuẩn của OpenAI; Cursor thực thi cục bộ và tiếp tục cuộc hội thoại. Hoạt động giống nhau cho dù bạn chọn gpt-4o (OpenAI gốc) hay bz-claude-sonnet-4.6.
Định tuyến mô hình
BazaarLink sử dụng định dạng provider/model-name để định tuyến yêu cầu đến nhà cung cấp upstream chính xác. Điều này cho bạn truy cập các mô hình chính qua một endpoint API duy nhất.
Định dạng ID mô hình
{provider}/{model-name}
# Examples
openai/gpt-5.4-mini
anthropic/claude-sonnet-4.6
google/gemini-3-flash-preview
deepseek/deepseek-v3.2Ưu tiên định tuyến
Khi bạn gửi yêu cầu, BazaarLink xác định nhà cung cấp upstream theo thứ tự sau:
- Khớp chính xác — tìm route mô hình khớp với ID mô hình đầy đủ
- Wildcard nhà cung cấp — fallback đến route provider/* (ví dụ openai/*)
- Wildcard toàn cục — fallback đến route * wildcard
- Khóa nhà cung cấp mặc định — chỉ với mô hình đã có trong danh mục, dùng khóa đang bật và được đánh dấu mặc định
Xem tất cả mô hình khả dụng trên trang Mô hình.
Bộ định tuyến tự động
Auto Router v3 chấm yêu cầu vào một trong 14 tier tác vụ rồi dùng primary và chuỗi fallback hiện được cấu hình cho tier đó. Bảng trả phí và miễn phí được quản lý riêng trong trang admin.
- auto — dùng bảng định tuyến trả phí; mô hình thực tế hoàn thành yêu cầu được tính theo giá công khai.
- auto:free — dùng bảng định tuyến miễn phí; trong hạn mức có phí 0 USD. Khi hết hạn mức, tài khoản có số dư có thể chuyển sang auto trả phí nếu chưa tắt fallback trả phí.
Cách sử dụng
Đặt model thành "auto" (trả phí) hoặc "auto:free" (miễn phí) để bật định tuyến tự động:
curl https://bazaarlink.ai/api/v1/chat/completions \
-H "Authorization: Bearer $BAZAARLINK_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"auto","messages":[{"role":"user","content":"Review this TypeScript function"}]}'Cách v3 chọn tier
Tier chung gồm simple, standard, complex, reasoning. Tier chuyên biệt gồm coding, vision, image, video, data, search, social, email, calendar, trading. Kết quả sát biên có độ tin cậy thấp được nâng lên một bậc.
- Chấm tier: messages, tools, độ dài, từ khóa và tín hiệu cấu trúc chọn một trong 14 tier
- Quy tắc cứng: hình ảnh, suy luận hình thức và tác vụ chuyên biệt có thể chọn tier trực tiếp
- Tra route: đọc primary và tối đa 5 fallback hiện tại; tier bị tắt trả về 503
- Thực thi: thử primary rồi các fallback theo thứ tự cấu hình
- Theo dõi phản hồi: mô hình được chọn được trả về trong body phản hồi và header X-Auto-Resolved-Model
Bảng mô hình hiện tại
Các bảng dưới đây đọc cùng cấu hình trực tiếp mà inference và admin sử dụng. Primary, thứ tự fallback và trạng thái từng tier có thể đổi mà không cần triển khai lại.
auto
auto:free
Một số mô hình cung cấp bậc miễn phí có giới hạn tốc độ. Quyền miễn phí do nền tảng cấp theo từng mô hình — gọi mô hình bằng ID thông thường; hậu tố :free chỉ là bí danh tùy chọn (thêm vào mô hình trả phí không làm nó miễn phí).
Biến thể mô hình
Thêm hậu tố vào bất kỳ ID mô hình nào để thay đổi hành vi định tuyến. BazaarLink hỗ trợ 7 loại biến thể.
ID mô hình độc lập
Các biến thể này tồn tại như mô hình riêng biệt với giá và khả năng riêng.
:free
:extended
:thinking
:exactoPhím tắt định tuyến
Các hậu tố này thay đổi lựa chọn nhà cung cấp mà không thay đổi danh tính mô hình.
:floor # lowest listed input price first
:nitro # throughput-oriented shortcut
:online # enable web-search routingHành vi đa nhà cung cấp
Đối với upstream hỗ trợ biến thể, hậu tố được chuyển tiếp nguyên trạng. Đối với nhà cung cấp trực tiếp, hậu tố bị loại bỏ và BazaarLink xử lý định tuyến cục bộ.
Mô hình miễn phí
Một số mô hình cung cấp bậc miễn phí có giới hạn tốc độ. Quyền miễn phí do nền tảng cấp theo từng mô hình — gọi mô hình bằng ID thông thường; hậu tố :free chỉ là bí danh tùy chọn (thêm vào mô hình trả phí không làm nó miễn phí).
- Gọi ID mô hình thông thường (ví dụ deepseek/deepseek-v4-flash). Yêu cầu trong hạn mức miễn phí được phục vụ miễn phí tự động.
- Mức dùng miễn phí bị giới hạn theo người dùng bằng số yêu cầu mỗi phút và trần hằng ngày. Giới hạn thay đổi theo hạng tài khoản (chưa nạp / đã nạp).
- Khi vượt hạn mức miễn phí và còn tín dụng, yêu cầu tự động tiếp tục ở bậc trả phí theo giá niêm yết. Gửi X-Free-Fallback: false để tắt chuyển tiếp tự động và nhận 429 thay thế. Không có tín dụng, yêu cầu vượt hạn mức trả về 429.
- GET /api/v1/models liệt kê mục :free cho mỗi mô hình có bậc miễn phí; auto:free luôn định tuyến đến một mô hình miễn phí.
Mô hình đang có hạn mức miễn phí
Gọi trực tiếp các model ID này để dùng hạn mức miễn phí. Danh sách thay đổi theo thời gian — hãy truy vấn API để lấy bản mới nhất.
deepseek/deepseek-v4-flashGiới hạn hạn mức miễn phí
Ngân sách hằng ngày = ngân sách yêu cầu ở trên × hệ số hạng tài khoản, tính riêng cho từng mô hình miễn phí. auto:free còn áp thêm giới hạn song song theo IP. Từng mô hình có thể được đặt giới hạn chặt hơn hoặc rộng hơn; giá trị thực tế hiển thị ở khối "Hạn mức miễn phí" trên trang mô hình.
Sau khi hết hạn mức miễn phí
Khi hết hạn mức, nếu tài khoản còn số dư, yêu cầu sẽ tự động tiếp tục theo giá trả phí của mô hình đó — dịch vụ không gián đoạn và tính phí đúng như một lệnh gọi trả phí thông thường. Nếu bạn muốn lỗi thay vì bị tính phí, hãy gửi header X-Free-Fallback: false hoặc tắt tự động chuyển trong cài đặt khóa; khi đó bạn nhận 429. Không có số dư thì yêu cầu vượt hạn mức luôn trả về 429.
# Return 429 instead of switching to paid routing
-H "X-Free-Fallback: false"Quản lý tổ chức
Tổ chức BazaarLink sử dụng kiến trúc ba cấp: Tổ chức → Nhóm → Thành viên. Tín dụng lưu ở cấp tổ chức; mỗi nhóm và thành viên có thể có giới hạn chi tiêu hàng tháng.
Hệ thống ngân sách ba cấp
Mỗi yêu cầu API được kiểm tra ba lớp ngân sách. Vượt bất kỳ lớp nào trả về HTTP 429:
- Ngân sách hàng tháng thành viên (OrgMember.monthlyBudget)
- Ngân sách hàng tháng nhóm (Team.monthlyBudget)
- Số dư tín dụng tổ chức (Organization.credits)
Báo cáo sử dụng
Trang Báo cáo cung cấp phân tích chi tiêu hàng tháng theo bốn chiều:
- Tổng quan: tổng chi tiêu, tỷ lệ lợi nhuận, biểu đồ xu hướng hàng ngày
- Theo nhóm: chi tiêu theo nhóm, tỷ lệ %, phân tích mô hình
- Theo mô hình: chi tiêu theo mô hình, giá trung bình
- Theo thành viên: chi tiêu theo thành viên — chỉ org_admin
Tất cả chế độ xem hỗ trợ xuất CSV với tiền tố BOM cho Excel.
Tạo & Quản lý tổ chức
- Vào Cài đặt → Tổ chức → Tạo tổ chức mới
- Tạo nhóm trong cổng tổ chức
- Mời thành viên bằng email, gán vai trò và nhóm
- Phát hành khóa API cho thành viên
- Xem trang Báo cáo để xem chi tiêu hàng tháng
- Xem trang Báo cáo để biết chi tiêu hàng tháng được chia theo Nhóm, Người mẫu hoặc Thành viên
Vai trò thành viên
Tổ chức có thể quản lý những gì khác?
Ngoài các thành viên và nhóm, khu vực quản lý tổ chức còn cung cấp:
- API keys and model restrictions
- Content filtering before text reaches a model
- Allowed Models by organization, team, member, or key
- Monthly budgets and spend emergency brakes
- Reports, billing, change logs, and security logs
- Education sessions and quotas for eligible organizations
- Các kế hoạch của tổ chức: các tổ chức giáo dục có thể quản lý thêm các buổi học và chỉ tiêu của sinh viên
Lọc nội dung
Organization-owned rules inspect text before it reaches a model. An org_admin can enable, edit, and test them in Settings.
- block: reject with HTTP 403
- redact: replace matches with [REDACTED]
- flag: send unchanged and record an audit event
- Built-in sensitive-data and prompt-injection templates plus custom keyword or regex rules
- Up to 100 safety-checked rules with a test preview
Quản lý API (v1)
Endpoint /api/v1/orgs/ chấp nhận cả Bearer management key và session cookie.
Tổ chức
/api/v1/orgsLiệt kê tất cả tổ chức mà người gọi thuộc về, kèm theo role và joinedAt.
/api/v1/orgs/:orgIdLấy chi tiết tổ chức bao gồm số lượng team và member.
curl https://bazaarlink.ai/api/v1/orgs \
-H "Authorization: Bearer sk-bl-YOUR_MANAGEMENT_KEY"Nhóm
/api/v1/orgs/:orgId/teamsLiệt kê các team kèm số lượng member, sắp xếp theo tên.
/api/v1/orgs/:orgId/teams/api/v1/orgs/:orgId/teams/:teamIdCập nhật một phần — chỉ bao gồm các field cần thay đổi.
/api/v1/orgs/:orgId/teams/:teamId# Create a team
curl https://bazaarlink.ai/api/v1/orgs/{orgId}/teams \
-X POST \
-H "Authorization: Bearer sk-bl-YOUR_MANAGEMENT_KEY" \
-H "Content-Type: application/json" \
-d '{"name": "Engineering", "costCenterCode": "ENG-001", "monthlyBudget": 500}'Thành viên
/api/v1/orgs/:orgId/membersLiệt kê tất cả member kèm thông tin user lồng nhau (id/name/email) và team.
/api/v1/orgs/:orgId/members404 nếu email không có tài khoản. 409 nếu đã là thành viên.
/api/v1/orgs/:orgId/members/:memberIdCập nhật một phần role, teamId, hoặc monthlyBudget.
/api/v1/orgs/:orgId/members/:memberIdTrả về 400 nếu là org_admin cuối cùng.
API Báo cáo
Truy vấn dữ liệu chi tiêu hàng tháng theo chương trình.
Tham số truy vấn: year (mặc định năm hiện tại), month (mặc định tháng hiện tại, 1–12).
Tham chiếu phản hồi lỗi
Mô hình được phép (Whitelist)
Hạn chế những mô hình mà tổ chức, nhóm hoặc thành viên cá nhân của bạn có thể gọi. Hữu ích để chặn các mô hình đắt tiền hoặc chưa được kiểm duyệt, áp dụng tiêu chuẩn mô hình, hoặc giới hạn một nhóm chỉ dùng một nhà cung cấp duy nhất.
Cách hoạt động
- Ba tầng độc lập — Tổ chức, Nhóm, Thành viên — mỗi tầng có danh sách riêng (String[] trong cơ sở dữ liệu).
- Khi cả ba tầng đều rỗng, mọi mô hình đều được phép (hành vi mặc định).
- Khi một hoặc nhiều tầng không rỗng, danh sách hiệu lực là giao của các tầng không rỗng — một mô hình phải được phép ở mọi tầng có hạn chế thì mới được thông qua.
- Thay đổi có hiệu lực trong vài giây (cache bộ nhớ 60s + cache Redis 5 phút; cả hai đều bị xóa khi cập nhật).
Định dạng pattern
- Khớp chính xác — ví dụ openai/gpt-4o (chỉ riêng mô hình này).
- Wildcard nhà cung cấp — ví dụ openai/* (mọi mô hình dưới prefix openai/).
- Chỉ chữ thường. Tối đa 200 mục mỗi danh sách, 100 ký tự mỗi mục.
Nơi quản lý
Org Portal → Allowed Models. org_admin có thể chỉnh sửa danh sách org / team / member; team_admin có thể chỉnh sửa nhóm của mình và các thành viên trong nhóm đó.
Phản hồi lỗi khi bị chặn
Cuộc gọi đến mô hình không được phép trả về HTTP 403 với body sau:
API quản lý
Tất cả endpoint chấp nhận Web Session hoặc Bearer Management Key (sk-bl-...). PATCH thay thế toàn bộ danh sách; truyền [] để xóa.
Cầu dao chi tiêu (Spend Kill Switch)
Một mức trần chi tiêu theo cửa sổ kép, chặn các yêu cầu tiếp theo khi chi phí upstream tăng đột biến. Được thiết kế để khống chế các script chạy loạn, vòng lặp vô hạn, hoặc lạm dụng key bị đánh cắp trước khi gây tổn thất tiền thực.
Cách hoạt động
- Hai cửa sổ cố định được theo dõi trong Redis cho mỗi scope: chi phí upstream 1 phút và 1 giờ (USD).
- Nếu chi tiêu của một trong hai cửa sổ chạm ngưỡng, mọi yêu cầu tiếp theo trong scope đó sẽ bị từ chối cho đến khi cửa sổ đặt lại.
- Mặc định: $5 / phút, $20 / giờ, bật theo mặc định.
- Bộ đếm sống trong Redis với TTL — phục hồi tự động, không cần reset thủ công cho các trip ở cấp org/team/member.
Scopes (member ghi đè team ghi đè org)
Mỗi tầng có thể đặt ngưỡng riêng. Thứ tự phân giải là member → team → org → mặc định nền tảng — giá trị non-null đầu tiên thắng cho mỗi field (cbEnabled, cbMinuteUsd, cbHourlyUsd).
- Cấp Org — áp dụng cho tất cả khóa thuộc tổ chức. Đặt trong Org Portal → Circuit Breaker.
- Cấp Team — áp dụng cho tất cả khóa được gắn thẻ vào nhóm đó. Ghi đè org cho các khóa này.
- Cấp Member — chỉ áp dụng cho các khóa được gắn thẻ vào thành viên đó. Ghi đè team và org.
Hành vi khi trip
Khi bị trip, các yêu cầu thất bại nhanh (không thực hiện cuộc gọi upstream nào). Phản hồi là HTTP 429 với body sau:
Nhật ký audit
Mọi sự kiện trip và mọi thay đổi cấu hình đều được ghi lại:
- Sự kiện trip — actions org.cb.tripped / team.cb.tripped / org_member.cb.tripped. Khử trùng lặp thành một entry mỗi scope+window mỗi giờ, để một trip kéo dài không làm tràn nhật ký.
- Thay đổi cấu hình — actions org.cb.update / team.cb.update / org_member.cb.update. Ghi lại giá trị before/after kèm theo actor.
API quản lý
Org admin có thể đọc và cập nhật cài đặt qua API. Tất cả endpoint chấp nhận Web Session hoặc Bearer Management Key (sk-bl-...). Gửi bất kỳ tập con field nào trong body PATCH; null xóa một field và quay về tầng cha.
Xoay vòng khóa API
Xoay vòng khóa API định kỳ là thực hành bảo mật tốt. BazaarLink hỗ trợ xoay vòng không đình chỉ.
Các bước xoay vòng
- Tạo khóa API mới
- Cập nhật ứng dụng sử dụng khóa mới
- Xác minh khóa mới hoạt động
- Vô hiệu hóa khóa cũ
Xuất hoạt động
Tải lịch sử sử dụng API đầy đủ dạng CSV.
Xuất CSV
Đăng nhập và vào trang Nhật ký. Nhấp Xuất CSV.
Cột CSV
API sử dụng JSON
Truy vấn thống kê tổng hợp theo chương trình:
Kế toán sử dụng
Truy vấn thống kê sử dụng chi tiết qua API.
Tham chiếu trường phản hồi
| Field | Type | Description |
|---|---|---|
| model | string | Model ID used (e.g., openai/gpt-4o) |
| provider | string | Upstream provider name |
| prompt_tokens | number | Input tokens consumed |
| completion_tokens | number | Output tokens generated |
| total_tokens | number | Total tokens (prompt + completion) |
| reasoning_tokens | number | Reasoning tokens (for thinking models) |
| cached_tokens | number | Prompt tokens served from cache |
| cost | number | Total cost in USD credits |
| duration_ms | number | End-to-end latency in milliseconds |
| throughput | number | Generation speed in tokens/sec |
| finish_reason | string | stop | length | content_filter | error |
| status | number | HTTP status code from upstream |
| app_name | string | null | Application name (X-Title header) |
| key_name | string | API key name used for the request |
Kế hoạch tổ chức
Gói Institution cho phép bất kỳ tổ chức nào (trường học, doanh nghiệp, hội nghị, cơ quan chính phủ, v.v.) cấp các session token ngắn hạn cho thành viên từ một khóa cấp tổ chức duy nhất. Thành viên không cần tạo tài khoản trên nền tảng. Tổ chức kiểm soát những thành viên nào có thể yêu cầu token theo domain email (ví dụ nthu.edu.tw); toàn bộ mức sử dụng được tính phí vào tài khoản của tổ chức. Trang này sử dụng kịch bản giáo dục làm ví dụ — cơ chế tương tự áp dụng cho bất kỳ tổ chức nào cần truy cập tạm thời ngắn hạn cho nhiều người dùng.
Tổng quan kiến trúc
- Khóa tổ chức Mã thông báo phiên thành viên — Bắt đầu bằng sk-edu-. Được tạo bởi org_admin trên trang khóa của tổ chức. Không thể dùng trực tiếp làm Bearer token để gọi API — gọi trực tiếp sẽ trả về 403.
- — Bắt đầu bằng edu-sess-. Học sinh nhận được sau khi xác minh email. Thời hạn mặc định là 24 giờ; có thể bị thu hồi bởi quản trị viên tổ chức.
- Tên miền được phép — Tổ chức cấu hình các domain email nào (khớp chính xác, không bypass theo hậu tố) có thể yêu cầu session.
- Phân bổ sử dụng — Mọi yêu cầu của học sinh đều được tính phí vào tài khoản tổ chức. Mức sử dụng có thể xem theo từng session và theo từng email trong bảng điều khiển tổ chức.
Bước 1 — Quản trị viên nền tảng đặt loại tổ chức là Education
Từ sales@bazaarlink.ai / support@bazaarlink.ai, tìm tổ chức mục tiêu, chuyển sang tab "Org Type", chọn Education và đặt các domain email được phép:
Bước 2 — Quản trị viên tổ chức tạo Institution Key
Trên trang API Keys của tổ chức, chọn "Education" làm loại khóa khi tạo khóa mới. Hệ thống sinh ra khóa sk-edu-... và chỉ hiển thị MỘT LẦN — hãy lưu lại và phân phối qua các kênh chính thức của bạn cho học sinh của tổ chức đó.
Bước 3 — Học sinh yêu cầu mã xác minh
Học sinh truy cập /access và nhập khóa edu + email trường của họ; hoặc gọi API trực tiếp:
/api/edu/request-codeBước 4 — Học sinh nộp mã để đổi lấy session token
/api/edu/verifyBước 5 — Sử dụng session token để gọi API
Sử dụng token edu-sess-... làm Bearer token cho bất kỳ endpoint chat / completions / embeddings nào:
curl -X POST https://bazaarlink.ai/api/v1/chat/completions \
-H "Authorization: Bearer edu-sess-827d11a1ec67d175cfd4f67f929261f4" \
-H "Content-Type: application/json" \
-d '{
"model": "anthropic/claude-haiku-4.5",
"messages": [{"role": "user", "content": "Hello"}]
}'403 — Education keys cannot be used directly. Visit /access to exchange for a session.Đây là một cổng chặn ngược có chủ ý — nó ngăn các trường học làm rò rỉ khóa dài hạn cho từng học sinh.
Bảng điều khiển tổ chức — giám sát và thu hồi
Các tổ chức loại Education có thêm tab Education ở thanh điều hướng bên, cung cấp:
- Cài đặt — Điều chỉnh các domain được phép, TTL, số session tối đa cho mỗi email cho mỗi khóa, và hạn mức request / token / USD trên mỗi session.
- Phiên — Liệt kê tất cả các session đang hoạt động / hết hạn / đã thu hồi; lọc theo email; thu hồi từng session riêng lẻ.
- Số liệu thống kê sử dụng — Số lần gọi, lượng token tiêu thụ và chi phí tích lũy theo từng session.
Bảo mật và giới hạn
| Mục | Mặc định | Mô tả |
|---|---|---|
| Phiên TTL | 24 giờ | Thời hạn của session token; session hết hạn cần xác minh lại. |
| Mã xác minh TTL | 15 phút | Thời hạn của mã xác minh email. |
| Độ dài mã xác minh Giới hạn | 6 chữ số | Lưu dưới dạng băm HMAC-SHA256 trong Redis, không bao giờ lưu dạng văn bản thuần. |
| Đoán Thời gian hồi chiêu của mã yêu cầu | 5 lần thử | Vượt quá thì mã sẽ bị vô hiệu hóa ngay lập tức. |
| Giới hạn tốc độ | 60 giây | Khoảng thời gian tối thiểu giữa các yêu cầu lặp lại cho cùng (key, email). |
| Per-IP | 10 / 15 phút | Chống spam. |
| Giới hạn tốc độ trên mỗi khóa | 100 / giờ | Ngăn việc gửi email hàng loạt. |
| Số phiên tối đa trên mỗi email Tuyên truyền thu hồi | 5 | Có thể cấu hình trong eduConfig; ngăn một hộp thư tích trữ token. |
| ≤ 60 giây | TTL cache L1/L2; sau khi thu hồi trong DB cần đến 60 giây để lan truyền tới mọi node. |
Tính phí và quy kết mức sử dụng
Mọi yêu cầu được thực hiện qua session token đều được tính phí 100% cho tổ chức sở hữu khóa edu, phù hợp với cách các nhà cung cấp upstream (OpenAI / Anthropic / v.v.) tính phí (theo token). Bảng điều khiển tổ chức hỗ trợ phân tích chi tiết theo session, theo email và theo khóa.
Phản hồi
Giúp chúng tôi cải thiện BazaarLink bằng cách báo cáo vấn đề, lỗi hoặc đề xuất.
Cách báo cáo
Cần bao gồm
- ID yêu cầu (từ trường id phản hồi)
- Mô hình sử dụng và tham số gửi
- Hành vi mong đợi so với thực tế
- Thời gian và tần suất vấn đề
- Thông báo lỗi hoặc mã trạng thái HTTP