enotkrutoy's picture
Update app.py
440e4ad verified
import gradio as gr
import requests
import json
from telegram import Update
from telegram.ext import Application, CommandHandler, MessageHandler, CallbackContext
from telegram.ext.filters import Text # Используем Text как фильтр для текста
# Telegram Bot Token (жёстко заданный токен)
TELEGRAM_API_KEY = "7518565019:AAFwsGHOMhicachCqq78t8j4MBMhDY9PIDQ" # Замен
# Groq API Token (жёстко заданный токен)
#GROQ_API_KEY = "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" # Замените на ваш токен
API_KEY = "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"
GROQ_API_KEY = Groq(api_key=API_KEY)
# Функция для получения chat_id
def get_chat_id(update: Update):
return update.message.chat_id
def chat_function(message):
# Define the request payload
payload = {
"model": "mixtral-8x7b-32768",
"messages": [
{
"role": "system",
"content": """
Вы инженер RED-TEAM-разработки и создаете КОД POWERSHELL (ДЛЯ СБОРА ИНФОРМАЦИИ В СРЕДЕ WINDOWS 10/11) в соответствии с инструкциями ниже. Вы — профессиональный помощник по созданию и редактированию кода, который генерирует работоспособные и проверенные скрипты PowerShell.
1. **Единый блок кода**: Весь код записывается и выводится в одном блоке, чтобы образовать цельный и работоспособный скрипт. Разделения кода на HTML или другие языки быть не должно.
2. **Вывод без описаний**: Показывайте только код PowerShell без добавления описаний, комментариев, разъяснений или других элементов.
3. **Проверка корректности кода**: Каждый сгенерированный блок PowerShell проходит проверку на синтаксическую и логическую корректность.
4. **Поддержка UTF-8**: Убедитесь, что вывод кода правильно закодирован в UTF-8 для исключения ошибок рендеринга.
5. **Экранирование спецсимволов**: Исключите любые некорректно интерпретируемые элементы (например, HTML или спецсимволы), чтобы результат корректно отображался в чате.
[URL для проверки]:(https://www.tutorialspoint.com/online_powershell_editor.htm)
Выводите только код без дополнительных описаний. Убедитесь, что текстовый вывод формируется корректно и исключены элементы, мешающие интерпретации кода в чате.
"""
},
{ "role": "user", "content": f"Вот URL для проверки: {message}" }
],
"temperature": 0.25,
"max_tokens": 8430,
"top_p": 1,
"stream": False,
"stop": None
}
headers = {
"Content-Type": "application/json",
"Authorization": f"Bearer {GROQ_API_KEY}" # Жёстко прописанный API ключ Groq
}
try:
# Make the POST request to the Groq API
response = requests.post("https://api.groq.com/openai/v1/chat/completions", headers=headers, data=json.dumps(payload))
if response.status_code == 200:
data = response.json()
return data["choices"][0]["message"]["content"] # Return the model's response
else:
return f"Error: {response.status_code}, {response.text}"
except requests.exceptions.RequestException as e:
return f"Error: {e}"
# Функция для обработки сообщений Telegram бота
async def telegram_message_handler(update: Update, context: CallbackContext):
# Получаем сообщение пользователя
user_message = update.message.text
chat_id = get_chat_id(update) # Получаем chat_id
response = chat_function(user_message)
await update.message.reply_text(response)
# Функция для старта бота
async def start(update: Update, context: CallbackContext):
await update.message.reply_text("Привет! Я готов помочь.")
# Настройка и запуск бота
application = Application.builder().token(TELEGRAM_API_KEY).build()
# Добавляем обработчики для команд и сообщений
application.add_handler(CommandHandler("start", start))
application.add_handler(MessageHandler(Text & ~Text.command, telegram_message_handler)) # Исправление фильтра
# Запуск бота
application.run_polling()
# Запуск интерфейса Gradio
gr.Interface(
fn=chat_function, # Функция для обработки сообщений
inputs=gr.Textbox(placeholder="Ask 🐇🐇🐇..."), # Ввод сообщения пользователем
outputs="text", # Вывод как текст
title="Groq-Gradio Chat", # Заголовок интерфейса
theme="upsatwal/mlsc_tiet", # Убедитесь, что тема корректна
examples=[
"Исправьте PowerShell-скрипт:",
"##PYTHON",
"ПРОГНОЗ РЕЗУЛЬТАТА?",
"##НУЖЕН ВЕТЕР"
]
).launch()