← HomeGuide →
МАЙСТЕР-КЛАС · ДЛЯ ВИКЛАДАЧІВ

Хмарні сервіси в дії

Створення безпечного ШІ-асистента викладача на базі Google Workspace

Олександр ОрдинськийSenior Full-Stack розробник · 10 років у розробці

Заберіть матеріали

  • Скануйте телефоном — це канал майстер-класу
  • слайди, інструкція, код і відповіді на питання

Посилання також у чаті ↓ · ai-assistant-teachers.ordynski.com

ШІ в освіті: користуються всі, готові — одиниці

Користуються ШІ
Учителі, Україна
88%
Студенти, Британія
92%
Учителі, США
60%
Готові до цього
Впевнені у знаннях, UA
15,5%
Правила від школи, США
18%
5,9 год
на тиждень економлять ті, хто користується ШІ щотижня — ≈ 6 тижнів за рік

Українські вчителі: ChatGPT 75%, Gemini 51% — з ним ми й працюємо.

Інститут цифровізації освіти НАПН (4 106 учителів, серп.–вер. 2025) · HEPI 2025 (1 041 студент) · Gallup × Walton 2025 · Gallup 2026 (2 069 учителів)

Що ми зробимо

0 ₴
бюджет
0
серверів
1
файл коду
40 хв
щоб повторити вдома
  • відповідає про ваш курс — з бази знань у Google Таблиці
  • пояснює код крок за кроком
  • не тримає ключів у коді й не приймає персональних даних

Повна картина: шість сервісів, нуль серверів

Telegramчат з ботом
Gemini APIмодель ШІ
Властивостісекрети
Cache · Lockповтори, ліміти
Google Таблицябаза знань · розклад · журнал
Apps ScriptCode.gs · doPost / doGet
СЕРВІС 1/6 · ІНТЕРФЕЙС

Telegram Bot API

Бот — звичайний контакт у месенджері, який уже є в усіх.

1

Викладач пише боту в Telegram

2

Telegram сам надсилає повідомлення на наш вебхук

POST …/exec
3

Бот відповідає в той самий чат

sendMessage
0 ₴Bot API — безкоштовно
1/сповідомлення в один чат
51%українців: головне джерело новин

Чому саме він

Аудиторія вже там: без застосунку, сайту й логіна. Бот — просто ще один контакт.

Telegram Bots FAQ (core.telegram.org/bots/faq) · Рейтинг × EUAM, 2 000 респондентів, 2025

СЕРВІС 2/6 · МОЗОК

Google Apps Script

JavaScript у хмарі Google — без сервера й без встановлення.

1

Приходить повідомлення від Telegram

doPost(e)
2

Google запускає скрипт лише на цей час

3

Читає базу знань і розклад з Таблиці

SpreadsheetApp
0серверів, які треба налаштовувати
6 хвмаксимум на один запуск
20 000зовнішніх запитів на добу

Чому саме він

Безкоштовно з особистим Gmail. «Розгорнути → Вебдодаток» дає постійну адресу …/exec.

Apps Script quotas, consumer accounts (developers.google.com/apps-script/guides/services/quotas)

СЕРВІС 3/6 · СЕЙФ

Script Properties

Сейф проєкту: значення, яких не видно в коді.

1

Токен бота й ключ Gemini кладемо у Властивості

2

Код читає їх лише під час роботи

prop_('GEMINI_API_KEY')
3

Код можна показувати будь-кому

9 КБна одне значення
500 КБусі властивості разом
50 000читань і записів на добу

Чому саме він

Скриншот, GitHub, студенти — секрети не потрапляють нікуди, бо їх немає в коді.

Apps Script quotas, consumer accounts (developers.google.com/apps-script/guides/services/quotas)

СЕРВІС 4/6 · ШІ

Gemini API

Модель ШІ від Google, яку викликаємо одним HTTP-запитом.

1

Збираємо SYSTEM_PROMPT + питання + розклад

2

Один запит до моделі, ключ — у заголовку

x-goog-api-key
3

Отримуємо текст відповіді

generateContent
0 ₴безкоштовний рівень, без картки
18+лише для дорослих користувачів
429«забагато запитів» → ввічлива відповідь

Чому саме він

Той самий акаунт Google. На безкоштовному рівні запити можуть читати рецензенти — тому без персональних даних.

Gemini API rate limits (ai.google.dev/gemini-api/docs/rate-limits) · Gemini API Additional Terms (ai.google.dev/terms)

СЕРВІС 5/6 · ВАШ КУРС

Google Таблиця

Одна Таблиця — і база знань, і розклад. Викладач редагує її без коду.

1

Аркуш «База знань»: тема → інформація

2

Аркуш «Розклад» для команди /rozklad

3

Окремий анонімний журнал: хеш замість id

0рядків коду, щоб оновити курс
5 хві бот уже знає про зміни
40 000символів бази знань (~15 сторінок)

Чому саме він

Таблиці вміють усі: змінили дедлайн у рядку — бот відповідає вже по-новому. Лише загальні правила курсу, без персональних даних.

СЕРВІС 6/6 · ЗАХИСТ

Cache · Lock

Коротка пам’ять і «черга» для одночасних запитів.

1

Telegram надіслав повтор? Пропускаємо

update_id
2

Рахуємо повідомлення кожної людини

5 / 10 хв
3

Одночасні запити — по черзі

LockService
6 годзберігаються ідентифікатори повторів
5повідомлень за 10 хв на людину
0 ₴безкоштовно

Чому саме він

Без них бот відповідав би двічі, а безкоштовний ліміт Gemini закінчився б за хвилини.

Шлях одного повідомлення

Telegramвикладач пише
Apps ScriptdoPost(e)
Таблицябаза знань
Gemini APIвідповідь ШІ
POST /exec?k=… (webhook)ключ ✓ повтор ✗ ліміт ✓база знань + розклад?рядки таблиціprompt + база знань + питаннятекст відповідіsendMessage

Без сервера: Google запускає doPost, лише коли прийшло повідомлення

УВАГА

Що НЕ можна надсилати боту

  • ПІБ учнів і колег, оцінки, характеристики
  • телефони, адреси, email, фото дітей, медичні дані
  • безкоштовний Gemini: запити можуть читати люди-рецензенти
  • Gemini API — лише 18+: це бот для викладача, не для учнів

Закон України «Про захист персональних даних».

[ Зрозуміло ]

Gemini API Additional Terms of Service · ai.google.dev/terms

Ключі — не в коді

Ні
const KEY = 'AIza…';
  • потрапить у скриншот, GitHub, чат
  • студент скопіює — і витрачає ваш ліміт
Так
const key = prop_('GEMINI_API_KEY');
  • значення — у Властивостях скрипта
  • код можна показувати будь-кому

@BotFather: бот за хвилину

Двері бота: doPost

function doPost(e) {
  // 1. секретний ключ в URL
  if (e.parameter.k !== prop_('WEBHOOK_KEY'))
    return ok_();
  const update = JSON.parse(e.postData.contents);
  // 2. повтори пропускаємо
  if (seen_(update.update_id)) return ok_();
  handleMessage_(update.message);
  return ok_();
}
  • Telegram надсилає сюди кожне повідомлення
  • чужі запити без ключа — ігноруємо
  • Apps Script відповідає переадресацією, тож Telegram інколи повторює

Алгоритм: що робить doPost

Telegram надіслав повідомлення
?Ключ у URL правильний?
ніігнор — це не Telegram
?Нове повідомлення (не повтор)?
ніпропустити
?У ліміті 5 повідомлень / 10 хв?
ні«зачекайте трохи»
?До 1500 символів?
ні«скоротіть, будь ласка»
?Без персональних даних?
нівідмова + пояснення
Gemini: prompt + база знань + розклад
sendMessage → відповідь у чат

Мозок бота: запит до Gemini

const res = UrlFetchApp.fetch(url, {
  method: 'post',
  headers: { 'x-goog-api-key': prop_('GEMINI_API_KEY') },
  payload: JSON.stringify({
    systemInstruction: { parts: [{ text: SYSTEM_PROMPT }] },
    contents: [{ role: 'user', parts: [{ text: question }] }],
  }),
});
if (res.getResponseCode() === 429)
  return 'Зараз мені пишуть дуже багато людей…';
  • один HTTP-запит до Gemini
  • база знань і розклад — у контексті
  • ключ — у заголовку, не в адресі
  • перевантаження — ввічлива відповідь

Ви змінюєте лише ОЦЕЙ рядок

До
'Ти — асистент викладача
 інформатики. Пояснюй код
 крок за кроком, коротко.'
→
Після
'Ти — асистент викладача
 історії. Пояснюй події через
 причини й наслідки і став
 одне питання для перевірки.'

Решта коду — однакова для будь-якого предмета.

А знання про курс — у Таблиці, не в коді

ТемаІнформація
Лабораторні й дедлайниЛР1 — до 15 вересня; ЛР2 — до 29 вересня; ЛР3 Цикли — до 13 жовтня…
ОцінюванняЛР по 10 балів, дві модульні по 15, іспит 20; запізнення −2 бали/тиждень
ПерездачаКожну ЛР — один раз до кінця модуля
ШІ на навчанніМожна для пояснень; код пишете самі й пояснюєте на захисті

Аркуш «База знань» у вашій Google Таблиці. Змінили рядок — за ~5 хв бот відповідає по-новому. Без персональних даних студентів.

Запуск: три кліки й одна функція

Як це виглядає

  • відповіді про курс — з вашої Таблиці
  • пояснення коду простою мовою
  • розклад — /rozklad
  • персональні дані — відмова
ШІ-асистент викладачаbot
Коли дедлайн ЛР3?
Лабораторну 3 «Цикли» — до 13 жовтня. Здаєте в Google Classroom: код і короткий звіт PDF.
Поясни: for i in range(3): print(i*i)
Цикл виконується 3 рази: i = 0, 1, 2 — друкує 0, 1, 4. Питання: що надрукує range(4)?

Напишіть боту

  • «Коли дедлайн ЛР3?» — з бази знань
  • надішліть шматок коду — «поясни»
  • /rozklad середа

5 повідомлень за 10 хв · без персональних даних

Тестуємо разом

Пишіть у чат, що бот відповів найцікавішого

Повторіть удома за 40 хвилин

  • 9 кроків, після кожного — «Має вийти: …»
  • назви кнопок українською й англійською
  • таблиця типових помилок
  • потрібен особистий Gmail

Питання?

  • Канал — матеріали й коментарі
  • Відгук — 3 питання, 1 хвилина
  • Усі майстер-класи — webinars.ordynski.com

Олександр Ординський · Senior Full-Stack розробник · 10 років у розробці

ORDYNSKI · MASTERCLASS← → · H help · F fullscreen