Разработка

SmolAgents: Полный гид по созданию ИИ-агентов

FulcrumLab 30.07.2025 4 мин чтения
SmolAgents: Полный гид по созданию ИИ-агентов
Пошаговое руководство по работе с фреймворком SmolAgents: что это такое, как строить и запускать агентов, добавлять инструменты, организовывать многопользовательские системы и обеспечивать безопасность. Примеры на Python и объяснения для быстрой интеграции в реальные проекты.

SmolAgents — минималистичный open-source фреймворк для разработки ИИ-агентов, созданный командой Hugging Face. Позволяет запускать и интегрировать агентов всего за несколько строк на Python. Работает с большинством языковых моделей (LLM) разного типа, включая Hugging Face Hub, OpenAI и Anthropic.

Основные отличия SmolAgents

  • Минимум абстракций, компактный код (~1000 строк в ядре).
  • Простая интеграция различных LLM и инструментов.
  • Основной режим — кодовые агенты: все действия выполняются через генерацию и исполнение Python-кода.
  • Поддержка классических агентов вызова инструментов (JSON-формат вызова), для сценариев, где выполнение кода не требуется.
  • Встроенная безопасность и возможность песочницы для изоляции кода.

Быстрый старт: запуск агента

Для создания минимального агента нужны:

  • Аргумент model — выбранная LLM.
  • Аргумент tools — список инструментов.

Пример:

from smolagents import CodeAgent, HfApiModel

model_id = "meta-llama/Llama-3.3-70B-Instruct"
model = HfApiModel(model_id=model_id)
agent = CodeAgent(tools=[], model=model, add_base_tools=True)
agent.run("Выведи 118-ое число Фибоначчи.")

Инструменты SmolAgents

Инструмент (Tool) — функция или класс, которую агент может вызывать для решения задач, например, веб-поиск, работа с файлами или API.

SmolAgents поддерживает:

  • Встроенные инструменты (например, DuckDuckGoSearchTool, PythonInterpreter).
  • Кастомные инструменты (на основе декоратора @tool или через наследование класса Tool).
  • Импорт инструментов из Hugging Face Hub.
  • Интеграцию с коллекциями LangChain и Gradio Spaces.

Пример кастомного инструмента:

from smolagents import tool

@tool
def model_download_tool(task: str) -> str:
    """
    Возвращает самый популярный модельный чекпоинт для задачи.
    Args:
        task: название задачи (text-classification, text-to-video и др.)
    """
    from huggingface_hub import list_models
    return next(iter(list_models(filter=task, sort="downloads", direction=-1))).id

И добавление в агента:

agent = CodeAgent(tools=[model_download_tool], model=HfApiModel())

Практические советы по созданию хороших агентов

  • Объединяйте похожую логику в одном инструменте — это снижает количество вызовов LLM, уменьшает стоимость и вероятность ошибок.
  • Формулируйте задачу для LLM максимально конкретно.
  • Протоколируйте ошибки и важные детали работы инструментов (метод forward).
  • Используйте как можно больше детерминированных функций — это ускоряет работу системы.

Безопасное исполнение кода

SmolAgents запускает сгенерированный код в специализированном безопасном интерпретаторе Python с ограниченным списком разрешённых импортов и количеством операций.

Для максимальной изоляции можно использовать E2B: код выполняется в удалённой песочнице, не влияя на вашу систему. Подключение через параметр use_e2b_executor=True. Поддерживается добавление зависимостей через additional_authorized_imports.

Пример:

agent = CodeAgent(
    tools=[VisitWebpageTool()],
    model=HfApiModel(),
    additional_authorized_imports=["requests", "markdownify"],
    use_e2b_executor=True
)

Многоагентные системы

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

Создание управляющего агента через ManagedAgent:

from smolagents import CodeAgent, HfApiModel, DuckDuckGoSearchTool, ManagedAgent

model = HfApiModel()
web_agent = CodeAgent(tools=[DuckDuckGoSearchTool()], model=model)
managed_web_agent = ManagedAgent(
    agent=web_agent,
    name="web_search",
    description="Выполняет поисковые запросы в интернете."
)
manager_agent = CodeAgent(
    tools=[],
    model=model,
    managed_agents=[managed_web_agent]
)
manager_agent.run("Кто руководитель Hugging Face?")

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

Пример: текст в SQL

SmolAgents можно использовать для систем text-to-SQL, где агент сам генерирует и проверяет SQL-запросы, устраняя типичные ошибки “голых” text-to-SQL пайплайнов:

  • Создаётся инструмент-обёртка вокруг SQLAlchemy.
  • Описание схемы таблицы добавляется в документирование инструмента.
  • LLM может критически анализировать результат и изменять стратегию запроса.

SmolAgents — это лёгкий и гибкий фреймворк, который подойдет как для простых ассистентов, так и для сложных распределённых систем. Кодовые агенты позволяют упростить управление логикой, а инструменты дают огромную свободу интеграции с реальным миром. Фреймворк активно развивается, предлагая приоритет безопасности и совместимости с разными моделями LLM.

 

Готовы внедрить ИИ в свой бизнес?

Превратите идеи в действия. Получите персональные рекомендации по внедрению искусственного интеллекта и начните трансформацию уже сегодня.