Проект для практики и тестирования словарного запаса с использованием Google Gemini CLI.
Этот скрипт на Bash помогает лучше запоминать слова целевого языка с учётом контекста. Он берёт слово из файла, с помощью Gemini API генерирует предложение с ним, а затем проверяет ваш перевод этого слова в данном контексте.
Может быть легко использован для любой пары языков (целевой-нативный), путём замены всего двух строковых переменных в скрипте (по умолчанию там выставлено целевой язык - английский, нативный - русский).
- Добавить возможность озвучки составленных предложений:
- Через бесплатный облачный сервис.
- Добавить опциональную возможность озвучки составленных предложений при помощи локального голосового движка.
- Использовать локальное кеширование для уже составленных предложений (реализовано с помощью базы данных SQLite).
- Добавить использование цветных фрагментов текста в консоли.
- Сделать отдельный конфигурационный файл с настройками.
- Добавить возможность пользователю указать его уровень языка засчёт дополнительного промпта (может быть полезно, если его уровень низкий, и пользователь использует список слов начального уровня).
- Генерация предложений с заданными словами.
- Проверка перевода слова в контексте предложения.
- Возможность запросить несколько разных контекстов для одного слова.
- Логирование сессии в файл.
Linux,MacOS, прочая линуксоподобная ОС или линуксовая командная строка на винде (WSL'ом вроде зовётся). Или дажеAndroid(инструкция ниже)bashnodejsверсии 18 или выше иnpm@google/gemini-clisqlite3иjq(для локального кеширования предложений)mpv(для озвучки составленных предложений по запросу)
-
Клонируйте репозиторий:
git clone https://github.com/Antony-hash512/Language_learning_helpers cd Language_learning_helpers -
Установите
nodejsиnpm:Для Arch Linux вы можете установить их с помощью следующей команды. Это потребует прав суперпользователя (root).
sudo pacman -S nodejs npm
Для других дистрибутивов используйте соответствующий менеджер пакетов.
-
Установите Google Gemini CLI:
npm install -g @google/gemini-cli
В зависимости от вашей конфигурации
npm, эта команда может потребовать повышения привелегий примощиsudo(илиdoas). Но можно и безsudo/doasнастроить запуск командыgeminiиспользуя дотфайлы текущего пользователя: Для этого нужно выполнить:mkdir -p ~/.npm-global npm config set prefix '~/.npm-global'И добавить
~/.npm-global/binв переменную окруженияPATH. Дляbashможно добавить в файл~/.bashrcили~/.zshrcследующую строку:export PATH="$HOME/.npm-global/bin:$PATH"
Для
fishможно добавить в файл~/.config/fish/config.fishили в любой файл в~/.config/fish/conf.d/и добавить туда следующую строку:fish_add_path ~/.npm-global/bin
или
set -x PATH "$HOME/.npm-global/bin $PATH"
-
Аутентификация gemini-cli:
Запустите
geminiв первый раз, чтобы войти в свою учетную запись Google.gemini
Следуйте инструкциям в терминале и браузере.
Помимо авторизации через браузер, можно использовать ключ API. Но опытным путём я установил, что при авторизации через браузер лимиты на использование API значительно выше. Поэтому только в крайних случаях я рекомендую использовать авторизацию по ключу, например при запуске на голом
ttyи для скриптов в полностью автономных системах.Для использования ключа API можно использовать переменную окружения
GEMINI_API_KEY. Для этого нужно добавить в файл~/.bashrcили~/.zshrcследующую строку:export GEMINI_API_KEY=<ваш_ключ>
Для
fishможно создать любой файл в~/.config/fish/conf.d/и добавить туда следующую строку:set -x GEMINI_API_KEY <ваш_ключ>
Замените
<ваш_ключ>на ваш реальный ключ. Получить ключ можно здесь: https://aistudio.google.com/apikey -
Сделайте скрипт исполняемым (если он таковым не является):
chmod +x words_testing.sh
-
Установите
sqlite3,jqиmpv(если они не установлены):Для Arch Linux вы можете установить их с помощью следующей команды. Это потребует прав суперпользователя (root). Хотя в большинстве случаев они уже установлены по умолчанию.
sudo pacman -S sqlite jq mpv
Для других дистрибутивов используйте соответствующий менеджер пакетов.
-
Установите
Termux:Для установки
Termuxможно использоватьF-DroidилиAurora Store. Дайте разрешение на установку из источника из которого полученF-DroidилиAurora Store, установитеTermuxи запустите его. Для общесистемного буфера обмена можно также установитьTermux:API. -
Установите нужные пакеты:
pkg update pkg install nodejs sqlite git mpv
-
При желании можно установить
fish, а также любой текстовый редактор напримерvim,neovim,nanoилиmicro:pkg install fish
pkg install vim
pkg install neovim
pkg install nano
pkg install micro
-
Установите
gemini-cli:npm install -g @google/gemini-cli
После чего авторизуйтесь как описано в разделе Аутентификация gemini-cli т.е. лучше всего через браузер.
-
Клонируйте репозиторий:
mkdir -p ~/git cd ~/git git clone https://github.com/Antony-hash512/Language_learning_helpers cd Language_learning_helpers
-
Сделайте скрипт исполняемым (если он таковым не является):
chmod +x words_testing.sh
-
Запустите скрипт:
./words_testing.sh
Перед запуском скрипта необходимо создать файл words.txt в корневой директории проекта. Этот файл должен содержать слова, которые вы хотите изучить (повторить или закрепить их различные значения в памяти).
Формат файла:
- Одно слово на строку.
- Пустые строки игнорируются.
- Можно добавлять фразовые глаголы или идиомы с пробелами.
Пример words.txt:
ubiquitous
ephemeral
serendipity
cacophony
juxtaposition
meticulous
run out of
break down
get along with
piece of cake
it's raining cats and dogs
Файл example-words.txt находится в репозитории для примера. По-умолчанию же скрипт подхватывает файл words.txt или тот, который передан в качестве аргумента.
./words_testing.sh another-file.txt-
Стандартный запуск (использует
words.txt):./words_testing.sh
-
Использование другого файла со словами:
./words_testing.sh my_words_file.txt
-
Включение логирования:
Чтобы записать всю сессию в лог-файл, используйте ключ
--log. Логи сохраняются в директориюlogs/../words_testing.sh --log
После проверки вашего перевода скрипт ожидает ввода команды. Вы можете использовать как кириллические, так и латинские алиасы.
с/n- перейти к следующему словук/k- запросить другой контекст для текущего словап/t- показать различные варианты перевода данного предложенияо/o- озвучить предложениер/r- повторить предложениел/l- включение/отключение логированияв/q- выйти из скрипта
Данные файлы появятся после работы скрипта.
sentences_cache.sqlite- локальная база данных SQLite, в которой хранятся уже составленные предложения для предотвращения повторного составления одних и тех же предложений.logs/- директория, в которой хранятся логи сессии.mistakes.txt- файл, в который скрипт сортирует слова, с которыми вы ошибались при переводе.no_mistakes.txt- файл, в который скрипт сортирует слова, которые вы перевели без ошибок.