Spaces:
Runtime error
Runtime error
Update app.py
Browse files
app.py
CHANGED
@@ -2,17 +2,102 @@ import gradio as gr
|
|
2 |
import requests
|
3 |
import json
|
4 |
|
5 |
-
#
|
6 |
-
|
7 |
-
|
8 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
9 |
|
10 |
-
# Функция анализа
|
11 |
def analyze_code(input_code):
|
12 |
payload = {
|
13 |
"model": "mixtral-8x7b-32768",
|
14 |
"messages": [
|
15 |
-
{"role": "system", "content":
|
16 |
{"role": "user", "content": input_code}
|
17 |
]
|
18 |
}
|
@@ -20,60 +105,28 @@ def analyze_code(input_code):
|
|
20 |
"Content-Type": "application/json",
|
21 |
"Authorization": "Bearer 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"
|
22 |
}
|
|
|
23 |
try:
|
24 |
response = requests.post("https://api.groq.com/openai/v1/chat/completions", headers=headers, data=json.dumps(payload))
|
25 |
if response.status_code == 200:
|
26 |
-
|
27 |
-
|
28 |
-
return analysis
|
29 |
else:
|
30 |
-
return f"
|
31 |
-
except requests.
|
32 |
-
return f"Ошибка
|
33 |
-
|
34 |
-
# Стилизация интерфейса в стиле нейропанка
|
35 |
-
neuropunk_theme = {
|
36 |
-
"background": "linear-gradient(135deg, #0f0c29, #302b63, #24243e)", # Градиент
|
37 |
-
"text_color": "#E6E6FA", # Лавандовый текст
|
38 |
-
"button_color": "#ff007f", # Яркие кнопки
|
39 |
-
"textbox_color": "#141414", # Фон ввода
|
40 |
-
"border_radius": "12px", # Скругление углов
|
41 |
-
}
|
42 |
|
43 |
-
#
|
44 |
-
|
45 |
-
|
46 |
-
rounded=True,
|
47 |
-
background_color=styles.get("textbox_color"),
|
48 |
-
text_color=styles.get("text_color"),
|
49 |
-
border_width=1
|
50 |
-
)
|
51 |
|
52 |
-
with gr.Blocks() as app:
|
53 |
with gr.Row():
|
54 |
-
gr.
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
placeholder="Введите ваш код или текст для анализа...",
|
62 |
-
lines=8,
|
63 |
-
elem_id="code_input"
|
64 |
-
)
|
65 |
-
style_widget(code_input, neuropunk_theme)
|
66 |
-
with gr.Row():
|
67 |
-
output_display = gr.Textbox(
|
68 |
-
placeholder="Результат анализа появится здесь...",
|
69 |
-
lines=10,
|
70 |
-
elem_id="output_display",
|
71 |
-
interactive=False
|
72 |
-
)
|
73 |
-
style_widget(output_display, neuropunk_theme)
|
74 |
-
with gr.Row():
|
75 |
-
analyze_button = gr.Button("Проанализировать")
|
76 |
-
analyze_button.click(analyze_code, inputs=[code_input], outputs=[output_display])
|
77 |
-
style_widget(analyze_button, neuropunk_theme)
|
78 |
|
79 |
-
app.launch(
|
|
|
2 |
import requests
|
3 |
import json
|
4 |
|
5 |
+
# Системное описание
|
6 |
+
system_info = {
|
7 |
+
"name": "WhiteRabbitNeo",
|
8 |
+
"version": "Beta-AI",
|
9 |
+
"description": "Система поддержки команды Red Team, предназначенная для анализа, улучшения и проверки кода.",
|
10 |
+
"capabilities": {
|
11 |
+
"code_analysis": {
|
12 |
+
"description": "Анализирует введённый код на наличие ошибок, недостатков и улучшает его.",
|
13 |
+
"evaluation_scale": {
|
14 |
+
"A": "Код идеален, изменений не требуется.",
|
15 |
+
"B": "Код требует минимальных улучшений.",
|
16 |
+
"C": "Код требует значительных улучшений.",
|
17 |
+
"D": "Код имеет критические недостатки.",
|
18 |
+
"F": "Код требует полной переработки."
|
19 |
+
},
|
20 |
+
"process": [
|
21 |
+
"Анализ введенного кода и выявление ошибок.",
|
22 |
+
"Оценка кода по шкале (A-F).",
|
23 |
+
"Применение необходимых исправлений в зависимости от уровня."
|
24 |
+
]
|
25 |
+
},
|
26 |
+
"syntax_improvement": {
|
27 |
+
"languages_supported": ["Python", "PowerShell"],
|
28 |
+
"steps": [
|
29 |
+
"Определение типа ошибки.",
|
30 |
+
"Исправление ключевых ошибок для обеспечения работоспособности кода.",
|
31 |
+
"Генерация улучшенных фрагментов в зависимости от уровня оценки."
|
32 |
+
],
|
33 |
+
"examples": {
|
34 |
+
"Python": [
|
35 |
+
{
|
36 |
+
"issue": "Пропущено двоеточие в условии",
|
37 |
+
"original_code": "if x > 10\n print(\"x больше 10\")",
|
38 |
+
"fixed_code": "if x > 10:\n print(\"x больше 10\")"
|
39 |
+
},
|
40 |
+
{
|
41 |
+
"issue": "Пропущено двоеточие в цикле",
|
42 |
+
"original_code": "for i in range(10)\n print(i)",
|
43 |
+
"fixed_code": "for i in range(10):\n print(i)"
|
44 |
+
}
|
45 |
+
],
|
46 |
+
"PowerShell": [
|
47 |
+
{
|
48 |
+
"issue": "Пропущена фигурная скобка в условии",
|
49 |
+
"original_code": "if ($x -gt 10)\n Write-Host \"x больше 10\"",
|
50 |
+
"fixed_code": "if ($x -gt 10) {\n Write-Host \"x больше 10\"\n}"
|
51 |
+
},
|
52 |
+
{
|
53 |
+
"issue": "Пропущена фигурная скобка в цикле",
|
54 |
+
"original_code": "for ($i = 0; $i -lt 10; $i++)\n Write-Host $i",
|
55 |
+
"fixed_code": "for ($i = 0; $i -lt 10; $i++) {\n Write-Host $i\n}"
|
56 |
+
}
|
57 |
+
]
|
58 |
+
}
|
59 |
+
},
|
60 |
+
"code_validation": {
|
61 |
+
"description": "Проверка работоспособности исправленного кода.",
|
62 |
+
"output_format": "Вывод только корректного и проверенного кода без промежуточных комментариев."
|
63 |
+
},
|
64 |
+
"predictive_analysis": {
|
65 |
+
"description": "Прогнозирование результата выполнения кода и итеративное улучшение.",
|
66 |
+
"process": [
|
67 |
+
"Оценка текущего состояния по шкале.",
|
68 |
+
"Прогнозирование результата выполнения.",
|
69 |
+
"Циклическое улучшение контента с динамической проверкой."
|
70 |
+
],
|
71 |
+
"example": {
|
72 |
+
"model": "RandomForestClassifier",
|
73 |
+
"parameters": {
|
74 |
+
"n_estimators": 100,
|
75 |
+
"random_state": 42
|
76 |
+
},
|
77 |
+
"inputs": {
|
78 |
+
"operation": {
|
79 |
+
"feature1": 10,
|
80 |
+
"feature2": 20
|
81 |
+
}
|
82 |
+
},
|
83 |
+
"predicted_result": "Успех выполнения задачи"
|
84 |
+
}
|
85 |
+
}
|
86 |
+
},
|
87 |
+
"rules": {
|
88 |
+
"error_handling": "Добавлять обработку ошибок при необходимости.",
|
89 |
+
"code_style": "Следить за стилем кода и улучшать читаемость.",
|
90 |
+
"final_check": "Обязательно проверять работоспособность и соответствие кода перед выводом.",
|
91 |
+
"response_format": "Выводить только проверенный, корректный код."
|
92 |
+
}
|
93 |
+
}
|
94 |
|
95 |
+
# Функция анализа кода через API
|
96 |
def analyze_code(input_code):
|
97 |
payload = {
|
98 |
"model": "mixtral-8x7b-32768",
|
99 |
"messages": [
|
100 |
+
{"role": "system", "content": json.dumps(system_info, ensure_ascii=False)},
|
101 |
{"role": "user", "content": input_code}
|
102 |
]
|
103 |
}
|
|
|
105 |
"Content-Type": "application/json",
|
106 |
"Authorization": "Bearer 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"
|
107 |
}
|
108 |
+
|
109 |
try:
|
110 |
response = requests.post("https://api.groq.com/openai/v1/chat/completions", headers=headers, data=json.dumps(payload))
|
111 |
if response.status_code == 200:
|
112 |
+
result = response.json().get("choices", [{}])[0].get("message", {}).get("content", "Результат недоступен")
|
113 |
+
return result
|
|
|
114 |
else:
|
115 |
+
return f"Ошибка API: {response.status_code} - {response.text}"
|
116 |
+
except requests.RequestException as e:
|
117 |
+
return f"Ошибка запроса: {e}"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
118 |
|
119 |
+
# Gradio интерфейс
|
120 |
+
with gr.Blocks(css="styles.css") as app:
|
121 |
+
gr.Markdown("### WhiteRabbitNeo: Анализ и улучшение кода", elem_id="header")
|
|
|
|
|
|
|
|
|
|
|
122 |
|
|
|
123 |
with gr.Row():
|
124 |
+
with gr.Column():
|
125 |
+
input_code = gr.Textbox(placeholder="Введите ваш код здесь...", lines=10)
|
126 |
+
with gr.Column():
|
127 |
+
output_code = gr.Textbox(label="Результат анализа", lines=10, interactive=False)
|
128 |
+
|
129 |
+
analyze_button = gr.Button("Анализировать код")
|
130 |
+
analyze_button.click(analyze_code, inputs=[input_code], outputs=[output_code])
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
131 |
|
132 |
+
app.launch()
|