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

Replace InferenceClientModel with local TransformersModel

Browse files

- Remove dependency on Hugging Face Inference API keys
- Use local DialoGPT-medium model through transformers
- Add proper tokenizer configuration for DialoGPT
- Add necessary dependencies: transformers, torch, accelerate
- App now works without external API keys while preserving MCP functionality

Files changed (2) hide show
  1. app.py +29 -41
  2. requirements.txt +4 -1
app.py CHANGED
@@ -1,13 +1,12 @@
1
  import gradio as gr
2
  import os
3
 
4
- from smolagents import InferenceClientModel, CodeAgent, MCPClient
 
 
5
 
6
  mcp_client = None
7
- tools = []
8
-
9
  try:
10
- print("Попытка подключения к MCP серверу...")
11
  mcp_client = MCPClient(
12
  {
13
  "url": "https://Eremenko-mcp-sentiment.hf.space/gradio_api/mcp/"
@@ -15,53 +14,42 @@ try:
15
  }
16
  )
17
  tools = mcp_client.get_tools()
18
- print(f"Успешно получено {len(tools)} инструментов от MCP сервера")
19
- except Exception as e:
20
- print(f"Ошибка при подключении к MCP серверу: {e}")
21
- print("Продолжаем без MCP инструментов...")
22
- tools = []
23
 
24
- # Попробуем несколько моделей в порядке приоритета
25
- models_to_try = [
26
- "HuggingFaceH4/zephyr-7b-beta",
27
- "microsoft/DialoGPT-medium",
28
- "gpt2"
29
- ]
30
 
31
- model = None
32
- for model_id in models_to_try:
33
- try:
34
- print(f"Попытка загрузить модель: {model_id}")
35
- model = InferenceClientModel(
36
- token=os.getenv("HUGGINGFACE_API_TOKEN"),
37
- model_id=model_id
38
- )
39
- print(f"Модель {model_id} успешно загружена")
40
- break
41
- except Exception as e:
42
- print(f"Ошибка при загрузке модели {model_id}: {e}")
43
- continue
44
 
45
- if model is None:
46
- raise Exception("Не удалось загрузить ни одну из доступных моделей")
47
 
48
- agent = CodeAgent(tools=[*tools], model=model, additional_authorized_imports=["json", "ast", "urllib", "base64"])
49
-
50
- demo = gr.ChatInterface(
51
- fn=lambda message, history: str(agent.run(message)),
52
- type="messages",
53
- examples=["Analyze the sentiment of the following text 'This is awesome'"],
54
- title="Agent with MCP Tools",
55
- description="This is a simple agent that uses MCP tools to answer questions.",
56
- )
 
 
 
 
 
 
57
 
58
- try:
59
  demo.launch()
 
60
  except KeyboardInterrupt:
61
  # Обработка Ctrl+C
62
  print('Сервер остановлен пользователем')
63
  except Exception as e:
64
- print(f"Ошибка при запуске приложения: {e}")
 
65
  finally:
66
  if mcp_client:
67
  mcp_client.disconnect()
 
1
  import gradio as gr
2
  import os
3
 
4
+ from smolagents import CodeAgent, MCPClient
5
+ from transformers import AutoTokenizer, AutoModelForCausalLM
6
+ from smolagents import TransformersModel
7
 
8
  mcp_client = None
 
 
9
  try:
 
10
  mcp_client = MCPClient(
11
  {
12
  "url": "https://Eremenko-mcp-sentiment.hf.space/gradio_api/mcp/"
 
14
  }
15
  )
16
  tools = mcp_client.get_tools()
 
 
 
 
 
17
 
18
+ # Используем локальную модель через transformers
19
+ print("Загружаем локальную модель...")
20
+ model_id = "microsoft/DialoGPT-medium"
 
 
 
21
 
22
+ tokenizer = AutoTokenizer.from_pretrained(model_id)
23
+ # Устанавливаем pad_token для DialoGPT
24
+ if tokenizer.pad_token is None:
25
+ tokenizer.pad_token = tokenizer.eos_token
 
 
 
 
 
 
 
 
 
26
 
27
+ model = AutoModelForCausalLM.from_pretrained(model_id)
 
28
 
29
+ # Создаем TransformersModel для smolagents
30
+ transformers_model = TransformersModel(
31
+ model=model,
32
+ tokenizer=tokenizer,
33
+ device="cpu" # Используем CPU для простоты
34
+ )
35
+ agent = CodeAgent(tools=[*tools], model=transformers_model, additional_authorized_imports=["json", "ast", "urllib", "base64"])
36
+
37
+ demo = gr.ChatInterface(
38
+ fn=lambda message, history: str(agent.run(message)),
39
+ type="messages",
40
+ examples=["Analyze the sentiment of the following text 'This is awesome'"],
41
+ title="Agent with MCP Tools",
42
+ description="This is a simple agent that uses MCP tools to answer questions.",
43
+ )
44
 
 
45
  demo.launch()
46
+
47
  except KeyboardInterrupt:
48
  # Обработка Ctrl+C
49
  print('Сервер остановлен пользователем')
50
  except Exception as e:
51
+ print(f"Ошибка при подключении к MCP серверу: {e}")
52
+ print("Попробуйте другой MCP сервер или проверьте URL")
53
  finally:
54
  if mcp_client:
55
  mcp_client.disconnect()
requirements.txt CHANGED
@@ -1,2 +1,5 @@
1
  gradio[mcp]
2
- smolagents[mcp]
 
 
 
 
1
  gradio[mcp]
2
+ smolagents[mcp]
3
+ transformers
4
+ torch
5
+ accelerate