エージェントを構築するのが初めての方は、まず、以下のページをお読みください。 エージェント紹介 そして smolagentガイドツアー.
コード・エージェント #
複数 リサーチ 書類 LLMがそのアクション(ツールの呼び出し)をコードで記述することは、ツール呼び出しのための現在の標準的なフォーマットよりもはるかに優れていることが示されている。
なぜコードが優れているのか?私たちは、コンピューターが実行するアクションを表現するのに優れたコード言語を特別に作ったからだ。もしJSONスニペットがより良い方法だったら、このパッケージはJSONスニペットで書かれていただろうし、悪魔は私たちを笑っていただろう。
コードとは、コンピューター上でアクションを表現するためのより良い方法に過ぎない。その方が優れている:
- コンポーザビリティ: JSONアクション同士をネストさせたり、JSONアクションのセットを定義して後で再利用したりすることはできますか。
- オブジェクト管理: のようなアクションの出力をどのように保存するのですか?
画像生成
JSONで? - 一般性: コードは、コンピューターにやらせることができることなら何でも表現できるように作られている。
- LLM訓練コーパスにおける表現: LLMのトレーニング・コーパスには、すでに多くの質の高いアクションが含まれている。
これは下図の通りである。 実行可能なコード・アクションがより良いLLMエージェントを引き出す.

このため、私たちはコードエージェント(この場合はパイソンエージェント)の提案に重点を置き、安全なパイソンインタープリターの構築に力を注いだ。
ローカル・パイソン・インタープリター #
デフォルトでは コードエージェント
はあなたの環境でLLMが生成したコードを実行します。この実行は通常のPythonインタプリタでは行われません。 LocalPythonInterpreter
を一から作り直した。このインタープリターは、以下のようなセキュリティのために設計されている:
- インポートをユーザーが明示的に渡したリストに制限する。
- 無限ループやリソースの肥大化を防ぐため、操作回数に上限を設ける。
- 事前に定義されていない操作は行わない。
私たちは多くのユースケースでこれを使用してきたが、環境へのダメージは一度も見られなかった。
悪意のある行為に対して微調整されたLLMが、それでもあなたの環境を害する可能性がある。例えば、もしあなたが 枕
画像を処理するために、LLMは何千もの保存画像を生成し、ハードドライブを肥大化させる可能性があります。あなたがLLMエンジンを自分で選んだのであれば、そのようなことは起こらないでしょうが、起こりうることです。
そのため、特に用心したい場合は、以下に説明するリモートコード実行オプションを使うことができる。
E2Bコードエグゼキュータ #
最大限のセキュリティを確保するために、E2Bとの統合を利用してサンドボックス環境でコードを実行することができます。これは、隔離されたコンテナ内でコードを実行するリモート実行サービスであり、コードがローカル環境に影響を与えることを不可能にします。
このためには、E2Bアカウントをセットアップし、次のように設定する必要があります。 E2B_API_KEY
を環境変数に追加する。次に向かう。 E2Bのクイックスタート・ドキュメント をご覧ください。
でインストールできます。 pip install e2b-code-interpreter python-dotenv
.
これで準備は整った!
コード・エクゼキュータをE2Bに設定するには、単にフラグ use_e2b_executor=True
を初期化する際に コードエージェント
.ツールの依存関係はすべて 追加認可輸入
実行者がそれらをインストールするように。
コピー
from smolagents import CodeAgent, VisitWebpageTool, HfApiModel エージェント = CodeAgent( tools = [VisitWebpageTool()]、 model=HfApiModel()、 additional_authorized_imports=["requests", "markdownify"]、 use_e2b_executor=True ) agent.run("エイブラハム・リンカーンの好んだペットは?")
E2B コード実行は、今のところマルチエージェントと互換性がありません - なぜなら、リモートで実行されるべきコードブロブをエージェントが呼び出すことは、混乱を招くからです。リモートで実行されるべきコード・ブロブをエージェントが呼び出すことは、混乱を招くからです!