from aiogram.filters.callback_data import CallbackData from aiogram.types import InlineKeyboardButton from aiogram.utils.keyboard import InlineKeyboardBuilder models_description = { "1o": "Это базовая модель ИИ, которая \"умеет думать\". Она хороша для выполнения повседневных задач, \n\ таких как анализ данных, обработка текста и создание отчетов. Она подходит для малого и среднего бизнеса, \n\ где важно автоматизировать рутинные задачи и получать быстрые результаты.\n\n\ Выберите тариф к модели 1о.", "1o mini": "Уменьшенная версия 1о, которая также \"умеет думать\". Эта модель менее мощная, \n\ но зато работает быстрее на устройствах с ограниченными ресурсами, таких как смартфоны или небольшие компьютеры. \n\ Прекрасно подойдет для мобильных приложений и стартапов, где ресурсы ограничены, но нужны умные решения.\n\n\ Выберите тариф к модели 1о mini.", "4o": "Это мощная модель ИИ, предназначенная для сложных и объемных задач. Она хорошо справляется \n\ с глубоким анализом больших данных, сложными прогнозами и инновационными бизнес-проектами. \n\ Идеальна для крупных компаний, требующих высокую производительность для динамичного принятия решений и стратегического анализа.\n\n\ Выберите тариф к модели 4о.", "4o mini": "Уменьшенная версия модели 4о. Она сохраняет высокую мощность при меньшем использовании ресурсов. \n\ Подходит для сложных бизнес-задач в условиях ограниченных ресурсов, таких как аналитика в режиме реального времени \n\ на портативных и мобильных устройствах. Отличный выбор для бизнеса, который хочет получить максимум от своих технологий \n\ без больших затрат на оборудование.\n\n\ Выберите тариф к модели 4о." } model_prices = { "1o" : { "base": { "tokens": "60", "amount": "2000" }, "advanced": { "tokens": "128", "amount": "3500" }, "pro": { "tokens": "300", "amount": "7500" } }, "1o mini": { "base": { "tokens": "50", "amount": "900" }, "advanced": { "tokens": "100", "amount": "1500" }, "pro": { "tokens": "270", "amount": "2700" } }, "4o": { "base": { "tokens": "100", "amount": "1500" }, "advanced": { "tokens": "150", "amount": "2000" }, "pro": { "tokens": "303", "amount": "3750" } }, "4o mini": { "base": { "tokens": "800", "amount": "400" }, "advanced": { "tokens": "1650", "amount": "650" }, "pro": { "tokens": "3300", "amount": "1250" } } } name_of_model = { "base" : "Базовый", "advanced": "Продвинутый", "pro" : "Профессиональный" } class PayCallBack(CallbackData, prefix="pay"): name_of_model: str option_of_model: str tokens: str amount: str def get_model_page(*, name_of_model: str, sizes: tuple[int] = (1,)): text: str = models_description[name_of_model] temp_kbds: InlineKeyboardBuilder = InlineKeyboardBuilder() for option_name, item in models_description[name_of_model].items(): option_name_rus, tokens, amount = name_of_model[option_name], item["tokens"], item["amount"] temp_text = f"{name_of_model[option_name]} \n {tokens} запросов за {amount} RUB" temp_kbds.add(InlineKeyboardButton( text=temp_text, callback_data=PayCallBack( name_of_model=name_of_model, option_of_model=option_name_rus, tokens=tokens, amount=amount ).pack() )) return text, temp_kbds.adjust(*sizes).as_markup()