Source: https://ailoot.ai/docs/vi/api/systemone/
Canonical: https://ailoot.ai/docs/vi/api/systemone/
Language: vi

[API](https://ailoot.ai/docs/vi/) 

# Jev — mô hình ra quyết định

[Markdown](https://ailoot.ai/docs/vi/api/systemone/index.md)

Mô hình ra quyết định Jev của TypeSafe trả lời các câu hỏi có kiểu dữ liệu về văn bản hoặc JSON: chọn phương án, chấm điểm theo thang hoặc “có/không” kèm xác suất. Đây không phải mô hình trò chuyện hay tạo văn bản.

POST`https://api.ailoot.ai/v1/systemone`

Jev — mô hình ra quyết định

```bash
curl https://api.ailoot.ai/v1/systemone \
  -H "Authorization: Bearer $AILOOT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "jev-latest",
    "state": "Cứu với! Các khoản chi trả của tôi đã thất bại suốt 3 ngày.",
    "questions": {
      "is_urgent": {
        "type": "noul",
        "instructions": "Nội dung này có thể hiện tính khẩn cấp không?"
      }
    }
  }' 
```

```python
import json, os, urllib.request

body = {
    "model": "jev-latest",
    "state": "Cứu với! Các khoản chi trả của tôi đã thất bại suốt 3 ngày.",
    "questions": {
        "is_urgent": {"type": "noul", "instructions": "Nội dung này có thể hiện tính khẩn cấp không?"},
    },
}
req = urllib.request.Request(
    "https://api.ailoot.ai/v1/systemone",
    data=json.dumps(body).encode(),
    headers={"Authorization": "Bearer " + os.environ["AILOOT_API_KEY"],
             "Content-Type": "application/json"},
)
with urllib.request.urlopen(req, timeout=60) as resp:
    result = json.load(resp)
print(result["answers"]["is_urgent"]["noul"])  # 0.95
```

```js
const resp = await fetch("https://api.ailoot.ai/v1/systemone", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.AILOOT_API_KEY}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    model: "jev-latest",
    state: "Cứu với! Các khoản chi trả của tôi đã thất bại suốt 3 ngày.",
    questions: {
      is_urgent: { type: "noul", instructions: "Nội dung này có thể hiện tính khẩn cấp không?" },
    },
  }),
});
const result = await resp.json();
if (!resp.ok) throw new Error(`${resp.status} ${JSON.stringify(result)}`);
console.log(result.answers.is_urgent.noul); // 0.95
```

200 OK

```json
{
  "model": "jev-1.13.0",
  "answers": {
    "is_urgent": {
      "type": "noul",
      "noul": 0.95
    }
  },
  "usage": { "input_tokens": 296, "output_tokens": 20 }
}
```

Jev là mô hình ra quyết định thuộc lớp System One của TypeSafe. Mô hình không viết văn bản và không hội thoại: bạn truyền **trạng thái** (`state`) — văn bản hoặc JSON — cùng một tập **câu hỏi**, rồi nhận về các giá trị có kiểu dữ liệu kèm xác suất. Dựa vào đó, mã có thể phân nhánh, sắp xếp và định tuyến ngay mà không cần phân tích văn bản tự do.

Mọi câu hỏi trong cùng một yêu cầu được đánh giá song song, độc lập với nhau, trên cùng một `state`. Theo TypeSafe, thêm câu hỏi gần như không làm thay đổi thời gian phản hồi và các câu hỏi không ảnh hưởng lẫn nhau.

| Mục | Tóm tắt |
| --- | --- |
| Mô hình | `jev-latest` — bí danh của phiên bản Jev ổn định mới nhất; [thẻ trong danh mục](https://ailoot.ai/models/vi/#m=jev-latest) |
| Phương thức | `POST /v1/systemone`. Đây không phải mô hình trò chuyện: các định dạng OpenAI, Anthropic và Gemini không phù hợp với Jev. Phản hồi được gửi toàn bộ dưới dạng một JSON |
| Đầu vào được chấp nhận | Chỉ văn bản: chuỗi, đối tượng JSON hoặc mảng văn bản. Hãy chuyển ảnh, âm thanh và video thành văn bản trước |
| Ngữ cảnh | 64K token cho một yêu cầu — state và tất cả câu hỏi cộng lại; state cùng câu hỏi dài nhất — tối đa 32K |
| Ngôn ngữ | Theo TypeSafe, mô hình chính xác nhất khi dùng tiếng Anh; mô hình chấp nhận ngôn ngữ khác nhưng độ chính xác thấp hơn — hãy kiểm tra trên dữ liệu của bạn |
| Giá | Đầu vào $0.084 cho 1 triệu token, đầu ra miễn phí |

## [](https://ailoot.ai/docs/vi/api/systemone/#request)Yêu cầu

### Xác thực

| Tham số | Kiểu | Bắt buộc | Mô tả |
| --- | --- | --- | --- |
| `Authorization` | header | bắt buộc | Khóa Ailoot có dạng `Bearer sk-…`. |

### Phần thân yêu cầu

| Tham số | Kiểu | Bắt buộc | Mô tả |
| --- | --- | --- | --- |
| `model` | string | bắt buộc | `jev-latest`. |
| `state` | string \| object \| array | bắt buộc | Nội dung cần đánh giá: chuỗi văn bản hoặc JSON — yêu cầu của khách hàng, bản ghi cơ sở dữ liệu, trao đổi tin nhắn hoặc trạng thái hiện tại của ứng dụng. Đối tượng có tên trường rõ ràng thường thuận tiện hơn một chuỗi. |
| `questions` | object | bắt buộc | Các câu hỏi. Bạn tự chọn khóa; phản hồi được trả về dưới cùng các khóa đó. Khóa không ảnh hưởng đến câu trả lời — bản thân câu hỏi được đặt trong `instructions`. |
| `questions.*.type` | string | bắt buộc | `noul`, `choice` hoặc `score` — xem bên dưới. |
| `questions.*.instructions` | string \| object \| array | bắt buộc | Bản thân câu hỏi. Câu hỏi dài kèm dữ liệu có thể được truyền dưới dạng đối tượng: câu hỏi trong một trường, dữ liệu trong các trường khác; tham chiếu đến trường bằng tên đặt trong dấu backtick. |
| `questions.*.criteria` | object \| array |  | Các phương án trả lời, khác nhau theo từng kiểu: mô tả “có” và “không” với noul (không bắt buộc), từ điển phương án với choice, danh sách mức độ có thứ tự với score. |

## [](https://ailoot.ai/docs/vi/api/systemone/#question-types)Các kiểu câu hỏi

| Kiểu | Câu hỏi đặt ra | Giá trị trả về |
| --- | --- | --- |
| `noul` | Khẳng định có đúng không: có hoặc không | `noul` — xác suất “có” từ 0 đến 1 |
| `choice` | Phương án nào trong số các phương án đã cho phù hợp | `choice`, `probabilities`, `confidence` |
| `score` | Vị trí của state trên thang mức độ của bạn | `score`, `legend`, `probabilities`, `confidence` |

Có thể kết hợp các kiểu trong cùng một yêu cầu.

### noul — có hoặc không

Trường `criteria` không bắt buộc: trong trường này, có thể mô tả ý nghĩa của “có” (`true`) và “không” (`false`). Phản hồi `noul` — số từ 0 (không) đến 1 (có).

```json
"is_urgent": {
  "type": "noul",
  "instructions": "Nội dung này có thể hiện tính khẩn cấp không?",
  "criteria": {
    "true": "Nêu rõ tính cấp bách về thời gian",
    "false": "Không thể hiện tính khẩn cấp"
  }
}
```

```json
"is_urgent": {
  "type": "noul",
  "noul": 0.95
}
```

### choice — chọn phương án

`criteria` — từ điển “phương án → mô tả”; nếu không cần mô tả, hãy đặt `null`. Tối đa 255 phương án. Trong phản hồi, `choice` — phương án có xác suất cao nhất, `probabilities` — xác suất của từng phương án (tổng bằng 1), `confidence` — độ tin cậy từ 0 đến 1.

```json
"department": {
  "type": "choice",
  "instructions": "Nhóm nào nên xử lý việc này?",
  "criteria": {
    "billing": "Thanh toán, lập hóa đơn, hoàn tiền",
    "technical": "Lỗi, gián đoạn dịch vụ, tích hợp",
    "sales": "Giá, nâng cấp, khách hàng mới"
  }
}
```

```json
"department": {
  "type": "choice",
  "choice": "billing",
  "probabilities": { "billing": 0.88, "technical": 0.12, "sales": 0.0 },
  "confidence": 0.81
}
```

### score — chấm điểm theo thang

`criteria` — các mức từ thấp đến cao, không quá 10 (TypeSafe khuyên ít nhất hai mức). Trong phản hồi, `score` — giá trị được tính trọng số theo xác suất của các mức (có thể nằm giữa các mức), `legend` — số thứ tự của mức và mô tả mức đó, `probabilities` và `confidence`. Theo TypeSafe, `score` phù hợp để so sánh với ngưỡng, nhưng không phù hợp để xác định con số chính xác giữa các mức.

```json
"frustration": {
  "type": "score",
  "instructions": "Khách hàng bực bội đến mức nào?",
  "criteria": ["Bình tĩnh", "Bực bội", "Rất tức giận"]
}
```

```json
"frustration": {
  "type": "score",
  "score": 1.05,
  "legend": { "0": "Bình tĩnh", "1": "Bực bội", "2": "Rất tức giận" },
  "probabilities": { "0": 0.0, "1": 0.95, "2": 0.05 },
  "confidence": 0.92
}
```

## [](https://ailoot.ai/docs/vi/api/systemone/#response)Phản hồi

| Tham số | Kiểu | Bắt buộc | Mô tả |
| --- | --- | --- | --- |
| `model` | string |  | Phiên bản mô hình đã trả lời. Bí danh jev-latest sẽ chuyển sang các phiên bản mới theo thời gian: nếu bạn đã chọn ngưỡng `confidence` cho một phiên bản cụ thể, hãy theo dõi trường này. |
| `answers` | object |  | Mỗi câu hỏi có một câu trả lời, dưới cùng khóa tương ứng. Mỗi câu trả lời đều có `type`, với choice và score còn có `confidence`. |
| `usage` | object |  | `input_tokens` và `output_tokens`. Chỉ tính phí token đầu vào. |

`confidence` có thể dùng làm ngưỡng: câu trả lời chắc chắn — tự động hành động; chưa chắc chắn — chuyển cho người hoặc mô hình lớn kiểm tra. Câu trả lời cho biết nên chọn gì, còn `confidence` — có nên hành động hay không.

## [](https://ailoot.ai/docs/vi/api/systemone/#many-questions)Nhiều câu hỏi trong một yêu cầu

Đặt tất cả câu hỏi về cùng một state trong một yêu cầu: các câu hỏi được đánh giá song song, còn state chỉ được gửi một lần. Theo TypeSafe, trong ví dụ của họ với 13 câu hỏi, một yêu cầu chung có chi phí thấp hơn 12,2 lần và nhanh hơn 10 lần so với 13 yêu cầu riêng gửi lần lượt, với cùng các câu trả lời.

Nên chia một nhận định phức tạp thành các câu hỏi đơn giản rồi kết hợp câu trả lời trong mã: chẳng hạn, thay vì “đánh giá đề xuất”, hãy đánh giá riêng thị trường, tính khả thi và sự khác biệt so với đối thủ. Khi đó, trọng số được thay đổi trong mã, thay vì trong nội dung câu hỏi.

```json
{
  "model": "jev-latest",
  "state": "Cứu với! Các khoản chi trả của tôi đã thất bại suốt 3 ngày.",
  "questions": {
    "department": {
      "type": "choice",
      "instructions": "Nhóm nào nên xử lý việc này?",
      "criteria": {
        "billing": "Thanh toán, lập hóa đơn, hoàn tiền",
        "technical": "Lỗi, gián đoạn dịch vụ, tích hợp",
        "sales": "Giá, nâng cấp, khách hàng mới"
      }
    },
    "frustration": {
      "type": "score",
      "instructions": "Khách hàng bực bội đến mức nào?",
      "criteria": ["Bình tĩnh", "Bực bội", "Rất tức giận"]
    },
    "is_urgent": {
      "type": "noul",
      "instructions": "Nội dung này có thể hiện tính khẩn cấp không?"
    }
  }
}
```

## [](https://ailoot.ai/docs/vi/api/systemone/#use-cases)Khi nào phù hợp

- **Định tuyến.** Chuyển phản ánh đến đúng bộ phận, còn yêu cầu đến đúng thành phần xử lý: mã đơn giản, mô hình lớn hoặc con người.
- **Sắp xếp và ưu tiên.** Mức độ khẩn cấp, sắc thái, rủi ro — theo thang điểm, với các ngưỡng đặt trong mã.
- **Kiểm duyệt và kiểm tra.** Kiểm tra xem tin nhắn có vi phạm quy tắc, nguồn có xác nhận trích dẫn hay tài liệu có câu trả lời cho câu hỏi hay không — trước khi văn bản được chuyển sang bước tiếp theo.
- **Chấm điểm và xếp hạng.** Đánh giá tài liệu, ứng viên hoặc các đoạn tìm được theo bộ tiêu chí của bạn, rồi quyết định bước tiếp theo trong mã.
- **Thay cho cách yêu cầu “trả về JSON” thiếu ổn định.** Lời gọi được thiết kế để trả về các giá trị có kiểu dữ liệu, thay vì văn bản cần phân tích.

## [](https://ailoot.ai/docs/vi/api/systemone/#not-for)Khi nào không phù hợp

- **Trò chuyện, trả lời người dùng, tạo văn bản hoặc mã.** Jev không viết văn bản — việc đó đã có [các mô hình văn bản](https://ailoot.ai/models/vi/?kind=text).
- **Mô hình cho Claude Code, Cursor và các tác nhân khác.** Không thể thay mô hình của tác nhân bằng jev-latest: tác nhân cần một mô hình có thể viết văn bản và gọi công cụ. Bạn có thể gọi Jev từ mã mà tác nhân viết cho bạn.
- **Phép tính số học, đếm, so sánh ngày.** Theo TypeSafe, thực hiện các việc này trong mã sẽ đáng tin cậy hơn; chỉ nên hỏi mô hình về phần ngữ nghĩa — chẳng hạn, trích xuất các thành phần của ngày bằng choice.
- **Hình ảnh, âm thanh và video.** Mô hình chỉ nhận văn bản — hãy chuyển các dữ liệu đó thành văn bản trước.

Mô hình hoạt động tốt nhất khi mỗi câu hỏi là một nhận định cụ thể, có phạm vi hẹp. Hãy viết rõ điều kiện: theo TypeSafe, mô hình hiểu câu hỏi theo nghĩa đen, còn state lớn chứa dữ liệu thừa làm giảm độ chính xác — hãy lọc dữ liệu trong mã.

## [](https://ailoot.ai/docs/vi/api/systemone/#price)Giá

Chỉ tính phí token đầu vào — trường `usage.input_tokens` của phản hồi: **$0.084 cho 1 triệu**. Token đầu ra miễn phí.

Yêu cầu trong ví dụ trên trang này (296 token đầu vào) có giá dưới $0.0001.

Trước yêu cầu, Ailoot giữ trước một khoản trong số dư và sau phản hồi chỉ trừ tiền một lần theo mức sử dụng thực tế — [cách hoạt động](https://ailoot.ai/docs/vi/billing/reserve/).

## [](https://ailoot.ai/docs/vi/api/systemone/#limits)Giới hạn

| Mục | Giới hạn |
| --- | --- |
| Toàn bộ yêu cầu: state và tất cả câu hỏi | 64K token |
| state cùng với câu hỏi dài nhất | 32K token |
| Số phương án trong một choice | tối đa 255 |
| Số mức trong một score | từ 2 đến 10 |
| Đầu vào | chỉ văn bản: chuỗi, đối tượng JSON hoặc mảng văn bản |

Giới hạn của mô hình theo dữ liệu TypeSafe. Giới hạn của khóa và số dư của bạn được áp dụng như với mọi mô hình Ailoot: [Lỗi và giới hạn](https://ailoot.ai/docs/vi/errors/).

## [](https://ailoot.ai/docs/vi/api/systemone/#errors)Lỗi

Lỗi được trả về theo định dạng chung của Ailoot API: mã, nội dung dễ hiểu và Request ID. Các lỗi thường gặp nhất với phương thức này:

| Mã | Khi nào xảy ra | Cách xử lý |
| --- | --- | --- |
| **400** `invalid_request` | Nội dung yêu cầu không vượt qua bước kiểm tra: thiếu state, model hoặc questions, type không xác định, choice có hơn 255 phương án hoặc score có hơn 10 mức | Sửa yêu cầu theo nội dung lỗi: nếu không sửa, yêu cầu vẫn sẽ không vượt qua bước kiểm tra |
| **400** `context_length_exceeded` | Tổng độ dài của state và các câu hỏi vượt giới hạn mô hình | Lọc state trong mã, chỉ giữ thông tin cần cho các câu hỏi |
| **401** `invalid_api_key` | Thiếu khóa hoặc khóa không hợp lệ | Gửi khóa trong tiêu đề Authorization |
| **402** `insufficient_balance` | Số dư khả dụng không đủ cho khoản giữ trước | Nạp thêm số dư |
| **404** `model_not_found`, `unsupported_endpoint` | ID có lỗi hoặc mô hình được gọi bằng phương thức không phù hợp, chẳng hạn qua /v1/chat/completions | Chỉ gọi jev-latest qua POST /v1/systemone |
| **429** `rate_limit_exceeded` | Quá nhiều yêu cầu | Chờ số giây ghi trong tiêu đề Retry-After rồi thử lại |
| **503** `model_overloaded`, `model_unavailable` | Mô hình tạm thời quá tải hoặc không khả dụng | Nếu X-Should-Retry: true — thử lại sau số giây trong Retry-After; nếu false — trước tiên kiểm tra Request ID trong lịch sử |
| **504** `model_timeout` | Mô hình không phản hồi kịp thời | Không gửi lại yêu cầu trước khi kiểm tra Request ID trong lịch sử |

Danh sách đầy đủ các mã nằm trên trang [Lỗi và giới hạn](https://ailoot.ai/docs/vi/errors/).

Còn câu hỏi? Hãy gửi Request ID và mô tả — chúng tôi sẽ giúp tìm hiểu.[Liên hệ hỗ trợ](mailto:support@ailoot.ai)

## Ailoot · Công ty và danh mục dự án của công ty





Ailoot dựa trên kinh nghiệm vận hành tích lũy, cơ sở khách hàng lớn, dịch vụ ổn định và việc kiểm soát KPI liên tục.





Công ty và danh mục dự án của công ty: hàng triệu khách hàng; doanh số hàng tỷ mỗi tháng.





Ailoot áp dụng kinh nghiệm vận hành này để cung cấp quyền truy cập API vào các tính năng AI trong sản phẩm của khách hàng, tác tử, ứng dụng và quy trình tự động hóa.
