Для обробки звернень корисно попередньо розрізняти завдання щодо сайтів, реклами та інтеграцій. Демонстрація навчає невеликий статистичний класифікатор на дванадцяти вигаданих фразах; редагований набір дозволяє перевірити, як приклади впливають на результат.
НАВЧАЛЬНИЙ ПРИКЛАД
Розподіл звернень за темою
Навчіть невелику модель на навчальних фразах і перевірте новий запит. Категорія визначається за вивченою статистикою слів, а не за списком заздалегідь заданих відповідей.
Це ширина демонстраційного полотна. Вона не замінює перевірку справжнього пристрою.
DEMO / ai-routing
Розподіл звернень за темою
Для обробки звернень корисно попередньо розрізняти завдання щодо сайтів, реклами та інтеграцій. Демонстрація навчає невеликий статистичний класифікатор на дванадцяти вигаданих фразах; редагований набір дозволяє перевірити, як приклади впливають на результат.
Відкрити робочу демонстрацію
Розподіл звернень за темою
Переглянути робочий код моделі
Функція навчання
function trainTextModel(samples) {
if (!Array.isArray(samples) || samples.length < 4 || samples.length > 30) throw new Error('CLASSIFIER_COUNT');
const classes = new Map();
const vocabulary = new Set();
for (const sample of samples) {
if (!sample || typeof sample.label !== 'string' || !sample.label.trim() ||
typeof sample.text !== 'string' || !sample.text.trim()) throw new Error('TRAINING_FORMAT');
const label = sample.label.trim();
const key = label.toLowerCase();
const tokens = tokenizeText(sample.text);
if (!tokens.length) throw new Error('TRAINING_WORDS');
if (!classes.has(key)) classes.set(key, {label, documents: 0, tokens: 0, counts: new Map()});
const target = classes.get(key);
target.documents += 1;
for (const token of tokens) {
vocabulary.add(token);
target.tokens += 1;
target.counts.set(token, (target.counts.get(token) || 0) + 1);
}
}
if (classes.size < 2) throw new Error('CLASSIFIER_LABELS');
if (Array.from(classes.values()).some(target => target.documents < 2)) throw new Error('CLASSIFIER_EXAMPLES');
return {kind: 'classifier', classes: Array.from(classes.values()), vocabulary, documents: samples.length};
}Функція перевірки запиту
function rankText(model, text) {
if (!model || model.kind !== 'classifier') throw new Error('NOT_TRAINED');
if (typeof text !== 'string' || text.length > 500) throw new Error('QUERY_LIMIT');
const tokens = tokenizeText(text);
const known = tokens.filter(token => model.vocabulary.has(token));
const coverage = tokens.length ? known.length / tokens.length : 0;
if (!known.length) return {review: true, reason: tokens.length ? 'UNKNOWN_WORDS' : 'QUERY_WORDS', label: null, scores: [], known: 0, total: tokens.length, coverage, gap: 0};
const counts = new Map();
known.forEach(token => counts.set(token, (counts.get(token) || 0) + 1));
const logs = model.classes.map(target => {
let value = Math.log(target.documents / model.documents);
counts.forEach((count, token) => {
value += count * Math.log(((target.counts.get(token) || 0) + 1) / (target.tokens + model.vocabulary.size));
});
return {label: target.label, value};
});
const maximum = Math.max(...logs.map(item => item.value));
const total = logs.reduce((sum, item) => sum + Math.exp(item.value - maximum), 0);
const scores = logs.map(item => ({label: item.label, score: Math.exp(item.value - maximum) / total}))
.sort((left, right) => right.score - left.score);
const gap = scores[0].score - scores[1].score;
const reason = tokens.some(token=>token.startsWith('neg:')&&!model.vocabulary.has(token)) ? 'NEGATION_REVIEW' : coverage < 0.2 ? 'LOW_COVERAGE' : gap < 0.12 ? 'CLOSE_SCORES' : '';
return {review: !!reason, reason, label: reason ? null : scores[0].label, scores, known: known.length, total: tokens.length, coverage, gap};
}
Показано функції з цієї демонстрації. Повна реалізація також містить підготовку тексту та інтерфейс.
Малий навчальний корпус обмежує застосовність: модель зіставляє статистику слів і не розуміє сенсу. Незнайомі та неоднозначні тексти потребують ручної оцінки.
Невеликі статистичні моделі працюють у браузері без мережі: це не LLM, не нейромережа й не хмарний ШІ.
Редагований набір із трьох категорій і чотирьох навчальних фраз на кожну.
Навчити модель, перевірити новий текст, потім змінити приклади й перенавчити; окремо спробувати незнайомий та неоднозначний запит.
Завдання в цьому сценарії
Для обробки звернень корисно попередньо розрізняти завдання щодо сайтів, реклами та інтеграцій. Демонстрація навчає невеликий статистичний класифікатор на дванадцяти вигаданих фразах; редагований набір дозволяє перевірити, як приклади впливають на результат.
Як побудовано рішення
- Із рядків «категорія | текст» збираємо статистику слів за трьома напрямами. Це невелика навчувана модель, без нейромережі, LLM і хмарного сервісу.
- Для нового тексту порівнюємо бали категорій на основі вивчених слів. Бал допомагає порівняти варіанти цього запиту й не означає ймовірності правильної відповіді або виміряної точності.
- Незнайомий або неоднозначний текст потребує ручної оцінки. Змінені навчальні фрази можна використати для повторного навчання просто на сторінці.
Проміжні матеріали
- Початкове завдання та обмеження → Для обробки звернень корисно попередньо розрізняти завдання щодо сайтів, реклами та інтеграцій. Демонстрація навчає невеликий статистичний класифікатор на дванадцяти вигаданих фразах; редагований набір дозволяє перевірити, як приклади впливають на результат.
- Склад рішення → Редагований набір із трьох категорій і чотирьох навчальних фраз на кожну.
- Перевірка перед запуском → Навчити модель, перевірити новий текст, потім змінити приклади й перенавчити; окремо спробувати незнайомий та неоднозначний запит.
Що перевірити перед запуском
- Навчити модель, перевірити новий текст, потім змінити приклади й перенавчити; окремо спробувати незнайомий та неоднозначний запит.
- Для робочого процесу підготувати реальні розмічені дані, перевірити модель на відкладених прикладах і погодити умови ручного рішення до інтеграції.
Що входить у приклад
- Редагований набір із трьох категорій і чотирьох навчальних фраз на кожну.
- Навчання моделі в браузері та перевірка нового тексту з порівняльними балами.
- Позначення випадків для ручної оцінки та фрагмент робочого коду.
Технічний паспорт
DevPilot 1.5.2 · Охоплення перевірок, вихідний код і дата свідчень
- Статус
- DEMO · Вигадана компанія й навчальні дані
- Матеріали
- Власні HTML/CSS/SVG, вихідний код і локальні алгоритми. Фотографії клієнтів не використовуються.
- Обробка
- Демонстрація виконується в браузері. Відкриття прикладу не створює заявку чи оплачений проєкт.
- Докази
- Вміст і локальні перевірки відокремлені від справжнього браузерного, хостингового та комерційного приймання.