File size: 3,696 Bytes
11a668a
f92a51b
 
6eccccd
ec1e4af
11a668a
 
 
c6622a4
4e195d5
04d2f1c
 
05c35aa
d8abe74
6eccccd
23a6746
d8abe74
c8178ad
6eccccd
9453cb9
c6622a4
04d2f1c
 
d8abe74
c8178ad
74428c3
04d2f1c
74428c3
2ed3994
04d2f1c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
74428c3
 
04d2f1c
 
 
 
11a668a
 
18a33d6
06df5af
2d0f870
18a33d6
 
06df5af
 
11a668a
 
74428c3
06df5af
bc94cc7
74428c3
c29f697
90b0f48
dece9dd
74428c3
404a58d
c29f697
74428c3
04d2f1c
11a668a
74428c3
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
# imports
import gradio as gr
import requests
import json
import os


# functions
def generate(description):
    if not description:
        yield None
        return

    headers = {
        'Content-Type': 'application/json',
        'Authorization': f'Bearer {os.getenv("API_KEY")}'
    }

    payload = {
        'messages': [{'role': 'system', 'content': f'Ты - корректор текста. Пользователь будет отправлять тебе сообщения, а ты должен исправлять в них все ГРАММАТИЧЕСКИЕ ошибки (в том числе и знаки припенания). Отвечать ты должен без лишних символов, только исправленный запрос пользователя, без markdown. Не надо писать вроде этого: "Вот ваш исправленный тексст: ...", пиши сразу "...". И не нужно выделять то, что ты исправил, просто напиши всё правильно, без грамматических ошибок. Начинаем, ниже сообщение пользователя'}, {'role': 'user', 'content': description}],
        'max_tokens': 150000,
        'model': "gemini-1.5-pro-latest",
        'stream': True # Добавляем stream=True
    }

    try:
        response = requests.post(f'{os.getenv("BASE_URL")}v1/chat/completions', 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"**Ошибка запроса!**\n\n```\n{e}\n```"
    except Exception as e:
        print(f"Ошибка: {str(e)}")
        yield "Произошла ошибка при генерации"


# Ссылка на файл 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.Tab("Исправление опечаток"):
        with gr.Row():
            promt = gr.Textbox(show_label=True, label="Запрос", lines=3, placeholder="Привет как делпа ?")
        with gr.Row():
            text_button = gr.Button("Генерация", variant='primary')
    with gr.Row():
        with gr.Tab("Ответ"):
            text_output = gr.Textbox(show_label=False, placeholder="Привет, как дела?")

    text_button.click(generate, inputs=[promt], outputs=[text_output], concurrency_limit=250)

demo.queue(api_open=False).launch()