Краткият отговор: jev-1.13 не генерира текст. Изпращате парче текст плюс набор от именувани въпроси на 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": "Здравейте, опитвам се да свържа акаунта си в Stripe от 3 дни "
"и все все не успявам. Загубих продажби. Моля, помогнете ASAP.",
"questions": {
"department": {
"type": "choice",
"instructions": "Кой екип трябва да се заеме с това",
"criteria": {
"billing": "Проблеми с плащания или абонаменти",
"technical": "Бъгове или проблеми с интеграцията",
"sales": "Въпроси за цени или акаунти",
},
},
"frustration": {
"type": "score",
"instructions": "Колко разочарован изглежда клиентът",
"criteria": [
"Спокоен, просто излага факти",
"Разочарован, но учтив",
"Много ядосан, силен език",
],
},
"is_urgent": {
"type": "noul",
"instructions": "Съобщението предава спешност или чувствителност към времето",
},
},
}
Стъпка 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("използване:", data.get("usage"))
Потвърден изход:
department choice billing 0.51
frustration score 1 1
is_urgent noul 1 None
използване: {'input_tokens': 424, 'output_tokens': 73}
Стъпка 6 — Разберете целия пакет
Цикълът на печат скрива полезни полета. Суровият JSON за отговор с score е:
{
"type": "score",
"score": 1,
"legend": {"0": "Спокоен, просто излага факти", "1": "Разочарован, но учтив", "2": "Много ядосан, силен език"},
"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)
- [ ] Неподходящи отговори регистрирани с суровото тяло
Често задавани въпроси
Мога ли да използвам 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с реален запис от вашата опашка - Сравнете резултата с начина, по който класифицирате този запис днес
Ако това ръководство беше полезно, абонирайте се за бъдещи публикации относно модели с структурирани изходи и класификационни потоци.



