from aiogram.filters.callback_data import CallbackData from aiogram.types import InlineKeyboardButton from aiogram.utils.keyboard import InlineKeyboardBuilder from db.db import * class PageCallBack(CallbackData, prefix="page"): page: int page_name: str models_description = { "1o": "Это базовая модель ИИ, которая \"умеет думать\". Она хороша для выполнения повседневных задач, \ таких как анализ данных, обработка текста и создание отчетов. Она подходит для малого и среднего бизнеса, \ где важно автоматизировать рутинные задачи и получать быстрые результаты.\n\n\ Выберите тариф к модели 1о.\nОставшиеся токены: ", "1o mini": "Уменьшенная версия 1о, которая также \"умеет думать\". Эта модель менее мощная, \ но зато работает быстрее на устройствах с ограниченными ресурсами, таких как смартфоны или небольшие компьютеры. \ Прекрасно подойдет для мобильных приложений и стартапов, где ресурсы ограничены, но нужны умные решения.\n\n\ Выберите тариф к модели 1о mini.\nОставшиеся токены: ", "4o": "Это мощная модель ИИ, предназначенная для сложных и объемных задач. Она хорошо справляется \ с глубоким анализом больших данных, сложными прогнозами и инновационными бизнес-проектами. \ Идеальна для крупных компаний, требующих высокую производительность для динамичного принятия решений и стратегического анализа.\n\n\ Выберите тариф к модели 4о.\nОставшиеся токены: ", "4o mini": "Уменьшенная версия модели 4о. Она сохраняет высокую мощность при меньшем использовании ресурсов. \ Подходит для сложных бизнес-задач в условиях ограниченных ресурсов, таких как аналитика в режиме реального времени \ на портативных и мобильных устройствах. Отличный выбор для бизнеса, который хочет получить максимум от своих технологий \ без больших затрат на оборудование.\n\n\ Выберите тариф к модели 4о.\nОставшиеся токены: " } 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 BuyCallBack(CallbackData, prefix="buy"): name: str option_of_model: str tokens: str amount: str class PayCallBack(CallbackData, prefix="pay"): name: str option_of_model: str tokens: str amount: str class ChooseCallBack(CallbackData, prefix="choose"): name: str async def get_model_page(*, page: int, name: str, user_id): temp_kbds: InlineKeyboardBuilder = InlineKeyboardBuilder() if name in ['1o', '1o mini']: return "Данная модель сейчас не работает", temp_kbds tokens = await get_current_model_tokens(user_id, name) status = await get_current_model(user_id) == name text: str = models_description[name] + str(tokens) for option_name, item in model_prices[name].items(): option_name_rus, tokens, amount = name_of_model[option_name], item["tokens"], item["amount"] temp_text = f"{name_of_model[option_name]} | {tokens} запросов" temp_kbds.add(InlineKeyboardButton( text=temp_text, callback_data=BuyCallBack( name=name, option_of_model=option_name_rus, tokens=tokens, amount=amount ).pack() )) temp_kbds.add(InlineKeyboardButton( text="🟢 Выбрано" if status else "🔴 Не выбрано", callback_data=ChooseCallBack( name=name, ).pack() )) return text, temp_kbds