chatgpt_bot/bot/handlers/user/model_processing.py
2024-10-05 17:35:26 +03:00

120 lines
5.0 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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()