# سنجه، مدل‌های تصمیم

> تصمیم‌های بسته روی متن فارسی با سنجه: مدل‌ها، سه نوع پرسش، نمونه و محدودیت‌ها

URL: https://dana.expert/docs/decide

سنجه متن فارسی را می‌خواند و به پرسش‌های بسته جواب می‌دهد: یک گزینه از چند گزینه، بله یا خیر، یا یک پله روی یک طیف. متن تولید نمی‌کند؛ در یک گذر برای هر گزینه احتمال برمی‌گرداند. کاربردهای رایجش دسته‌بندی تیکت، مسیریابی درخواست، تشخیص شکایت، تحلیل نظر و بررسی محتواست.

```
POST https://api.dana.expert/v1/decide
```

## مدل‌ها

| مدل | مقدار `model` | اندازه | دقت | مناسب برای |
|---|---|---|---|---|
| قناری (پیش‌فرض) | `ghanari` | حدود ۰٫۸ میلیارد پارامتر | ۶۵٪ | حجم بالا و جواب سریع، مثل بررسی ورودی و مسیریابی درخواست |
| کبوتر | `kabootar` | حدود ۴ میلیارد پارامتر | ۸۰٪ | تصمیم‌هایی که دقت در آن‌ها از سرعت مهم‌تر است |
| شاهین | - | حدود ۹ میلیارد پارامتر | - | به‌زودی |

دقت میانگین روی ۱٬۲۰۰ پرسش فارسی از ۱۲ مجموعه‌داده است که در ساخت مدل‌ها نبوده‌اند (سنجش داخلی دانا، مهر ۱۴۰۵). روی دادهٔ شما ممکن است بیشتر یا کمتر باشد.

### کدام را انتخاب کنم

- با قناری شروع کنید. پیش‌فرض است و زودتر جواب می‌دهد.
- اگر جواب اشتباه برایتان گران است یا پرسش‌ها ظریف‌اند، `"model": "kabootar"` بفرستید.
- هر دو را روی چند ده نمونه از دادهٔ خودتان امتحان کنید و آستانهٔ `confidence` را از روی همان بگذارید.

## نمونه

```bash
curl https://api.dana.expert/v1/decide \
  -H "Authorization: Bearer $DANA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "state": "سه روز است سفارشم را پرداخت کرده‌ام ولی هنوز ارسال نشده.",
    "questions": {
      "dept": {"type": "choice", "instructions": "مربوط به کدام بخش است؟", "criteria": ["مالی", "فنی", "ارسال کالا"]},
      "complaint": {"type": "noul", "instructions": "آیا این پیام شکایت است؟"},
      "anger": {"type": "score", "instructions": "نویسنده چقدر عصبانی است؟", "criteria": ["آرام", "کمی ناراحت", "عصبانی"]}
    }
  }'
```

پاسخ:

```json
{
  "model": "ghanari",
  "model_version": "ghanari-ir-v0.1",
  "answers": {
    "dept": {"type": "choice", "choice": "ارسال کالا", "probabilities": {"مالی": 0.0181, "فنی": 0.0203, "ارسال کالا": 0.9616}, "confidence": 0.8278},
    "complaint": {"type": "noul", "noul": 0.9521, "confidence": 0.9521},
    "anger": {"type": "score", "score": 1.7202, "legend": {"0": "آرام", "1": "کمی ناراحت", "2": "عصبانی"}, "probabilities": {"0": 0.0283, "1": 0.2232, "2": 0.7485}, "confidence": 0.406}
  },
  "usage": {"input_tokens": 218, "output_tokens": 0},
  "latency_ms": 78.2
}
```

## بدنهٔ درخواست

| فیلد | توضیح |
|---|---|
| `state` | متنی که دربارهٔ آن تصمیم گرفته می‌شود؛ رشته یا هر JSON، تا ۲۰٬۰۰۰ کاراکتر |
| `questions` | پرسش‌ها با نامی که خودتان می‌گذارید، از ۱ تا ۳۲ پرسش در هر درخواست |
| `model` | اختیاری: `ghanari` (قناری، پیش‌فرض و سریع‌تر) یا `kabootar` (کبوتر، دقیق‌تر). نسخهٔ مدلی که جواب داده در فیلد `model_version` پاسخ می‌آید |

## سه نوع پرسش

| `type` | `criteria` | جواب |
|---|---|---|
| `choice` | فهرست گزینه‌ها، یا شیئی از گزینه به توضیح آن | `choice` گزینهٔ برنده و `probabilities` احتمال هر گزینه |
| `noul` | ندارد (بله یا خیر) | `noul` احتمال «بله» |
| `score` | فهرست مرتب پله‌ها، از کم به زیاد | `score` عددی از ۰ تا شمارهٔ آخرین پله |

`instructions` متن پرسش است. کوتاه و روشن بنویسید. `confidence` اطمینان مدل به جوابش است، نه تضمین درستی آن.

`usage` در پاسخ، توکن‌هایی است که خود مدل خوانده است. هزینه با شمارش دانا حساب می‌شود (بخش بعد).

## محدودیت‌ها و هزینه

- `state` رشته یا هر دادهٔ JSON است، تا ۲۰٬۰۰۰ کاراکتر.
- هر درخواست ۱ تا ۳۲ پرسش دارد.
- فقط پرسش بسته: سنجه متن نمی‌نویسد و جواب آزاد نمی‌دهد. برای متن فارسی ساخته شده است.
- توکن‌های `state` و پرسش‌ها ورودی حساب می‌شوند و هر پرسش یک توکن خروجی. هر یک میلیون توکن ۱۰٬۰۰۰ تومان است ([قیمت و توکن](https://dana.expert/docs/pricing-and-tokens)).
- سقف درخواست همان سقف کلید است ([محدودیت‌ها](https://dana.expert/docs/rate-limits)).
- متن شما ذخیره نمی‌شود؛ فقط تعداد توکن‌ها ثبت می‌شود.

## خطاها

| کد | یعنی |
|---|---|
| `400` | `state` یا `questions` نیست، یا پرسشی درست تعریف نشده؛ پیام خطا می‌گوید کدام |
| `401` | کلید نیست یا شناخته نشد |
| `429` | سقف درخواست یا اعتبار تمام شده |
| `503` | با `code` برابر `model_unavailable`: سنجه همین حالا در دسترس نیست؛ چند دقیقه بعد دوباره بفرستید. با `coming_soon`: سرویس موقتا خاموش است |

شرح کامل هر کد در [خطاها](https://dana.expert/docs/errors) و قرارداد کامل مسیر در [مرجع API](https://dana.expert/docs/api-reference/decide) است.
