Jev — μοντέλο αποφάσεων
MarkdownΤο μοντέλο αποφάσεων Jev της TypeSafe απαντά σε ερωτήσεις με καθορισμένους τύπους για κείμενο ή JSON: επιλογή εναλλακτικής, αξιολόγηση σε κλίμακα ή «ναι/όχι» με πιθανότητες. Δεν είναι συνομιλία ούτε παραγωγή κειμένου.
Πλήρης οδηγός
https://api.ailoot.ai/v1/systemonecurl https://api.ailoot.ai/v1/systemone \
-H "Authorization: Bearer $AILOOT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "jev-latest",
"state": "Βοήθεια! Οι πληρωμές προς εμένα αποτυγχάνουν εδώ και 3 ημέρες.",
"questions": {
"is_urgent": {
"type": "noul",
"instructions": "Δείχνει αυτό ότι το θέμα είναι επείγον;"
}
}
}' import json, os, urllib.request
body = {
"model": "jev-latest",
"state": "Βοήθεια! Οι πληρωμές προς εμένα αποτυγχάνουν εδώ και 3 ημέρες.",
"questions": {
"is_urgent": {"type": "noul", "instructions": "Δείχνει αυτό ότι το θέμα είναι επείγον;"},
},
}
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.95const 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: "Βοήθεια! Οι πληρωμές προς εμένα αποτυγχάνουν εδώ και 3 ημέρες.",
questions: {
is_urgent: { type: "noul", instructions: "Δείχνει αυτό ότι το θέμα είναι επείγον;" },
},
}),
});
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{
"model": "jev-1.13.0",
"answers": {
"is_urgent": {
"type": "noul",
"noul": 0.95
}
},
"usage": { "input_tokens": 296, "output_tokens": 20 }
}Το Jev είναι μοντέλο αποφάσεων κατηγορίας System One της TypeSafe. Δεν γράφει κείμενο και δεν συνομιλεί: του δίνετε μια κατάσταση (state) — κείμενο ή JSON — και ένα σύνολο ερωτήσεων, και λαμβάνετε τιμές με καθορισμένους τύπους και πιθανότητες. Ο κώδικας μπορεί να τις χρησιμοποιήσει αμέσως για διακλαδώσεις, ταξινόμηση και δρομολόγηση, χωρίς ανάλυση ελεύθερου κειμένου.
Όλες οι ερωτήσεις ενός αιτήματος αξιολογούνται παράλληλα και ανεξάρτητα μεταξύ τους, με βάση το ίδιο state. Σύμφωνα με την TypeSafe, η προσθήκη ερωτήσεων σχεδόν δεν επηρεάζει τον χρόνο απάντησης και οι ερωτήσεις δεν επηρεάζουν η μία την άλλη.
| Στοιχείο | Συνοπτικά |
|---|---|
| Μοντέλο | jev-latest — ψευδώνυμο της πιο πρόσφατης σταθερής έκδοσης του Jev· κάρτα στον κατάλογο |
| Μέθοδος | POST /v1/systemone. Δεν είναι συνομιλία: οι μορφές OpenAI, Anthropic και Gemini δεν είναι κατάλληλες για το Jev. Η απάντηση φτάνει ολόκληρη, ως ένα ενιαίο JSON |
| Τι δέχεται | Μόνο κείμενο: συμβολοσειρά, αντικείμενο JSON ή πίνακα κειμένων. Μετατρέψτε πρώτα τις εικόνες, τον ήχο και το βίντεο σε κείμενο |
| Παράθυρο συμφραζομένων | 64K token ανά αίτημα — state και όλες οι ερωτήσεις μαζί· state μαζί με τη μεγαλύτερη ερώτηση — έως 32K |
| Γλώσσα | Σύμφωνα με την TypeSafe, το μοντέλο είναι πιο ακριβές στα αγγλικά· δέχεται άλλες γλώσσες, αλλά με χαμηλότερη ακρίβεια — ελέγξτε το με τα δικά σας δεδομένα |
| Τιμή | Είσοδος $0.084 ανά 1 εκατ. token, έξοδος δωρεάν |
Αίτημα
Έλεγχος ταυτότητας
- Authorizationheaderυποχρεωτικό
Κλειδί Ailoot στη μορφή
Bearer sk-….
Σώμα αιτήματος
- modelstringυποχρεωτικό
jev-latest. - statestring | object | arrayυποχρεωτικό
Τι θα αξιολογηθεί: συμβολοσειρά με κείμενο ή JSON — αίτημα πελάτη, εγγραφή βάσης δεδομένων, αλληλογραφία, τρέχουσα κατάσταση της εφαρμογής σας. Ένα αντικείμενο με κατανοητά ονόματα πεδίων είναι συνήθως πιο εύχρηστο από μία συμβολοσειρά.
- questionsobjectυποχρεωτικό
Ερωτήσεις. Εσείς επιλέγετε τα κλειδιά και οι απαντήσεις επιστρέφουν με τα ίδια κλειδιά· το κλειδί δεν επηρεάζει την απάντηση — η ίδια η ερώτηση ορίζεται στο
instructions. - questions.*.typestringυποχρεωτικό
noul,choiceήscore— δείτε παρακάτω. - questions.*.instructionsstring | object | arrayυποχρεωτικό
Η ίδια η ερώτηση. Μπορείτε να δώσετε μια μεγάλη ερώτηση με δεδομένα ως αντικείμενο: την ερώτηση σε ένα πεδίο και τα δεδομένα σε άλλα· αναφερθείτε στα πεδία με το όνομά τους μέσα σε ανάποδα εισαγωγικά.
- questions.*.criteriaobject | array
Εναλλακτικές απαντήσεις, διαφορετικές για κάθε τύπο: περιγραφές του «ναι» και του «όχι» για το noul (προαιρετικά), λεξικό εναλλακτικών για το choice, διατεταγμένη λίστα επιπέδων για το score.
Τύποι ερωτήσεων
| Τύπος | Τι ρωτά | Τι επιστρέφει |
|---|---|---|
noul | Αν η δήλωση είναι αληθής: ναι ή όχι | noul — πιθανότητα «ναι» από 0 έως 1 |
choice | Ποια από τις δεδομένες εναλλακτικές ταιριάζει | choice, probabilities, confidence |
score | Πού βρίσκεται το state στην κλίμακα επιπέδων σας | score, legend, probabilities, confidence |
Μπορείτε να συνδυάσετε τύπους στο ίδιο αίτημα.
noul — ναι ή όχι
Το πεδίο criteria είναι προαιρετικό: μπορείτε να περιγράψετε τι σημαίνει «ναι» (true) και «όχι» (false). Η απάντηση noul — αριθμός από 0 (όχι) έως 1 (ναι).
"is_urgent": {
"type": "noul",
"instructions": "Δείχνει αυτό ότι το θέμα είναι επείγον;",
"criteria": {
"true": "Ρητή ανάγκη για έγκαιρη αντιμετώπιση",
"false": "Δεν εκφράζεται επείγουσα ανάγκη"
}
}"is_urgent": {
"type": "noul",
"noul": 0.95
}choice — επιλογή εναλλακτικής
criteria — λεξικό «εναλλακτική → περιγραφή»· αν δεν χρειάζεται περιγραφή, ορίστε null. Έως 255 εναλλακτικές. Στην απάντηση, το choice — η πιο πιθανή εναλλακτική, probabilities — η πιθανότητα κάθε εναλλακτικής (με άθροισμα 1), confidence — βαθμός βεβαιότητας από 0 έως 1.
"department": {
"type": "choice",
"instructions": "Ποια ομάδα πρέπει να αναλάβει αυτό το θέμα;",
"criteria": {
"billing": "Πληρωμές, τιμολόγηση, επιστροφές χρημάτων",
"technical": "Σφάλματα, διακοπές λειτουργίας, ενσωματώσεις",
"sales": "Τιμές, αναβαθμίσεις, νέοι πελάτες"
}
}"department": {
"type": "choice",
"choice": "billing",
"probabilities": { "billing": 0.88, "technical": 0.12, "sales": 0.0 },
"confidence": 0.81
}score — αξιολόγηση σε κλίμακα
criteria — επίπεδα από το χαμηλότερο προς το υψηλότερο, έως 10 (η TypeSafe συνιστά τουλάχιστον δύο). Στην απάντηση, το score — τιμή σταθμισμένη με τις πιθανότητες των επιπέδων (μπορεί να βρίσκεται ανάμεσα σε επίπεδα), legend — ο αριθμός του επιπέδου και η περιγραφή του, probabilities και confidence. Σύμφωνα με την TypeSafe, το score είναι κατάλληλο για σύγκριση με κατώφλι, αλλά όχι για ακριβή αριθμητική τιμή ανάμεσα σε επίπεδα.
"frustration": {
"type": "score",
"instructions": "Πόσο εκνευρισμένος είναι ο πελάτης;",
"criteria": ["Ήρεμος", "Εκνευρισμένος", "Πολύ θυμωμένος"]
}"frustration": {
"type": "score",
"score": 1.05,
"legend": { "0": "Ήρεμος", "1": "Εκνευρισμένος", "2": "Πολύ θυμωμένος" },
"probabilities": { "0": 0.0, "1": 0.95, "2": 0.05 },
"confidence": 0.92
}Απάντηση
- modelstring
Ποια έκδοση του μοντέλου απάντησε. Το ψευδώνυμο jev-latest περνά σε νεότερες εκδόσεις με την πάροδο του χρόνου: αν έχετε ρυθμίσει τα κατώφλια
confidenceγια συγκεκριμένη έκδοση, παρακολουθείτε αυτό το πεδίο. - answersobject
Μία απάντηση για κάθε ερώτηση, με τα ίδια κλειδιά. Κάθε απάντηση έχει
type, και οι choice και score έχουν επιπλέονconfidence. - usageobject
input_tokensκαιoutput_tokens. Χρεώνονται μόνο τα token εισόδου.
Πολλές ερωτήσεις με ένα αίτημα
Στείλτε όλες τις ερωτήσεις για το ίδιο state με ένα αίτημα: αξιολογούνται παράλληλα και το state μεταβιβάζεται μία φορά. Σύμφωνα με την TypeSafe, στο παράδειγμά της με 13 ερωτήσεις, ένα κοινό αίτημα κόστισε 12,2 φορές λιγότερο και ήταν 10 φορές ταχύτερο από 13 ξεχωριστά αιτήματα που στέλνονταν διαδοχικά, με τις ίδιες απαντήσεις.
Είναι καλύτερο να χωρίζετε μια σύνθετη κρίση σε απλές ερωτήσεις και να συνδυάζετε τις απαντήσεις στον κώδικα: για παράδειγμα, αντί για «αξιολόγησε την αίτηση», ξεχωριστές αξιολογήσεις της αγοράς, της εφικτότητας και της διαφοροποίησης από τους ανταγωνιστές. Έτσι, τα βάρη αλλάζουν στον κώδικα και όχι στο κείμενο της ερώτησης.
{
"model": "jev-latest",
"state": "Βοήθεια! Οι πληρωμές προς εμένα αποτυγχάνουν εδώ και 3 ημέρες.",
"questions": {
"department": {
"type": "choice",
"instructions": "Ποια ομάδα πρέπει να αναλάβει αυτό το θέμα;",
"criteria": {
"billing": "Πληρωμές, τιμολόγηση, επιστροφές χρημάτων",
"technical": "Σφάλματα, διακοπές λειτουργίας, ενσωματώσεις",
"sales": "Τιμές, αναβαθμίσεις, νέοι πελάτες"
}
},
"frustration": {
"type": "score",
"instructions": "Πόσο εκνευρισμένος είναι ο πελάτης;",
"criteria": ["Ήρεμος", "Εκνευρισμένος", "Πολύ θυμωμένος"]
},
"is_urgent": {
"type": "noul",
"instructions": "Δείχνει αυτό ότι το θέμα είναι επείγον;"
}
}
}Πότε είναι κατάλληλο
- Δρομολόγηση. Αποστολή αιτήματος πελάτη στο σωστό τμήμα και αιτήματος στον κατάλληλο χειριστή: απλό κώδικα, μεγάλο μοντέλο ή άνθρωπο.
- Ταξινόμηση και προτεραιότητα. Επείγον, συναισθηματικός τόνος, κίνδυνος — σε κλίμακα, με κατώφλια στον κώδικα.
- Εποπτεία περιεχομένου και έλεγχοι. Αν ένα μήνυμα παραβιάζει τους κανόνες, αν η πηγή επιβεβαιώνει το παράθεμα, αν το έγγραφο περιέχει την απάντηση στην ερώτηση — πριν προωθηθεί το κείμενο.
- Βαθμολόγηση και κατάταξη. Αξιολόγηση εγγράφων, υποψηφίων ή ανακτημένων αποσπασμάτων με τα δικά σας κριτήρια και απόφαση στον κώδικα για το τι θα ακολουθήσει.
- Αντί για το επισφαλές «επέστρεψε JSON». Κλήση που επιστρέφει τιμές με καθορισμένους τύπους από τον σχεδιασμό της, αντί για κείμενο που χρειάζεται ανάλυση.
Πότε δεν είναι κατάλληλο
- Συνομιλία, απαντήσεις στον χρήστη, παραγωγή κειμένου ή κώδικα. Το Jev δεν γράφει κείμενο — για αυτό υπάρχουν τα μοντέλα κειμένου.
- Μοντέλο για Claude Code, Cursor και άλλους πράκτορες. Δεν μπορείτε να αντικαταστήσετε το μοντέλο ενός πράκτορα με το jev-latest: ο πράκτορας χρειάζεται μοντέλο που γράφει κείμενο και καλεί εργαλεία. Μπορείτε να καλείτε το Jev από τον κώδικα που γράφει ο πράκτορας για εσάς.
- Αριθμητική, καταμέτρηση, σύγκριση ημερομηνιών. Σύμφωνα με την TypeSafe, αυτά γίνονται πιο αξιόπιστα στον κώδικα· ρωτήστε το μοντέλο μόνο για το νοηματικό μέρος — για παράδειγμα, εξαγωγή τμημάτων ημερομηνίας μέσω choice.
- Εικόνες, ήχος και βίντεο. Το μοντέλο δέχεται μόνο κείμενο — μετατρέψτε πρώτα αυτά τα δεδομένα σε κείμενο.
Τιμή
Χρεώνονται μόνο τα token εισόδου — το πεδίο usage.input_tokens της απάντησης: $0.084 ανά 1 εκατ.. Τα token εξόδου είναι δωρεάν.
Το αίτημα του παραδείγματος αυτής της σελίδας (296 token εισόδου) κοστίζει λιγότερο από $0.0001.
Πριν από το αίτημα, το Ailoot δεσμεύει το ποσό στο υπόλοιπο και, μετά την απάντηση, το χρεώνει μία φορά βάσει της πραγματικής χρήσης — πώς λειτουργεί.
Όρια
| Στοιχείο | Όριο |
|---|---|
| Ολόκληρο το αίτημα: state και όλες οι ερωτήσεις | 64K token |
| state μαζί με τη μεγαλύτερη ερώτηση | 32K token |
| Εναλλακτικές σε ένα choice | έως 255 |
| Επίπεδα σε ένα score | από 2 έως 10 |
| Είσοδος | μόνο κείμενο: συμβολοσειρά, αντικείμενο JSON ή πίνακας κειμένων |
Τα όρια του μοντέλου βασίζονται στα στοιχεία της TypeSafe. Οι περιορισμοί του κλειδιού και του υπολοίπου σας ισχύουν όπως για κάθε μοντέλο Ailoot: Σφάλματα και όρια.
Σφάλματα
Τα σφάλματα επιστρέφονται στην κοινή μορφή Ailoot API: κωδικός, κατανοητό μήνυμα και Request ID. Σε αυτή τη μέθοδο συναντώνται συχνότερα τα εξής:
| Κωδικός | Πότε | Τι να κάνετε |
|---|---|---|
400 invalid_request | Το σώμα απέτυχε στον έλεγχο: λείπει το state, model ή questions, υπάρχει άγνωστος type, το choice έχει περισσότερες από 255 εναλλακτικές ή το score περισσότερα από 10 επίπεδα | Διορθώστε το αίτημα σύμφωνα με το μήνυμα σφάλματος: χωρίς διόρθωση θα αποτύχει ξανά |
400 context_length_exceeded | Το state και οι ερωτήσεις μαζί υπερβαίνουν το όριο του μοντέλου | Φιλτράρετε το state στον κώδικα, κρατώντας όσα χρειάζονται οι ερωτήσεις |
401 invalid_api_key | Το κλειδί λείπει ή είναι λανθασμένο | Στείλτε το κλειδί στην κεφαλίδα Authorization |
402 insufficient_balance | Το διαθέσιμο υπόλοιπο δεν επαρκεί για τη δέσμευση | Ανανεώστε το υπόλοιπο |
404 model_not_found, unsupported_endpoint | Λανθασμένο ID ή κλήση μοντέλου με ακατάλληλη μέθοδο, για παράδειγμα μέσω /v1/chat/completions | Καλέστε το jev-latest μόνο μέσω POST /v1/systemone |
429 rate_limit_exceeded | Πάρα πολλά αιτήματα | Περιμένετε όσα δευτερόλεπτα ορίζει η κεφαλίδα Retry-After και δοκιμάστε ξανά |
503 model_overloaded, model_unavailable | Το μοντέλο είναι προσωρινά υπερφορτωμένο ή μη διαθέσιμο | Αν X-Should-Retry: true — δοκιμάστε ξανά μετά από Retry-After δευτερόλεπτα· αν false — ελέγξτε πρώτα το Request ID στο ιστορικό |
504 model_timeout | Το μοντέλο δεν απάντησε εγκαίρως | Μη στείλετε ξανά το αίτημα προτού ελέγξετε το Request ID στο ιστορικό |
Η πλήρης λίστα κωδικών βρίσκεται στη σελίδα Σφάλματα και όρια.