name / app.py
enotkrutoy's picture
Update app.py
380c96c verified
import logging
from telegram import Update
from telegram.ext import Updater, CommandHandler, MessageHandler, filters, CallbackContext
from openai import OpenAI
import os
# Настройка логирования
logging.basicConfig(format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', level=logging.INFO)
logger = logging.getLogger(__name__)
# Инициализация клиента OpenAI (или Hugging Face)
client = OpenAI(
base_url="https://api-inference.huggingface.co/v1/",
api_key=os.getenv("HF_API_KEY") # Храните ключ API в переменных окружения
)
# Инициализация сообщений
messages = [
{"role": "system", "content": "Телеграмм чат бот"},
{"role": "user", "content": "Вы помощник"},
{"role": "assistant", "content": "Да, я ваш виртуальный помощник. Чем могу вам помочь сегодня?"}
]
# Функция для обработки сообщений от пользователей
def handle_message(update: Update, context: CallbackContext) -> None:
user_message = update.message.text
messages.append({"role": "user", "content": user_message})
# Запрос к OpenAI или Hugging Face для генерации ответа
stream = client.chat.completions.create(
model="Qwen/Qwen2.5-Coder-32B-Instruct",
messages=messages,
temperature=0.5,
max_tokens=2048,
top_p=0.7,
stream=True
)
response_text = ""
for chunk in stream:
response_text += chunk.choices[0].delta.content
# Отправляем ответ пользователю
update.message.reply_text(response_text)
# Функция для старта бота
def start(update: Update, context: CallbackContext) -> None:
update.message.reply_text('Здравствуйте! Я ваш виртуальный помощник. Чем могу помочь?')
# Основная функция для запуска бота
def main():
# Токен вашего Telegram-бота
token = os.getenv("TELEGRAM_BOT_TOKEN") # Храните токен бота в переменных окружения
# Создание экземпляра Updater
updater = Updater(token, use_context=True)
# Получение диспетчера для обработки команд
dispatcher = updater.dispatcher
# Регистрация команд
dispatcher.add_handler(CommandHandler("start", start))
# Регистрация обработчика сообщений
dispatcher.add_handler(MessageHandler(filters.TEXT & ~filters.COMMAND, handle_message))
# Запуск бота
updater.start_polling()
# Ожидание завершения работы
updater.idle()
if __name__ == '__main__':
main()