Decisions API؛ پاسخ بله و خیر، انتخاب و امتیاز با احتمال
خیلی از کارهای هوش مصنوعی در محصول، در اصل یک تصمیماند: این تیکت فوری است؟ این نظر مثبت است یا منفی؟ این درخواست به کدام تیم برود؟ با مدل چت باید از مدل بخواهید جواب را در قالبی خاص بنویسد و بعد متن را تجزیه کنید. مسیر POST /v1/decisions در وان ای آی (1ai) این کار را مستقیم انجام میدهد: متن یا شواهد را در input میفرستید، پرسشها را در questions تعریف میکنید و برای هر پرسش پاسخی با نوع مشخص و احتمال میگیرید. مدلهای تصمیمگیری مثل Jev از TypeSafe و Clef از Cloudflare و همچنین openai/gpt-6-luna از همین مسیر پاسخ میدهند و هزینه بر اساس توکن ورودی از اعتبار حسابتان کم میشود.
چرا با 1ai
پاسخ تایپدار، نه متن آزاد
هر پاسخ نوع مشخصی دارد: predicate با احتمال، choice با گزینه و احتمال هر گزینه، score با امتیاز وزنی. نیازی به تجزیهی متن نیست.
چند پرسش در یک درخواست
همهی پرسشها دربارهی همان input در یک فراخوانی جواب میگیرند و ترتیب پاسخها همان ترتیب پرسشهاست.
هزینه بر اساس ورودی
مدلهای تصمیمگیری بیشتر بر اساس توکن ورودی حساب میشوند؛ مصرف هر درخواست در usage و سرآیند x-1ai-credits میآید.
اطمینان قابل اندازهگیری
احتمالها و confidence را آستانه بگذارید و پاسخهای مردد را به بررسی انسانی بفرستید.
در چند قدم
- ۱
کلید API بسازید
از بخش توسعهدهندگان ← کلیدها یک کلید sk-1ai-… بسازید و در متغیر ONEAI_API_KEY نگه دارید.
- ۲
پرسشها را تعریف کنید
برای هر تصمیم یک پرسش با type، instructions و یک name یکتا بنویسید؛ برای choice فیلد choices و برای score فیلد levels لازم است.
- ۳
درخواست را بفرستید
بدنه را به https://1ai.ir/v1/decisions بفرستید و شناسهی مدل را از فهرست پایین همین صفحه بردارید.
- ۴
روی احتمالها تصمیم بگیرید
برای هر پاسخ آستانه بگذارید؛ مثلاً احتمال بالای ۰٫۸ را خودکار اجرا کنید و بقیه را به اپراتور بسپارید.
مدلهای تصمیمگیری در API
همهی مدلهاGPT-6 Luna
سریع و بسیار ارزان؛ مدل پیشفرض و در سهمیهی رایگان روزانه
Jev
تصمیمگیری سریع و ارزان با احتمال برای هر پاسخ
Jev Preview
نسخهی پیشین Jev برای مقایسه پس از بهروزرسانی
نمونه درخواست با curl
سه نوع پرسش در یک درخواست: یک گزارهی بله/خیر، یک انتخاب از میان گزینهها و یک امتیاز روی مقیاس سهسطحی.
curl https://1ai.ir/v1/decisions \
-H "Authorization: Bearer $ONEAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "typesafe/jev-latest",
"input": "سفارشم دو بار از کارتم کم شده و هنوز به دستم نرسیده.",
"questions": [
{ "name": "urgent", "type": "predicate", "instructions": "آیا این درخواست فوری است؟" },
{ "name": "team", "type": "choice", "instructions": "کدام تیم باید پاسخ دهد؟",
"choices": [
{ "value": "billing", "description": "پرداخت، فاکتور و بازگشت وجه" },
{ "value": "shipping", "description": "ارسال و تحویل" },
{ "value": "other" }
] },
{ "name": "anger", "type": "score", "instructions": "مشتری چقدر ناراضی است؟",
"levels": [ { "label": "آرام" }, { "label": "ناراضی" }, { "label": "خشمگین" } ] }
]
}'Python و JavaScript
کتابخانهی رسمی openai هنوز متدی برای این مسیر ندارد؛ با requests یا fetch همان بدنهی JSON را بفرستید.
# pip install requests
import os, requests
res = requests.post(
"https://1ai.ir/v1/decisions",
headers={"Authorization": f"Bearer {os.environ['ONEAI_API_KEY']}"},
json={
"model": "cloudflare/clef-flash",
"input": "Checkout has been failing for every customer for the last hour.",
"questions": [
{"name": "urgent", "type": "predicate", "instructions": "Is this support request urgent?"},
{"name": "team", "type": "choice", "instructions": "Which team should handle it?",
"choices": [{"value": "billing"}, {"value": "technical"}, {"value": "sales"}]},
],
},
timeout=60,
)
res.raise_for_status()
for answer in res.json()["answers"]:
print(answer["name"], answer.get("probability") or answer.get("choice"))const res = await fetch("https://1ai.ir/v1/decisions", {
method: "POST",
headers: { Authorization: `Bearer ${process.env.ONEAI_API_KEY}`, "Content-Type": "application/json" },
body: JSON.stringify({
model: "openai/gpt-6-luna",
input: "The app crashes every time I upload a photo.",
questions: [{ name: "bug", type: "predicate", instructions: "Is this a bug report?" }],
}),
});
const { answers, usage } = await res.json();
console.log(answers[0].probability, usage.input_tokens);قالب پاسخ
answers یک آرایه به ترتیب پرسشهاست و name هر پرسش را برمیگرداند. پیش از خواندن فیلدها، type هر پاسخ را بررسی کنید.
{
"model": "typesafe/jev-latest",
"answers": [
{ "type": "predicate", "name": "urgent", "probability": 0.95 },
{ "type": "choice", "name": "team", "choice": "billing",
"probabilities": [
{ "value": "billing", "probability": 0.93 },
{ "value": "shipping", "probability": 0.06 },
{ "value": "other", "probability": 0.01 }
],
"confidence": 0.88 },
{ "type": "score", "name": "anger", "score": 1.4,
"probabilities": [
{ "value": 0, "label": "آرام", "probability": 0.1 },
{ "value": 1, "label": "ناراضی", "probability": 0.4 },
{ "value": 2, "label": "خشمگین", "probability": 0.5 }
],
"confidence": 0.62 }
],
"usage": { "input_tokens": 337, "output_tokens": 61, "total_tokens": 398 }
}| نوع | فیلدها | معنی |
|---|---|---|
predicate | probability | احتمال درست بودن گزاره |
choice | choice، probabilities، confidence | گزینهی انتخابشده و احتمال هر گزینه |
score | score، probabilities، confidence | میانگین وزنی شمارهی سطح (از صفر) |
refusal | name | مدل به این پرسش پاسخ نداد؛ بقیهی پرسشها جواب دارند |
فیلدهای درخواست
| فیلد | نوع | توضیح |
|---|---|---|
model | رشته | شناسهی مدل تصمیمگیری یا مدل چتی که از decisions پشتیبانی میکند |
input | رشته یا آرایه | شواهدی که همهی پرسشها دربارهی آن هستند |
questions | آرایه (۱ تا ۴۰۰) | پرسشهای مستقل |
questions[].type | predicate، choice، score | نوع پاسخ |
questions[].instructions | رشته | شرط، قاعدهی انتخاب یا معیار امتیاز |
questions[].name | رشته، اختیاری | نام یکتای پرسش در پاسخ |
questions[].choices | آرایه (۲ تا ۲۵۵) | گزینهها با value و description اختیاری |
questions[].levels | آرایه (۲ تا ۱۰) | سطحها به ترتیب از کم به زیاد، با label |
اشتباههای رایج
- در این مسیر گزینهها
choicesنام دارند، نهoptions؛ وcriteriaمال قالب بومی System One است. درخواستی که این دو را قاطی کند پاسخ 400 میگیرد و پیام خطا فیلد درست را نام میبرد. - این مسیر استریم ندارد؛
stream: trueپذیرفته نمیشود. - هر مدلی که در فهرست
/v1/models?kind=decisionنیست، مثل مدل چت معمولی، خطایmodel_kind_mismatchمیگیرد. - پرسشها را مستقل بنویسید؛ پاسخ یک پرسش روی پرسش دیگر اثر نمیگذارد.
سوالات متداول
تفاوت Decisions API با گرفتن خروجی JSON از مدل چت چیست؟
در خروجی JSON مدل چت متنی مینویسد که باید معتبر بودنش را بررسی کنید و احتمالی هم کنار جواب نیست. Decisions API پاسخ را از پیش تایپدار برمیگرداند و برای هر گزینه یا سطح احتمال میدهد، پس میتوانید روی اطمینان مدل آستانه بگذارید.
کدام مدلها از این مسیر پاسخ میدهند؟
مدلهای تصمیمگیری مثل typesafe/jev-latest و خانوادهی cloudflare/clef و مدل چت openai/gpt-6-luna. فهرست زنده را از GET /v1/models?kind=decision بگیرید یا در صفحهی مدلها فیلتر «تصمیمگیری» را بزنید.
هزینهی هر درخواست چطور حساب میشود؟
بر اساس توکنهایی که مدل میخواند (متن ورودی، پرسشها و دستورالعمل ثابت مدل) و برای بعضی مدلها توکن خروجی. مقدار دقیق در usage پاسخ و اعتبار کسرشده در سرآیند x-1ai-credits میآید.
چند پرسش را میتوانم در یک درخواست بفرستم؟
قالب تا ۴۰۰ پرسش را میپذیرد، ولی سقف واقعی به مدل بستگی دارد؛ مثلاً Clef تا ۶۴ پرسش میگیرد. برای کارهای پرحجم درخواستها را کوچک نگه دارید و اندازهای را که لازم دارید آزمایش کنید.
آیا میتوانم تصویر هم در input بفرستم؟
قالب آرایهی پیام را میپذیرد، اما پشتیبانی هر مدل از تصویر متفاوت است. با متن شروع کنید و ورودی تصویری را پیش از استفاده در محصول روی همان مدل آزمایش کنید.
مطالب مرتبط

