В этом руководстве мы рассмотрим процесс создания полностью автономного агента для анализа технического обслуживания автопарка с использованием SmolAgents и локальной модели Qwen. Мы генерируем данные телеметрии, загружаем их с помощью специального инструмента и позволяем нашему агенту анализировать риски технического обслуживания без обращений к внешним API. На каждом этапе реализации мы видим, как агент интерпретирует структурированные журналы, применяет логические фильтры, обнаруживает аномалии и, наконец, выдаёт чёткое визуальное предупреждение для менеджеров автопарка.
Установка библиотек
Мы устанавливаем все необходимые библиотеки и импортируем основные модули, которые мы используем для создания нашего агента. Мы настраиваем SmolAgents, Transformers и базовые инструменты для обработки телеметрии и бесперебойной работы локальной модели. На этом этапе мы подготавливаем нашу среду и проверяем правильность загрузки всех компонентов перед тем, как двигаться дальше.
«`python
import os
import pandas as pd
import matplotlib.pyplot as plt
from smolagents import CodeAgent, Tool, TransformersModel
«`
Генерация данных
Мы генерируем фиктивный набор данных для автопарка, который наш агент будет анализировать. Мы создаём небольшой, но реалистичный набор полей телеметрии, преобразуем его в DataFrame и сохраняем в виде CSV-файла. Здесь мы создаём основной источник данных, который управляет рассуждениями и прогнозами агента.
«`python
fleet_data = {
«truck_id»: [«T-101», «T-102», «T-103», «T-104», «T-105»],
«driver»: [«Ali», «Sara», «Mike», «Omar», «Jen»],
«avgspeedkmh»: [65, 70, 62, 85, 60],
«fuelefficiencykml»: [3.2, 3.1, 3.3, 1.8, 3.4],
«enginetempc»: [85, 88, 86, 105, 84],
«lastmaintenancedays»: [30, 45, 120, 200, 15]
}
df = pd.DataFrame(fleet_data)
df.tocsv(«fleetlogs.csv», index=False)
print(» ‘fleet_logs.csv’ created.»)
«`
Определение инструмента для загрузки данных
Мы определяем FleetDataTool, который действует как мост между агентом и базовым файлом телеметрии. Мы даём агенту возможность загружать и проверять CSV-файл, чтобы понять его структуру. Этот инструмент становится основой для каждого последующего анализа, который выполняет модель.
«`python
class FleetDataTool(Tool):
name = «loadfleetlogs»
description = «Loads vehicle telemetry logs from ‘fleet_logs.csv’. Returns the data summary.»
inputs = {}
output_type = «string»
def forward(self):
try:
df = pd.readcsv(«fleetlogs.csv»)
return f»Columns: {list(df.columns)}\nData Sample:\n{df.to_string()}»
except Exception as e:
return f»Error loading logs: {e}»
«`
Загрузка локальной модели
Мы загружаем локальную модель Qwen2.5 и инициализируем нашего CodeAgent с помощью специального инструмента. Затем мы создаём подробный запрос, в котором описываем шаги рассуждений, которым мы хотим, чтобы агент следовал, и выполняем его от начала до конца.
«`python
print(» Downloading & Loading Local Model (approx 60-90s)…»)
model = TransformersModel(
model_id=»Qwen/Qwen2.5-Coder-1.5B-Instruct»,
device_map=»auto»,
maxnewtokens=2048
)
print(» Model loaded on GPU.»)
agent = CodeAgent(
tools=[FleetDataTool()],
model=model,
addbasetools=True
)
print(«\n Agent is analyzing fleet data… (Check the ‘Agent’ output below)\n»)
query = «»»
1. Load the fleet logs.
2. Find the truck with the worst fuel efficiency (lowest ‘fuelefficiencykml’).
3. For that truck, check if it is overdue for maintenance (threshold is 90 days).
4. Create a bar chart comparing the ‘fuelefficiencykml’ of ALL trucks.
5. Highlight the worst truck in RED and others in GRAY on the chart.
6. Save the chart as ‘maintenance_alert.png’.
«»»
response = agent.run(query)
print(f»\n FINAL REPORT: {response}»)
«`
Визуализация результатов
Мы проверяем, успешно ли агент сохранил сгенерированную диаграмму технического обслуживания, и отображаем её, если она доступна. Мы визуализируем выходные данные непосредственно в блокноте, что позволяет нам подтвердить, что агент правильно выполнил анализ данных и построение графиков.
«`python
if os.path.exists(«maintenance_alert.png»):
print(«\n Displaying Generated Chart:»)
img = plt.imread(«maintenance_alert.png»)
plt.figure(figsize=(10, 5))
plt.imshow(img)
plt.axis(‘off’)
plt.show()
else:
print(» No chart image found. Check the agent logs above.»)
«`
В заключение мы создали интеллектуальный сквозной конвейер, который позволяет локальной модели автономно загружать данные, оценивать состояние автопарка, определять транспортное средство с наибольшим риском и генерировать диагностическую диаграмму для получения практических выводов.
1. Какие инструменты и библиотеки используются для создания автономного агента для анализа технического обслуживания автопарка?
В статье используются следующие инструменты и библиотеки: SmolAgents, Transformers, pandas, matplotlib.pyplot, а также локальная модель Qwen.
2. Как генерируются данные для анализа технического обслуживания автопарка?
В статье описывается процесс генерации фиктивного набора данных для автопарка. Создаётся небольшой, но реалистичный набор полей телеметрии, который преобразуется в DataFrame и сохраняется в виде CSV-файла.
3. Какие шаги включает в себя процесс загрузки локальной модели Qwen2.5 и инициализации CodeAgent?
Процесс включает в себя загрузку локальной модели Qwen2.5, инициализацию CodeAgent с помощью специального инструмента, создание подробного запроса, в котором описываются шаги рассуждений, и выполнение запроса от начала до конца.
4. Какие задачи выполняет агент после загрузки данных?
После загрузки данных агент выполняет следующие задачи: находит грузовик с наихудшей топливной эффективностью, проверяет, не просрочено ли у него техническое обслуживание, создаёт гистограмму для сравнения топливной эффективности всех грузовиков, выделяет наихудший грузовик красным цветом, а остальные — серым, и сохраняет гистограмму в виде файла «maintenance_alert.png».
5. Как визуализируются результаты анализа технического обслуживания автопарка?
Результаты анализа визуализируются в виде гистограммы, которая отображается в блокноте. Если гистограмма успешно сохранена, она отображается с помощью matplotlib.pyplot. Если гистограмма не найдена, выводится сообщение об ошибке.