import gradio as gr import requests import json HF_API_KEY = os.getenv("HF_API_KEY") HF_API_URL = "https://api-inference.huggingface.co/models/Qwen/Qwen2.5-Coder-32B-Instruct/v1/chat/completions" def query(payload): headers = { "Authorization": f"Bearer {HF_API_KEY}", "Content-Type": "application/json", } response = requests.post(HF_API_URL, headers=headers, data=json.dumps(payload)) response.raise_for_status() return response.json() def chat(user_message): payload = { "model": "Qwen/Qwen2.5-Coder-32B-Instruct", "messages": [ {"role": "user", "content": user_message} ], "temperature": 0.5, "max_tokens": 2048, "top_p": 0.7, "stream": False, } response = query(payload) reply = response.get("generated_text", "") return reply iface = gr.Interface(fn=chat, inputs="text", outputs="text") iface.launch() ``` ### Адаптация вашего кода бота Теперь адаптируем ваш код бота, используя структуру из примера: ```python import os from telegram import Update from telegram.ext import ApplicationBuilder, CommandHandler, MessageHandler, filters, ContextTypes import requests import json # Получаем ключи из переменных окружения HF_API_KEY = os.getenv("HF_API_KEY") HF_API_URL = "https://api-inference.huggingface.co/models/Qwen/Qwen2.5-Coder-32B-Instruct/v1/chat/completions" def query(payload): headers = { "Authorization": f"Bearer {HF_API_KEY}", "Content-Type": "application/json", } response = requests.post(HF_API_URL, headers=headers, data=json.dumps(payload)) response.raise_for_status() return response.json() def chat(user_message): payload = { "model": "Qwen/Qwen2.5-Coder-32B-Instruct", "messages": [ {"role": "user", "content": user_message} ], "temperature": 0.5, "max_tokens": 2048, "top_p": 0.7, "stream": False, } response = query(payload) reply = response.get("generated_text", "") return reply # Обработчик стартовой команды async def start(update: Update, context: ContextTypes.DEFAULT_TYPE): await update.message.reply_text("Привет! Я бот, который отвечает на ваши вопросы. Напишите мне что-нибудь.") # Обработчик сообщений async def handle_message(update: Update, context: ContextTypes.DEFAULT_TYPE): user_message = update.message.text await update.message.reply_text("Думаю...") try: reply = chat(user_message) await update.message.reply_text(reply if reply else "К сожалению, я не смог ничего придумать.") except requests.exceptions.RequestException as e: await update.message.reply_text(f"Сетевая ошибка: {e}") except json.JSONDecodeError as e: await update.message.reply_text(f"Ошибка декодирования JSON: {e}") except Exception as e: await update.message.reply_text(f"Неизвестная ошибка: {e}") # Запуск бота if __name__ == "__main__": TOKEN = os.getenv("TELEGRAM_BOT_TOKEN") if not TOKEN: raise ValueError("Токен бота не установлен. Пожалуйста, установите переменную окружения TELEGRAM_BOT_TOKEN.") app = ApplicationBuilder().token(TOKEN).build() app.add_handler(CommandHandler("start", start)) app.add_handler(MessageHandler(filters.TEXT & ~filters.COMMAND, handle_message)) print("Бот запущен!") app.run_polling()