Candidate пакет

Модули

candidate.llm_match module

Файл с логикой соотношения вакансий и кандидатов.

Functions:

process_json(data, vacancies)

Обрабатывает данные кандидата и вакансии, возвращая рекомендации по трудоустройству.

validate_input_data(data, vacancies)

Валидирует формат входных данных кандидата и вакансий.

candidate.llm_match.process_json(data: Dict, vacancies: Dict) Dict[исходный код]

Обрабатывает данные кандидата и вакансии, возвращая рекомендации по трудоустройству.

Функция выполняет комплексный анализ соответствия кандидата вакансиям: 1. Генерирует промпты для оценки по каждой вакансии 2. Рассчитывает процент соответствия на основе недостающих компетенций 3. Формирует финальные рекомендации по наиболее подходящей вакансии

Параметры:
  • data (Dict) –

    Данные кандидата в формате: {

    »skills»: [список навыков], «experience»: [список элементов опыта]

    }

  • vacancies (Dict) –

    Словарь вакансий в формате: {

    »vacancy_id»: {

    «название»: «Название вакансии», «компетенции»: {

    »категория»: [
    {

    «название»: «Название навыка», «уровень»: 1-3

    }

    ]

    }

    }

    }

Результат:

Результат анализа в формате:
{

«vacancy»: «Название лучшей вакансии», «percentage»: int, «explaining»: «Текст оценки», «recommendations»: [список рекомендаций]

} или {«error»: …} в случае ошибки

Тип результата:

Dict

Примеры

>>> candidate_data = {"skills": ["Python"], "experience": ["Разработка"]}
>>> job_vacancies = {"1": {"название": "Программист", "компетенции": {...}}}
>>> process_json(candidate_data, job_vacancies)
{
    "vacancy": "Программист",
    "percentage": 85,
    "explaining": "Соответствует основным требованиям...",
    "recommendations": "Следует изучить..."
}

Заметки

  • Использует глобальный клиент LLM для генерации оценок

  • Логика расчета процента соответствия:
    • -2% за навык уровня «низкий»

    • -5% за навык уровня «средний»

    • -10% за навык уровня «высокий»

  • Парсинг ответа проводится согласно VacancySchema

  • В случае ошибки декодирования JSON возвращает словарь с ошибкой

candidate.llm_match.validate_input_data(data: Dict, vacancies: Dict) tuple[исходный код]

Валидирует формат входных данных кандидата и вакансий.

Параметры:
  • data – Данные кандидата

  • vacancies – Словарь вакансий

Результат:

(bool, str) - Результат проверки и сообщение об ошибке

Тип результата:

tuple

candidate.logging_config module

Файл для настройки ведения журнала с цветным выводом.

Classes:

ColoredFormatter([fmt, datefmt, style, ...])

Кастомный форматтер для добавления цветов в логи с помощью ANSI-кодов.

Functions:

configure_logging([level])

Настраивает корневой логгер с обработчиком цветного вывода.

hex_to_ansi(hex_color)

Конвертирует HEX-код цвета в ANSI escape-последовательность.

class candidate.logging_config.ColoredFormatter(fmt=None, datefmt=None, style='%', validate=True, *, defaults=None)[исходный код]

Базовые классы: Formatter

Кастомный форматтер для добавления цветов в логи с помощью ANSI-кодов. Цвета определяются на основе уровня логирования в соответствии с LOG_COLORS.

Methods:

format(record)

Форматирует запись лога с добавлением цветовых кодов.

format(record: LogRecord) str[исходный код]

Форматирует запись лога с добавлением цветовых кодов.

Параметры:

record (LogRecord) – Запись лога для форматирования

Результат:

Отформатированное сообщение с цветовыми кодами

Тип результата:

str

candidate.logging_config.configure_logging(level: int = 20) None[исходный код]

Настраивает корневой логгер с обработчиком цветного вывода.

Параметры:

level (int) – Уровень логирования (logging.INFO или logging.DEBUG). По умолчанию: logging.INFO.

Исключение:

ValueError – Если указан недопустимый уровень логирования

Примечание:

Поддерживаются только уровни logging.INFO и logging.DEBUG

candidate.logging_config.hex_to_ansi(hex_color: str) str[исходный код]

Конвертирует HEX-код цвета в ANSI escape-последовательность.

Параметры:

hex_color (str) – HEX-код цвета в формате „#RRGGBB“

Результат:

ANSI escape-последовательность для цвета или пустая строка при ошибке

Тип результата:

str

candidate.module_nlp module

candidate.server module

candidate.utils module

Файл для вспомогательных функций и констант

Classes:

VacancySchema(*, vacancy, percentage, ...)

Pydantic-схема для структурированного ответа от модели Ollama.: title: VacancySchema

Functions:

ollama_chat(client, model_name, prompt[, ...])

Функция-оболочка для отправки Ollama запроса в виде чата, с системным промптом и форматированием в формате JSON-схемы.

class candidate.utils.VacancySchema(*, vacancy: str, percentage: int, explaining: str, recommendations: str)[исходный код]

Базовые классы: BaseModel

Pydantic-схема для структурированного ответа от модели Ollama.: title: VacancySchema

Attributes:

explaining

model_config

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

percentage

recommendations

vacancy

explaining: str
model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

percentage: int
recommendations: str
vacancy: str
candidate.utils.ollama_chat(client: Client, model_name: str, prompt: str, system: str | None = None, schema: dict | None = None, max_tokens: int = 4096, temperature: float = 0.4, stream: bool = False) str | Iterator[ChatResponse][исходный код]

Функция-оболочка для отправки Ollama запроса в виде чата, с системным промптом и форматированием в формате JSON-схемы.

Параметры:
  • client (ollama.Client) – Клиент ollama.

  • model_name (str) – название модели в Ollama.

  • prompt (str) – Основный промпт.

  • system (str | None) – Системный промпт

  • schema (dict | None) – Опциональная Json-схема для форматирования ответа.

  • max_tokens (int) – Максимальное количество токенов

  • temperature (float) – Температура для генерации текста.

  • stream (bool) – Следует ли возвращать итератор, который выдает потоковые ответы.

Результат:

Содержимое ответа модели (или строка JSON, если указана схема).

Тип результата:

str

Module contents