Як створити AI-перекладач у браузері за допомогою Google Gemini та React

💡 Усі статті, обговорення, новини про Front-end — в одному місці. Приєднуйтесь до Front-end спільноти!

Привіт, спільното, я Катя — розробниця в міжнародній IT-компанії ELEKS. Працюю як фулстек з глибоким бекграундом у фронтенді — саме там я провела більшість із понад 13 років у веброзробці. Останнім часом мене все більше захоплює штучний інтелект: я поступово вивчаю AI-технології через практичні проєкти, особливо на хакатонах, де є можливість швидко тестувати ідеї й будувати живі прототипи. Це новий, дуже динамічний напрям для мене, і щоразу він відкриває нові горизонти — від промптінгу до інтеграції LLM у реальні UI-застосунки.

У попередній статті я розповідала, як ми з чоловіком створили AI-агента, який працює з базою даних: аналізує запити, генерує англомовні відповіді та використовує LangGraph, Gemini API та SQLite. Це був серйозний і комплексний проєкт, який потребував чіткого розуміння як бекенду, так і LLM.

Але я часто чую запитання: «З чого почати?», «Як спробувати AI, якщо ти звичайний розробник без досвіду в ML?». Тому цього разу — без графів, баз даних і складної логіки. Я вирішила зробити крок назад і показати, як побудувати максимально простий, але корисний AI-застосунок — перекладач, який працює прямо в браузері.

Жодного бекенду. Жодної бази. Лише React, Google Gemini API, голосовий ввід/вивід і трохи UI.

Якщо ви тільки починаєте знайомство з LLM або хочете спробувати інтегрувати AI у власний проєкт — ця стаття саме для вас. Я покажу все покроково: як отримати API-ключ, як скласти промпт, як відправити запит до моделі та вивести результат у застосунку. Стек — простий. Код — живий. Магії — нуль. Усе зрозуміло і прозоро.

Що ми будемо будувати

У цій статті ми крок за кроком створимо простий, але водночас потужний AI-перекладач, який працюватиме повністю у браузері — без серверів, баз даних і складного бекенд-коду.

Що вміє цей застосунок?

  • Вводиш текст або говориш в мікрофон. Можна просто набрати фразу або продиктувати її голосом — як тобі зручніше.
  • Переклад майже миттєвий. Текст відправляється в модель Gemini, і вона одразу повертає переклад.
  • Озвучення перекладу. Можна не тільки прочитати, а й послухати переклад — це класно, коли вчишся або коли руки зайняті.
  • Підтримка популярних мов. Вже є 10 основних мов, але за потреби можна легко додати ще.
  • Зручний і простий інтерфейс. Зроблено на React, TypeScript і Tailwind — швидко, красиво і зручно.
  • Усе працює прямо у браузері. Ніяких твоїх даних на сторонніх серверах — запити йдуть напряму до Google Gemini через офіційний API.

Чому це класно?

  • Це ідеальний старт для тих, хто тільки починає розбиратися з AI. Можеш взяти цей проєкт, подивитися як все працює і відразу почати робити свої зміни.
  • Я покажу, як правильно складати запити (промпти) і працювати з API — простими словами та покроково.
  • Ніяких складних налаштувань серверів чи баз даних — все максимально просто.
  • Проєкт легко розширити: додати історію перекладів, різні стилі, кешування та інші корисні фішки.
  • Це чудовий спосіб швидко зануритися в AI, зробити щось практичне і корисне, не заглиблюючись у складні технічні моменти.

Трохи про Google Gemini

Google Gemini — це потужна мовна модель від Google, яку можна порівняти з ChatGPT, але з кількома приємними «фішками». Найголовніше — у неї відкритий API, тож можна без проблем звертатись до неї з будь-якого застосунку.

Ще мені дуже подобається, що Gemini буває різних версій: є швидкі (Flash) моделі, які миттєво дають відповідь, і є більш «важкі», які працюють трохи повільніше, зате дуже точно і детально. Завдяки цьому можна вибрати, що саме підходить твоєму проєкту — швидкість або точність.

Ще один плюс — Gemini розроблений Google, тому чудово інтегрується з іншими сервісами компанії, що може бути дуже зручно, якщо ти вже працюєш з їхньою екосистемою.

І ще має офіційний npm-пакет, який полегшує роботу з Gemini API. Тобто не потрібно заморочуватись зі складними налаштуваннями — все зроблено просто і зручно.

Саме тому я обрала Gemini для свого проєкту — це поєднання зручності, швидкості та потужності.

AI для новачків: що треба знати

Якщо ви ніколи не працювали з AI або LLM, ось що потрібно знати:

  • Вам не треба бути експертом у машинному навчанні.
  • Ви не тренуєте модель, а звертаєтесь до вже готової через API.
  • Ваша задача — підготувати промпт — текст, який пояснює моделі, що саме ви хочете отримати.
  • AI працює так: ви надсилаєте текст → модель обробляє його → повертає результат.

Простий fetch(), але надзвичайно розумний.

Як запустити цей застосунок

Крок 1. Клонувати репозиторій

git clone https://github.com/KaterynaBabii/ai-gemini-translator.git
cd ai-gemini-translator
npm install

Крок 2. Отримати API-ключ Google Gemini

  1. Зайдіть у Google AI Studio.
  2. Увійдіть у свій Google-акаунт.
  3. Відкрийте розділ «Get API key».
  4. Створіть ключ або використайте існуючий.
  5. Додайте ключ у файл .env в корені проєкту:
REACT_APP_GEMINI_API_KEY=ваш_ключ_тут

Крок 3. Запустити застосунок

npm start

Відкрийте localhost:3000 — і ваш AI-перекладач вже готовий до роботи!

Як це працює всередині

Структура проєкту

src/
├── components/          # UI-компоненти
├── hooks/               # Кастомні хуки (переклад, голос)
├── helpers/             # Запити до Gemini API
└── utils/               # Голосові утиліти

Виклик Gemini API

У файлі src/helpers/index.ts ми ініціалізуємо клієнт:

import { GoogleGenerativeAI } from '@google/generative-ai';
const genAI = new GoogleGenerativeAI(process.env.REACT_APP_GEMINI_API_KEY || '');
const model = genAI.getGenerativeModel({ model: 'gemini-2.5-flash-preview-04-17' });

Потім формуємо промпт для перекладу:

const prompt = `Translate this text from ${sourceLanguage} to ${targetLanguage}: "${inputText}"`;
const result = await model.generateContent(prompt);
return result.response.text();

Які мови підтримуємо

Початково перекладач підтримує 10 мов — вистачить для більшості щоденних задач. Але головне — це те, що ви легко можете розширити список під себе. Вивчаєте японську? А може, хочете тренувати шведську? Просто додайте новий запис у LANGUAGES, і перекладач уже готовий допомагати вам учити нове!

const LANGUAGES = [
   … 
   {code: “sv”, name: “Swedish”}
];

Поради новачкам

  • AI — це не страшно. Справді. Це просто ще один інструмент у вашому розробницькому наборі. Щоб з ним працювати, не потрібно знати математику чи мати PhD з машинного навчання. Якщо ви вмієте писати запити до API — ви вже на півдорозі!
  • Промпт — це спосіб пояснити моделі, чого ви від неї хочете. Чим точніше й зрозуміліше ви це зробите, тим кращу відповідь отримаєте. Пробуйте різні варіанти, змінюйте формулювання — і ви здивуєтесь, наскільки по-різному може реагувати модель.
  • Експериментуйте. Маленькі зміни в тексті промпту можуть суттєво змінити результат. Грайтеся, спостерігайте, тестуйте. Це найкращий спосіб навчитися.
  • Не лякайтесь помилок. Якщо щось не працює — відкрийте консоль браузера. У більшості випадків саме там буде підказка, що пішло не так і як це виправити.
  • Дбайте про безпеку. API-ключі — це приватна інформація. Ніколи не комітьте їх у GitHub або інші публічні репозиторії. Краще винести їх у .env і читати через змінні середовища.

Що далі

Якщо базовий перекладач уже працює — вітаю! Це крутий старт. Але на цьому можна не зупинятись 🙂

Ось кілька ідей, як розширити функціональність і зробити застосунок ще кориснішим:

  • Історія перекладів. Додайте можливість зберігати раніше перекладені фрази, щоб до них можна було швидко повернутись — наприклад, щоб повторити чи використовувати знову.
  • Тональність і стиль. Дайте користувачу вибір: формальний чи неформальний переклад, технічний чи розмовний. Це зробить результат набагато природнішим — особливо в реальних сценаріях, як-от email чи презентації.
  • Пакетний переклад. Хочете перекласти одразу кілька фраз чи абзаців? Чому б не реалізувати це як список або завантаження файлу — зручно і швидко.
  • Офлайн-доступ. Збережіть результати перекладу в локальному кеші, щоб навіть без інтернету можна було побачити останні переклади. Ідеально для подорожей або нестабільного Wi-Fi.
  • AI-словник із лінків. Вставляєте посилання на статтю — застосунок сам читає текст, витягує ключові слова і пропонує вам додати їх до словника для вивчення. Особливо корисно, якщо ви вчите нову мову.
  • Переклад з картинки. Зробіть можливість завантажити зображення з текстом — і AI сам прочитає його, розпізнає і перекладе. Це зручно для вивіски, скриншоту чи інструкцій.

