chatgpt_bot/bot/handlers/user/model_processing.py

120 lines
5.0 KiB
Python
Raw Normal View History

2024-10-05 14:35:26 +00:00
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()