Skip to content

Antony-hash512/Language_learning_helpers

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

66 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Проект для практики и тестирования словарного запаса с использованием Google Gemini CLI.

Описание

Этот скрипт на Bash помогает лучше запоминать слова целевого языка с учётом контекста. Он берёт слово из файла, с помощью Gemini API генерирует предложение с ним, а затем проверяет ваш перевод этого слова в данном контексте.

Может быть легко использован для любой пары языков (целевой-нативный), путём замены всего двух строковых переменных в скрипте (по умолчанию там выставлено целевой язык - английский, нативный - русский).

TODO:

  • Добавить возможность озвучки составленных предложений:
    • Через бесплатный облачный сервис.
    • Добавить опциональную возможность озвучки составленных предложений при помощи локального голосового движка.
  • Использовать локальное кеширование для уже составленных предложений (реализовано с помощью базы данных SQLite).
  • Добавить использование цветных фрагментов текста в консоли.
  • Сделать отдельный конфигурационный файл с настройками.
  • Добавить возможность пользователю указать его уровень языка засчёт дополнительного промпта (может быть полезно, если его уровень низкий, и пользователь использует список слов начального уровня).

Возможности

  • Генерация предложений с заданными словами.
  • Проверка перевода слова в контексте предложения.
  • Возможность запросить несколько разных контекстов для одного слова.
  • Логирование сессии в файл.

Требования

  • Linux, MacOS, прочая линуксоподобная ОС или линуксовая командная строка на винде (WSL'ом вроде зовётся). Или даже Android (инструкция ниже)
  • bash
  • nodejs версии 18 или выше и npm
  • @google/gemini-cli
  • sqlite3 и jq (для локального кеширования предложений)
  • mpv (для озвучки составленных предложений по запросу)

Установка

  1. Клонируйте репозиторий:

    git clone https://github.com/Antony-hash512/Language_learning_helpers
    cd Language_learning_helpers
  2. Установите nodejs и npm:

    Для Arch Linux вы можете установить их с помощью следующей команды. Это потребует прав суперпользователя (root).

    sudo pacman -S nodejs npm

    Для других дистрибутивов используйте соответствующий менеджер пакетов.

  3. Установите 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

  1. Аутентификация 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

  2. Сделайте скрипт исполняемым (если он таковым не является):

    chmod +x words_testing.sh
  3. Установите sqlite3, jq и mpv (если они не установлены):

    Для Arch Linux вы можете установить их с помощью следующей команды. Это потребует прав суперпользователя (root). Хотя в большинстве случаев они уже установлены по умолчанию.

    sudo pacman -S sqlite jq mpv

    Для других дистрибутивов используйте соответствующий менеджер пакетов.

Установка на Android

  1. Установите Termux:

    Для установки Termux можно использовать F-Droid или Aurora Store. Дайте разрешение на установку из источника из которого получен F-Droid или Aurora Store, установите Termux и запустите его. Для общесистемного буфера обмена можно также установить Termux:API.

  2. Установите нужные пакеты:

    pkg update
    pkg install nodejs sqlite git mpv
  3. При желании можно установить fish, а также любой текстовый редактор например vim, neovim, nano или micro:

    pkg install fish
    pkg install vim
    pkg install neovim
    pkg install nano
    pkg install micro
  4. Установите gemini-cli:

    npm install -g @google/gemini-cli

    После чего авторизуйтесь как описано в разделе Аутентификация gemini-cli т.е. лучше всего через браузер.

  5. Клонируйте репозиторий:

    mkdir -p ~/git
    cd ~/git
    git clone https://github.com/Antony-hash512/Language_learning_helpers
    cd Language_learning_helpers
  6. Сделайте скрипт исполняемым (если он таковым не является):

    chmod +x words_testing.sh
  7. Запустите скрипт:

    ./words_testing.sh

Настройка файла words.txt

Перед запуском скрипта необходимо создать файл 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

Файл 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 - файл, в который скрипт сортирует слова, которые вы перевели без ошибок.

About

Next-gen в мире скриптов для изучения иностранных языков, использующих api БЯМов прямо внутри себя

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages