arfrost

arfrost

На Пикабу
130 рейтинг 0 подписчиков 2 подписки 3 поста 0 в горячем
Награды:
5 лет на Пикабу
1

Телеграмм бот с ChatGPT

@ArgonFox_bot
Кто знает что с этим делать тот знает.
1000 токенов в запросе
Пока оплачен
Позволяю пользоваться
код на питоне :
import logging
import asyncio
from telegram import Update
from telegram.ext import Application, CommandHandler, CallbackContext, MessageHandler, filters
import openai
import time
from collections import deque

# Вставьте ваш API токен Telegram и OpenAI
TELEGRAM_TOKEN = 'YOUR_TELEGRAM_TOKEN'
OPENAI_API_KEY = 'YOUR_OPENAI_API_KEY'

# Настройка OpenAI
openai.api_key = OPENAI_API_KEY

# Настройка логирования
logging.basicConfig(format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', level=logging.INFO)

# Начальные параметры
parameters = {
'temperature': 1.0,
'max_tokens': 1000,# Обновлено
'top_p': 1.0,
'n': 1,
'model': 'gpt-3.5-turbo'
}

# Очередь для хранения временных меток запросов
request_times = deque()

# Период времени для контроля (например, 60 секунд)
TIME_WINDOW = 60
MAX_REQUESTS = 10

def request_allowed():
current_time = time.time()
while request_times and request_times[0] < current_time - TIME_WINDOW:
request_times.popleft()
if len(request_times) < MAX_REQUESTS:
request_times.append(current_time)
return True
else:
return False

async def start(update: Update, context: CallbackContext) -> None:
await update.message.reply_text('Добро пожаловать в дом, где Лис любит Совушку. Начинаем генерацию?')

async def set_temperature(update: Update, context: CallbackContext) -> None:
try:
temp = float(context.args[0])
if 0 <= temp <= 2:
parameters['temperature'] = temp
await update.message.reply_text(f"Температура установлена на {temp}.")
else:
await update.message.reply_text("Температура должна быть в диапазоне от 0 до 2.")
except (IndexError, ValueError):
await update.message.reply_text("Использование: /set_temperature <значение>")

async def set_max_tokens(update: Update, context: CallbackContext) -> None:
try:
tokens = int(context.args[0])
if tokens > 0:
parameters['max_tokens'] = tokens
await update.message.reply_text(f"Максимальное количество токенов установлено на {tokens}.")
else:
await update.message.reply_text("Максимальное количество токенов должно быть положительным числом.")
except (IndexError, ValueError):
await update.message.reply_text("Использование: /set_max_tokens <значение>")

async def set_top_p(update: Update, context: CallbackContext) -> None:
try:
top_p = float(context.args[0])
if 0 <= top_p <= 1:
parameters['top_p'] = top_p
await update.message.reply_text(f"Top-p установлено на {top_p}.")
else:
await update.message.reply_text("Top-p должно быть в диапазоне от 0 до 1.")
except (IndexError, ValueError):
await update.message.reply_text("Использование: /set_top_p <значение>")

async def set_n(update: Update, context: CallbackContext) -> None:
try:
n = int(context.args[0])
if n > 0:
parameters['n'] = n
await update.message.reply_text(f"Количество ответов установлено на {n}.")
else:
await update.message.reply_text("Количество ответов должно быть положительным числом.")
except (IndexError, ValueError):
await update.message.reply_text("Использование: /set_n <значение>")

async def set_model(update: Update, context: CallbackContext) -> None:
try:
model = context.args[0]
available_models = ['gpt-3.5-turbo', 'gpt-4']
if model in available_models:
parameters['model'] = model
await update.message.reply_text(f"Модель установлена на {model}.")
else:
await update.message.reply_text(f"Модель должна быть одной из следующих: {', '.join(available_models)}.")
except IndexError:
await update.message.reply_text("Использование: /set_model <модель>")
except Exception as e:
logging.error("Ошибка при установке модели: %s", e)
await update.message.reply_text("Произошла ошибка при установке модели.")

async def show_status(update: Update, context: CallbackContext) -> None:
status = (f"Текущие параметры:\n"
f"Модель: {parameters['model']}\n"
f"Температура: {parameters['temperature']}\n"
f"Максимальное количество токенов: {parameters['max_tokens']}\n"
f"Top-p: {parameters['top_p']}\n"
f"Количество ответов: {parameters['n']}")
await update.message.reply_text(status)

async def respond(update: Update, context: CallbackContext) -> None:
if not request_allowed():
await update.message.reply_text("Достигнут лимит запросов. Попробуйте позже.")
return

user_message = update.message.text

try:
logging.info(f"Запрос к OpenAI: Модель={parameters['model']}, Токены={parameters['max_tokens']}, Температура={parameters['temperature']}, Top-p={parameters['top_p']}, Количество ответов={parameters['n']}")

response = openai.ChatCompletion.create(
model=parameters['model'],
messages=[{"role": "user", "content": user_message}],
max_tokens=parameters['max_tokens'],
temperature=parameters['temperature'],
top_p=parameters['top_p'],
n=parameters['n']
)

if response and response.choices and response.choices[0].message:
await send_long_message(update, response.choices[0].message['content'].strip())
else:
logging.error("Пустой ответ от OpenAI")
await update.message.reply_text("Получен пустой ответ от OpenAI.")

if 'usage' in response:
usage = response['usage']
logging.info(f"Использовано токенов: {usage['total_tokens']}")

except openai.error.RateLimitError:
logging.error("Превышен лимит запросов. Попробуйте позже.")
await update.message.reply_text("Превышен лимит запросов. Попробуйте позже.")
except openai.error.OpenAIError as e:
logging.error("Ошибка OpenAI API: %s", e)
await update.message.reply_text("Произошла ошибка при взаимодействии с API.")
except Exception as e:
logging.error("Произошла неожиданная ошибка: %s", e)
await update.message.reply_text("Произошла неожиданная ошибка. Пожалуйста, попробуйте снова позже.")

async def send_long_message(update: Update, text: str) -> None:
chunks = [text[i:i + 4096] for i in range(0, len(text), 4096)]
for chunk in chunks:
try:
await update.message.reply_text(chunk)
await asyncio.sleep(1)# Задержка в 1 секунду между сообщениями
except Exception as e:
logging.error("Ошибка при отправке сообщения: %s", e)
break

def main() -> None:
application = Application.builder().token(TELEGRAM_TOKEN).build()

application.add_handler(CommandHandler("start", start))
application.add_handler(CommandHandler("set_temperature", set_temperature))
application.add_handler(CommandHandler("set_max_tokens", set_max_tokens))
application.add_handler(CommandHandler("set_top_p", set_top_p))
application.add_handler(CommandHandler("set_n", set_n))
application.add_handler(CommandHandler("set_model", set_model))
application.add_handler(CommandHandler("show_status", show_status))
application.add_handler(MessageHandler(filters.TEXT & ~filters.COMMAND, respond))

application.run_polling()

if __name__ == '__main__':
main()

Показать полностью 2
1

Медитация как способ притормозить

Техника медитации очень упрощённая. Я соединил дыхательный и мысленный способы очистить разум. Для применения нужно понимать, для чего это вообще. Самый простой ответ: дать какое-то время мозгу и сознанию на короткое время остановиться и перезапуститься. Это как задержать дыхание в лёгких, только мысленно. Нужно для сброса перегружающих и не всегда уместных мысленных процессов.Это мой личный гибрид из разных техник. Я набрал это из множества источников в своё время, даже до интернета, когда читал различную литературу на подобную тематику.

1. Найдите тихое место:
- Выберите спокойное место, где вас никто не потревожит.

2. Примите удобное положение:
- Сядьте на стул, на пол или лягте в удобной позе. Главное, чтобы ваше тело находилось в максимально комфортном положении с прямой спиной, если вы сидите.

3. Закройте глаза:
- Закройте глаза, чтобы минимизировать отвлекающие факторы.

4. Сконцентрируйтесь на дыхании:
- Обратите внимание на своё дыхание. Дышите естественно и спокойно.

5. Визуализируйте объект:
- Представьте перед собой предмет или объект, который легко визуализировать (например, яблоко, свечу или цветок). Важно, чтобы он был для вас личным и приятным.
- Сосредоточьтесь на этом объекте, представляя его детали и форму.

6. Увеличьте количество объектов:
- Если мысли продолжают приходить в голову, добавьте ещё один объект или несколько.
- Представьте эти объекты перед собой и начинайте рассматривать их со всех сторон. Желательно стараться изменять их размер и всячески двигать.
- Помимо объектов, попытайтесь представить пространство, в котором они находятся. Это может быть свет, тьма, небо или любое другое однородное и одноцветное состояние.

7. Наблюдайте за мыслями:
- Если мысли снова начинают приходить, добавьте ещё один объект и повторите процесс.

8. Выделите время:
- На ранних этапах достаточно медитировать от 3 до 5 минут. Важно понимать, что в таких практиках ключевую роль играют регулярность и осознанность цели медитации.

9. Завершение медитации:
- Постепенно осознайте своё тело и окружающее пространство.
- Сделайте несколько глубоких вдохов и выдохов.
- Медленно откройте глаза и потянитесь.

P.S текст редактировался при помощи нейросети
Но тег моё т.к способ мой

Показать полностью
Отличная работа, все прочитано!

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества