データ分析は現代社会において常に重要なツールであり、本質を理解し、パターンを発見し、意思決定を導くのに役立ちます。しかし、データ分析プロセスは複雑で時間がかかることが多いため、ユーザーが直接「データと対話」するのを支援するインテリジェントアシスタントの存在が期待されています。大規模言語モデル (LLM) の開発により、仮想アシスタントや Copilot などのインテリジェントエージェントが登場し、自然言語の理解と生成におけるパフォーマンスは驚異的です。残念ながら、既存のエージェント フレームワークは、データ分析や専門分野の中核的な要件である複雑なデータ構造 (DataFrame、ndarray など) の処理やドメイン知識の導入に依然として苦労しています。 このボトルネックを打破するために、Microsoft はコードファーストのエージェント フレームワークである TaskWeaver をリリースしました。 TaskWeaver は、ユーザーの自然言語によるリクエストを巧みに実行可能なコードに変換し、豊富なデータ構造、動的なプラグインの選択、専門分野に適応した計画プロセスをサポートします。オープンソース フレームワークである TaskWeaver は、大規模な言語モデルの潜在能力を最大限に活用し、カスタマイズ可能な例やプラグインを通じてドメイン固有の知識を組み込むことで、ユーザーがパーソナライズされた仮想アシスタントを簡単に作成できるようにします。
TaskWeaver プロジェクトは GitHub でオープンソース化されており、リリース当日に GitHub トレンド リストに掲載されました。現在 2.9k のスターを獲得しており、LinkedIn などのソーシャル プラットフォームでいくつかの実用的な事例が紹介されています (たとえば、SAP データ分析に TaskWeaver を使用するなど)。
ストーリー例売上データに隠された秘密を追跡する ビジネスアナリストとして、Xiaoya の日常業務の 1 つは、最近の販売データの異常を見つけ、会社に販売戦略の調整を指導することです。すべての販売データは SQL データベースに安全に保存されます。彼女は、AI アシスタントとの自然言語コミュニケーションを通じてデータを簡単に抽出し、分析することを切望しています。さらに重要なのは、販売分野では異常が独特なので、AIアシスタントがカスタマイズされた異常検出アルゴリズムを使用して問題を解決できることを期待しているということです。図 1 は、Xiaoya と AI アシスタント間のチャットの記録を鮮明に示しています。 AIアシスタントは、シャオヤの助けを求めるリクエストを受け取った後、まずデータベースから関連データを抽出し、確認のためにシャオヤに報告しました。その後、AI アシスタントは独自の異常検出アルゴリズムを使用して分析を実行し、最終的に結果を直感的に視覚化して Xiaoya に提示します。 図1. ストーリー例の会話の書き起こし エージェント フレームワークにはどのようなスキルが必要ですか?上記の Xiaoya のストーリーを通じて、エージェント フレームワークに必要ないくつかのコア機能を整理しました。 1. プラグインのサポート: 上記のストーリーでは、エージェントはデータベースからデータを取得し、指定された異常検出アルゴリズムを使用する必要があります。これらのタスクを実行するには、インテリジェント アシスタントが「query_database」プラグインや「anomaly_detection」プラグインなどのカスタム プラグインを定義して呼び出すことができる必要があります。 2. 豊富なデータ構造のサポート: エージェントは、予測やクラスタリングなどの高度なデータ処理をスムーズに実行するために、配列、行列、表形式データなどの複雑なデータ構造を処理する必要があります。さらに、このデータは異なるプラグイン間でシームレスに渡すことができる必要があります。ただし、既存のエージェント フレームワークのほとんどは、データ分析の中間結果をプロンプト内のテキストに変換するか、最初にローカル ファイルとして保存し、必要なときに読み取ります。ただし、これらのアプローチではエラーが発生しやすく、Prompt の単語数制限を超えてしまう可能性があります。 3. ステートフル実行: エージェントは多くの場合、複数回の反復でユーザーと対話し、ユーザー入力に基づいてコードを生成して実行する必要があります。したがって、これらのコードの実行状態は、セッションが終了するまでセッション全体にわたって保持される必要があります。 4. 行動前の推論 (ReAct) : エージェントは、行動を起こす前に観察して推論する、ReAct 能力を備えている必要があります。これは、不確実なシナリオでは非常に必要です。たとえば、上記の例では、データベース内のデータ スキーマは通常多様であるため、エージェントは最初にデータ スキーマ情報を取得し、どの列が適切であるかを理解し (ユーザーに確認し)、対応する列名を異常検出アルゴリズムに入力する必要があります。 5. 任意のコードを生成する: 場合によっては、定義済みのプラグインがユーザーの要求を満たせないことがあります。その場合、エージェントはユーザーの一時的なニーズを満たすコードを生成できる必要があります。上記の例では、エージェントは検出された異常を視覚化するためのコードを生成する必要があり、このプロセスはプラグインの助けを借りずに実現されます。 6. ドメイン知識の組み込み: エージェントは、ドメイン固有の知識を組み込むための体系的なアプローチを提供する必要があります。これにより、LLM はより適切に計画を立て、ツールを正確に呼び出すことができるようになり、特に業界向けにカスタマイズされたシナリオで信頼性の高い結果を生み出すことができます。 TaskWeaver のコアアーキテクチャを明らかにする図 2 は、プランナー、コード インタープリター、メモリ モジュールを含む TaskWeaver の全体的なアーキテクチャを示しています。 プランナーはシステムの頭脳のようなものです。プランナーには 2 つの主要な役割があります。1) 計画を立てる。つまり、ユーザーの要件をサブタスクに分解し、これらのサブタスクを 1 つずつコード インタープリターに送信し、計画実行プロセス全体を通じて必要に応じて計画を自動調整します。2) ユーザーへの応答。コード インタープリターのフィードバック結果を、ユーザーが理解しやすい回答に変換して、ユーザーに送信します。 コード インタープリターは主に 2 つのコンポーネントで構成されます。コード ジェネレーターはプランナーから送信されたサブタスクを受信し、使用可能なプラグインとドメイン固有のタスク例に基づいて対応するコード ブロックを生成します。コード エグゼキューターは生成されたコードを実行し、セッション全体にわたって実行を継続する役割を担います。このため、プロンプトやファイルシステムを経由せずに、複雑なデータ構造をメモリに渡すことができます。これは、Jupyter Notebook で Python をプログラミングする場合に似ています。ユーザーはセルにコード スニペットを入力し、プログラムの内部状態が順番に保存され、後続のプロセスで参照できます。実装の面では、各セッションで、コード実行者はコードを実行するための独立した Python プロセスを持ち、それによって複数のユーザーに対する同時サービスをサポートします。 メモリ モジュールは、主に実行結果など、システム全体の動作中に有用な情報を保存し、さまざまなモジュールによって書き込みおよび読み取りが可能です。短期記憶には、主に現在のセッションにおけるユーザーと TaskWeaver 間の通信記録と、モジュール間の通信記録が含まれます。長期記憶には、ユーザーが事前にカスタマイズできるドメイン知識や、インタラクションプロセス中に要約されたいくつかの経験などが含まれます。 図2. TaskWeaverの全体アーキテクチャの概略図 基本的なアーキテクチャに加えて、TaskWeaver には多くの独自のデザインもあります。たとえば、会話圧縮機能を使用するとテキスト サイズを縮小して会話の回数を増やすことができます。また、動的プラグイン選択機能を使用すると、ユーザーの要求に基づいて適切なプラグインを自動的に選択して、よりカスタマイズされたプラグインを統合することができます。さらに、TaskWeaver は、使用中にユーザーがコマンドを入力することで起動できるエクスペリエンス保存機能もサポートしています。この機能は、現在のセッションでのユーザーのエクスペリエンスと教訓を要約し、次のセッションで同じ間違いを繰り返さないようにすることで、真のパーソナライゼーションを実現します。セキュリティの面でも、TaskWeaver は慎重に設計されています。たとえば、ユーザーは Python モジュールのホワイトリストを指定できます。生成されたコードがホワイトリスト外のモジュールを参照する場合、エラーがトリガーされるため、セキュリティ リスクが軽減されます。 TaskWeaverの具体的なプロセス図 3 は、TaskWeaver が上記のサンプル タスクを完了するプロセスの一部を示しています。 まず、プランナーはユーザーの入力を受け取り、各モジュールの機能説明と計画例に基づいて具体的な計画を生成します。この計画は 4 つのサブタスクで構成されており、最初のサブタスクはデータベースからデータを抽出し、データ スキーマを記述することです。 次に、コード ジェネレーターは、機能の説明と関連するすべてのプラグインの定義に基づいてコードを生成します。このコードは、sql_pull_data プラグインを呼び出し、データを DataFrame に保存し、データ スキーマの説明を提供します。 最後に、生成されたコードは実行のためにコード エグゼキュータに送信され、完了した結果はプランナに送信され、プランを更新するか、次のサブタスクに進みます。図の実行結果は、DataFrame に date と value という 2 つの列があることを示しています。プランナーは、これらの列が正しいかどうかをユーザーにさらに確認することも、anomaly_detection プラグインを呼び出す次のステップに直接進むこともできます。 図3. TaskWeaverの内部ワークフロー TaskWeaver にドメイン知識を注入するにはどうすればよいでしょうか? 大規模モデルアプリケーションでは、ドメイン固有の知識を統合する主な目的は、業界のカスタマイズにおける LLM の一般化パフォーマンスを向上させることです。 TaskWeaver は、ドメイン知識をモデルに注入する 3 つの方法を提供します。
TaskWeaver はどのように使用すればよいですか? TaskWeaver の完全なコードが GitHub でオープンソースになりました。現在、コマンドライン起動、Web サービス、Python ライブラリとしてのインポートの 3 つのシナリオがサポートされています。簡単なインストールの後、ユーザーは LLM API アドレス、キー、モデル名などのいくつかの重要なパラメータを設定するだけで、TaskWeaver サービスを簡単に開始できます。 図4. コマンドライン起動インターフェース 図5. TaskWeaverの実行例 TaskWeaver は、データ分析と業界のカスタマイズ シナリオのニーズを満たすように設計された新しいエージェント フレームワーク ソリューションです。ユーザー言語をプログラミング言語に変換することで、「データと対話する」ことは夢ではなく現実になります。 |
>>: オープンソースモデルの新記録:Mixtral 8x7B Instructを超えるモデルが登場
都市化と経済発展の加速に伴い、我が国の社会保障を構成する要素が拡大し、公安機関の警察活動に大きな圧力...
蛍光分子を設計するには、分子の光吸収など、分子構造に直接関連するものだけでなく、相互に関連する複数の...
GenAI に対する信頼はまちまちです。 VentureBeat は最近、製造業とサービス業の複数の...
315ガラはカメラの顔認識の悪用の問題を暴露し、懸念を引き起こした。これはまた、問題を浮き彫りにする...
今日では、データ サイエンティストの仕事は非常に一般的になり、機械学習もその中に完全に含まれる可能性...
GPT-4 は実際にロボットにペンを回転させる方法を教えました。写真NVIDIA、ペンシルバニア大...
翻訳者 | 朱 仙中校正 | 梁哲、孫淑娟まとめ人工知能 (AI) ベースのシステムは大きな可能性を...
[51CTO.comより] 2016年11月25日〜26日、北京JWマリオットホテルでWOT2016...