Agents.js リリース: JavaScriptを使ってLLMにツールを提供
Hugging Faceは、Large Language Models (LLMs)にツールアクセスを提供するように設計されたJavaScriptライブラリAgents.jsを導入しました。これにより、開発者はブラウザベースまたはサーバーサイドの環境でマルチモーダルタスクを実行できるエージェントを構築できるようになります。
コア機能と使用法
HfAgentオブジェクトは、ライブラリの主要なエントリポイントとして機能します。開発者はHugging Faceのアクセストークンを使用してエージェントをインスタンス化し、プレーンテキストのコマンドでやり取りできます。エージェントは、目標を達成するためにJavaScriptコードを生成し、そのコードを評価して結果を生成します。
実行ワークフロー
Agents.jsを使用してタスクを実行する主な方法は2つあります:
- 手動コード生成と評価:
generateCodeを使用してJavaScriptロジックを作成し、evaluateCodeを使用して実行します。これはセキュリティの観点から推奨される方法です。 - 直接実行:
runメソッドを使用して、コードの生成と実行を1つのステップで行います。
データ出力
エージェントによって返される結果は、Updateオブジェクトとして提供されます。このオブジェクトは、message(情報テキスト)とdata(文字列またはBlobのいずれか)を含みます。Blobを使用することで、エージェントは画像や音声などのマルチモーダル出力を返すことができます。
セキュリティに関する考慮事項
LLMによって生成された任意のコードを実行することは、重大なセキュリティリスクを伴います。Hugging Faceは、信頼できない環境ではこれを実行しないように警告しています。このリスクを軽減するため、開発者はrunメソッドではなく、generateCodeとevaluateCodeのシーケンスを使用することを推奨されます。これにより、コードが実行される前に生成されたコードを手動でレビューすることができます。
カスタマイズと拡張性
Agents.jsは柔軟性を考慮して設計されており、開発者はデフォルトの言語モデルを交換し、専門的なツールを追加することができます。
カスタムLLM
デフォルトでは、ライブラリはInference APIを介してOpenAssistant/oasst-sft-4-pythia-12b-epoch-3.5モデルを使用します。ただし、文字列入力を受け取り、文字列のプロミスを返す任意の非同期関数は、カスタムLLMとして使用できます。これにより、OpenAIのtext-davinci-003などの他のプロバイダーとの統合が可能になります。
カスタムツール
開発者は、カスタムToolオブジェクトを定義することでエージェントの機能を拡張できます。ツールの定義には次のものが必要です:
- LLMがツールを使用するタイミングを理解するのに役立つ、名前と説明
- LLMがツールを呼び出す方法をガイドする、プロンプトとコードのペアからなる例
- 実際に実行されるロジックを定義するcall関数
これらのカスタムツールは、エージェントの初期化時にライブラリが提供するdefaultToolsとマージできます。
マルチモーダル入力サポート
Agents.jsは、エージェントに入力ファイルを渡すことをサポートします。FileListをgenerateCodeまたはevaluateCodeに提供することで、エージェントはこれらのファイルをワークフローに組み込むことができます。たとえば、アップロードされた画像にキャプションを付けるようにエージェントに指示し、imageToTextとevaluateCodeの組み合わせを使用してそのキャプションを音声に変換することができます。