Для хакатону на Devpost я реалізувала саме таку функціональність — проєкт Smart Translation, який не тільки перекладає та озвучує текст у реальному часі, а й зберігає історію, враховує тон повідомлень, має вбудований словник для вивчення слів з можливістю додати приклади, розбирає статті за лінками для вибору слів, а також працює з текстом на зображеннях. Це був класний досвід, і я рада поділитись простим стартом, з якого все починалось.

Чому я це пишу

Я часто бачу, що багато розробників — особливо з фронтенду — бояться підходити до AI. Мовляв, «це для data science», «я ж не ML-інженер», «там усе складно і незрозуміло». А насправді — все не так страшно. Якщо ви вмієте працювати з API й маєте базовий досвід з JavaScript або React, ви вже маєте все, щоб почати.

Цей проєкт — мій спосіб показати, що AI може бути простим, логічним і навіть веселим. Без бекендів, без баз даних, без зайвої магії. Просто ви, браузер і трохи коду.

Для мене це був крок із зони комфорту. AI не був моєю основною спеціалізацією, але чим більше я з ним працюю — тим більше бачу, наскільки це потужний інструмент для розробника. Він не замінює нас — він розширює наші можливості.

Сподіваюся, ця стаття надихне когось зробити свій перший маленький AI-проєкт — просто заради інтересу або щоб протестувати ідею. А далі, повірте, захочеться ще.

Хочеш спробувати?

Якщо вам цікаво, запускайте проєкт, адаптуйте під себе, грайтеся з промптами та діліться враженнями! Мені буде приємно допомогти з питаннями або обговорити ідеї.

Корисні посилання

👍ПодобаєтьсяСподобалось17
До обраногоВ обраному10
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Я часто бачу, що багато розробників — особливо з фронтенду — бояться підходити до AI. Мовляв, «це для data science», «я ж не ML-інженер», «там усе складно і незрозуміло».

Ну напевно коли вони це говорять, то мають на увазі начинки — як працюють ці трансформери, токенізація, трейнінг алгоритми, алгоритми оптимізації та інше, а не про те, як викликати апішку до моделі. Навіть не саму апішку, а як скористатися вже написаним апі клієнтом до моделі))

А гугл перекладач цього перевести не може)))

Так і не зрозумів, на чому оце все запускати: на смартфоні, планшеті, десктопі, сервері чи хмарі? Чомусь опущена тема середовища.

Так, гарне зауваження, це звичайний веб-додаток

Мені трохи сумно читати такі коментарі 🙂 Мета статті була показати прості кроки для тих, хто тільки починає знайомство з AI (використала перекладача як приклад). Для тих, хто вже в темі, у мене є інша стаття dou.ua/forums/topic/54530. (хоча впевнена, що і там знайдуться варіанти для хейту :) )
На коментарі в подібному тоні відповідати не бачу сенсу, краще зосередитися на тих, кому це справді допомогло.

Тут вже писали про цензуру, доповню так як мав «щастя» створювати реалізацію перекладача використовуючи нейронки.

1 — самим оптимальним виявився Claude 3.7 Sonnet (thinking) відносно якості/швидкості/грошей
2 — чим більший контекст для перекладу тим більше шанс що переклад буде «близько по смислу». Але і сильно малий контекст (слово, кілька слів) при складанні назад в речення створює «аліекспресс-мову»
3 — цензура е в кожній доступній по АПІ нейронці, просто в деяких вона не сильно помітна поки не почнеш копати. Відносно Claude, потрібно дуже чітко пописувати промт і перевикористовувати його інакше він на речення по типу «дай мені живу людину» починає ображатися і казати що він нейронка (а не переклад як повинен)
4 — нейронки дуже добре розуміють мати та локальні скорочення (а також меми і жарти) але адекватно перекладають таке не завжди (або взагалі не перекладають). Був випадок з 4o коли жорсткий промт забов’язував зберігати суть і не придумувати зайвого — нейронка тупо викинула пару абзаців які не пройшли цензуру
5 — найкращій переклад коли нейронка завалена тематичним контекстом. Тобто перекладати може і одне речення, але контексту шо описує де і як це речення на пів сторінки. Для автоматизації таке реалізувати складно, але в вузьких системах по типу перекладачів локалізаційних файлів формувати «смисловий контекст оточення» дуже корисна справа і на порядок підвищує якість.

