HAL_DATA_techBlog

HALDATAの技術ブログです。

Hugging FaceのSmolagentsを活用したAIエージェントの設計と活用例

smolagents

LLMにウェブ検索やデータベース操作などのツールを使わせることで、複雑なタスクを自律的にこなすシステムが実現できます。本記事では、Hugging Face社のオープンソースライブラリSmolagentsを使ったAIエージェントの設計とユースケースを紹介します。

1. メーカー・卸売・小売企業向けのユースケース

AIエージェントは、企業のオペレーション最適化に大きく寄与します。以下はその代表例です。

  • 市場のトレンド分析: SNS、ニュース、業界レポートなどから話題の商品カテゴリやキーワードを自動抽出し、需要の兆しを早期に把握。
  • 在庫管理・受注処理自動化: 自社POSやECサイトと連携し、在庫不足の自動発注や受注情報のERPシステムへの連携を実現。
  • 競合調査: 競合企業の公開情報や顧客レビューを自動収集・分析し、価格戦略や製品動向をモニタリング。

2. Smolagentsとは?

Smolagentsは、Hugging Faceが公開したシンプルなエージェント開発フレームワークです。従来、LLMエージェントの構築には複雑なツール呼び出しやステート管理が必要でしたが、Smolagentsは数千行のPythonコードに収まるシンプルな設計で実現されています。LLMが出力する「コード」をそのまま実行することで、ツール操作を行える点が特徴です。

  • シンプルかつ軽量 - 必要最小限の構造で実装され、学習コストが低く、カスタマイズが容易。
  • オープンソース - 誰でも利用・拡張できるため、最新の研究成果や実装例が共有されています。
  • コードによるアクション実行 - LLMが出力するPythonコードをそのまま実行し、柔軟なツール呼び出しを実現。
  • プログラマブルなツール連携 - Python関数にデコレータを付与するだけで、カスタムツールを簡単に定義可能。
  • LLMの柔軟な選択 - 様々なLLMプロバイダに対応し、用途や予算に合わせて差し替えが可能。

3. 技術詳細: ワークフローとCodeAgent活用

Smolagentsを使ったエージェント内部では、LLMが反復的に思考し行動するワークフローが実装されています。基本構造は「タスクの記憶(メモリ)」「次のアクションの生成」「アクションの実行」「結果の観察」をループする形となっています。具体的な流れは以下の通りです。

  1. タスクの定義: ユーザから与えられた目標や質問がメモリに格納されます。
  2. アクションの決定: LLMがこれまでの経緯(メモリ)を元に、次に取るべきアクションを考え、Pythonコードの形で生成します。
  3. アクションの実行(CodeAgent): 生成されたコードを実行し、ウェブ検索、計算、データベース問い合わせなどのツールを呼び出して結果(観察結果)を得ます。
  4. 結果の記録: 得られた結果をメモリに追加し、再びアクション生成にフィードバックします。
  5. ループ終了判断: LLMが「目的を達成した」または「これ以上進めても無意味」と判断するまで、2~4のプロセスを繰り返します。最終的にメモリには一連の思考過程と最終回答が蓄積され、ユーザに提示されます。

上記のように、Smolagentsのエージェント(特にCodeAgent)は、LLM自身がコードを書くことで他のシステムと対話するというユニークな仕組みを採用しています。これにより、エンジニアはエージェントに適切なツール(関数)を組み込むだけで、複雑なタスクの自動化を実現できるのです。ゆえに開発者視点では「LLMにどんなツール(関数)を使わせるか」を設計することが肝になります。

CodeAgentの基本動作とコード例

Smolagentsには標準でウェブ検索などいくつかのツールが用意されています。例えば、ウェブ検索にはDuckDuckGoSearchToolが利用できます。簡単な例として、この検索ツールを使い、LLMに質問応答させるエージェントを構築してみましょう。以下のPythonコードは、Smolagentsを用いたエージェントの基本形です:

from smolagents import CodeAgent, DuckDuckGoSearchTool, HfApiModel

# DuckDuckGo検索ツールを組み込んだエージェントの作成
agent = CodeAgent(tools=[DuckDuckGoSearchTool()], model=HfApiModel())

# エージェントに質問を与えて実行
result = agent.run("2025年の小売業界の主要トレンドは何ですか?")
print(result)

上記ではCodeAgentに対し、ツールのリストとしてDuckDuckGoSearchTool()を渡しています。またmodelにはHfApiModel()を指定しており、これはHugging FaceのAPI経由で利用可能なLLM(デフォルトではOpenAIのGPT-3.5相当)を指します​

