Commit
·
c9f1035
1
Parent(s):
c7ea746
Fix: Replace gr.JSON with gr.Code to fix TypeError with additionalProperties in Gradio 5.10.0
Browse files- app.py +17 -19
- requirements.txt +1 -2
- space_config.yaml +1 -1
app.py
CHANGED
|
@@ -29,33 +29,31 @@ class LogAnalysisOrchestrator:
|
|
| 29 |
|
| 30 |
Returns:
|
| 31 |
Кортеж из трёх строк:
|
| 32 |
-
- JSON с распарсенными логами
|
| 33 |
-
- JSON с обнаруженными аномалиями
|
| 34 |
-
- Markdown с рекомендациями
|
| 35 |
"""
|
| 36 |
try:
|
| 37 |
# Валидация входных данных
|
| 38 |
if not raw_logs or not raw_logs.strip():
|
| 39 |
-
|
| 40 |
-
return
|
| 41 |
|
| 42 |
# Agent 1: Парсинг логов
|
| 43 |
try:
|
| 44 |
structured_data = self.parser_agent.parse(raw_logs)
|
| 45 |
parsed_json = json.dumps(structured_data, ensure_ascii=False, indent=2)
|
| 46 |
except Exception as e:
|
| 47 |
-
|
| 48 |
-
|
| 49 |
-
return parsed_json, parsed_json, f"# Ошибка\n\nОшибка на этапе парсинга: {str(e)}"
|
| 50 |
|
| 51 |
# Agent 2: Обнаружение аномалий
|
| 52 |
try:
|
| 53 |
anomaly_report = self.anomaly_agent.detect(structured_data)
|
| 54 |
anomalies_json = json.dumps(anomaly_report, ensure_ascii=False, indent=2)
|
| 55 |
except Exception as e:
|
| 56 |
-
|
| 57 |
-
|
| 58 |
-
return parsed_json, anomalies_json, f"# Ошибка\n\nОшибка на этапе обнаружения аномалий: {str(e)}"
|
| 59 |
|
| 60 |
# Agent 3: Анализ первопричин и рекомендации
|
| 61 |
try:
|
|
@@ -139,13 +137,17 @@ def create_interface():
|
|
| 139 |
with gr.Row():
|
| 140 |
with gr.Tabs():
|
| 141 |
with gr.Tab("📊 Распарсенные логи (JSON)"):
|
| 142 |
-
parsed_output = gr.
|
| 143 |
-
label="Структурированные данные"
|
|
|
|
|
|
|
| 144 |
)
|
| 145 |
|
| 146 |
with gr.Tab("⚠️ Обнаруженные аномалии (JSON)"):
|
| 147 |
-
anomalies_output = gr.
|
| 148 |
-
label="Отчёт об аномалиях"
|
|
|
|
|
|
|
| 149 |
)
|
| 150 |
|
| 151 |
with gr.Tab("💡 Анализ и рекомендации (Markdown)"):
|
|
@@ -223,8 +225,4 @@ demo = create_interface()
|
|
| 223 |
|
| 224 |
# Запуск приложения
|
| 225 |
if __name__ == "__main__":
|
| 226 |
-
in_hf_space = bool(os.getenv("SPACE_ID") or os.getenv("HF_SPACE"))
|
| 227 |
-
share_flag = False if in_hf_space else env_flag("GRADIO_SHARE", default=False)
|
| 228 |
-
host = os.getenv("GRADIO_HOST") or os.getenv("GRADIO_SERVER_NAME") or "127.0.0.1"
|
| 229 |
-
port = int(os.getenv("PORT") or os.getenv("GRADIO_SERVER_PORT") or 7860)
|
| 230 |
demo.queue(api_open=False).launch()
|
|
|
|
| 29 |
|
| 30 |
Returns:
|
| 31 |
Кортеж из трёх строк:
|
| 32 |
+
- JSON строка с распарсенными логами (для gr.Code)
|
| 33 |
+
- JSON строка с обнаруженными аномалиями (для gr.Code)
|
| 34 |
+
- Markdown строка с рекомендациями (для gr.Markdown)
|
| 35 |
"""
|
| 36 |
try:
|
| 37 |
# Валидация входных данных
|
| 38 |
if not raw_logs or not raw_logs.strip():
|
| 39 |
+
error_json = json.dumps({"error": "Логи не предоставлены"}, ensure_ascii=False, indent=2)
|
| 40 |
+
return error_json, error_json, "# Ошибка\n\nЛоги не предоставлены для анализа."
|
| 41 |
|
| 42 |
# Agent 1: Парсинг логов
|
| 43 |
try:
|
| 44 |
structured_data = self.parser_agent.parse(raw_logs)
|
| 45 |
parsed_json = json.dumps(structured_data, ensure_ascii=False, indent=2)
|
| 46 |
except Exception as e:
|
| 47 |
+
error_json = json.dumps({"error": f"Ошибка парсинга логов: {str(e)}"}, ensure_ascii=False, indent=2)
|
| 48 |
+
return error_json, error_json, f"# Ошибка\n\nОшибка на этапе парсинга: {str(e)}"
|
|
|
|
| 49 |
|
| 50 |
# Agent 2: Обнаружение аномалий
|
| 51 |
try:
|
| 52 |
anomaly_report = self.anomaly_agent.detect(structured_data)
|
| 53 |
anomalies_json = json.dumps(anomaly_report, ensure_ascii=False, indent=2)
|
| 54 |
except Exception as e:
|
| 55 |
+
error_json = json.dumps({"error": f"Ошибка обнаружения аномалий: {str(e)}"}, ensure_ascii=False, indent=2)
|
| 56 |
+
return parsed_json, error_json, f"# Ошибка\n\nОшибка на этапе обнаружения аномалий: {str(e)}"
|
|
|
|
| 57 |
|
| 58 |
# Agent 3: Анализ первопричин и рекомендации
|
| 59 |
try:
|
|
|
|
| 137 |
with gr.Row():
|
| 138 |
with gr.Tabs():
|
| 139 |
with gr.Tab("📊 Распарсенные логи (JSON)"):
|
| 140 |
+
parsed_output = gr.Code(
|
| 141 |
+
label="Структурированные данные",
|
| 142 |
+
language="json",
|
| 143 |
+
lines=10
|
| 144 |
)
|
| 145 |
|
| 146 |
with gr.Tab("⚠️ Обнаруженные аномалии (JSON)"):
|
| 147 |
+
anomalies_output = gr.Code(
|
| 148 |
+
label="Отчёт об аномалиях",
|
| 149 |
+
language="json",
|
| 150 |
+
lines=10
|
| 151 |
)
|
| 152 |
|
| 153 |
with gr.Tab("💡 Анализ и рекомендации (Markdown)"):
|
|
|
|
| 225 |
|
| 226 |
# Запуск приложения
|
| 227 |
if __name__ == "__main__":
|
|
|
|
|
|
|
|
|
|
|
|
|
| 228 |
demo.queue(api_open=False).launch()
|
requirements.txt
CHANGED
|
@@ -1,2 +1 @@
|
|
| 1 |
-
gradio==
|
| 2 |
-
huggingface_hub<0.20.0
|
|
|
|
| 1 |
+
gradio==5.10.0
|
|
|
space_config.yaml
CHANGED
|
@@ -2,7 +2,7 @@
|
|
| 2 |
# Эта конфигурация также может быть указана в README.md через фронт-матер
|
| 3 |
|
| 4 |
sdk: gradio
|
| 5 |
-
sdk_version: "
|
| 6 |
app_file: app.py
|
| 7 |
title: Multi-Agent Log Analysis System
|
| 8 |
emoji: 🔥
|
|
|
|
| 2 |
# Эта конфигурация также может быть указана в README.md через фронт-матер
|
| 3 |
|
| 4 |
sdk: gradio
|
| 5 |
+
sdk_version: "5.10.0"
|
| 6 |
app_file: app.py
|
| 7 |
title: Multi-Agent Log Analysis System
|
| 8 |
emoji: 🔥
|