nikkie-ftnextの日記

イベントレポートや読書メモを発信

Hugging Faceによるエージェントライブラリ smolagents をGemini 2.0 Flashで動かす

はじめに

発見の手帳」 nikkieです。

世はまさに大LLM時代、からの大エージェント時代!
気になるライブラリの素振りの模様です。

目次

個人的に注目なsmolagents

1週間ほど前に、OpenAIからdeep researchがリリースされました1
Introducing deep research | OpenAI

deep researchを巡る動きの中で興味深いと思ったのが、Hugging Faceによるオープンな再現2
24時間でどこまで再現できるか挑戦しています。

GAIAというベンチマークに対して

  • OpenAI deep researchは(TLDRによると)
    • 1-shotの平均で67%正解
    • とりわけ難しいlevel 3の質問に47.6%正解
  • Hugging Faceの24時間再現チャレンジでは(Results 🏅参照)
    • 検証セットで55.15%の正解率
      • (ここから67%に迫ったという評価になるのかな?)
    • Magentic-Oneの46%を超えて、オープンなフレームワークではSoTA

という結果でした。

この記事を通してsmolagentsを知ります。

また同じタイミングで偶然smolagentsを扱ったブログ記事も見つけました3

試したい例が集まったので、Geminiで素振りすることにしました。

smolagentsをGemini 2.0 Flashで動かす

ちょうどGAされたGemini 2.0 Flashを試します。

バージョン情報(主なもの)

  • Python 3.12.5
  • smolagents 1.8.0
  • litellm 1.60.8

Geminiを使う設定

LiteLLMのドキュメントに沿って、環境変数GEMINI_API_KEYを設定します。
Google AIのGemini APIのキーを設定しました4

フィボナッチ数列を計算する

上で紹介したAI SHIFTさんのブログより

inline script metadata5で動かすと
uv run -q --python 3.12 fibonacci.py

関数呼び出し(function calling)

smolagentsのexamplesから
https://github.com/huggingface/smolagents/blob/v1.8.0/examples/agent_from_any_llm.py

smolagentsが様々なモデルに対応することを示す例です。
関数呼び出しは主眼ではないので適当ですね。

function callingもCodeAgentもどちらも動いています

CodeAgent

smolagentsの実装が基づいている論文がCodeAgentなるもの。

こちらは積ん読ですが、上記のfunction callingのようにLLMの出力をJSONで構造化するよりも、コードで出力させたほうがよいという主張のようです。

終わりに

smolagentsでGemini 2.0 Flashが使えました。
inline script metadataでさっと動かせて、好感触でした。

  • 以前触ったbrowser-use6に対して、smolagentsは何をしているかが分かりやすく感じる
  • (browser-useで)LangChainでGeminiを触ったときは実装が足りてないようでハマったが、LiteLLMは簡単に使えた

deep researchの実装には興味があるので、引き続き見ていこうと思っています


  1. ヒャッハー!
  2. 状況の変化は目まぐるしく、いくつもの再現実装が登場しています。 ref: “Deep Researchの中の人”を手動でやってみる - laiso「多数のDeep Researchクローンの登場」
  3. ref: https://github.com/wantedly/machine-learning-round-table/issues/283#issuecomment-2635740859
  4. Gemini APIには2通りあります。 Vertex AIの方もLiteLLMはサポートしていそうでした。VertexAI [Anthropic, Gemini, Model Garden] | liteLLM
  5. 手前味噌ですが、先日公開された我が登壇(PyCon JP 2024) https://youtu.be/Xdmr14cCq2g?si=-aupiDNtU-VJx7Jq