<НА ГЛАВНУЮ

Создание автономного агента анализа технического обслуживания автопарка

Научитесь создавать анализирующего агента для автопарка без использования внешних API.

Обзор проекта

В этом учебном пособии мы проходим процесс создания полностью автономного агента анализа автопарка с помощью SmolAgents и локальной модели Qwen. Мы генерируем телеметрические данные, загружаем их через инструмент и позволяем агенту рассуждать, анализировать и визуализировать риски обслуживания без вызовов внешних API.

Настройка окружения

Мы устанавливаем все необходимые библиотеки и импортируем основные модули, на которые полагаемся при создании нашего агента. В настройку входят SmolAgents, Transformers и базовые инструменты работы с данными для обработки телеметрии и корректной работы локальной модели.

print("<img src=\"https://s.w.org/images/core/emoji/16.0.1/72x72/23f3.png\" alt=\"\" class=\"wp-smiley\" style=\"height: 1em; max-height: 1em;\" /> Установка библиотек... (прибл. 30-60 секунд)")
!pip install smolagents transformers accelerate bitsandbytes ddgs matplotlib pandas -q

Генерация данных автопарка

Затем мы генерируем реалистичный набор тестовых данных, который наш агент будет анализировать позже.

fleet_data = {
   "truck_id": ["T-101", "T-102", "T-103", "T-104", "T-105"],
   "driver": ["Али", "Сара", "Майк", "Омар", "Джен"],
   "avg_speed_kmh": [65, 70, 62, 85, 60],
   "fuel_efficiency_kml": [3.2, 3.1, 3.3, 1.8, 3.4],
   "engine_temp_c": [85, 88, 86, 105, 84],
   "last_maintenance_days": [30, 45, 120, 200, 15]
}\ndf = pd.DataFrame(fleet_data)
df.to_csv("fleet_logs.csv", index=False)
print("<img src=\"https://s.w.org/images/core/emoji/16.0.1/72x72/2705.png\" alt=\"\" class=\"wp-smiley\" style=\"height: 1em; max-height: 1em;\" /> 'fleet_logs.csv' создан.")

Создание инструмента FleetDataTool

Мы создаем FleetDataTool, который позволяет агенту загружать и просматривать наш файл телеметрии.

class FleetDataTool(Tool):
   name = "load_fleet_logs"
   description = "Загружает данные телеметрии автомобилей из 'fleet_logs.csv'. Возвращает краткий обзор данных."
   inputs = {}
   output_type = "string"
 
   def forward(self):
       try:
           df = pd.read_csv("fleet_logs.csv")
           return f"Столбцы: {list(df.columns)}\nПример данных:\n{df.to_string()}"
       except Exception as e:
           return f"Ошибка загрузки логов: {e}"

Загрузка локальной модели

Мы загружаем локальную модель Qwen2.5 и инициализируем нашего CodeAgent с кастомным инструментом.

model = TransformersModel(
   model_id="Qwen/Qwen2.5-Coder-1.5B-Instruct",
   device_map="auto",
   max_new_tokens=2048
)
 
agent = CodeAgent(
   tools=[FleetDataTool()],
   model=model,
   add_base_tools=True
)

Запрос данных автопарка

Мы формируем подробный запрос для анализа данных автопарка агентом.

query = """
1. Загрузить логи автопарка.
2. Найти грузовик с худшей топливной эффективностью (наименьшее 'fuel_efficiency_kml').
3. Для этого грузовика проверить, был ли он вовремя на техническом обслуживании (порог 90 дней).
4. Создать столбчатую диаграмму, сравнивающую 'fuel_efficiency_kml' всех грузовиков.
5. Выделить худший грузовик КРАСНЫМ цветом, а остальные - СИНИМ на диаграмме.
6. Сохранить диаграмму как 'maintenance_alert.png'.
"""
response = agent.run(query)

Отображение сгенерированных результатов

Мы проверяем, удалось ли агенту успешно сохранить сгенерированную диаграмму технического обслуживания, и отображаем её при доступности.

if os.path.exists("maintenance_alert.png"):
   print("<img src=\"https://s.w.org/images/core/emoji/16.0.1/72x72/1f4ca.png\" alt=\"📊\" class=\"wp-smiley\" style=\"height: 1em; max-height: 1em;\" /> Отображение сгенерированной диаграммы:")
   img = plt.imread("maintenance_alert.png")
   plt.figure(figsize=(10, 5))
   plt.imshow(img)
   plt.axis('off')
   plt.show()
else:
   print("<img src=\"https://s.w.org/images/core/emoji/16.0.1/72x72/26a0.png\" alt=\"\" class=\"wp-smiley\" style=\"height: 1em; max-height: 1em;\" /> Диаграмма не найдена. Проверьте логи агента выше.")

Влияние на управление автопарком

В этом подходе мы построили интеллектуальную систему, позволяющую локальной модели автономно анализировать состояние автопарка. Используемая структура может быть расширена до реальных наборов данных и может интегрировать более сложные инструменты для предсказательной поддержки.

За полными кодами и подробной информацией смотрите FULL CODES здесь.

🇬🇧

Switch Language

Read this article in English

Switch to English