新しい - 学びやすい - AIエージェント: Smolagents(HuggingFace製)
10,964 文字
こんにちは、2025年のコミュニティの皆さん。ついに、ついにAIエージェントシステムを実装したいと思います。エージェントともっと多く関わっていきたいと思います。新しい開発がありましたが、その詳細は2分後にお話しします。
まず最初に、無料で受講できるコースをご紹介したいと思います。例えば、Microsoftのautogenを使ったAIエージェントデザインパターンのコースがあります。無料で登録できます。2023年9月にここで初めてエージェントのアイデアをカスタマイズし、マルチエージェント会話を非常にシンプルな形で実現したautogenを覚えていますか。
あるいは、AWSのAmazon Bedrockを使ったエージェントワークフローのコースもあります。エージェントのメモリ機能に焦点を当てたい場合は、この素晴らしいコースもあります。スタートアップ企業による特定の実装を使ったマルチエージェントシステムに取り組みたい場合は、この無料コースに参加して、2時間42分で多くを学ぶことができます。
これらはすべて、特定のものについて話していますが、NVIDIAからもRAGエージェントの構築に関するコースがあります。2025年でもまだエージェントなのかと思うかもしれませんが、これはNVIDIAのコースで、限られた時間だけ無料です。現在は無料で、NVIDIAのハードウェア環境に必要なエージェントやツールについてすべて学ぶことができます。
コースの概要には、LangChain、LangServe、対話、埋め込み、意味的類似性、ガードレール、ベクターストアの実装など、興味深い内容が含まれています。これらに対価を支払えるのは素晴らしいことではありませんか。
さて、新しいトピックに移りましょう。新しいアイデアが登場しました。Hugging Faceのような企業があり、40万から50万のAIモデルがオンラインで公開されていて、例えばLlama 3 70Bインストラクトのようなモデルを選ぶと、非常に簡単にデプロイできます。
Inference APIをクリックして、PythonかJavaScriptを選びます。私はPythonを選びますが、Hugging Face Hubの場合、このコードをコピーするだけです。システムで使用するには、Hugging FaceのAPIキーが必要ですが、これは無料で、クレジットカードも必要ありません。
APIキーを入れるだけで、例えばLlama 3 37Bインストラクトを使用できます。本番環境用のインファレンスデプロイメントが必要な場合は、AWSやMicrosoft、Googleのプラットフォームから選択できます。例えばアメリカを選ぶと、すべてが実装の準備が整っていて、48GBのRAMで1時間あたり約2ドル、100GBまでは1時間あたり5ドルを支払います。
興味深いことに、アイルランドでは640GBまで利用可能ですが、1時間あたり32ドルとかなり高額です。ただし、640GBのRAMと8台のA100 GPUが必要な場合は、Hugging Face環境で完全に実装されており、もはや複雑なことは何もありません。
この会社が今、1年半にわたってコアLLMを使用する様々なエージェントを観察し、コミュニティのために独自のエージェント、非常にシンプルなライブラリを提供することを決めたと想像してください。彼らはこれを2024年12月21日、つまりたった2日前に公開しました。
彼らはこれをSmall Agentsと呼んでいます。素晴らしいことに、彼らは今、美しい戦略的ポジションにいます。他の実装で行われた可能性のあるすべての間違いを知っているからです。特定の実装ルールセットで始めると、翌月、その翌月と互換性を持たせる必要がありますが、昨日のように新しく始めれば、何が機能し、どこに問題があり、最初からどのように最適化するかを正確に知ることができます。
これがHugging Faceによる実装の素晴らしい点です。GitHubを見せますが、これはApache 2.0ライセンスのオープンソースで、すぐに使用できます。2025年に学びたい、今すぐ運用可能なエージェントを実装したいと思い、最新の技術レベルにある単純なライブラリで、例と美しい説明があるものを探しているなら、Small Agentsを絶対に見るべきです。
先ほど紹介した多くの素晴らしいコースや他の実装に対して公平でしょうか。ご存知の通り、これは最新のAI技術がここに実装されており、すべての問題を把握しています。特に科学分野で働いている場合、これは大きな利点となるので、技術についてお見せしましょう。
早速見ていきましょう。Small Agentsは始まったばかりですが、素晴らしいドキュメントと例があります。30秒で気に入った理由をお話しします。
学習したい場合は、包括的なガイドが利用可能で、Small Agentsのスキーマを使って、インテリジェントエージェントを非常にシンプルな方法で構築、実行、そして最も重要なカスタマイズができます。最小限のエージェント構成で始めることも、マルチエージェントシステムを例外的な方法で管理することもできます。
もちろん、すべてのエージェントにカスタムツールを作成でき、タスク階層を持つことができ、特殊化されたエージェントを持つことができます。より複雑なタスクがある場合、これは特定の理由で本当に素晴らしいのでお見せしたいと思います。
そうです、可視化、インタラクティブなコミュニケーションが可能です。最初から利用可能なReact(リアクト)ベースのインターフェースがあります。特別なシステムプロンプトとの統合があり、正確なタスクガイダンスがあります。
素晴らしいのは、選択するツールに関してエージェントの適応性があることです。最初から階層的なマルチエージェントシステムを構築でき、様々なサブタスクに特化させ、パフォーマンスと研究利用のために最適化できます。
カスタムツールを簡単に作成および統合できます。特にコーディングが好きな場合や科学的なアプリケーションがあり、カスタムツールが必要な場合、これは非常に簡単にできます。お見せしましょう。
エージェントの推論、実行、メモリ保持を視覚化でき、直感的なデバッグが可能です。最初のLangChainを覚えていれば、少し問題がありましたが、これは今や最初から実装されています。
特殊化を行う場合、この動画ではないかもしれませんが、お見せする管理エージェントオブジェクトのようなものがあり、これは特定のグループルールと特定のツールを持つエージェントを構築するためのものをカプセル化しています。
メモリを使用する場合も高度な特殊化が可能です。私の最後の2、3本の動画で示したメモリ最適化に取り組んでいたことを覚えていれば、これが今まさに適切なツールとなります。
では、導入から始めましょう。Hugging Faceは非常に親切で、エージェントとは何かを考えました。彼らは、Small Agentsはマルチステップインテリジェンスだと言います。コアにLLMを持つエージェントで、単なるルールベースのエージェントではありません。
REACTフレームワークを通じてタスクを実行するように設計されています。これは推論と行動のフレームワークで、ステップバイステップです。各ステップは、LLMによる思考、LLMによる特定のツール呼び出し、そして中間観察を行動にフィードバックする実行で構成されています。
2つのメインクラスを定義していますが、まず最初のベースクラスとしてマルチステップエージェント、そしてマルチエージェントシステム用の管理エージェントがあります。最初はベースクラスから始めましょう。
複数のモデルを使用でき、3つから始めています。この動画の最初に示したように、Hugging Face Inference APIを使用して簡単に統合できます。すべてがHugging Faceプラットフォーム上にあり、何もする必要がなく、すべてが自動的に行われます。これは本当に素晴らしいです。
Transformerのアイデアを使う場合、古いTransformerエージェントを覚えていますが、これは今では非推奨となり、このSmall Agentsの形式に移行しています。Transformerライブラリをローカルで使用でき、Light LLMを使用する場合、すでに100以上のモデルがLight LLMモデルでサポートされています。
ユーザーは非常にシンプルな手順で、特定のニーズに合わせてカスタムモデルを定義することもできます。これが、1年半前、1年前、半年前の他のエージェント実装が、一歩一歩より良く、より高性能に、より簡単になっていった理由です。
これを示すのは少し不公平かもしれませんが、これが私がこのチャンネルを持っている理由です。最新の技術をお見せしたいと思います。そして、これが今あなたが利用できるものです。他のモデルに対して少し申し訳なく感じますが、最新のものを使いたい場合、そしてカスタムモデルに最適化する方法をお見せしますが、これは非常に簡単なので、なぜこれをお見せしないことがありますか。
これは従来のエージェントベースシステム、先ほどお見せした他のシステムとは異なります。より良い柔軟性、より良いマルチエージェント協力、より良いモジュール性があり、強化された安全機能があります。インタラクティブ性は常にありますが、今はマルチステップエージェントのベースクラスから始めましょう。
基本的に、始めるときは2つのエージェントに焦点を当てる必要があります。コードエージェントとツール呼び出しエージェントです。そして、あなたと私の間だけの話ですが、本当の美しさはコードエージェントにあります。
そして、インターネットに接続したり、データベースに接続したりする美しいツール呼び出しエージェントがあります。すべてJSONスキーマが必要なところですが、コードエージェントにはJSONが全くないのです。これは素晴らしいことです。
公式には、推論と行動のフレームワークに従っています。エージェントは反復的にPythonコードを生成し、結果を観察し、タスクが完了するまで戦略を改良します。最適化できるパラメータがたくさんありますが、これが最もシンプルな形式です。
これは私たちのコードエージェントクラスで、ツール、モデル、システムプロンプト、特定の文法、追加の認可されたインポート、計画間隔、いくつかの安全機能があります。見てみましょう。
ツールは、Small Agent Toolsから、エージェントが利用できるツールのリストを教えてくれます。デフォルトでは、これはHugging Faceなので、Hugging Face上にある50万近くのモデルの中から好きなモデルを選べます。LlamaやOtterや会話など、何でもすぐに利用できます。
システムプロンプトは秘密の力の源です。カスタマイズ可能な初期プロンプト構造を提供し、エージェントにコンテキスト、ルール、指示を提供します。これについては後ほどお話しします。
追加の認可されたインポートがあり、これが気に入っています。エージェントがコード生成シーケンスでインポートを許可された追加のPythonモデルのリストです。そうです、分かりますね。科学で何か他のPythonライブラリを使用している場合、単にインポートを言えばいいのです。
文法は、コード生成を適切にフォーマットされた出力に制約するためのルールセットです。このコードエージェントを見てください。このSmall Agentは動的にPythonコードスニペットを生成して実行し、これが今可能になっているのです。
これが美しい点ですが、Pythonの豊富なライブラリとの統合が可能になりました。Pythonに存在するライブラリがいくつあるか分かりませんが、非常にシンプルなコマンドで統合できます。
見てみましょう。Small Agentsからコードエージェントを呼び出し、Hugging Face APIモデルを使用します。モデルIDはHugging FaceのLlama 3 70Bインストラクトを指定し、これが私たちのモデルとなります。そして、エージェントを構築します。Small Agentsからコードエージェントを呼び出し、ツールは最初は空のままにし、モデルを定義し、追加の認可されたPythonインポートとして数学モジュールをインポートします。
そして、タスクを実行します。これだけです。agent.runを呼び出すだけで、複数のモードがありますが、お見せします。タスクは特定の数の平方根を求めることです。
この統合について、LLMの話をしていたときに、特に因果推論や数学的推論は、600億パラメータのモデルであっても、大規模言語モデリングだけで数学的タスクを解決するのは非常に困難だと言いました。単純に計算機を接続したり、別のPythonライブラリを接続して計算を行う方が良いでしょう。
今、これを構築できます。全部で5行のコードで、LLMに数学的計算機が接続されました。この新しい技術は非常にシンプルですが、美しいと思います。Pandasをインポートしたり、NumPyをインポートしたり、データセットの分析をしたり、何でもできます。
これは今やエージェントで、JSONフォーマットなどで何かをする必要はありません。Pythonベースのツールを自動的に統合し管理します。これは素晴らしく、特に技術的なドメインで、すでにPythonエコシステムがある場合、コンピュータシミュレーションがPythonやC++で書かれている場合など、大きな利点を提供します。
追加の認可されたインポートを入れるだけで、コンピュータシミュレーションや数値計算などが統合されます。Pythonと何らかの形で互換性があれば、エージェントに統合されます。
しかし、「これはPythonだけで、外部呼び出しをする必要がある場合はどうするの?関数呼び出しをJSONフォーマットで行う必要があるのでは?」と思うかもしれません。そうですね、そのためにツール呼び出しエージェントがあります。
Small Agentのベースクラスからの特定のツール呼び出しエージェントは、JSONライクなツール呼び出しの生成と実行に特化しています。API対話やデータベースクエリなど、構造化された入力と出力が期待される場所で使用できます。
2つのエージェントが美しく連携します。簡単な例を見てみましょう。Small Agentからツール呼び出しエージェントを呼び出し、可能なツールのリスト、特定のモデル、システムプロンプトを持ちます。システムプロンプトのダイナミクスについては後ほどお話しします。
これだけです。エージェントは今、古典的なPythonではなく、構造化されたJSONフォーマットで実際のツール呼び出しを書きます。これは今や標準的で、REST APIや構造化されたデータパイプラインのような外部システムとの統合が容易になります。
このツール呼び出しエージェントは、LLMの能力と組み合わさって、適切なツールを選択し、特定の呼び出しをJSONフォーマットで定式化します。LLMは今や、どのツールを使用するかを決定し、必要なJSONフォーマットで呼び出しを定式化します。
エージェントテンプレートがある場合とは異なり、一緒に働くことが今や非常に強力です。簡単な比較を見てみましょう。Pythonのコードエージェントがあり、JSONライクな呼び出しのツール呼び出しエージェントがあります。
実行スタイルは、Pythonの直接的な構造化ツール呼び出しです。ユースケースは、計算的またはコードベースのタスク、コードできるもの、数値シミュレーション、すべてがコードエージェントで直接実行されます。
ツール呼び出しエージェントは構造化タスク、APIの統合を持ちます。もう1つのボーナスとして、完全なPythonエコシステムへのアクセスという柔軟性があり、ツール呼び出しエージェントでは明確な事前定義された構造があります。
外部システムへの接続方法を正確に知っており、事前定義された明確なデータフォーマットがあります。安全性については、制限されたインポート、セキュアなPNがあり、環境を使用できます。ツール呼び出しエージェントは古典的な構造化JSONを使用し、他のリスクを軽減します。
まとめると、このツール呼び出しエージェントは、構造化されたJSONベースのワークフローに焦点を当てることで、即座にコードを生成する新しいコードエージェントを補完します。これらの2つのエージェントが一緒になって、Small Agentフレームワーク内のマルチステップエージェントクラスの柔軟性と拡張性を示しています。
直接コードを生成する特定の新しい技術実装により、完全に新しい動的エージェントシステムが開かれます。モジュール性は、チャットエージェント、マルチステップデータ変換用のデータパイプラインエージェント、古典的なETLタスク用に設計されたものなど、他の特殊化された実装が容易に開発できることを意味します。
ビジョンエージェントを本当にシンプルに構築でき、すべてのモデルがHugging Faceで利用可能です。Hugging Faceには素晴らしいドキュメントがあり、Small Agentsのエントリーポイントとして強くお勧めします。
チュートリアル、良いエージェントの構築方法、コード、コード例があり、すぐに使えるColab(コラボ)ノートブックがあります。インカプス(Incaps)の問題がある場合は、エージェントへの追加の導入があり、これは本当に素晴らしいです。
Small Agentsのガイドツアーでは、すべてのコード例が段階的により複雑になっていきます。最高のエージェントシステムは最もシンプルなものだと言えます。シンプルだからといって強力でないわけではありません。
新しい技術実装に基づいてシンプルなシステムを設計すれば、コアLLMにPythonエコシステムや他のライブラリを追加で提供することは本当に理にかなっているので、システムはシンプルであっても非常に強力になります。
これを体験する必要があります。まだ1日目ですが、気にする必要はありません。より深く掘り下げたい場合は、例えば、私が示したesq1 2.5 deoda 32bインストラクトモデルのような例があります。
本当に深く掘り下げたい場合、Hugging FaceのSmall Agentsには、事前に存在するDuckDuckGo検索ツールが提供されていますが、ゼロからWebページ訪問ツールを作成することもできます。すべてのコードが提供され、オープンソースで、素晴らしいと思います。
例えば、このシンプルだが強力なバージョンでマルチエージェントシステムを構築する方法をクリックすると、これが気に入ると思います。他のエージェントフレームワークや大多数のフレームワークと比較すると、一般的に、他のものは歴史的にOpenAIのJSONスキーマに基づいています。
なぜなら、1年半前はOpenAIが事実上唯一のLLMのパフォーマンスを提供していたからです。そのため、みんなOpenAIの構造、Openスキーマ、OpenAIとの互換性を見ていました。
2025年の今日、これはもはや当てはまりません。OpenAIのJSONスキーマに制限されない素晴らしいオープンソースモデルがあり、より動的で柔軟に進むことができます。YaDAが悪いというわけではありません。これは単に新しい技術、新しい可能性、新しいチャンスです。
OpenAIスキーマに基づいて使用しなければならない硬直的なスキーマ定義のツールセットの代わりに、動的なPython関数ベースのツールスキーマを持つことができます。ユースケースは、LLMがツールを決定する計算タスク、動的ワークフローです。
古典的なシステムは静的なスキーマによって制限されています。誤解しないでください。素晴らしいインテリジェントなコーダーがいて、「静的なスキーマを持っているけど、回避策を見つけられる、特定の用途にモジュールを追加できる、何かを構築できる」と言います。
でも、これはベースで統合されているのです。この新しいエージェントシステムを見てみてはいかがでしょうか。統合について、特に気に入っている重要な側面の1つについてお話ししたいと思います。
それは、システムプロンプトとツールの説明の統合です。システムプロンプトは、特定の大規模言語モデル、エージェントに初期のコンテキスト、ルール、ガイドラインを設定するテキストによる指示です。タスク解決アプローチの説明があり、エージェントがツールとどのように相互作用すべきかについての具体的な指示があります。
最も重要なのは、これが入力形式、出力形式、作業内容を本当に明確に定義することです。Small Agentsは分かりました。しかし、今や動的なツールセットに移行しているので、ツールのリストでエージェントを初期化するときは、ゼロか、すでに使用している標準ツールを持つことができます。
これらのツールは、エージェントが自分で呼び出すことができる本質的な事前定義された関数、ユーティリティ、またはアクションです。LLMは、エージェントの説明があり、入力と出力のフォーマットを知っているので、タスクを解決するために今このエージェントが必要だと判断し、特定のツールを呼び出します。
このツールの説明は、エージェントが作成されるときにSmall Agentsのシステムプロンプトに動的に追加されるため、LLMはこの説明を使用して、実行ステップ中に特定のツールを効果的に呼び出す方法と、特定のツールを呼び出すのに最適なタイミングを理解できます。
これを次の数日、数週間で試してみる必要があります。どれだけ良いのかフィードバックできると思います。動的であるというアイデアが気に入っています。様々なドキュメントを柔軟でカスタマイズ可能な方法で処理する強力なフレームワークだと思います。
これは本当に興味深いと思います。特に、ツールの適用方法とエージェントが行動を計画し実行する方法に関する詳細な制御が必要な、より複雑で特に動的なタスクに適しています。
明確にしましょう。静的なケースがある場合、つまりエージェントが何をすべきか正確に知っていて、すべての行動を事前に定義し、すべてのスキーマを事前に定義し、「おっと、問題がある」と言うような予期せぬことが何も起こらない、完全に静的で、ToDoリストのようにこれを実行したいだけの場合は、古典的なエージェントを使用してください。
まったく問題ありません。それらは素晴らしく、優れています。しかし、科学のように、数値コンピュータシミュレーションの結果の1つが奇妙で、事前定義されたJSONスキーマに適合しない場合、LLMに戻り、LLMがこれを見て、「待って、アイデアがある」と言うことを望むなら、希望的に、事前定義されていない別の動的タスクを開始できます。
これが、LLMの知能(引用符付き)が実際に機能する場所であり、LLMはタスクの解決策を見つけるために異なるルート、異なるパスを選択することを決定します。
このSmall Agentは、古典的なもののように硬直的なフォーマットでツールを呼び出すだけでなく、コンテキスト、入力、利用可能なオプションに基づいて、どのツールをいつ使用するかについても推論します。
非常に短いまとめです。これは基本的にティーザーで、新しいものに興味を持ってもらいたいだけです。確立されたプレイヤーがいて、素晴らしいコマーシャルを持ち、YouTubeでインターネット全体に広がっていることは知っています。
しかし、50万のLLMすべてのオープンソース配布を実質的に運営しているこの小さな会社Hugging Faceがあり、今やエージェントを持っています。特により複雑なタスク、科学的なエコシステムで作業している場合、これらのSmall Agentは将来的に本当に興味深いものをもたらすと思います。
1日目の今すぐに始めるべきですか?気に入っているなら、そうしてください。次の数週間、数ヶ月で発展していくでしょう。今すぐ使用するかどうかについては、もう少し慎重になるでしょう。おそらく1ヶ月、あるいは2週間待って、様子を見てください。
GitHubを見ると、彼らは本当に活発なチームで、ここで何を構築するのか楽しみです。今や彼らには本当に特定のユーザーニーズに最適化する機会があり、Hugging Faceのエコシステムに統合されています。これはAppleのようで、ただ動くだけです。何も設定する必要はありません。
本当に素晴らしいですが、他のエージェントシステムにもそれぞれの強みがあります。より深く掘り下げたい場合は、Small Agentsのすべてのpythonファイルがあり、特にエージェントについてすべてが利用可能です。
エントリーポイントとしてHugging Face Small Agentsを提供すべきかもしれません。美しいApache 2ライセンスで、見てください、たった17人が見ているだけです。たった2日前にリリースされたばかりです。なんということでしょう、1日遅れてしまいました。
すべての例、すべてのノートブックが試せます。少し遊んでみてはいかがでしょうか。アイデアと技術の実装方法は、他のすべてのシステムに対して本当に優位性を与える可能性があります。
回避策を構築して、システムの複雑さを増やす必要がないからです。完全に新しいものを構築し、現在の技術、現在のアイデアで構築し、1年前の古いシステムとの互換性を持つ必要がないと言えます。これが、新しく始めることの美しさだと思います。
今日はこれで終わりです。少し楽しんでいただけたなら、新しい興味を見つけていただけたなら幸いです。エージェントを学びたい場合、それは本当に良いアイデアで、様々な異なるエージェントプラットフォームを使用できます。
しかし、Hugging Faceの新しいアイデアを試したい場合、彼らは何ヶ月もかけてこれを開発し、私が科学的な仕事にとって絶対に探索すべきAIシステム、AIフレームワークのバスケットに入れるべきだと言えるような興味深いポイントがいくつかあると思います。どのフレームワークを使用するか決める前に。
購読していただければ、次の動画でお会いしましょう。