Spaces:
Running
Running
File size: 6,676 Bytes
e91d548 ed7ed0d e91d548 45163aa ed7ed0d ef97d58 45163aa ed7ed0d e91d548 ef97d58 316bda2 e91d548 fb7ba3b e91d548 45163aa ed7ed0d e91d548 ed7ed0d e91d548 ed7ed0d e91d548 ed7ed0d e91d548 4be8282 45163aa ef97d58 c58c18c e91d548 9432601 e91d548 d1ace6e e91d548 45163aa e91d548 45163aa ef97d58 e91d548 2503b40 e91d548 8936ada |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 |
import gradio as gr
import requests
import json
import os
import time
what = [
"Новый Год", "День Рождения", "Рождество Христово", "День защитника Отечества (23 февраля)", "Международный женский день (8 марта)", "Праздник Весны и Труда (1 мая)", "День Победы (9 мая)", "День России (12 июня)", "День народного единства (4 ноября)", "Старый Новый год", "Масленица", "Пасха", "Троица", "День знаний (1 сентября)", "День матери (последнее воскресенье ноября)"
]
whom = [
"Маме", "Папе", "Родителям", "Ребенку", "Детям", "Сыну", "Дочери", "Внуку", "Внукам", "Бабушке", "Дедушке", "Сестре", "Брату", "Племяннику", "Племяннице", "Другу", "Подруге", "Друзьям", "Подругам", "Супругу", "Супруге", "Партнеру", "Партнерше", "Коллеге", "Коллегам", "Начальнику", "Начальнице", "Боссу", "Ментору", "Учителю", "Учителям", "Студенту", "Студентке", "Клиенту", "Клиентке", "Пациенту", "Пациентке", "Члену семьи", "Членам семьи", "Теще", "Свекру", "Свекрови", "Законному отцу", "Законной матери", "Законным родителям", "Законному ребенку", "Законным детям", "Члену команды", "Членам команды", "Коллеге по работе", "Коллегам по работе", "Коллеге по учебе", "Коллегам по учебе", "Любимому", "Любимой", "Родственнику", "Родственнице", "Родственникам", "Знакомому", "Знакомой", "Знакомым", "Соседу", "Соседке", "Соседям", "Однокласснику", "Однокласснице", "Одноклассникам", "Одногруппнику", "Одногруппнице", "Одногруппникам", "Куму", "Куме", "Крестнику", "Крестнице", "Крестным", "Руководителю", "Подчиненному", "Подчиненным", "Преподавателю", "Преподавателям", "Воспитаннику", "Воспитанникам", "Ученику", "Ученикам", "Наставнику", "Консультанту", "Специалисту", "Юбиляру", "Имениннику", "Имениннице"
]
# Функция для генерации текста с потоковой передачей
def generate(whomtb="Бабушке", fromtb="Внука", whattb="Новый Год", doptb=""):
if not whomtb or not whattb:
yield "Пожалуйста, заполните все обязательные поля."
return
system_role = """Ты поздравитель, написатель шикарных, искренних поздравлений. Пользователь будет писать с чем поздравить, кого и возможно дополнительную информацию. Твоя задача - написать по запросу пользователя ИДЕАЛЬНОЕ поздравление. Без форматирования"""
user_msg = f"На праздник: '{whattb}', кому: '{whomtb}', от: '{fromtb}', дополнительно: '{doptb}'"
headers = {
'Content-Type': 'application/json',
# 'Authorization': f'Bearer {os.getenv("API_KEY")}'
}
payload = {
'messages': [{'role': 'system', 'content': system_role}, {'role': 'user', 'content': user_msg}],
'max_tokens': 2500,
'model': "openai",
'stream': True # Включаем потоковую передачу
}
try:
response = requests.post(os.getenv("BASE_URL"), headers=headers, json=payload, stream=True, timeout=200)
response.raise_for_status() # Проверяем на ошибки HTTP
full_text = ""
for chunk in response.iter_lines():
if chunk:
try:
chunk = chunk.decode('utf-8').replace("data: ", "")
if chunk == "[DONE]":
break
chunk_data = json.loads(chunk)
if 'choices' in chunk_data and len(chunk_data['choices']) > 0:
text_chunk = chunk_data['choices'][0]['delta'].get('content', "")
full_text += text_chunk
yield full_text # Выводим текст как итератор
except json.JSONDecodeError:
continue
if not full_text:
yield "Не удалось получить ответ от сервера."
except requests.exceptions.RequestException as e:
print(f"Ошибка запроса: {e}")
yield f"Ошибка запроса!"
# Ссылка на файл CSS
css_url = "https://neurixyufi-aihub.static.hf.space/style.css"
# Получение CSS по ссылке
response = requests.get(css_url)
css = response.text + ".gradio-container{max-width: 700px !important} h1{text-align:center}"
# UI
with gr.Blocks(css=css) as demo:
gr.Markdown("# Поздравитель")
with gr.Column():
with gr.Row():
fromtb = gr.Textbox(show_label=True, placeholder="Внука", label="От кого", interactive=True, container=True,)
whomtb = gr.Textbox(show_label=True, placeholder="Бабушке", label="Кому", interactive=True, container=True,)
with gr.Row():
whattb = gr.Textbox(show_label=True, placeholder="Новый Год", label="Праздник", interactive=True, container=True,)
with gr.Row():
doptb = gr.Textbox(show_label=True, placeholder="50-летней", label="Дополнительно")
with gr.Row():
text_button = gr.Button("Поздравить", variant='primary')
with gr.Row():
with gr.Column():
text_output = gr.Textbox(show_label=False, value="Здесь будет ваше поздравление.", container=True)
text_button.click(generate, inputs=[whomtb, fromtb, whattb, doptb], outputs=[text_output], concurrency_limit=250)
demo.queue(max_size=250, api_open=False).launch() |