devpilot.
До вибору прикладів

НАВЧАЛЬНИЙ ПРИКЛАД

Розподіл звернень за темою

Навчіть невелику модель на навчальних фразах і перевірте новий запит. Категорія визначається за вивченою статистикою слів, а не за списком заздалегідь заданих відповідей.

DEMOБез вигаданих показників продажів
Полотно:

Це ширина демонстраційного полотна. Вона не замінює перевірку справжнього пристрою.

DEMO / ai-routing

Розподіл звернень за темою

Для обробки звернень корисно попередньо розрізняти завдання щодо сайтів, реклами та інтеграцій. Демонстрація навчає невеликий статистичний класифікатор на дванадцяти вигаданих фразах; редагований набір дозволяє перевірити, як приклади впливають на результат.

Відкрити робочу демонстрацію
НАВЧАЛЬНА МІНІМОДЕЛЬNAIVE BAYES

Розподіл звернень за темою

Розподіл звернень за темою
Навчальні дані

Модель навчається під час відкриття прикладу. У кожному рядку мітка й фраза або заголовок і документ розділені знаком |; після зміни даних навчіть модель знову.

Скидання відновлює початкові навчальні дані та запит.

Результат моделі

Порівняльні бали

    Бали порівнюють варіанти в межах одного запиту; це не ймовірність правильної відповіді й не виміряна точність.

    Для навчання й перевірки потрібен JavaScript; опис підходу та навчальні дані доступні без запуску.

    Переглянути робочий код моделі

    Функція навчання

    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, не нейромережа й не хмарний ШІ.

    Лише текст, без HTML. Зміни залишаються у вкладці.

    Завдання в цьому сценарії

    Для обробки звернень корисно попередньо розрізняти завдання щодо сайтів, реклами та інтеграцій. Демонстрація навчає невеликий статистичний класифікатор на дванадцяти вигаданих фразах; редагований набір дозволяє перевірити, як приклади впливають на результат.

    Як побудовано рішення

    • Із рядків «категорія | текст» збираємо статистику слів за трьома напрямами. Це невелика навчувана модель, без нейромережі, LLM і хмарного сервісу.
    • Для нового тексту порівнюємо бали категорій на основі вивчених слів. Бал допомагає порівняти варіанти цього запиту й не означає ймовірності правильної відповіді або виміряної точності.
    • Незнайомий або неоднозначний текст потребує ручної оцінки. Змінені навчальні фрази можна використати для повторного навчання просто на сторінці.

    Проміжні матеріали

    1. Початкове завдання та обмеження → Для обробки звернень корисно попередньо розрізняти завдання щодо сайтів, реклами та інтеграцій. Демонстрація навчає невеликий статистичний класифікатор на дванадцяти вигаданих фразах; редагований набір дозволяє перевірити, як приклади впливають на результат.
    2. Склад рішення → Редагований набір із трьох категорій і чотирьох навчальних фраз на кожну.
    3. Перевірка перед запуском → Навчити модель, перевірити новий текст, потім змінити приклади й перенавчити; окремо спробувати незнайомий та неоднозначний запит.

    Що перевірити перед запуском

    • Навчити модель, перевірити новий текст, потім змінити приклади й перенавчити; окремо спробувати незнайомий та неоднозначний запит.
    • Для робочого процесу підготувати реальні розмічені дані, перевірити модель на відкладених прикладах і погодити умови ручного рішення до інтеграції.

    Що входить у приклад

    • Редагований набір із трьох категорій і чотирьох навчальних фраз на кожну.
    • Навчання моделі в браузері та перевірка нового тексту з порівняльними балами.
    • Позначення випадків для ручної оцінки та фрагмент робочого коду.

    Технічний паспорт

    DevPilot 1.5.2 · Охоплення перевірок, вихідний код і дата свідчень

    Статус
    DEMO · Вигадана компанія й навчальні дані
    Матеріали
    Власні HTML/CSS/SVG, вихідний код і локальні алгоритми. Фотографії клієнтів не використовуються.
    Обробка
    Демонстрація виконується в браузері. Відкриття прикладу не створює заявку чи оплачений проєкт.
    Докази
    Вміст і локальні перевірки відокремлені від справжнього браузерного, хостингового та комерційного приймання.