。これを実行すると、エージェントは内部で以下のような動きをします:

  • まず「2025年の小売業界の主要トレンドは?」という質問を受け取り、LLMがそれに答えるために必要な情報を推論します。
  • 次にLLMは「ウェブ検索が必要だ」と判断し、DuckDuckGoSearchToolを呼び出すPythonコードsearch("2025 年 小売 業界 トレンド")のようなコード)を出力します。
  • Smolagentsはそのコードを実行し、検索結果を取得してLLMにフィードバックします。
  • LLMは検索結果を読み取り、ユーザへの回答文を作成します(必要に応じて追加の検索や計算を何度か繰り返すこともあります)。
  • 最終的に「2025年は店舗のデジタルトランスフォーメーションとパーソナライズドマーケティングが主要トレンドです。」のような答えを返します。

この一連の流れがすべて自動で行われ、エンジニアはエージェントに適切なツールを持たせるだけで高度なタスクを実現できるのが大きな利点です。

カスタムツールの作成方法

また、Python関数にデコレータを付与するだけでカスタムツールを定義でき、社内の在庫データベースへの問い合わせやAPI操作など、独自のデータソースとの連携が可能です。ツールを用意した後は、CodeAgentを初期化する際にそのツール関数をリストに渡すだけで、柔軟な連携が実現できます。

 

関数の引数や戻り値の型ヒント、ドキュメンテーション文字列(docstring)からツールの仕様を自動推論してくれるため、LLMがどう使えばよいかを理解できるようになっています。

たとえば、社内の在庫データベースから在庫数を取得するツールを作りたい場合、次のように定義できます:

from smolagents import tool 

@tool
def check_stock(product_id: str) -> int:
"""指定した商品の現在の在庫数を返す"""
# 仮想的な在庫データベースから在庫を取得するとする
stock = inventory_db.get_stock(product_id)
return stock  

上記のように@toolデコレータを付けた関数check_stockは、それだけでエージェント内で呼び出せるツールになります。例えばLLMは「check_stock("ABC123")」というコードを生成することで、この関数を実行し在庫数を取得できます。(あくまでも仮想関数です。)

Smolagentsは関数のシグネチャから、ツールがどんな入力を取り何を返すかを把握し、LLMに適切なプロンプトを与えてくれます。Hugging Faceの公式ブログでも、Google Mapsの経路時間を取得するカスタムツールの例が紹介されています​。

 

この仕組みを使えば、自社のあらゆるサービス(データベース問い合わせ、社内API、計算ロジックなど)をツールとしてLLMに使わせることができます。

ツールを用意したら、先ほどと同様にCodeAgentを初期化する際にそのツール関数をリストに渡すだけです。モデルに関しても前述の通り柔軟で、社内でファインチューニングしたモデルをHugging Face Hub経由で指定したり、OpenAIのGPT-4を利用したりすることも可能です​

。Smolagentsは複数のLLMプロバイダをサポートしているため、用途や予算に応じて簡単に差し替えられるのも実践上ありがたい点でしょう。

 

さらに、Smolagentsは将来的に、OpenAIのOperatorと同様のブラウザ操作機能を実装することで、受注処理などの業務自動化にも対応できるよう拡張される見込みです。

このように、SmolagentsはLLMの柔軟な出力を活かし、各種ツールと組み合わせた高度な自動化システムを構築するための強力な基盤となります。

4. Smolagentsとトレンドビューワーの連携: 自社データ×外部データの分析エージェント

HALDATA株式会社が提供予定のSaaSサービス「トレンドビューワー」は、アマゾンや楽天の商品レビュー、詳細スペック、画像、ランキング、検索順位、価格、月間販売個数などのデータを商品IDごとに取得・分析しています。これにSmolagentsを組み合わせることで、外部データと自社のPOSレジやウェブログなどの内部データを連携し、クロス分析を実施するエージェントの構築を目指します。

具体的な取り組み計画:

  • レビュー分析: 商品レビューをセンテンスに分解し、ユーザー評価観点の自動生成とセンチメント分類を実施。複数商品の時系列比較で評価推移を明らかにします。
  • 売上予測: トレンドビューワーが取得する月間販売個数を基に、次にヒットする商品や新商品の売れ行きを予測。
  • POSレジとのクロス分析: 自社のPOSレジから得られる実店舗の売上データと、トレンドビューワーのオンラインデータ(レビュー、ランキング、検索順位など)を統合し、オンラインとオフラインの動向を比較。これにより、在庫配置やプロモーション戦略の最適化を図ります。

今後HALDATAは、Smolagents x TrendViewerの自動分析エージェントの実装に着手し、その進捗や成果についてブログにて随時レポートしていく予定です。

まとめ

LLMを用いたAIエージェントは、情報収集・分析の自動化や高度な意思決定支援を可能にし、企業活動に変革をもたらすポテンシャルを秘めています。Hugging FaceのSmolagentsは、その導入ハードルを大きく下げる画期的なフレームワークです。オープンソースの強みを活かし、自社の課題に合わせたカスタマイズを進めながら、小さく始めて大きな成果につなげることが可能となります。HALDATAでは低コストでのエージェント開発の研究をすすめていきます。