استفاده از API سازگار با OpenAI در 1ai: راهنمای عملی با Python، Node.js و cURL
چطور پروژهای را که با کتابخانهی OpenAI نوشته شده، فقط با تغییر آدرس پایه و کلید به 1ai وصل کنید؛ با نمونه کد Python، Node.js و cURL، استریم، فهرست مدلها و مدیریت خطا.

کلید API در 1ai: امنیت، محدودیتها و کنترل هزینه
چطور کلیدهای API را امن نگه دارید و هزینه را مهار کنید: مدلهای مجاز، سقف اعتبار ماهانه، محدودیت نرخ، تاریخ انقضا، کلیدهای تیمی و گزارش مصرف.
صفحههای مرتبط
همهی امکاناتSystem One API
قالب بومی همان مدلهای تصمیمگیری: state میتواند شیء JSON باشد، پرسشها با شناسه کلید میخورند و پاسخها هم با همان شناسه برمیگردند.
Extraction API
فیلدهایی را که لازم دارید با نوعشان تعریف کنید و از متن یا تصویر، مقدار هر فیلد را با اطمینان آن بگیرید؛ فیلدی که در متن نیست null برمیگردد.
Moderation API
پیش از نمایش یا پردازش محتوای کاربر، آن را بررسی کنید: برای هر ورودی پرچم ناامن، دستههای نقضشده و امتیاز هر دسته را بگیرید.
OpenAI SDK
کتابخانهی رسمی openai را در Python و Node.js با تغییر آدرس پایه به 1ai وصل کنید و چت، فراخوانی ابزار، بردار متن، تصویر و صدا را از یک کلید بگیرید.
Decisions API؛ پاسخ بله و خیر، انتخاب و امتیاز با احتمال
به جای تجزیهی متن آزاد مدل، پرسشهایتان را تعریف کنید و برای هر کدام پاسخی تایپدار بگیرید: احتمال درستی یک گزاره، گزینهی انتخابشده یا امتیاز روی یک مقیاس.
ساخت کلید API