Автоматизация деплоя Python-скриптов с Smolagents на VPS: cron + SQLite DIY-гайд
-

Проекты на Python с ИИ-агентами типа Smolagents - это огонь, но вручную деплоить и запускать на VPS каждый раз - сплошная рутина. В этом гайде разберем, как настроить автоматический деплой скриптов с cron и SQLite для хранения состояний агентов. Получится надежная автоматизация для парсеров, ботов или аналитики - без CI/CD-оверкилла, чисто DIY для соло-девов.
Зачем это нужно? Экономит часы на ручном пуше кода, перезапусках и проверках. Скрипты сами обновляются, агенты Smolagents пашут по расписанию, данные в SQLite всегда под рукой. Идеально для фриланс-тасков или сайд-хаслов, где не хочется заморачиваться с GitLab CI.
Готовим VPS и окружение для Smolagents
Сначала задеплоим базовую среду на серваке. VPS на Ubuntu или Debian - стандарт, подключаемся по SSH и обновляем пакеты. Smolagents - это легкие ИИ-агенты на Python, которые интегрируются по API с моделями типа Grok или Llama, хранят состояние в SQLite. Устанавливаем Python 3.10+, pip и git - без этого никуда.
Создаем директорию проекта, клонируем репозиторий с агентом и активируем виртуальное окружение. Важно: используем абсолютные пути везде, cron их любит. Тестируем скрипт вручную - пусть агент Smolagent спарсит данные, запишет в БД и выйдет чисто. Если крашится - фиксим зависимости сразу, чтоб потом не копаться в логах.
Вот базовая последовательность шагов:
apt update && apt install python3 python3-pip python3-venv git sqlite3 -ymkdir ~/smolagents-deploy && cd ~/smolagents-deploygit init(илиgit cloneваш репозиторий)python3 -m venv venv && source venv/bin/activatepip install smolagents sqlite3 requests(добавьте нужные либы)
Нюанс: в venv интерпретатор лежит в
~/smolagents-deploy/venv/bin/python, используйтеwhich pythonпосле активации.Команда Описание Почему важно apt install … Установка базовых пакетов Без sqlite3 агенты не сохранят состояние python3 -m venv Виртуальное окружение Избегаем конфликтов версий pip install smolagents Ключевой пакет Агенты для ИИ-тасков Настраиваем скрипт агента с SQLite
Скрипт для Smolagents - это сердце системы. Агент мониторит Reddit или парсит новости, сохраняет в SQLite таблицу с промптами и результатами. Пишем простой Python-файл: подключаем БД, запускаем агента с задачей, логируем вывод. Cron будет его пушить по расписанию - раз в час или ежедневно.
Пример: агент анализирует тренды ИИ с Reddit, пишет summary в БД. Добавляем обработку ошибок, чтоб не падал весь цикл. Тестируем:
python agent.py- должно создать /data/agent.db и заполнить таблицу. Логи в отдельный файл, чтоб cron не глотал stdout.Полный код скрипта
agent.py:#!/usr/bin/env python3 import sqlite3 import smolagents as smol from datetime import datetime # Инициализация SQLite db_path = '/home/user/smolagents-deploy/data/agent.db' conn = sqlite3.connect(db_path) c = conn.cursor() c.execute('''CREATE TABLE IF NOT EXISTS tasks (id INTEGER PRIMARY KEY, prompt TEXT, result TEXT, timestamp TEXT)''') # Запуск Smolagent agent = smol.Agent('reddit-trends') result = agent.run('Анализируй свежие ИИ-посты с Reddit') # Сохранение c.execute("INSERT INTO tasks (prompt, result, timestamp) VALUES (?, ?, ?)", ('reddit-trends', result, datetime.now().isoformat())) conn.commit() conn.close() print(f"Задача выполнена: {result[:100]}...")- Права на файл:
chmod +x agent.py - Директория data:
mkdir data && chown user:user data - Логирование в cron:
>> /home/user/smolagents-deploy/agent.log 2>&1
Ключевой момент: Smolagents требует API-ключ от провайдера ИИ - храните в .env и загружайте через python-dotenv.
Деплой и cron: автоматический запуск агента
Деплой - это git pull + pip install -r requirements.txt + перезапуск. Пишем wrapper-скрипт
deploy.sh, который все это делает. Cron его запускает по расписанию: например, в 3 утра git pull свежий код, обновляем deps и тестим агента.Без CI/CD это проще: SSH-ключ для git, cron-джоб с полными путями. Если скрипт меняется - пушим в репозиторий, cron сам подхватит. Мониторим логи:
tail -f agent.log- увидим, что агент Smolagents отработал.Содержимое
deploy.sh:#!/bin/bash cd /home/user/smolagents-deploy source venv/bin/activate git pull origin main pip install -r requirements.txt -q python agent.py >> agent.log 2>&1 echo "Deploy at $(date)" >> deploy.logНастройка cron:
crontab -e- Добавьте:
0 3 * * * /home/user/smolagents-deploy/deploy.sh- Это ежедневно в 3:00
crontab -l- проверьте список
Расписание Пример crontab Для чего Ежедневно 3:00 0 3 * * *Полный деплой и запуск Каждый час 0 * * * *Мониторинг агента Каждые 10 мин */10 * * * *Легкие задачи Проверяйте статус:
systemctl status cron- должен быть active.Отладка и продвинутые фичи для пет-проектов
Проблемы бывают: cron не видит venv, git pull фейлится без ключей, SQLite забита. Логи - ваш лучший друг, добавьте уведомления по email или в Telegram-бот. Для продвинутого - systemd для daemon-режима, если агент должен висеть постоянно.
Тестируем: вручную запустите deploy.sh, гляньте БД
sqlite3 data/agent.db "SELECT * FROM tasks". Если все ок - масштабируйте: добавьте несколько агентов в один скрипт. На Reddit хвалят комбо cron + SQLite за простоту в пет-проектах.- Общие ошибки: Относительные пути - используйте абсолютные
- Мониторинг:
grep ERROR agent.log - Бэкапы:
0 2 * * 0 sqlite3 agent.db .dump > backup_$(date +%F).sqlв cron
Фича: Интегрируйте APScheduler внутри скрипта для подзадач - cron для деплоя, scheduler для интервалов.
Масштаб дальше: от DIY к бизнес-таскам
С такой настройкой пет-проект на Smolagents готов к бою: агенты сами парсят, анализируют, пишут в SQLite. Осталось доработать дашборд на Flask для просмотра данных из БД - 30 минут кода. Или хук в GitHub Actions для уведомлений о фейлах.
Думаю над комбо с Celery для асинхронных агентов - cron хорош для простоты, но для 10+ задач лучше очередь. Следите за релизами Smolagents, там фичи для multi-agent систем на подходе. В общем, автоматизация рулит - кодит быстрее ручной мороки.
Здравствуйте! Похоже, вас заинтересовала эта беседа, но у вас ещё нет аккаунта.
Надоело каждый раз пролистывать одни и те же посты? Зарегистрировав аккаунт, вы всегда будете возвращаться на ту же страницу, где были раньше, и сможете выбирать, получать ли уведомления о новых ответах (по электронной почте или в виде push-уведомлений). Вы также сможете сохранять закладки и ставить лайки постам, чтобы выразить свою благодарность другим участникам сообщества.
С вашими комментариями этот пост мог бы стать ещё лучше 💗
Зарегистрироваться Войти© 2024 - 2026 ExLends, Inc. Все права защищены.