https://github.com/beatwad/xx_auto_jobs_applier
XX_Auto_Jobs_Applier это приложение для автоматизации поиска работы на сайте hh.ru. Оно использует искусственный интеллект, что позволяет пользователю откликаться на множество вакансий, отвечать на вопросы и писать сопроводительные письма в автоматическом режиме, учитывая при этом интересы и резюме пользователя, а также особенности вакансии
https://github.com/beatwad/xx_auto_jobs_applier
ai application-resume automation bot chrome claude cover-letter gpt hh-ru huggingface human-resources job jobs jobsearch openai python python3 resume scraper selenium
Last synced: 6 months ago
JSON representation
XX_Auto_Jobs_Applier это приложение для автоматизации поиска работы на сайте hh.ru. Оно использует искусственный интеллект, что позволяет пользователю откликаться на множество вакансий, отвечать на вопросы и писать сопроводительные письма в автоматическом режиме, учитывая при этом интересы и резюме пользователя, а также особенности вакансии
- Host: GitHub
- URL: https://github.com/beatwad/xx_auto_jobs_applier
- Owner: beatwad
- License: other
- Created: 2024-11-02T09:28:28.000Z (12 months ago)
- Default Branch: master
- Last Pushed: 2024-11-09T19:52:00.000Z (11 months ago)
- Last Synced: 2024-11-09T20:31:02.219Z (11 months ago)
- Topics: ai, application-resume, automation, bot, chrome, claude, cover-letter, gpt, hh-ru, huggingface, human-resources, job, jobs, jobsearch, openai, python, python3, resume, scraper, selenium
- Language: Python
- Homepage:
- Size: 315 KB
- Stars: 6
- Watchers: 3
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
![]()
# XX Auto Jobs Applier
[](https://github.com/beatwad/XX_Auto_Jobs_Applier/blob/master/LICENSE) [](https://github.com/beatwad/XX_Auto_Jobs_Applier/issues)
**🤖🔍 Ваш ИИ помощник в поиске работы. Ищите и откликайтесь только на интересные вам вакансии в полностью автоматическом режиме и найдите работу своей мечты быстрее.**
## Внимание
Этот проект является форком проекта [AIHawk](https://github.com/feder-cr/Auto_Jobs_Applier_AIHawk), также предназначенного для автоматизации поиска работы (на LinkedIn).
Если вас интересует поиск работы именно на LinkedIn, советую приглядеться к AIHawk.## 🚀 По всем вопросам рекомендую обращаться в тематический телеграм чат 🚀
### XX Auto Jobs Applier Chat 👇
[](https://t.me/xx_auto_job)## Содержание
1. [Введение](#Введение)
2. [Особенности](#Особенности)
3. [Установка](#Установка)
4. [Настройка](#Настройка)
5. [Использование](#Использование)
6. [Проблемы](#Проблемы)
8. [Лицензия](#Лицензия)
9. [Предупреждение](#Предупреждение)## Введение
XX_Auto_Jobs_Applier — передовой автоматизированный инструмент, предназначенный для автоматизации поиска и подачи заявок на работу на сайте **hh.ru**. Используя мощь искусственного интеллекта, XX_Auto_Jobs_Applier дает возможность пользователям в автоматическом режиме подавать заявки на огромное количество интересующих их вакансий, увеличивая свои шансы получить работу мечты.
## Иными словами
Вам больше не нужно тратить бесчисленное количество времени на вычитывание и прокликивание всех интересующих вас вакансий. XX_Auto_Jobs_Applier сам найдет интересующие вас предложения, учитывая при этом как текст вакансии, так и текст вашего резюме и дополнительную информацию о вас и ваших интересах. Далее XX_Auto_Jobs_Applier сам откликнется на данное предложение, а также ответит на все сопутствующие вопросы работодателя и приложит сопроводительное письмо, написанное с учетом требований вакансии и содержимого вашего резюме.
## Особенности
1. **Автоматизация поиска**
- Возможность настройки поиска под интересующие вас вакансии
- Настройка фильтров для исключения неподходящих вакансий и работодателей2. **Быстрая и эффективная подача резюме**
- Запуск приложения одной командой
- Автозаполнение всех необходимых работодателю форм и вопросов
- Написание сопроводительных писем в автоматическом режиме
- Есть возможность использовать одно готовое сопроводительное письмо для всех вакансий3. **AI персонализация**
- Приложение само отвечает на все интересующие работодателя вопросы
- Сопроводительное письмо пишется с учетом требований вакансии и содержания резюме
- Если в описании вакансии работодатель просит ответить на вопросы или указать ключевые слова, приложение это учтет4. **Мониторинг работы приложения**
- Все действия и ошибки логируются
- Все обращения к AI также логируются + записывается стоимость каждого обращения
- Все вакансии и должности, на которые производился отклик, и результат каждого отклика также записываются в соответствующие файлы5. **Безопасная обработка данных**
- Все приватные данные хранятся локально в YAML файлах## Установка
**Работа приложения проверялась на следующих конфигурациях:**
- ОС:
- Windows 10
- Ubuntu 22
- Версии Python:
- 3.12.0(64b)
- 3.12.7(64b)
- LLM:
- OpenAI GPT-4o mini1. **Скачайте и установите Python:**
Убедитесь, что у вас установлена последняя версия Python. Если нет, загрузите и установите ее с официального сайта Python. Подробные инструкции см. в руководствах (на инглише):
- [How to Install Python on Windows](https://www.geeksforgeeks.org/how-to-install-python-on-windows/)
- [How to Install Python on Linux](https://www.geeksforgeeks.org/how-to-install-python-on-linux/)
- [How to Download and Install Python on macOS](https://www.geeksforgeeks.org/how-to-download-and-install-python-latest-version-on-macos-mac-os-x/)2. **Скачайте:**
- Приложения заточено под работу с Google Chrome, поэтому скачайте и установите последнюю версию с [официального сайта](https://www.google.com/chrome).3. **Клонируйте репозиторий:**
```bash
git clone https://github.com/beatwad/XX_Auto_Jobs_Applier.git
cd XX_Auto_Jobs_Applier
```
В случае Windows перед выполнением этой команды возможно потребуется установить Git. Найти его можно по [этой ссылке](https://git-scm.com/downloads/win)4. **Активируйте виртуальное окружение**
```bash
python3 -m venv virtual
``````bash
source virtual/bin/activate
```для Windows нужно зайти в терминал (Win + R -> в появившемся окне ввести cmd, затем Enter):
```bash
.\virtual\Scripts\activate
```5. **Установите все необходимые пакеты:**
```bash
pip install -r requirements.txt
```## Настройка
Основные файлы для настройки лежат в папке data_folder.
В папке data_folder_example лежат примеры файлов для настройки
### 1. data_folder/secrets.yaml
Этот файл содержит важную информацию. Никогда не делитесь им ни с кем и не делайте этот файл отслеживаемым системой контроля версий.
**Совет**: можно сделать данный файл неотслеживаемым для Git при помощи команды `git update-index --assume-unchanged data_folder/secrets.yaml` или же удалить его из списка остлеживаемых при помощи команды `git rm --cached data_folder/secrets.yaml`
- `llm_api_key: [Ваш API ключ OpenAI или Ollama или Gemini]`
- Для получения API ключа у OpenAI прочитайте эту статью или загуглите аналоги на русском:
- Важно: Чтобы использовать API, нужно пополнить баланс счета. Для этого нужно зайти в [OpenAI billing dashboard](https://platform.openai.com/account/billing).
- Согласно [сообществу OpenAI](https://community.openai.com/t/usage-tier-free-to-tier-1/919150), сразу после настройки учетной записи OpenAI и покупки необходимых кредитов, пользователи по-прежнему имеют тип учетной записи `Free`. Это не позволяет им иметь неограниченный доступ к моделям OpenAI и позволяет делать только 200 запросов в день. Это может привести к ошибкам во время выполнения, таким как:
`Error code: 429 - {'error': {'message': 'You exceeded your current quota, please check your plan and billing details. ...}}` или
`{'error': {'message': 'Rate limit reached for gpt-4o-mini in organization on requests per day (RPD): Limit 200, Used 200, Requested 1.}}`
OpenAI автоматически обновит вашу учетную запись, но это может занять некоторое время, от пары часов до нескольких дней. Подробнее об ограничениях вашей организации можно узнать на [официальной странице](https://platform.openai.com/settings/organization/limits).
- Также пользователи из России скорее всего (обязательно) встретятся с этой ошибкой:
`Error code: 403 - {'error': {'code': 'unsupported_country_region_territory', 'message': 'Country, region, or territory not supported'...}}`
Что тут можно сказать, включите VPN, выберите любую европейскую страну или США/Канаду, и будет вам счастье.
- Для получения ключа API Gemini посетите [Google AI for Devs](https://ai.google.dev/gemini-api/docs/api-key)### 2. data_folder/search_config.yaml
Этот файл содержит в себе настройки поиска вакансий.
За исключением полей job_title, login и job_blacklist настройки этого файла повторяют настройки поиска на hh.ru, поэтому углубляться мы в них не будем (к тому же там все закомментировано). Рассмотрим только:- `job_title:`
- Должность, на которую вы претендуете, самое важное поле. Нужно, чтобы на hh.ru было резюме, которое называлось ровно также, как эта переменная- `login:`
- Собственно логин, под которым вы входите на hh.ru (может быть телефон или email)- `job_blacklist:`
- Список компаний, на вакансии которых не откликаемсяВсе поля, которые обязательно должны быть в файле, помечаются в файле в комментариях как `обязательное поле`.
Все поля, которые могут принимать только одно значение true, помечаются в файле в комментариях как `может принимать только одно значение true` .
### 3. data_folder/structured_resume.yamlЭтот файл содержит в себе резюме пользователя в структурированном виде. Этот файл должен быть заполнен вашими персональными данными, информацией об образовании,
опыте, навыкам, зарплатным ожиданиям и т.д. Эта информация используется для написания сопроводительных писем, а также для ответов на вопросы работдателя.
Информация из этого файла должна совпадать или дополнять информацию из вашего резюме на сайте hh.ru.Каждая секция имеет специфические поля. За редким исключением, любое поле в любой секции может быть не заполнено, более того, большинство секций можно оставить абсолютно пустыми.
Но чем больше информации о себе вы напишете, чем лучше LLM будет в последствии отвечать на вопросы.
Если какая-то секция или какое-то поле не может быть пустым (например Имя/Фамилия или зарплатные ожидания) - приложение само сообщит вам об этом, выдав соответствующую ошибку.- `personal_information:` В этой секции хранится ваша личная информация + контакты
- **name**: Имя.
- **surname**: Фамилия.
- **date_of_birth**: Дата рождения.
- **country**: В какой стране живете в данным момент.
- **city**: В каком городе живете в данный момент.
- **phone**: Телефон.
- **email**: Адрес вашей электронной почты.
- **github**: Ссылка на ваш github.
- **linkedin**: Ссылка на ваш LinkedIn.
- **personal_site**:- Пример
```yaml
personal_information:
name: Иван
surname: Иванов
date_of_birth: 15.07.1995
country: Россия
city: Москва
phone: 89098765432
email: ivan_ivanov@gmail.com
telegram: ivanov95
github: https://www.github.com/ivanov95/
linkedin: https://www.linkedin.com/in/ivan-ivanov-f3e57c712/
personal_site: https:/ivan-ivanov.ru
```- `legal_authorization:` - В каких странах есть разрешение на работу
- **countries**: Список стран- Пример
```yaml
legal_authorization:
- countries:
- Россия
- Беларусь
```- `work_preferences:` Кем бы вы хотели работать и какие условия работы предпочитаете
- **position**: На какой позиции хотели бы работать
- **specialization**: Какая у вас специальность
- **job_type**: Предпочитаемый тип занятости: полная занятость, частичная занятость, стажировка, разовое задание и т.д.
- **work_schedule**: Предпочитаемый рабочий график: полный день, удаленная работа, гибкий график, вахтовый и т.д.
- **travel_time_to_work**: Время, которое вы готовы тратить на работу
- **ready_to_business_trips**: Готовы ли вы к командировкам и если да, то как часто
- **relocation**: Есть ли возможность и желание релоцироваться- Пример:
```yaml
work_preferences:
position: Python разработчик
specialization: Программист, разработчик
job_type: Полная занятость, частичная занятость
work_schedule: Полный день, Удаленная работа
travel_time_to_work: Не более часа
ready_to_business_trips: Иногда
relocation: Могу переехать
```- `education_details:` Список, образований и курсов, которые вы получали/проходили
- **education_level**: Уровень образования (высшее, неоконченное высшее, среднее, курсы)
- **institution**: Название учебного заведения (если есть)
- **faculty**: Название факультета (если есть)
- **company**: Название компании (если есть)
- **specialization**: На какую специальность учились
- **year_of_completion**: Год завершения
- Пример:
```yaml
education_details:
- education_level: Высшее
institution: Московский Государственный Институт
faculty: ВМК (Высшая Математика и Кибернетика)
company:
specialization: Фундаментальная информатика и информационные технологии
year_of_completion: 2019- education_level: Курсы
institution:
faculty:
company: Яндекс Практикум
specialization: Python разработчик
year_of_completion: 2021
```- `experience_details:` Cколько лет общего опыта в индустрии + где работали и чего добились
- **total_experience**: Сколько лет общего опыта
- **grade**: Ваш уровень (intern, junior, middle, senior, team lead и т.д.)
- Список мест работы:
- **position**: На какой позиции работали
- **company**: Имя компании
- **employment_period**: С какого по какое работали
- **industry**: В какой индустрии/сфере работали
- **key_responsibilities**: Чем занимались/за что отвечали
- пункт_1
- пункт_2
- ...
- **achievements**: Ваши достижения на этой позиции
- пункт_1
- пункт_2
- ...
- **skills_acquired**: Какие навыки приобрели
- пункт_1
- пункт_2
- ...
- **technoligies**: Какие технологии использовали
- пункт_1
- пункт_2
- ...- Пример:
```yaml
experience_details:
- total_experience: 4 года
- position: Python разработчик
company: ООО «Horns & Hooves»
employment_period: Август 2022 — настоящее время
industry: Веб-разработка
key_responsibilities:
- responsibility_1: Разработка веб-платформы для промо-кампании
- responsibility_2: Разработка телеграм-бота для промо-кампании
achievements:
- Организовал структуру проекта
- Cоздал посадочную страницу на React, обеспечивающую UX/UI-оптимизацию и взаимодействие с пользователем
- Интегрировал API Яндекс Карт
- Ускорил деплой на 10 минут благодаря Git + Docker-compose
- Настроил веб-сервер при помощи Nginx и Сertbot
skills_acquired:
- Веб-разработка
- Автоматическое тестирование
technoligies:
- Python
- Django REST Framework
- React
- RabbitMQ
- Redis
- PostgreSQL
- Aiogram
- Unit tests- position: Python разработчик
company: ПилРос
employment_period: Сентябрь 2020 — Июнь 2022
industry: Веб-разработка
key_responsibilities:
- responsibility_1: Разработка телеграм-бота на Aiogram для взаимодействия с клиентами
- responsibility_2: Сайт-сборник проектов на Django
achievements:
- Разработал базу данных для хранения и обновления рабочего расписания
- Внедрил систему мгновенных уведомлений, позволяющую оповещать клиентов об изменениях в заказах в режиме реального времени
- Внедрил асинхронную обработку чеков API Федеральной налоговой службы
- Интегрировал API Яндекс Карт и Яндекс Погоды
skills_acquired:
- UI design
technoligies:
- Python
- Django
- React
- Redis
- PostgreSQL
- Aiogram
- REST API
- Unit tests
- UI design
```- `projects:` Какие проекты вы сделали, их описание и ссылки
- **name**: Имя проекта.
- **description**: Краткое описание проекта.
- **link**: Ссылка на проект.- Пример:
```yaml
projects:
- name: Client Interaction Telegram Bot
description: Телеграм-бот на Aiogram для взаимодействия с клиентами
link: https://www.github.com/ivanov95/client_int_bot.git- name: mqtt-packet-parser
description: Модуль Node.js для анализа пакетов MQTT, эффективность анализа повышена на 40%
link: https://www.github.com/ivanov95/mqtt_packet_parser.git
```- `availability:` Как скоро вы готовы приступить к работе
- **notice_period**: Сколько времени вам нужно, чтобы выйти на новую работу- Пример:
```yaml
availability:
notice_period: 2 недели
```- `salary_expectations:` Ожидания по зарплате
- **salary_range**: Размер/вилка по зарплате, которая вас устроит- Пример:
```yaml
salary_expectations:
salary_range: от 200000 до 400000 руб
```- `certifications:` Есть ли у вас какие-то сертификаты, пройденные тесты или сданные экзамены по специальности
- сертификат_1
- сертификае_2
- тест_1
- ...- Пример:
```yaml
certifications:
- Certified Python Developer
- Django Certified Solutions Architect
```- `languages:` Какими языками и насколько хорошо вы владеете
- **language**: Язык
- **proficiency**: Уровень владения (базовый, средний, продвинутый, свободно).- Пример:
```yaml
languages:
- language: Русский
proficiency: Свободно
- language: Английский
proficiency: Средний
```- `interests:` Расскажите о ваших профессиональных или личных интересах, которые могут помочь вам в работе
- интерес_1
- интерес_2
- ...- Пример:
```yaml
interests:
- Чат-боты
- Машинное обучение и искусственный интеллект
- Computer Vision/CV/Компьютерное зрение
- Natural language processing/NLP/Обработка естественного языка
- Кибербезопасность
- Antifraud/Выявление мошеннических действий
```- `achievements:` Расскажите о ваших профессиональных и личных достижениях, которые могут создать благоприятное впечатление о вас у работодателя
- **name**: Название достижения
- **description**: Описание достижения- Пример:
```yaml
achievements:
- name: Победитель хакатона
description: Занял первое место в хакатоне IT Inno Hack 2023
- name: Создатель популярного проекта mqtt-packet-parser
description: Проект mqtt-packet-parser собрал более 300 звезд на GitHub
```- `previous_job_details:` Расскажите о своем опыте на предыдущей работе
- **why_leave_previous_job**: Почему ушли/уходите с предыдущей работы
- **team**: Как сложились ваши взаимоотношения с командой на предыдущей работе
- **boss**: Как сложились ваши взаимоотношения с начальством на предыдущей работе- Пример:
```yaml
previous_job_details:
why_leave_previous_job: На предыдущей работе не устраивало отсутствие карьерного роста и интересных задач.
team: Коллектив на предыдущей работе был дружный. Все помогали друг другу и поддерживали в трудные моменты. Рабочий процесс был комфортным, а рабочая атмосфера была позитивной и доброжелательной.
boss: Отношения с начальством были хорошие, когда возникали трудности, мне всегда шли на встречу и были готовы помочь. Мои достижения всегда замечали и предоставляли советы, которые помогали мне развиваться
```- `skills:` Расскажите о своих профессиональных навыках, которые помогут вам в работе, какие технологии и инструменты вы знаете и используете
- навык_1
- навык_2
- навык_3- Пример:
```yaml
skills:
- Python
- Django
- SQL
- Docker
- Git
- ...
```- `general_knowledge_questions:` Пункт для общих вопросов, по сути заглушка, в приложении не используется
### 4. src/app_config.py
Это файл содержит в себе настройки для работы приложения.
- `MONKEY_MODE` - если предпочитаете работать в режиме "текст не читай, отклик прожимай", этот режим для вас, просто установите `MONKEY_MODE = True`.
В этом режиме приложение будет откликаться на все вакансии подряд, независимо от того, подходят ли они вам по интересам или навыкам или нет.- `DEBUG_MODE` - если пока не хотите откликаться на вакансии, а просто хотите посмотреть, какое сопроводительное письмо для каждой из вакансий напишет
приложение и соответственно проверить их на наличие несостыковок или просто кринжа - установите `DEBUG_MODE = True`.
Для того, чтобы вытащить сопроводительные письма из логов LLM API, можно воспользоваться файлом `src/llm/parse_llm_api_calls.py`- `FIXED_COVER_LETTER` - если этот режим активирован - приложение будет использовать одно готовое сопроводительное письмо для всех вакансий вместо генерирации отдельного сопроводительного письма для каждой вакансии. Текст готового сопроводительного письма можно найти в файле strings.py,
переменная fixed_cover_letter- `JOB_IS_INTERESTING_THRESH` - в нормальном режиме работы LLM оценивает степень 'интересности' каждой вакансии по шкале от 1 до 10, где 1 - вакансия абсолютно не подходит для кандидата, а 10 - вакансия подходит идеально. Данная переменная задает порог, ниже которого вакансия считается неинтересной для отклика.
- `MINIMUM_LOG_LEVEL` - минимальный уровень важности сообщений, которые будут записаны в лог, от самого низкого (DEBUG), до самого высокого (CRITICAL). Я предпочитаю записывать в лог всё и вам рекомендую, поэтому по умолчанию `MINIMUM_LOG_LEVEL = "DEBUG"`
- `MAX_APPLIES_NUM` - максимальное число откликов за один запуск приложения. Учтите, что для hh.ru есть ограничение [не более чем в 200 откликов в день](https://feedback.hh.ru/knowledge-base/article/1618)
- `MINIMUM_WAIT_TIME_SEC` - минимальное время, затрачиваемое на один отклик на вакансию. Если приложение откликнется быстрее, оно будет ждать, пока не истечет минимальное время
- `LLM_MODEL_TYPE` - LLM от какой компании предпочитаете (OpenAI, Claude, HuggingFace и т.д.)
- `LLM_MODEL` - какую модель LLM предпочитаете
- `APPLY_ONCE_AT_COMPANY` - если не хотите подаваться в одну компанию на две и более вакансии - установите `APPLY_ONCE_AT_COMPANY = True`
- `PRICE_DICT` - словарь для подсчета стоимости работы той или иной модели LLM за один входящий/исходящий токен, позволяет оценить итоговые расходы на работу с LLM при рассылке откликов. На данный момент заполен только для GPT-4o и GPT-4o-mini, но вы можете дополнить информацией о стоимости предпочитаемых вами моделей.
### 5. src/strings.py
В этом файле хранятся промпты для работы с LLM, в частности промпты для ответов на вопросы определенного типа/тематики, а также резюмирования текста вакансии или (пардон за каламбур) резюме.
Большинство из этих промптов я взял из проекта AIHawk в нетронутом виде. Поменял лишь промпт на написание сопроводительного письма (так как с оригинальным промптом получался уж совсем лютый кринж), ну и добавил промпт для определения интересности вакансии для соискателя.
Если захотите что-то поменять:
- промпт для определения интересности вакансии находится в переменной `job_is_interesting`- промпт для написания сопроводительного письма находится в переменной `coverletter_template`
- текст фиксированного сопроводительного письма для всех вакансий находится в переменной `fixed_cover_letter`
### 6. data_folder_example
Папка `data_folder_example` содержит примеры того, как должны быть структурированы и заполнены файлы, необходимые для работы приложения. Эта папка служит практическим справочником, который поможет вам правильно настроить приложение.
#### Содержимое
Внутри этой папки вы найдете примеры настроечных файлов:
- `search_config.yaml`
- `secrets.yaml`
- `structured_resume.yaml`Эти файлы уже заполнены вымышленными, но реалистичными данными. Они показывают вам правильный формат и тип информации для ввода в каждый файл.
#### Использование data_folder_example
Использование этой папки в качестве руководства может быть полезным для:
1. Понимания правильной структуры каждого конфигурационного файла
2. Просмотра примеров допустимых данных для каждого поля
3. Опорной точки в заполнении ваших личных файлов## Использование
1. **data_folder:**
Убедитесь, что данная папка содержит в себе следующие файлы, и они корректно заполнены:
- `secrets.yaml`
- `search_config.yaml`
- `structured_resume.yaml`2. **data_folder/output:**
Содержит файлы, в которые записаны результаты работы приложения.
- `answers.json` список предыдущих вопросов и ответов, которые давала на них LLM в предыдущие разы, позволяет избежать повторного запуска LLM
- `failed.json` список вакансий, отклики на которые не были отправлены по причине программной ошибки
- `llm_api_calls.json` лог всех запросов, сделанных к LLM, и полученных на них ответов
- `skipped.json` список вакансий, отклики на которые не были отправлены по иной причине (причина указана)
- `success.json` список вакансий, отклики на которые были отправлены успешно3. **Запуск:**
Просто зайдите в папку с проектом и введите в терминале:
```bash
python main.py
```
При первом запуске потребуется авторизоваться на сайте. При последующих запусках этого не потребуется, так как все данные для входа сохраняются в папке `chrome_profile`.Затем приложение введет на сайте настройки поиска и, перед тем как продолжить, попросит вас все проверить. После проверки нажмите Enter в терминале, и приложение продолжит работу. Либо ничего не делайте, и работа продолжится сама автоматически через 2 минуты.
Дальше приложение начнет искать вакансии в соответствии с критериями поиска и откликаться на них.
Для остановки приложения введите комбинацию клавиш Ctrl + C в терминале.
[Видео работы приложения](https://www.youtube.com/watch?v=XjVE8ol7fmU)
## Проблемы
#### 0. Ошибки во время установки.
В частности на этапе выполнения команы `pip install -r requirements.txt`
Проверьте версию python введя в терминал команду `python` и убедившись, что его версия совпадает с версией, установленной ранее.
В противном случае удалите все версии python с компьютера и повторите весь процесс установки заново.
#### 1. Ошибки OpenAI API
**Сообщение об ошибке:**
openai.RateLimitError: Error code: 429 - {'error': {'message': 'You exceeded your current quota, please check your plan and billing details. For more information on this error, read the docs: .', 'type': 'insufficient_quota', 'param': None, 'code': 'insufficient_quota'}}
**Решение:**
- Проверьте настройки биллинга API OpenAI на странице
- Убедитесь, что баланс положительный
- Если нет возможности пополнить баланс со своей карточки, воспользуйтесь услугами оплаты зарубежных сервисов
- Обратите внимание, что подписка ChatGPT Plus отличается от доступа к API
- Если вы недавно добавили средства или обновились, подождите 12–24 часа, чтобы изменения вступили в силу**Сообщение об ошибке:**
Unexpected error occurred: Error code: 403 - {'error': {'code': 'unsupported_country_region_territory', 'message': 'Country, region, or territory not supported', 'param': None, 'type': 'request_forbidden'}}
**Решение:**
Включите VPN, выберите любую европейскую страну или США/Канаду, должно помочь.
#### 2. Неверная информация в сопроводительном письме к вакансии или ответах на вопросы
**Проблема:** Бот предоставляет неточные данные об опыте, навыках, зарплатных ожиданиях и т.д.
**Решение:**
- Обновите промпты для сопроводительного письма или ответов на вопросы соответствующей тематики
- Проверьте наличие и корректность соответствующих полей в `structured_resume.yaml`
- Проверьте содерижимое файла `answers.json`, исправьте или удалите его по необходимости - данный файл используется для кэширования ответов LLM, поэтому может содержать ошибочные ответы от предыдущих вызовов LLm#### 3. Ошибка конфигурации
**Сообщение об ошибке:**
Ошибка конфигурации: Отсутствует или неверный тип ключа ...
или
Ошибка конфигурации: Поле '...' не может быть пустым в конфигурационном файле ...
**Решение:**
- Скопируйте `search_config.yaml` из папки data_folder_example и меняйте в нем данные на свои постепенно
- Скопируйте `structured_resume.yaml` из папки data_folder_example и меняйте в нем данные на свои постепенно
- Убедитесь, что все отступы и пробелы в файле YAML выставлены верно
- Используйте приложение для проверки правильности YAML файла
- Избегайте необязательных спецсимволов и кавычек#### 4. Ошибки Selenium
**Сообщение об ошибке:**
selenium.common.exceptions.ElementNotInteractableException...
**Решение**
Возможно посторонние элементы на странице закрывают доступ к элементам, с которыми приложение осуществляет взаимодействие на странице сайта.
Попробуйте изменить размер окна браузера, например развернуть его на весь экран.
#### 5. Приложение запустилось, но не работает
**Проблема:** Приложение запустилось, но не начало искать вакансии или вылетело с ошибкой
**Решение:**
- Проверьте не появилась ли CAPTCHA на сайте
- Убедитесь, что файл `search_config.yaml` настроен корректно, и что с такими параметрами находятся хотя бы какие-нибудь вакансии
- Посмотрите в логе или окне терминала, выводило ли приложение сообщения об ошибках и если да, то какие### Общие советы по устранению неполадок
- Используйте последнюю версию приложения
- Убедитесь, что все зависимости установлены и обновлены
- Проверьте стабильность интернет-соединения
- Удалите папку chrome_profile, если проблемы сохраняютсяДля получения дополнительной помощи создайте запрос в [репозитории GitHub](https://github.com/beatwad/XX_Auto_Jobs_Applier/issues) с подробной информацией о вашей проблеме, включая сообщения об ошибках и вашу конфигурацию (не забудьте удалить или заменить конфиденциальную информацию).
## Участники
- [beatwad](https://github.com/beatwad) - автор проекта
- [feder-cr](https://github.com/feder-cr/) - автор оригинального проекта
XX_Auto_Jobs_Applier на данный момент находится в стадии бета-тестирования, и я был бы благодарен за ваши отзывы и предложения. Не стесняйтесь сообщать о проблемах, предлагать улучшения или отправлять pull requests, чтобы помочь улучшить проект.
## Лицензия
Этот проект распространяется по лицензии MIT - см. файл [LICENSE](LICENSE)
## Предупреждение
XX_Auto_Jobs_Applier, предоставляется AS IS ("как есть") и предназначен только для образовательных целей. Автор не несет ответственности за любые последствия, возникшие в результате его использования. Пользователям рекомендуется соблюдать правила соответствующих платформ и придерживаться всех законов, правил и этических принципов. Использование автоматизированных инструментов для подачи заявлений на работу может нести риски, включая ограничение или блокировку учетной записи пользователя. Действуйте с осторожностью и по своему усмотрению.
### Поставь ⭐ если понравился репозиторий!
[Наверх 🚀](#top)