Trả lời ngắn gọn: jev-1.13 không tạo ra văn bản. Bạn gửi POST một đoạn văn bản cùng một tập hợp câu hỏi được đặt tên tới https://aihubmix.com/v1/systemone, và nhận lại các câu trả lời có kiểu dữ liệu rõ ràng, được khóa theo tên câu hỏi của bạn: một danh mục, một điểm số hoặc một xác suất. Không cần phân tích cú pháp gì thêm. Dưới đây là một yêu cầu hoạt động, định dạng phản hồi đầy đủ, và một lỗi thiết kế duy nhất sẽ âm thầm làm giảm độ chính xác của bạn.
Jev dùng để làm gì
Hãy dùng khi bạn cần một đánh giá, chứ không phải một đoạn văn: định tuyến yêu cầu hỗ trợ, chấm mức độ nghiêm trọng, gắn cờ mức độ khẩn cấp, kiểm duyệt nội dung. Trang mô hình nêu rõ: "Không tạo văn bản, không có gì để phân tích cú pháp."
Hãy dùng một mô hình chat thông thường khi bạn cần giải thích, tóm tắt hoặc bất kỳ đầu ra tự do nào. jev không thể tạo ra những thứ đó.
Trước khi bắt đầu
- [ ] Đã cài Python 3 (thư viện chuẩn là đủ)
- [ ] Một tài khoản AiHubMix và khóa API
- [ ] Khóa được xuất ra dưới tên
AIHUBMIX_API_KEY, không bao giờ ghi cứng trong mã nguồn
Bạn không cần OpenAI SDK, LangChain hay gói requests.
Bước 1 — Nắm endpoint
POST https://aihubmix.com/v1/systemone
Authorization: Bearer YOUR_KEY
Content-Type: application/json
Đây là một route dành riêng cho mô hình, không phải /v1/chat/completions. Các client tương thích OpenAI không thể gọi nó. Hãy dùng HTTP thuần.
Bước 2 — Chọn loại câu hỏi
Có ba loại, và bạn có thể kết hợp tự do trong cùng một yêu cầu:
| Loại | Dùng để | Bạn cung cấp |
|---|---|---|
choice | Chọn một danh mục | criteria dạng dict: nhãn → định nghĩa |
score | Đánh giá trên thang có thứ tự | criteria dạng list, thấp nhất trước |
noul | Đánh giá có/không | không cần gì thêm ngoài instructions |
Bước 3 — Xây dựng yêu cầu
state là văn bản cần được đánh giá. questions là các khóa do bạn tự đặt tên; phản hồi sẽ dùng cùng tên đó.
payload = {
"model": "jev-1.13",
"state": "Hi, I have been trying to connect my Stripe account for 3 days "
"and it keeps failing. I am losing sales. Please help ASAP.",
"questions": {
"department": {
"type": "choice",
"instructions": "Which team should handle this",
"criteria": {
"billing": "Payment or subscription issues",
"technical": "Bugs or integration problems",
"sales": "Pricing or account questions",
},
},
"frustration": {
"type": "score",
"instructions": "How frustrated the customer appears",
"criteria": [
"Calm, just stating facts",
"Frustrated but civil",
"Very angry, strong language",
],
},
"is_urgent": {
"type": "noul",
"instructions": "The message conveys urgency or time-sensitivity",
},
},
}
Bước 4 — Gửi bằng thư viện chuẩn
import json, os, urllib.error, urllib.request
def ask(payload):
req = urllib.request.Request(
"https://aihubmix.com/v1/systemone",
data=json.dumps(payload).encode(),
headers={"Authorization": "Bearer " + os.environ["AIHUBMIX_API_KEY"],
"Content-Type": "application/json"},
method="POST",
)
try:
with urllib.request.urlopen(req, timeout=60) as r:
return json.loads(r.read())
except urllib.error.HTTPError as e:
raise SystemExit(f"HTTP {e.code}: {e.read().decode(errors='replace')[:500]}")
Hãy đặt việc xây dựng yêu cầu bên trong một hàm. Nếu bạn xây dựng và gửi ở cấp module, việc import tệp sẽ kích hoạt lại lệnh gọi và tiêu tốn token.
Bước 5 — Đọc câu trả lời
Mỗi câu trả lời lưu giá trị của nó dưới khóa khớp với type của nó, nên một hàm truy cập duy nhất có thể xử lý cả ba loại:
data = ask(payload)
for name, ans in data["answers"].items():
kind = ans["type"]
print(name, kind, ans[kind], ans.get("confidence"))
print("usage:", data.get("usage"))
Đầu ra đã được kiểm chứng:
department choice billing 0.51
frustration score 1 1
is_urgent noul 1 None
usage: {'input_tokens': 424, 'output_tokens': 73}
Bước 6 — Hiểu toàn bộ envelope
Vòng lặp in ra ẩn đi các trường hữu ích. Đây là JSON thô cho một câu trả lời kiểu score:
{
"type": "score",
"score": 1,
"legend": {"0": "Calm, just stating facts", "1": "Frustrated but civil", "2": "Very angry, strong language"},
"probabilities": {"0": 0, "1": 1, "2": 0},
"confidence": 1
}
legendánh xạ chỉ số trở lại cách diễn đạt của chính bạn. Số nguyên tự mô tả nên bạn không cần bảng tra cứu trong mã.probabilitiescho toàn bộ phân phối, hữu ích để phát hiện trường hợp hòa gần nhau.noulkhông có trườngconfidence. Xác suất của nó chính là tín hiệu.
Cấp cao nhất cũng trả về usage, id, provider (TypeSafe), và phiên bản backend đã được phân giải typesafe/jev-1.13-20260917.
Lỗi làm giảm độ chính xác
Trong yêu cầu trên, department trả về billing với độ tin cậy là 0.51. Khi lặp lại đúng yêu cầu đó, kết quả trả về cùng nhãn nhưng độ tin cậy chỉ là 0.38 — câu trả lời ổn định, còn mức độ chắc chắn được báo cáo thì không.
Nguyên nhân nằm ở criteria, không phải ở mô hình. billing là "Vấn đề về thanh toán hoặc đăng ký" và technical là "Lỗi hoặc vấn đề tích hợp." Một tích hợp Stripe liên tục lỗi thực sự khớp với cả hai. Mô hình đang phản ánh một sự mơ hồ đã được viết sẵn trong schema.
Hai quy tắc trước khi đưa vào sản xuất:
- Viết các
choicecriteria loại trừ lẫn nhau. Nếu con người sẽ phân vân giữa hai nhãn, mô hình cũng sẽ như vậy. - Đặt ngưỡng độ tin cậy và chuyển các kết quả có độ tin cậy thấp sang hàng đợi xử lý thủ công thay vì chấp nhận chúng như quyết định. Một mô hình thừa nhận sự không chắc chắn có giá trị hơn một mô hình che giấu nó.
Danh sách kiểm tra trước khi ra mắt
- [ ] Khóa được nạp từ biến môi trường hoặc từ một tệp có quyền
600mà VCS bỏ qua - [ ] Đã rà soát các
choicecriteria xem có chồng chéo không - [ ] Đã định nghĩa ngưỡng độ tin cậy, kèm đường dẫn dự phòng bên dưới ngưỡng đó
- [ ] Các câu trả lời
noulđược xử lý riêng vì chúng không cóconfidence - [ ] Đã xóa các câu hỏi không dùng đến (3 câu hỏi tốn 424 input token; 2 câu hỏi tốn 355)
- [ ] Các phản hồi không thuộc nhóm 2xx được ghi log cùng nội dung thô
Câu hỏi thường gặp
Tôi có thể dùng OpenAI SDK không? Không. /v1/systemone không phải là route tương thích OpenAI.
Jev có thể trả về một câu hoặc bản tóm tắt không? Không. Nó chỉ trả lời các câu hỏi có kiểu dữ liệu mà bạn định nghĩa.
Mỗi yêu cầu có thể có bao nhiêu câu hỏi? Các bài kiểm tra đã xác minh sử dụng hai và ba câu hỏi. Mỗi câu hỏi làm tăng cả input và output token, nên chỉ đưa vào những gì bạn sẽ hành động dựa trên đó.
Có bí danh phiên bản nào không? Trang mô hình liệt kê bí danh jev-latest cùng với jev-1.13. Hãy ghim phiên bản cụ thể nếu khả năng tái lập là quan trọng.
Chi phí là bao nhiêu? Trang mô hình công bố $0.0462 / M cho input token và $0 / M cho output token. Đây là số liệu của nhà cung cấp, hãy xác nhận bảng giá hiện hành trước khi lập ngân sách.
Cửa sổ ngữ cảnh là bao nhiêu? Trang mô hình không nhất quán: 64K ở phần tiêu đề, 32K trong bảng nhà cung cấp. Hãy kiểm tra với đầu vào dài nhất của riêng bạn trước khi dựa vào một trong hai con số.
Phạm vi của hướng dẫn này
Mọi nội dung trên đều được kiểm chứng bằng ba lần gọi trực tiếp với cùng một đầu vào. Hướng dẫn không đề cập đến độ trễ, xử lý theo lô, thông lượng, hay hành vi trên các đầu vào khác với ví dụ. Hiện tượng trôi độ tin cậy là một quan sát đã được tái hiện, không phải tỷ lệ lỗi đã đo lường. Hãy lặp lại trên dữ liệu của riêng bạn trước khi đặt ngưỡng.
Bắt đầu với AiHubMix
jev-1.13 có sẵn qua AiHubMix, và trang mô hình chứa đầy đủ mọi nội dung mà hướng dẫn này đề cập: endpoint /v1/systemone, ba loại câu hỏi cùng định dạng criteria của chúng, đầy đủ các trường phản hồi, và bảng giá công bố là $0.0462 / M input token và $0 / M output token. Bí danh jev-latest trỏ tới bản phát hành mới nhất, nên nó luôn được cập nhật khi các phiên bản thay đổi.
Bắt đầu tại đây: https://aihubmix.com/model/jev-latest
Các bước tiếp theo:
- Tạo tài khoản AiHubMix và lấy khóa API
- Sao chép yêu cầu từ Bước 3 và hàm
ask()từ Bước 4 - Thay
statebằng một bản ghi thực từ hàng đợi của bạn - So sánh kết quả với cách bạn đang phân loại bản ghi đó hiện nay
Nếu hướng dẫn này hữu ích, hãy đăng ký để nhận các bài viết tiếp theo về mô hình đầu ra có cấu trúc và pipeline phân loại.



