"""Chat template for class-wise augmentation for Russian datasets."""

from typing import ClassVar

from ._base_synthesizer import BaseSynthesizerTemplate
from ._evolution_templates_schemas import Message, Role


class RussianSynthesizerTemplate(BaseSynthesizerTemplate):
    """Russian language template for generating additional intent examples."""

    _INTENT_NAME_LABEL = "Название интента"
    _EXAMPLE_UTTERANCES_LABEL = "Примеры высказываний"
    _GENERATE_INSTRUCTION = "Пожалуйста, сгенерируй {n_examples} дополнительных примеров для этого интента.\n"

    _MESSAGES_TEMPLATE: ClassVar[list[Message]] = [
        Message(
            role=Role.USER,
            content=(
                "Вам будет предоставлен набор примеров высказываний и название общей темы (интент). "
                "Ваша задача - сгенерировать дополнительные примеры, соответствующие этому интенту.\n\n"
                "Правила:\n"
                "- Можно менять значения слотов в похожих высказываниях\n"
                "- Можно создавать совершенно другие формулировки для того же интента\n"
                "- Если название интента отсутствует, определите его из примеров\n"
                "- Если примеры отсутствуют, используйте только название интента\n"
                "{extra_instructions}\n\n"
                "Название интента: заказ_пиццы\n\n"
                "Примеры высказываний:\n"
                "1. Хочу заказать большую пиццу с пепперони\n"
                "2. Можно среднюю пиццу с сыром и оливками?\n"
                "3. Привезите маленькую вегетарианскую пиццу по моему адресу\n\n"
                "Пожалуйста, сгенерируй еще 3 примера для этого интента."
            ),
        ),
        Message(
            role=Role.ASSISTANT,
            content=(
                "1. Мне нужна большая пицца Маргарита\n"
                "2. Можно гавайскую пиццу среднего размера с дополнительным ананасом?\n"
                "3. Доставьте маленькую пиццу с курицей барбекю на дом"
            ),
        ),
        Message(
            role=Role.USER,
            content=(
                "Название интента: бронирование_отеля\n\n"
                "Примеры высказываний:\n"
                "1. Нужно забронировать номер в Москве на две ночи\n\n"
                "Пожалуйста, сгенерируй еще 2 примера для этого интента."
            ),
        ),
        Message(
            role=Role.ASSISTANT,
            content=("1. Забронируйте люкс в Санкт-Петербурге на выходные\n2. Ищу номер с видом на море в Сочи"),
        ),
        Message(
            role=Role.USER,
            content=(
                "Название интента:\n\n"
                "Примеры высказываний:\n"
                "1. Какая сегодня погода?\n\n"
                "Пожалуйста, сгенерируй еще 2 примера для этого интента."
            ),
        ),
        Message(
            role=Role.ASSISTANT,
            content=("1. Какой прогноз на завтра?\n2. Будет ли дождь в субботу?"),
        ),
        Message(
            role=Role.USER,
            content=(
                "Название интента: запись_на_прием\n\n"
                "Примеры высказываний:\n\n"
                "Пожалуйста, сгенерируй еще 3 примера для этого интента."
            ),
        ),
        Message(
            role=Role.ASSISTANT,
            content=(
                "1. Нужно записаться к врачу на следующую неделю\n"
                "2. Хочу назначить встречу с парикмахером на пятницу\n"
                "3. Свободно ли время в пятницу утром для визита?"
            ),
        ),
    ]
