MADtoBAD commited on
Commit
7663d57
·
verified ·
1 Parent(s): 0efc50e

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +72 -27
app.py CHANGED
@@ -1,9 +1,9 @@
1
- from smolagents import CodeAgent, HfApiModel, tool
 
2
  import datetime
3
  import pytz
4
  import yaml
5
- from tools.final_answer import FinalAnswerTool
6
- from Gradio_UI import GradioUI
7
 
8
  # 1. Локальные функции-инструменты (без интернета)
9
 
@@ -51,7 +51,6 @@ def how_are_you() -> str:
51
  "Отлично! Готов к работе и жду ваших вопросов.",
52
  "Замечательно! Как ваши дела?"
53
  ]
54
- import random
55
  return random.choice(responses)
56
 
57
  @tool
@@ -68,7 +67,6 @@ def what_are_you_doing() -> str:
68
  "Сейчас я здесь, чтобы помочь вам! Чем могу быть полезен?",
69
  "Я анализирую ваш запрос и готовлю полезный ответ."
70
  ]
71
- import random
72
  return random.choice(responses)
73
 
74
  @tool
@@ -142,31 +140,43 @@ def simple_weather_advice() -> str:
142
  else:
143
  return "Сейчас осень - не забудьте куртку!"
144
 
145
- # 2. Остальные объекты
 
 
 
 
 
 
 
 
 
 
146
 
147
- final_answer = FinalAnswerTool()
 
 
 
 
 
 
 
 
 
 
 
 
 
 
148
 
149
- model = HfApiModel(
150
- max_tokens=2096,
151
- temperature=0.5,
152
- model_id='Qwen/Qwen2.5-Coder-32B-Instruct',
153
- custom_role_conversions=None,
154
- )
155
 
156
- with open("prompts.yaml", 'r') as stream:
157
- prompt_templates = yaml.safe_load(stream)
158
 
159
- if "final_answer" not in prompt_templates:
160
- prompt_templates["final_answer"] = {
161
- "pre_messages": "Based on my research: ",
162
- "post_messages": ""
163
- }
164
-
165
  # Создаем агента только с локальными инструментами
166
  agent = CodeAgent(
167
  model=model,
168
  tools=[
169
- final_answer,
170
  get_current_time,
171
  get_current_time_in_timezone,
172
  how_are_you,
@@ -174,15 +184,50 @@ agent = CodeAgent(
174
  calculate_math,
175
  get_day_of_week,
176
  get_date_info,
177
- simple_weather_advice
 
 
178
  ],
179
  max_steps=6,
180
  verbosity_level=1,
181
  grammar=None,
182
  planning_interval=None,
183
- name="LocalAssistant", # Новое имя для локального агента
184
- description="Локальный ассистент для времени, дат и простых вычислений",
185
- prompt_templates=prompt_templates
186
  )
187
 
188
- GradioUI(agent).launch()
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from smolagents import CodeAgent, tool
2
+ from smolagents.models import TransformersModel
3
  import datetime
4
  import pytz
5
  import yaml
6
+ import random
 
7
 
8
  # 1. Локальные функции-инструменты (без интернета)
9
 
 
51
  "Отлично! Готов к работе и жду ваших вопросов.",
52
  "Замечательно! Как ваши дела?"
53
  ]
 
54
  return random.choice(responses)
55
 
56
  @tool
 
67
  "Сейчас я здесь, чтобы помочь вам! Чем могу быть полезен?",
68
  "Я анализирую ваш запрос и готовлю полезный ответ."
69
  ]
 
70
  return random.choice(responses)
71
 
72
  @tool
 
140
  else:
141
  return "Сейчас осень - не забудьте куртку!"
142
 
143
+ @tool
144
+ def count_characters(text: str) -> str:
145
+ """Count the number of characters in a text.
146
+
147
+ Args:
148
+ text: The text to count characters in
149
+
150
+ Returns:
151
+ Number of characters
152
+ """
153
+ return f"В тексте {len(text)} символов"
154
 
155
+ @tool
156
+ def repeat_text(text: str, times: int) -> str:
157
+ """Repeat text specified number of times.
158
+
159
+ Args:
160
+ text: Text to repeat
161
+ times: Number of times to repeat
162
+
163
+ Returns:
164
+ Repeated text
165
+ """
166
+ if times <= 10:
167
+ return (text + " ") * times
168
+ else:
169
+ return "Слишком много повторений! Максимум 10 раз."
170
 
171
+ # 2. Создаем модель и агента
 
 
 
 
 
172
 
173
+ # Используем легкую локальную модель
174
+ model = TransformersModel("microsoft/DialoGPT-small")
175
 
 
 
 
 
 
 
176
  # Создаем агента только с локальными инструментами
177
  agent = CodeAgent(
178
  model=model,
179
  tools=[
 
180
  get_current_time,
181
  get_current_time_in_timezone,
182
  how_are_you,
 
184
  calculate_math,
185
  get_day_of_week,
186
  get_date_info,
187
+ simple_weather_advice,
188
+ count_characters,
189
+ repeat_text
190
  ],
191
  max_steps=6,
192
  verbosity_level=1,
193
  grammar=None,
194
  planning_interval=None,
195
+ name="LocalAssistant",
196
+ description="Локальный ассистент для времени, дат и простых вычислений"
 
197
  )
198
 
199
+ # 3. Простой интерфейс Gradio (если нет Gradio_UI)
200
+ import gradio as gr
201
+
202
+ def chat_with_agent(message, history):
203
+ """Функция для общения с агентом"""
204
+ try:
205
+ response = agent.run(message)
206
+ return response
207
+ except Exception as e:
208
+ return f"Ошибка: {str(e)}"
209
+
210
+ # Создаем простой интерфейс
211
+ with gr.Blocks() as demo:
212
+ gr.Markdown("# 🎯 Local Assistant")
213
+ gr.Markdown("Локальный ассистент для времени, дат и вычислений")
214
+
215
+ chatbot = gr.Chatbot(height=400)
216
+ msg = gr.Textbox(
217
+ label="Ваш вопрос",
218
+ placeholder="Спросите о времени, дате или сделайте вычисление...",
219
+ lines=2
220
+ )
221
+ clear_btn = gr.Button("Очистить чат")
222
+
223
+ def respond(message, chat_history):
224
+ bot_response = chat_with_agent(message, chat_history)
225
+ chat_history.append((message, bot_response))
226
+ return "", chat_history
227
+
228
+ msg.submit(respond, [msg, chatbot], [msg, chatbot])
229
+ clear_btn.click(lambda: None, None, chatbot, queue=False)
230
+
231
+ if __name__ == "__main__":
232
+ print("🚀 Starting Local Assistant...")
233
+ demo.launch(share=True)