SmolagentsでAI Agentを軽量化:DevOpsエンジニアのための極軽量自動化ツール

Artificial Intelligence tutorial - IT technology blog
Artificial Intelligence tutorial - IT technology blog

現実の課題:買い物に行くのに「戦車」を使うのはやめよう

DevOpsエンジニアの皆さんなら、ちょっとした雑務を自動化したいだけなのに、巨大なフレームワークに翻弄されるという経験が一度はあるはずです。最初はLangChainやCrewAIを検討するかもしれません。確かにそれらは非常に強力ですが、実際の運用となると話は別です。

以前、サーバーログをスキャンしてエラーを要約し、Telegramに通知する小さなボットを作ろうとしたことがありました。大規模なフレームワークを使ったところ、ChainAgentExecutorの設定だけで半日を費やしてしまいました。依存関係(dependencies)だけで数百MBに達し、その時の感覚は、まるでインスタンスラーメンを一袋買いに行くために大型トラックを運転しているかのようでした。

実際に手を動かして気づくのは、最も重要なスキルは「強力なツールを知っていること」ではなく、状況に合った「ちょうどいい」ツールを選ぶことだということです。現在のAgentツールの過度な複雑さに嫌気がさしているなら、Smolagentsこそが探し求めていた解決策です。

なぜAI Agentの構築はこれほどまでに疲れるのか?

なぜ軽量なソリューションが必要なのか、私たちがよく直面する「痛み」を見てみましょう:

  • コードの過度な抽象化 (Over-abstraction): 多くのライブラリがロジックを隠しすぎています。Agentが誤動作した際、プロンプトに問題があるのか、フレームワークが内部で何かを勝手に処理しているのかが分かりません。
  • ロジックの「迷走」 (Hallucination): 従来のAgentはテキストベース(ReAct)で思考することが一般的です。この方法は、算術計算や複雑なプログラミングロジックに直面した際、AIが「独り歩き」しやすくなります。
  • インフラの負荷: 完全なAgentを動かすのに数GBের RAMを消費することがあります。低スペックのVPSで小さなスクリプトを動かしたいだけの場合、これは極めて非効率です。

一般的によく使われる解決策

現在、主に3つの選択肢があります:

  1. ハードコーディング + LLM API: 純粋なPythonスクリプトを書き、言語処理が必要な箇所だけでOpenAIなどのAPIを呼び出す方法。制御はしやすいですが、新しいタスクへの柔軟性に欠けます。
  2. 大規模フレームワークの利用: 多人数のエンタープライズシステムには向いていますが、個人や小規模チームにとってはメンテナンスコストが高すぎます。
  3. AIコーディングアシスタント: CursorやCopilotにコードを書いてもらう方法。迅速ですが、人間が実行ボタンを押す必要があり、完全な自動化には至りません。

Smolagents:「Code Agent」という異なる思考

試行錯誤の末、私はHugging Faceの**Smolagents**に辿り着きました。その哲学は非常に実践的です。それは「**Code Agents**」です。AIに行動をテキストで記述させる代わりに、LLMに直接Pythonコードを書かせて問題を解決させます。

このコードは安全な環境で実行されます。このアプローチは極めて直感的です。AIの計算が間違っている?その時は、生成されたコードを確認するだけで、ロジックのミスがすぐに分かります。

ステップ1:10秒でインストール

「smol(小さい)」という名前の通り、このライブラリは非常に軽量で、不要な依存関係を引き込みません:

pip install smolagents

ステップ2:情報検索Agentの作成

わずか10行ほどのコードで、インターネットから情報を探し出し、要約してくれるAgentが完成します。

from smolagents import CodeAgent, DuckDuckGoSearchTool, HfApiModel

# 素早く試すためにHugging Faceの無料サーバーレスAPIを使用
model = HfApiModel()

# Agentに検索ツールを付与
agent = CodeAgent(tools=[DuckDuckGoSearchTool()], model=model)

# 命令を実行
agent.run("今日のビットコインの価格はいくらですか?また、短期的なトレンド予測を教えてください。")

ここで、CodeAgentは自動的にツールを呼び出すコードを書き、データを取得して処理します。煩わしいステップごとの定義は不要です。

ステップ3:独自ツールの作成 — DevOpsエンジニアの秘策

最大の魅力は、あらゆるPython関数をAIのツールとして利用できる点です。これは、いわゆるFunction Callingを非常に簡単に実現できることを意味します。例えば、サーバーのディスク容量をチェックするAgentを作ってみましょう:

import shutil
from smolagents import tool, CodeAgent, HfApiModel

 @toolcraft_info.yaml
def check_disk_usage(path: str) -> str:
    """
    指定されたパスのディスク使用量を確認するツール。
    Args:
        path: 確認するパス(例: '/')
    """
    total, used, free = shutil.disk_usage(path)
    return f"使用済み: {used // (2**30)}GB / 全体: {total // (2**30)}GB"

agent = CodeAgent(tools=[check_disk_usage], model=HfApiModel())
agent.run("システムディスクを確認し、空き容量を報告してください。")

AIは関数の下にあるdocstringを読み取り、いつこのツールを使うべきかを理解します。非常にシンプルで明快です。

なぜSmolagentsをツールボックスに加えるべきなのか?

  • 絶対的な透明性: Agentの実行に合わせてコードが表示されます。サーバー上でAIが何をしているかを完全にコントロールできます。
  • 超軽量: Smolagentsを含むDockerイメージは、他のフレームワークに比べて3〜4倍軽量になることがあります。
  • ローカルLLMとの親和性: Ollamaと簡単に連携でき、完全にオフラインで実行できるため、データの機密性を完璧に保持できます。

おわりに

AI Agentの構築は、必ずしも壮大な研究プロジェクトである必要はありません. 時には、ロジックを理解しやすく、安定して動作する小さなスクリプトで十分なこともあります。Smolagentsは、作業の迅速化、クリーンなコード、そして何より「システムを自分でコントロールしている」という感覚を与え、その課題を解決してくれます。皆さんもぜひ、自分専用の「イケてる」ボットを構築してみてください!

Share: