TypeSafe Jev водич корак по корак. Практичан водич за TypeSafe Jev, System One AI модел за типизиране софтверске одлуке.
01
Уоквирите задатак
Одлучите да ли Јев одговара
Јев није модел за ћаскање. Претвара постојеће стање у затворену одлуку о избору, резултату или ноулу и враћа дистрибуцију вероватноће.
Добро се уклапа
Користите Јев за ограничене одлуке
Усмерите један захтев у један именовани ред.
Поставите запис на наређену скалу ризика или квалитета.
Процените да ли је један јасно изречен услов тачан.
Није добро
Уместо тога користите генеративни модел
Напишите, резимирајте, преведите или препишите отворени текст.
Водите природан разговор у више кругова.
Направите одговор када се важећи излази не могу унапред именовати.
Званични ментални модел
STATE
Једна држава за процену
Проследите низ, објекат или низ који садржи текст и повезане чињенице које су потребне пресуди. Користите поља именованих објеката за већину стварних захтева.
QUESTIONS
Једна брза пресуда по питању
Свако питање треба да постави једну фокусирану ствар о којој би упућена особа могла брзо да процени на основу стања које је дато.
PARALLEL
Независна питања паралелно
Питања у једном захтеву виде исто стање, покрећу се независно и не пропуштају један одговор у други.
CODE
Саставите одговоре у коду
Тежина, праг, гранање и комбиновање откуцаних одговора у обичном коду уместо скривања логике тока посла у једном промпту.
Тест разлагања: Ако пресуда тежи неколико независних фактора или захтева проширено резоновање, поделите је на атомска питања и комбинујте одговоре у коду.
После овог поглавља:Можете одвојити задатке генерисања садржаја од задатака структурираних одлука.
Користи се за неуређене, фиксне алтернативе. Додајте други / ниједан када листа можда не покрива сваку државу. Изабрана вредност је опција са највећом вероватноћом.
Користите за чисту да/не пресуду. Близу 0,5 значи неизвесност, а не средњи износ својства. Ноул нема посебно поље поверења.
{
"type": "noul",
"noul": 0.95
}
Резултат није тачност. Оцена од 1,5 на рубрици 0–2 је очекивани ниво, а не „75% тачно“. Не третирајте поверење резултата или избора као обећање тачности.
После овог поглавља:Можете одабрати прави облик одговора за рутирање, модерирање и бодовање ризика.
Нека имена опција буду стабилна, дефинишите границе које се међусобно искључују, укључите преосталу путању и сваком питању дајте једну одлуку.
Писање јаких критеријума
Дисјунктне опције. Ако оба кључа за избор могу бити тачна, оператери ће се борити против модела.
Опишите ивице. Реците шта буи_интент укључује (залихе, отпрема) у односу на питање_цене.
Остатак држите последњим. Користите друге/људске као отворе за бекство, а не лењи хватач свих.
Оцена наруџбине расте. Низови критеријума су најнижи → највиши.
Једна одлука по питању. Поделите „руту“ од „хитности“ у засебне кључеве.
Анатомија питања
question_id
Кључ за тражење одговора за ваш код. Не шаље се моделу, тако да упутства и даље морају да садрже комплетно питање.
type
избор, резултат или ноул. Изаберите облик на који ваш код може да делује директно.
instructions
Потпуна, конкретна пресуда. То може бити стринг, објекат или низ и може упућивати на именоване путање стања.
criteria
Опције избора, поређани нивои резултата или опционо тачно/нетачно појашњење за Ноул.
Пример · једна одлука, дисјунктне границе
route: {
type: 'choice',
instructions: 'Route this ticket to one queue.',
criteria: {
tech: 'Bugs, outages, API failures, or integrations',
sales: 'Pricing, plans, demos, or new-purchase intent',
billing: 'Charges, invoices, receipts, or subscriptions',
human: 'Ambiguous, sensitive, legal, or multi-issue'
}
}
Стање структуре и тачна референца поља
Чувајте доказе у именованим пољима стања и усмерите упутства на њих помоћу путања тачке и индекса. Ово смањује двосмисленост о томе који текст, запис или политика треба да контролише одговор.
const state = {
ticket: {
message: 'I was charged twice. Please refund the duplicate.',
orderId: 'A-104'
},
order: { charges: [49, 49] },
refundPolicy: 'Duplicate charges are eligible for a refund.'
};
const questions = {
refund_requested: {
type: 'noul',
instructions: 'Does `ticket.message` request a refund?'
},
policy_supports_refund: {
type: 'noul',
instructions: 'Does `refundPolicy` support the request given `order.charges`?'
}
};
Група подразумевано: Постављајте сва питања која користе исто стање у једном захтеву — чак и спекулативна питања. Поднесите други захтев само када његово стање или опције заиста зависе од ранијег одговора.
После овог поглавља:Можете написати стабилну дефиницију питања која се може тестирати коју код може да користи.
Позовите званичну крајњу тачку Систем Оне или СДК са свог сервера, прегледајте откуцани одговор и рукујте грешкама валидације, ограничења брзине и преоптерећења. Гатеваи остаје опциона приступна путања.
Почните са званичном ХТТП крајњом тачком
Држите TYPESAFE_API_KEY на серверу. Пошаљите стање, модел и мапу именованих питања на POST /v1/systemone.
curl -X POST https://api.typesafe.ai/v1/systemone \
-H "Authorization: Bearer $TYPESAFE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"state": "Stripe has failed for 3 days. I am losing sales.",
"model": "jev-latest",
"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"
}
},
"is_urgent": {
"type": "noul",
"instructions": "Does this message convey urgency?"
}
}
}'
Користите званични СДК за откуцане одговоре и поновне покушаје
Питхон СДК чита ТИПЕСАФЕ_АПИ_КЕИ из окружења, подразумевано је постављен на јев-латест, излаже откуцане класе питања/одговора и примењује своју подразумевану политику поновног покушаја.
pip install typesafe-sdk
from typesafe_sdk import Choice, Noul, TypeSafeClient
with TypeSafeClient() as client:
response = client.system_one(
state={"message": "Stripe has failed for 3 days.", "impact": "Losing sales"},
questions={
"department": Choice(
instructions="Which team should handle this?",
criteria={
"billing": "Payment or subscription issues",
"technical": "Bugs or integration problems",
"sales": "Pricing or account questions",
},
),
"is_urgent": Noul(
instructions="Does `message` and `impact` convey urgency?"
),
},
)
department = response.answers["department"]
print(department.choice, department.confidence)
print(response.answers["is_urgent"].noul)
Недостаје или је неважећи АПИ кључ. Проверите токен носиоца.
422
Неважећи облик захтева. Прегледајте одговор за поље које крши.
429
Ограничење стопе је премашено. Одступите пре поновног покушаја.
529
Услуга је привремено преоптерећена. Одступите пре поновног покушаја.
За 429 и 529, користите експоненцијално повлачење радије него тренутни поновни покушај. Званични пакети за развој софтвера то раде аутоматски у складу са својом подразумеваном политиком покушаја.
Алтернатива: Верцел АИ Гатеваи
Овај сајт такође документује Гатеваи као слој приступа за процену АИ СДК-а. То је алтернативни пут интеграције, а не део Јев или ТипеСафе-а.
import { experimental_evaluate as evaluate } from 'ai';
import { gateway } from '@ai-sdk/gateway';
const result = await evaluate({
model: gateway('typesafe-ai/jev'),
state,
questions,
});
После овог поглавља:Можете задржати акредитиве на страни сервера и примати откуцане одговоре са вероватноћама.
Не претварајте највећу вероватноћу директно у коначну акцију. Подесите опсеге за сугестију, потврду и људски преглед на основу пословног ризика.
PROBABILITY
Докази за сваку опцију или ниво
Избор и резултат враћају комплетну дистрибуцију. Користите га када су важне опције за другопласиране, двосмисленост или прилагођене мере несигурности.
CONFIDENCE
Сажетак облика дистрибуције
Поуздање сажима колико је концентрисана или равна дистрибуција у 0–1. То није исто што и вероватноћа изабране опције.
Noul: Ноул већ враћа П(труе), тако да нема засебног поверења. Вредности близу 0,5 су неизвесне; праг и да и не према ризику.
ТипеСафе излаже поверење из дистрибуције опција. Практична политика је:
01
Високо самопоуздање
Аутоматски предложите избор (ознаку, руту или пресуду) у корисничком интерфејсу.
02
Средње самопоуздање
Прикажите предлог, али захтевајте од оператера да га потврди пре него што наставите.
03
Ниско самопоуздање
Пошаљите у људски ред без подразумеване акције.
Калибрирајте граничне вредности на означеним примерима из стрима или пријемног сандучета. Прагови су специфични за случај употребе. Никада немојте слати предлоге у новац или рефундирати нежељене ефекте.
Ограничите акцију, а не модел глобално
action = response.answers["action"]
if action.confidence < 0.5:
route_to_human(state) # uncertain: do not guess
elif action.choice == "check_balance":
show_balance(account_id) # reversible, low stakes
elif action.choice == "approve_transfer":
if action.confidence > 0.9:
confirm_then_execute(account_id)
else:
ask_user_to_confirm(account_id) # higher stakes, higher bar
Калибрирајте пре аутоматизације
Прикупите репрезентативне, означене примере из стварног тока посла.
Забележите одговоре, дистрибуцију, самопоуздање, кашњење и људску одлуку.
Изаберите прагове одвојено за реверзибилне, скупе и неповратне радње.
Пратите померање и поново процените након промене стања, инструкција, критеријума или алијаса модела.
Државни савети
Проследите стринг, објекат или низ као стање. Дајте предност структурираним записима (текст коментара + метаподаци) него избацивање читавог дневника ћаскања када је важна само једна порука.
После овог поглавља:Можете да дизајнирате резервни део са ниском поузданошћу и калибрирате прагове са означеним подацима.
Изградите један комплетан ток посла са структурираним стањем, паралелним питањима, политиком у власништву кода, ревизорским доказима, поновним покушајима и људским резервним.
Направите један комплетан радни ток подршке-тријаже
Пошаљите једно структурирано стање тикета и поставите три независна питања паралелно. Држите смернице за рутирање и безбедност у коду.
STATE→CHOICESCORENOUL→POLICY
const questions = {
department: {
type: 'choice',
instructions: 'Which team should handle `ticket.message`?',
criteria: {
returns: 'Exchanges, wrong or damaged items',
shipping: 'Delivery status, delays, or lost packages',
billing: 'Charges, invoices, or payment problems',
other: 'None of the above'
}
},
frustration: {
type: 'score',
instructions: 'How frustrated is the customer?',
criteria: ['Calm', 'Concerned but civil', 'Very angry']
},
refund_requested: {
type: 'noul',
instructions: 'Does `ticket.message` request money back?'
}
};
Претворите откуцане одговоре у одлуку која се може ревидирати
Чувајте акредитиве и модел позива на страни сервера.
Потврдите величину стања, обавезна поља и дефиниције питања пре него што позовете АПИ.
Сачувајте верзију модела, верзију питања, вероватноће, поузданост и коначну акцију.
Обезбедите експлицитан други/људски пут и никада не измишљајте подразумевану неизвесност.
Поновите 429 и 529 са ограниченим експоненцијалним повлачењем; не покушавајте поново грешке у валидацији.
Тестирајте у односу на означене ивице и поново калибрирајте прагове пре него што омогућите аутоматизацију.
Case index
Six Jev patterns to explore next
These are research paths, not claims that this site built the projects. Each card opens the corresponding category in the open-source radar so you can inspect real implementations and source evidence.