Кратък отговор: jev-1.13 не генерира текст. Изпращате с POST текст и набор от именувани въпроси към https://aihubmix.com/v1/systemone и получавате типизирани отговори, индексирани по имената на въпросите ви: категория, оценка или вероятност. Нищо за парсване. По-долу са работеща заявка, пълният формат на отговора и грешката в дизайна, която тихомълком ще намали точността.
За какво е Jev
Използвайте го, когато ви трябва преценка, а не параграф: маршрутизиране на заявка в поддръжката, оценка на сериозността, отбелязване на спешност, филтриране на съдържание. Страницата на модела го казва ясно: „Без генериране на текст, нищо за парсване.“
Използвайте обичаен чат модел, когато ви трябват обяснения, резюмета или каквото и да е свободно изходно съдържание. jev не може да ги създава.
Преди да започнете
- [ ] Инсталиран Python 3 (стандартната библиотека е достатъчна)
- [ ] Акаунт в AiHubMix и API ключ
- [ ] Ключът е експортиран като
AIHUBMIX_API_KEYи никога не е записан директно в кода
Не ви трябват OpenAI SDK, LangChain или пакетът requests.
Стъпка 1 — Познайте крайната точка
POST https://aihubmix.com/v1/systemone
Authorization: Bearer YOUR_KEY
Content-Type: application/json
Това е маршрут, специфичен за модела, а не /v1/chat/completions. Клиентите, съвместими с OpenAI, не могат да го извикват. Използвайте обикновен HTTP.
Стъпка 2 — Изберете типовете въпроси
Има три типа и можете свободно да ги комбинирате в една заявка:
| Тип | Използва се за | Какво задавате |
|---|---|---|
choice | Избор на една категория | criteria като речник: етикет → определение |
score | Оценка по подредена скала | criteria като списък, от най-ниското към най-високото |
noul | Преценка с да/не | нищо извън instructions |
Стъпка 3 — Съставете заявката
state е текстът, който ще се оценява. Ключовете в questions са имена, които измисляте вие; отговорът използва същите имена.
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",
},
},
}
Стъпка 4 — Изпратете заявката със стандартната библиотека
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]}")
Съдържайте изграждането на заявката във функция. Ако изграждате и изпращате на ниво модул, импортирането на файла ще задейства повторно извикването и ще харчи токени.
Стъпка 5 — Прочетете отговорите
Всеки отговор съхранява стойността си под ключ, съответстващ на неговия type, така че един достъп покрива и трите типа:
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"))
Проверен резултат:
department choice billing 0.51
frustration score 1 1
is_urgent noul 1 None
usage: {'input_tokens': 424, 'output_tokens': 73}
Стъпка 6 — Разберете пълния обвиващ обект
Цикълът за печат скрива полезни полета. Суровият JSON за отговор тип 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съпоставя индекса обратно с вашите собствени формулировки. Целочислената стойност е самоописваща, така че в кода не ви трябва таблица за търсене.probabilitiesдава пълното разпределение, полезно за откриване на почти равен резултат.noulняма полеconfidence. Неговата вероятност е сигналът.
На най-високо ниво се връщат и usage, id, provider (TypeSafe) и версията на бекенда typesafe/jev-1.13-20260917.
Грешката, която струва точност
В горната заявка department върна billing с увереност 0.51. При повтаряне на същата заявка същият етикет се върна с 0.38 — отговорът беше стабилен, но заявената сигурност не беше.
Причината е в критериите, а не в модела. billing е „Проблеми с плащания или абонаменти“, а technical е „Грешки или проблеми с интеграцията“. Интеграция със Stripe, която продължава да се проваля, наистина отговаря и на двата. Моделът отразяваше неяснота, която беше вградена в схемата.
Две правила преди продукционна среда:
- Пишете критерии от типа
choice, които се изключват взаимно. Ако човек би се колебал между два етикета, моделът също ще се колебае. - Задайте праг на увереност и насочвайте резултатите с ниска увереност към опашка за преглед от човек, вместо да ги приемате като решения. Модел, който признава несигурност, е по-ценен от този, който я скрива.
Контролен списък преди пускане
- [ ] Ключът се зарежда от средата или от файл с режим
600, игнориран от вашата VCS - [ ] Критериите от тип
choiceса прегледани за припокриване - [ ] Дефиниран е праг на увереност, с резервен път под него
- [ ] Отговорите
noulсе обработват отделно, тъй като няматconfidence - [ ] Неизползваните въпроси са премахнати (3 въпроса струват 424 входни токена; 2 струват 355)
- [ ] Отговорите без 2xx статус се записват в журнала със суровото тяло
Често задавани въпроси
Мога ли да използвам OpenAI SDK? Не. /v1/systemone не е маршрут, съвместим с OpenAI.
Може ли jev да върне изречение или резюме? Не. Той отговаря само на типизираните въпроси, които дефинирате.
Колко въпроса може да има една заявка? Проверените тестове използваха два и три. Всеки въпрос добавя входни и изходни токени, затова включвайте само това, по което ще действате.
Има ли псевдоним за версия? Страницата на модела посочва псевдонима jev-latest наред с jev-1.13. Фиксирайте изричната версия, ако възпроизводимостта е важна.
Колко струва? Страницата на модела публикува $0.0462 / M за входни токени и $0 / M за изходни токени. Това са цени от доставчика; потвърдете актуалните цени, преди да съставяте бюджет.
Какъв е контекстният прозорец? Страницата на модела е непоследователна: 64K в заглавието и 32K в таблицата на доставчика. Проверете с най-дългия си реален вход, преди да разчитате на някоя от стойностите.
Обхват на това ръководство
Всичко по-горе беше проверено с три реални извиквания към един вход. Не покрива латентност, пакетиране, пропускателна способност или поведение при входове, различни от примера. Отклонението в увереността е възпроизведено наблюдение, а не измерена грешка. Повторете го върху собствените си данни, преди да задавате праг.
Започнете с AiHubMix
jev-1.13 е достъпен чрез AiHubMix, а страницата на модела съдържа всичко, на което се позовава това ръководство: крайната точка /v1/systemone, трите типа въпроси с форматите на criteria, пълните полета на отговора и публикуваната цена от $0.0462 / M за входни токени и $0 / M за изходни токени. Псевдонимът jev-latest сочи към най-новата версия, така че остава актуален при смяна на версиите.
Започнете тук: https://aihubmix.com/model/jev-latest
Следващи стъпки:
- Създайте акаунт в AiHubMix и генерирайте API ключ
- Копирайте заявката от Стъпка 3 и функцията
ask()от Стъпка 4 - Заменете
stateс реален запис от собствената ви опашка - Сравнете резултата с това, как класифицирате този запис в момента
Ако това ръководство ви беше полезно, абонирайте се за бъдещи публикации за модели със структуриран изход и класификационни конвейери.



