Spaces:
Runtime error
Runtime error
| 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() |