З великими обсягами краще за все працює в режимі порівняння.
Наприклад ми хочемо перекласти Гаррі Поттера нормально с оригіналу (а не так як перевели редактори). Беремо главу оригіналу, перекладену офіційно главу і будуємо покроковий промт який спочатку порівнює дві глави, а потім повертає максимально якісний переклад відносно оригіналу. Чистий переклад нейронки може бути дещо «механічним» або навпаки сильно розмитим якщо вкрутити температуру, а ось переклад від порівняння добре зберігає саму суть і атмосферу

res.cloudinary.com/...​/buo2kvxmfbgwbbmy5tcw.png Що б запустити це що ви написали не потрібне знання програмування?

Коментар порушує правила спільноти і видалений модераторами.

я завдяки авторці знайшов простіше рішення, для цього потрібен просто ключ api від гугл студіо і все.нехейчу я

Якщо треба текст то Argos Translate на пітон робить це офлайн і без gpu. Для голосу треба whisper і 12 ГБ ГПУ.

Чудова стаття! Дякую, Катерино.

Жодного бекенду
const genAI = new GoogleGenerativeAI(process.env.REACT_APP_GEMINI_API_KEY || ’’);

Пані, наскільки безпечно використовувати АПІ ключ до Gemini на фронтенді?

Гарне питання! API-ключ не можна зберігати у фронтенді(навіть у .env) Але для того щоб локально зарадити і спробувати різні промпти, то можна.

Коментар порушує правила спільноти і видалений модераторами.

Як створити AI-перекладач
Я часто бачу, що багато розробників — особливо з фронтенду — бояться підходити до AI. Мовляв, «це для data science», «я ж не ML-інженер», «там усе складно і незрозуміло». А насправді — все не так страшно. Якщо ви вмієте працювати з API й маєте базовий досвід з JavaScript або React, ви вже маєте все, щоб почати.

Перейменуйте статтю на «Ефект Даннінга-Крюгера на прикладі фронтенд розробки».
Ви не створили ШІ-перекладач, ви створити веб-інтерфейс для АПІ певного вендора. І в такій постановці задачі вона не сильно відрізняється від інших УІ для АПІ. Ви не робите жодного функціоналу пов’язаного з ШІ.

Наприклад, не ясно як ваш «перекладач» забезпечує якість перекладу. Нещодавно в одному чаті людина звернула увагу, що відгуки до бізнесів/закладів в пошуку гугла бувають беззмістовними (там іноді зовсім шиза). Виявилось, що ті фідгуки «автоматично перекладені» і там просто зникли деякі речення.
Схожу проблеми відмічали декілька людей, що займаються перекладом: ШІ може змінювати суть тексту.
І от якраз щоб зрозуміти чому так відбувається і завжди буде відбуватись, уже треба спеціальні знання, а не просто Реакт і прочитати доку до АПІ.
Щоб зрозуміти як це можна автоматично виправляти (знову ж з певною ймовірністю) уже треба оте все що ви стпростовуєте. Особливо, коли піде питання ціни.

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

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

А ще я не стрибав на 1 нозі.
Якщо у вас є твердження по темі коментаря, радо вислухаю. Але якби вони були, то ви б напевне їх і так сказали.

Можу порекомендувати почитати попередню статтю про чат бот, або написати кращу статтю ;)

Знову ж дуже конструктивна відповідь. Особливо зрілу особистість і професіонала видають аргументи в стилі «написати кращу статтю». Давайте проведу вас за руку, к школярку:
1) Якщо я не написав чи не можу кращу статтю? Як це спростує помилковість ваших тверджень та некомпетентність? Що це доведе?
2) Якщо я напишу кращу статтю? Це буде доводити що?

Наприклад, не ясно як ваш «перекладач» забезпечує якість перекладу. Нещодавно в одному чаті людина звернула увагу, що відгуки до бізнесів/закладів в пошуку гугла бувають беззмістовними (там іноді зовсім шиза). Виявилось, що ті фідгуки «автоматично перекладені» і там просто зникли деякі речення.

Якщо таке буде помічено, то це завжди можна буде поправити шляхом покращення промпта до ШІ наступною фразою: Please, do not remove any sentenses from the provided text to avoid losing context 😅

А як обійти цензуру?
Ось приклад з точно таким запитом та перекладом через google translate
res.cloudinary.com/...​/ueapzhk5oxhl9vdfgwym.png

Мій коментар вище був, радше, жартівливий.

Щодо цензури — здається у Gemini її не вийде обійти.

Але якщо спробувати в AI Studio, то результату досягти можна:

Gemini Pro змогла перекласти хейт спіч, але Gemini Flash — ні. Думаю, що в майбутньому це виправлять.

