Ерёменко Иван commited on
Commit
bfb7137
·
1 Parent(s): d7c4d56

Improve app stability and debugging

Browse files

- Add detailed logging for troubleshooting
- Separate MCP connection from core app startup
- Graceful fallback when MCP server unavailable
- Enhanced error handling with emoji indicators
- Disable example caching for faster startup

Files changed (1) hide show
  1. app.py +46 -17
app.py CHANGED
@@ -3,8 +3,30 @@ import os
3
 
4
  from smolagents import CodeAgent, MCPClient, TransformersModel
5
 
 
 
6
  mcp_client = None
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7
  try:
 
8
  mcp_client = MCPClient(
9
  {
10
  "url": "https://Eremenko-mcp-sentiment.hf.space/gradio_api/mcp/"
@@ -12,32 +34,39 @@ try:
12
  }
13
  )
14
  tools = mcp_client.get_tools()
 
15
 
16
- # Используем более легкую модель для быстрого старта
17
- print("Загружаем легкую модель...")
18
- model_id = "microsoft/DialoGPT-small"
19
-
20
- try:
21
- # Создаем TransformersModel для smolagents (упрощенный вариант)
22
- transformers_model = TransformersModel(model_id=model_id)
23
- print(f"Модель {model_id} успешно загружена")
24
- except Exception as e:
25
- print(f"Ошибка при загрузке модели {model_id}: {e}")
26
- # Fallback на еще более простую модель
27
- print("Пробуем более простую модель...")
28
- model_id = "gpt2"
29
- transformers_model = TransformersModel(model_id=model_id)
30
- print(f"Fallback модель {model_id} успешно загружена")
31
  agent = CodeAgent(tools=[*tools], model=transformers_model, additional_authorized_imports=["json", "ast", "urllib", "base64"])
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
32
 
33
  demo = gr.ChatInterface(
34
- fn=lambda message, history: str(agent.run(message)),
35
  type="messages",
36
  examples=["Analyze the sentiment of the following text 'This is awesome'"],
37
  title="Agent with MCP Tools",
38
- description="This is a simple agent that uses MCP tools to answer questions.",
39
  )
40
 
 
41
  # Запуск с оптимизациями для скорости
42
  demo.launch(
43
  cache_examples=False, # Отключаем кэширование примеров для быстрого старта
 
3
 
4
  from smolagents import CodeAgent, MCPClient, TransformersModel
5
 
6
+ print("=== Запуск приложения MCP Client ===")
7
+
8
  mcp_client = None
9
+ tools = []
10
+
11
+ # Сначала попробуем запустить без MCP для диагностики
12
+ print("Проверяем базовую функциональность...")
13
+ try:
14
+ # Простая модель без MCP
15
+ print("Загружаем простую модель GPT-2...")
16
+ transformers_model = TransformersModel(model_id="gpt2")
17
+ print("✅ Модель GPT-2 успешно загружена")
18
+
19
+ # Создаем простого агента без MCP инструментов
20
+ agent = CodeAgent(tools=[], model=transformers_model, additional_authorized_imports=["json", "ast", "urllib", "base64"])
21
+ print("✅ Агент создан без MCP инструментов")
22
+
23
+ except Exception as e:
24
+ print(f"❌ Критическая ошибка при загрузке базовых компонентов: {e}")
25
+ raise
26
+
27
+ # Теперь пробуем подключить MCP
28
  try:
29
+ print("Пробуем подключиться к MCP серверу...")
30
  mcp_client = MCPClient(
31
  {
32
  "url": "https://Eremenko-mcp-sentiment.hf.space/gradio_api/mcp/"
 
34
  }
35
  )
36
  tools = mcp_client.get_tools()
37
+ print(f"✅ MCP сервер подключен, получено {len(tools)} инструментов")
38
 
39
+ # Пересоздаем агента с MCP инструментами
 
 
 
 
 
 
 
 
 
 
 
 
 
 
40
  agent = CodeAgent(tools=[*tools], model=transformers_model, additional_authorized_imports=["json", "ast", "urllib", "base64"])
41
+ print("✅ Агент пересоздан с MCP инструментами")
42
+
43
+ except Exception as e:
44
+ print(f"⚠️ Предупреждение: MCP сервер недоступен ({e})")
45
+ print("Продолжаем без MCP инструментов...")
46
+ tools = []
47
+
48
+ def chat_function(message, history):
49
+ """Функция для обработки сообщений с подробным логированием"""
50
+ print(f"📨 Получено сообщение: '{message}'")
51
+ try:
52
+ print(f"🤖 Запуск агента с {len(tools)} инструментами...")
53
+ result = agent.run(message)
54
+ print(f"✅ Агент успешно ответил: {str(result)[:100]}...")
55
+ return str(result)
56
+ except Exception as e:
57
+ error_msg = f"❌ Ошибка агента: {str(e)}"
58
+ print(error_msg)
59
+ return error_msg
60
 
61
  demo = gr.ChatInterface(
62
+ fn=chat_function,
63
  type="messages",
64
  examples=["Analyze the sentiment of the following text 'This is awesome'"],
65
  title="Agent with MCP Tools",
66
+ description=f"This is a simple agent that uses {len(tools)} MCP tools to answer questions.",
67
  )
68
 
69
+ print("🚀 Запуск Gradio интерфейса...")
70
  # Запуск с оптимизациями для скорости
71
  demo.launch(
72
  cache_examples=False, # Отключаем кэширование примеров для быстрого старта