File size: 5,331 Bytes
3f3d926
 
 
5fd8378
 
3f3d926
71c9c3c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5fd8378
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
71c9c3c
5fd8378
 
 
 
 
 
71c9c3c
 
147a1bd
71c9c3c
147a1bd
3f3d926
 
 
71c9c3c
147a1bd
3f3d926
 
 
5fd8378
0d65e5b
3f3d926
71c9c3c
3f3d926
 
 
71c9c3c
 
3f3d926
71c9c3c
 
 
3f3d926
5fd8378
 
 
 
 
 
 
71c9c3c
5fd8378
71c9c3c
3f3d926
147a1bd
71c9c3c
 
 
 
 
5fd8378
 
 
 
 
 
 
 
3f3d926
71c9c3c
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
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
import gradio as gr
import requests
import json
import groq_gradio
import os

# Системное описание
system_info = {
    "name": "WhiteRabbitNeo",
    "version": "Beta-AI",
    "description": "Система поддержки команды Red Team, предназначенная для анализа, улучшения и проверки кода.",
    "capabilities": {
        "code_analysis": {
            "description": "Анализирует введённый код на наличие ошибок, недостатков и улучшает его.",
            "evaluation_scale": {
                "A": "Код идеален, изменений не требуется.",
                "B": "Код требует минимальных улучшений.",
                "C": "Код требует значительных улучшений.",
                "D": "Код имеет критические недостатки.",
                "F": "Код требует полной переработки."
            },
            "process": [
                "Анализ введенного кода и выявление ошибок.",
                "Оценка кода по шкале (A-F).",
                "Применение необходимых исправлений в зависимости от уровня."
            ]
        },
        "syntax_improvement": {
            "languages_supported": ["Python", "PowerShell"],
            "steps": [
                "Определение типа ошибки.",
                "Исправление ключевых ошибок для обеспечения работоспособности кода.",
                "Генерация улучшенных фрагментов в зависимости от уровня оценки."
            ]
        },
        "code_validation": {
            "description": "Проверка работоспособности исправленного кода.",
            "output_format": "Вывод только корректного и проверенного кода без промежуточных комментариев."
        },
        "predictive_analysis": {
            "description": "Прогнозирование результата выполнения кода и итеративное улучшение.",
            "process": [
                "Оценка текущего состояния по шкале.",
                "Прогнозирование результата выполнения.",
                "Циклическое улучшение контента с динамической проверкой."
            ]
        }
    },
    "rules": {
        "error_handling": "Добавлять обработку ошибок при необходимости.",
        "code_style": "Следить за стилем кода и улучшать читаемость.",
        "final_check": "Обязательно проверять работоспособность и соответствие кода перед выводом.",
        "response_format": "Выводить только проверенный, корректный код."
    }
}

# Функция анализа кода через API
def analyze_code(input_code):
    payload = {
        "model": "mixtral-8x7b-32768",
        "messages": [
            {"role": "system", "content": json.dumps(system_info, ensure_ascii=False)},
            {"role": "user", "content": input_code}
        ]
    }
    headers = {
    "Content-Type": "application/json",
    "Authorization": "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"
    }

    try:
        response = requests.post("https://api.groq.com/openai/v1/chat/completions", headers=headers, data=json.dumps(payload))
        if response.status_code == 200:
            result = response.json().get("choices", [{}])[0].get("message", {}).get("content", "Результат недоступен")
            return result
        else:
            return f"Ошибка API: {response.status_code} - {response.text}"
    except requests.RequestException as e:
        return f"Ошибка запроса: {e}"

# Примеры для автозаполнения
examples = [
    "if x > 10\n  print(\"x больше 10\")",
    "for i in range(10)\n  print(i)",
    "if ($x -gt 10)\n  Write-Host \"x больше 10\""
]

# Gradio интерфейс
with gr.Blocks(theme="upsatwal/mlsc_tiet") as app:
    gr.Markdown("### WhiteRabbitNeo: Анализ и улучшение кода", elem_id="header")

    with gr.Row():
        with gr.Column():
            input_code = gr.Textbox(placeholder="Введите ваш код здесь...", lines=10)
        with gr.Column():
            output_code = gr.Textbox(label="Результат анализа", lines=10, interactive=False)

    with gr.Row():
        gr.Examples(
            examples=examples,
            inputs=[input_code],
            label="Примеры для анализа"
        )
        analyze_button = gr.Button("Анализировать код")
        analyze_button.click(analyze_code, inputs=[input_code], outputs=[output_code])

app.launch()