Сьогодні знайшов цікаву пісню та попрохав GoogleAi розширити куплети, виявилося, що воно дуже спроможне до хейт спічу .

Поки модель на вас ще не донесла в поліцію спробуйте не читу фразу ненависті, а якусь цитату з расистську 19-20 сторіччя.

Я приклад не надам, бо поки не знаю де шукати і не хочу, щоб мене теж зарепортили в поліцію :)

Доречі 👨🏿, ви колись гуглили 1992 space movie ?

Якщо таке буде помічено, то це завжди можна буде поправити шляхом покращення промпта до ШІ наступною фразою: Please, do not remove any sentenses from the provided text to avoid losing context.

А потім треба ще додати «пазязя» :)
І схоже ви не дивились код, бо там вже є «Provide only the translation, no explanations or additional text». Скоріше за все ТС все ж наштовхнулась на схожу проблему, але вирішення таке собі.
Ваш промт дещо краще, бо він хоча б адресує конкретну проблему. Але при цьому у нас не може бути впевненості, що він спрацює, особливо на складних текстах або на великих об’ємах. Ми тут ще йдемо до цікавої теми, що краще «do not remove» чи «keep», «Please» чи «You should/must». Якщо у кого є матеріали на цю тему, то кидайте.

Та і ключова проблема, що

Експериментуйте. Маленькі зміни в тексті промпту можуть суттєво змінити результат.

Треба доповнювати «на деякий час, для деяких умов». Ваш чудо промт може просто перестати працювати так як ви очікували

А потім треба ще додати «пазязя» :)

А ви знаєте кращий підхід? Кожен окремий випадок потребуватиме оновлень в промпті. Наперед передбачити всіх потенційних проблем неможливо, як і неможливо передбачити поведінку користувача. На живому проекті, який надає користувачам доступ до функціоналу підсиленому ШІ, важливішим буде захендлити нову проблему із самим користувачем, ніж наперед намагатися втулити в промпт слова, які, в теорії, мають не допустити появу ефемерних проблем.

Але, очевидно, проблеми будуть індивідуальні в залежності від цілей використання ШІ. Для деяких проектів і їх цілей проблем із ШІ може взагалі не бути.

А ви знаєте кращий підхід?

Підхід — ні. Я б робив приблизне те що ви запропонували, але я і не спеціаліст в темі.

Кращу надійність можна спробувати досягнути
— «мультиплікацією зусиль», умовно 2 рази просити перекласти;
— додати промт «провалідуй, що текст Х1 є перекладом Х2»;
— перекладати по реченню;
— просити повертати не лише текст перекладу, а і ще якість метрики (тут треба знати хоча б які існують :) )

Але це рішення не спеціаліста, саме тому

«це для data science», «я ж не ML-інженер», «там усе складно і незрозуміло»

Та і стаття, що описує пошук такого рішення, більше б відповідала темі «Як створити AI-перекладач ...». Та і технічно той же гугл транслейт наче теж ШІ, просто не ЛЛМ.

Побуду трохи адвокатом. Мені здається, ви трохи не так зрозуміли сенс цієї статті. А сенс вкладається в питання «З чого почати?», «Як спробувати AI, якщо ти звичайний розробник без досвіду в ML?» в третьому абзаці. Часто зустрічаю сильних спеціалістів, які чомусь максимально відгороджуються від AI з типовим коментарем «я спробував/ла ваш гпт 2 роки дому, він зробив якусь хрінь, тому ШІ для мене не працює». Іноді доводиться проводити окремі тренінги для команд з демонстрацією того, які відкриваються можливості та який буст до перформансу може додати ШІ. І ось такі нескладні практичні таски, типу створити mvp з мінімальним залученням якогось ші-інструменту чи апі, відчиняють двері до більш серйозних експериментів та опановування нового домену

Бодя задрот що приходить сюди сратись, пофіг яка тема :-)

А сенс вкладається в питання «З чого почати?», «Як спробувати AI, якщо ти звичайний розробник без досвіду в ML?» в третьому абзаці

Чудово. А тепер розкажіть як ви з описаного в татті передете до:

демонстрацією того, які відкриваються можливості та який буст до перформансу може додати ШІ.

Чому б для такої задачі не почати з банального використання чатГПТ для пошуку відповідей або підключити копайлот?
Як дроч з Реактом та ігерацією з АПІ має стимулювати чи допомогти зрозуміти як користуватись ШІ-асисетнами?

Є принаймні 3 принципово різних сфери:
— використання ШІ-інструментів для розробки
— інтеграція з ШІ АПІ
— розробка власне ШІ

Досвід між ними не дуже переноситься.

Підписатись на коментарі