インテリジェントな意思決定の新時代: AutoGen による財務データの分析

インテリジェントな意思決定の新時代: AutoGen による財務データの分析

著者 | 崔昊

レビュー | Chonglou

まとめ

AutoGenはAIをベースにしている 人間の意思決定プロセスをシミュレートすることで複雑な問題を解決するエージェント フレームワーク。 AI エージェントを使用して大量のデータを処理し、迅速な意思決定を行い、ユーザーとのやり取りを最適化します。 AutoGen は、データ処理、自動意思決定、ユーザーインタラクション、複雑な問題解決の機能を備えており、複雑な問題に対処するための新しいアイデアをユーザーに提供します。 AutoGen は、複数の AI エージェントを含むアプリケーションを構築することで、LLM アプリケーションの構築プロセスを簡素化し、多様な会話モードをサポートして、効率と生産性を向上させます。

この記事では、A 共有アシスタントという具体的な例を使用して、AutoGen フレームワークの使用方法を説明します。この例では、ユーザーはエージェントを通じてリクエストを開始し、アシスタント エージェントはコードを自動的に生成および検証することで、株価データのダウンロード、分析、チャートの描画のタスクの完了をユーザーを支援します。

AIエージェント入門

今日の時代、人工知能技術は私たちの生活と仕事のあらゆる側面に深く浸透しています。日常業務の簡素化から複雑なビジネスプロセスの最適化まで、AI の影響はあらゆるところに及んでいます。しかし、AI 技術は急速に発展しているにもかかわらず、特に複雑な問題に対処する際には依然として課題に直面しています。これらの問題には、多くの場合、大量のデータの処理、複雑な意思決定、動的な環境への迅速な適応が伴い、従来の AI システムでは克服が難しい課題となっています。

このような背景から、AI エージェントの概念が生まれました。 AI エージェントは、人間の意思決定プロセスをシミュレートして複雑なタスクを処理する特殊なタイプの人工知能システムです。これらのインテリジェント エージェントは、大量のデータを処理および分析し、高速で正確なソリューションを提供できるため、人間にとっては時間がかかりすぎたり複雑すぎたりするタスクで優れた能力を発揮します。 AI エージェントの主な利点は、これらの複雑な問題に対処する効率と生産性を大幅に向上させ、それによって技術のさらなる開発と応用を促進できることです。

AI エージェントが解決する具体的な問題は次のとおりです。

データ処理と分析: AI エージェントは、人間にとっては時間と労力がかかる大量のデータを迅速に処理および分析し、洞察に富んだ結果を提供します。

自動意思決定: 迅速な対応が必要なシナリオでは、AI エージェントが自動的に意思決定を行うため、人間の介入の必要性が軽減されます。

ユーザーインタラクション: チャットボットやその他の形式を通じて、AI エージェントは24 時間年中無休のカスタマー サービスを提供して、ユーザー エクスペリエンスを向上させることができます。

複雑な問題の解決: AI エージェントは、予測分析や最適化の問題など、通常は人間の直接的な処理能力を超える複雑な問題を解決できます

AutoGenとは

AIエージェントは複雑な問題に対処する方法を提供します。では、AIをどのように実装するのでしょうか? エージェントはどうですか?それが AutoGen です。フレームワークとして、AutoGen は AI エージェントを作成および管理するために必要なツールと構造を提供します。これは単なる単純なエージェント実装ではなく、開発者が複雑な複数の AI エージェントベースのアプリケーションを構築できるようにする包括的なソリューションです。

Microsoft AutoGen は、複数のエージェントを使用して会話を行い、タスクを解決する大規模言語モデル (LLM) アプリケーションを開発するためのものです。 AutoGen のエージェントはカスタマイズ可能で会話型であり、シームレスに人間の関与を可能にします。 LLM の人間による入力とツールの組み合わせを使用して、さまざまなモードで動作できます。

主な特徴:

AutoGen を使用すると、マルチエージェント会話に基づく次世代 LLM アプリケーションを簡単に構築でき、複雑な LLM ワークフローのオーケストレーション、自動化、最適化が簡素化されます。

複雑なワークフローの多様な会話モードをサポートし、さまざまな複雑さの動作システムの例を提供し、AutoGen が多様な会話モードを簡単にサポートする方法を示します。

AutoGen は、API 統合キャッシュや、エラー処理、マルチ構成推論コンテキスト プログラミングなどの高度な使用モードを含む、強化された LLM 推論機能を提供します。

AutoGen は強力なだけでなく、インストールも簡単です。pip 経由でインストールできます。

 pip install pyautogen

次に AutoGen の例を使用して、AutoGen をより包括的に理解していただきたいと思います

A-shareアシスタント: ユーザーエージェントとインテリジェントアシスタント

ペースの速い職場では、公開されているビジネス データを集計して分析する必要があるタスクに遭遇することがよくあります。上司から、株式市場のパフォーマンスなどの重要なデータを収集して分析するように依頼されたと想像してください。このタスクには、関連データの検索とダウンロードだけでなく、データの詳細な分析と分析結果を視覚的な形で提示することも含まれます。このプロセスは面倒なだけでなく、データの処理時に潜在的なリスクやバイアスが発生する可能性があるため、効果的に支援できるツールが重要になります。

この文脈では、AutoGen を使用してこのプロセスを簡素化する方法を示す具体的な例を見てみましょう。中国 A 株市場でよく知られている 2 つの株、Vanke A と China Merchants Bank のパフォーマンスを比較する必要があるとします。具体的なタスクは、2 つの株式の履歴データをダウンロードし、収益を比較し、対応する分析チャートを生成することです。これには、データの正確な抽出と処理だけでなく、結果を明確かつ直感的に提示する能力も必要です。

AutoGen を使用すると、パイプラインの異なる部分の処理をそれぞれ担当する複数の AI エージェントを含むパイプラインを構築できます。たとえば、1 つのエージェントが金融データベースから必要な株価データをダウンロードする役割を担い、別のエージェントがデータの分析と処理に集中し、最後のエージェントが分析結果をわかりやすいグラフに変換することができます。このように、AutoGen は作業負荷を大幅に軽減するだけでなく、分析プロセス全体の精度と効率も向上させます。最終的には、最新のデータに基づいているだけでなく、わかりやすいグラフ形式で提示された包括的かつ直感的な株式パフォーマンス比較レポートを上司に提示できるようになります。

考え

上記の機能の実装を始める前に、まず次の図に示すように、参加者とプロセスを整理しましょう

AutoGen による株価データの比較処理のプロセスには、ユーザーユーザー エージェントユーザー アシスタントの 3 つの参加者が関与します。質問する責任はユーザーにありますユーザー エージェントは AutoGen オブジェクトによって実行され、ユーザーからの質問を理解し、ユーザー アシスタントにコマンドを発行する役割を担います。実行中にユーザー アシスタントに問題が発生した場合、ユーザー エージェントはそれを解釈する必要があります。ユーザー アシスタントは、ソリューションを考え出し、実行コードを生成し、コードの正確性を評価する役割を担います。最後に、実行されたコードは実行のためにユーザーエージェントに渡されます。

プロセスの手順は次のとおりです。

  • ユーザーは質問をし、絵を描いて株式の比較情報を表示する必要があります。
  • ユーザー アシスタントは質問を受け取ると、それを理解して解釈し、質問の性質を判断して、実行のためにユーザー アシスタントに渡します。
  • ユーザー アシスタントは、対応する処理措置を講じ、得られたソリューションに従って実行タスクを生成し、コード実行をシミュレートするときに問題を発見します。
  • 問題に対応して、ユーザー アシスタントは自己修復を実行し、コードの実行を再度シミュレートしますコードが実行に合格すると、実行のためにユーザー エージェントに渡されます。
  • ユーザーエージェントはコードを実行した後、結果をユーザーに返します。

株式比較フローチャート

コーディング

プロセスを理解した後、次のコードを見てみましょう。

 # 导入autogen模块。这个模块可能是一个自动生成某些配置的库。 import autogen # 使用autogen模块中的config_list_from_json函数。 # 此函数的作用是从一个JSON格式的配置文件中创建配置列表。 config_list = autogen.config_list_from_json( # 第一个参数是JSON配置文件的名称,这里指定的是"OAI_CONFIG_LIST.json"。 # 这个JSON文件包含了一些配置数据。 "OAI_CONFIG_LIST.json", # 第二个参数是一个字典,它用于过滤配置文件中的内容。 # 这里的字典指定了只选择模型为"gpt-4"的配置。 filter_dict={ "model": ["gpt-4"], }, )

このコードは、 AutoGenモジュールをインポートし、 config_list_from_json関数を呼び出して、大規模モデルに関連する構成情報を読み込むために使用されます。必要に応じて以下を説明します。

1. モジュールをインポートします。

import autogen: autogen という名前の Python モジュールをインポートします。このモジュールの具体的な機能はコード内では説明されていませんが、名前から判断すると、構成やコードの自動生成に関連している可能性があります。

2. 関数呼び出し:

config_list_from_json 関数は、JSON ファイルから構成を読み取り、指定されたフィルター条件に基づいて構成リストを生成します。

フィルター辞書:

3.filter_dict: JSON ファイル内のコンテンツをフィルタリングするために使用されます。この例では、 AutoG enが使用するモデルとして ["gpt-4"] を指定します。

次に、OAI_CONFIG_LIST.json ファイルがどのようになっているかを見てみましょう。ファイルには JSON 配列が含まれており、各要素は API 構成を表す JSON オブジェクトです。このファイルは、API キーやベース URL など、さまざまな API 環境の構成情報を格納するために使用できます。

 [ { #大模型的名字'model': 'gpt-4', #对应的API的Key 'api_key': '<your OpenAI API key here>', }, { 'model': 'gpt-4', 'api_key': '<your Azure OpenAI API key here>', 'base_url': '<your Azure OpenAI API base here>', 'api_type': 'azure', 'api_version': '2023-06-01-preview', }, { 'model': 'gpt-4-32k', 'api_key': '<your Azure OpenAI API key here>', 'base_url': '<your Azure OpenAI API base here>', 'api_type': 'azure', 'api_version': '2023-06-01-preview', }, ]

次にハイライトですが、assistant と user_proxy の 2 つのオブジェクトを作成します。これらは、ユーザー エージェントとユーザー アシスタントを作成するために使用されます。ユーザー エージェントとユーザー アシスタント間のやり取りをシミュレートするために使用されます。以下にコードの行ごとの説明を示します。

1. ユーザーアシスタントを作成する

# 创建一个名为'assistant'的AssistantAgent对象,这个对象可能代表一个智能助手。 assistant = autogen.AssistantAgent( name="assistant", # 名字属性被设置为'assistant'。 llm_config={ # llm_config是一个字典,用于配置助手的行为。 "cache_seed": 42, # 'cache_seed'可能用于初始化随机数生成器,以保持结果的一致性。 "config_list": config_list, # 'config_list'是之前从JSON文件中得到的配置列表。 "temperature": 0, # 'temperature'设置为0,可能用于控制生成内容时的随机性或创造性。 }, )

2. ユーザーエージェント(user_proxy)を作成する

# 创建一个名为'user_proxy'的UserProxyAgent对象,这个对象可能代表一个用户界面或代理。 user_proxy = autogen.UserProxyAgent( name="user_proxy", # 名字属性被设置为'user_proxy'。 human_input_mode="NEVER", # 'human_input_mode'被设置为'NEVER',表明不预期会有来自真人的输入。 max_consecutive_auto_reply=10, # 'max_consecutive_auto_reply'设定在需要用户输入而没有输入时,自动回复的最大次数。 is_termination_msg=lambda x: x.get("content", "").rstrip().endswith("TERMINATE"), # 'is_termination_msg'是一个函数,用于判断消息内容是否表示终止对话。 code_execution_config={ # 'code_execution_config'配置代码执行的环境。 "work_dir": "coding", # 'work_dir'设定工作目录为'coding'。 "use_docker": False, # 'use_docker'表明在执行代码时不使用Docker容器。 }, )

3. チャットを初期化してメッセージを送信する

# user_proxy使用initiate_chat方法向助手发起聊天,并发送一条消息。 user_proxy.initiate_chat( assistant, # 指定要发送到的助手。 message="""今天是几号? 请帮我比较万科A股票和招商银行股票的收益情况,用图表的形式对两者进行比较。""", # 发送的消息内容。 )

アシスタントは、特定のパラメータを使用して構成されたヘルパー エージェントであり、何らかの自動化されたタスクやプロセスを実行します。

user_proxy は、ユーザーをシミュレートし、自動返信と会話の終了の条件が設定されたプロキシです。

user_proxy は、initiate_chat メソッドを通じてアシスタントとの会話を開始し、株式収益の比較に関するタスクの説明を送信します。

結果

コードを実行すると、結果が生成されます。結果の内容は比較的長いため、ソリューションの提案、コードの生成、コードの検証、コードの修正などのプロセスが含まれます。これは、主にユーザー エージェントとアシスタント間のやり取りを反映する複雑な自己修正プロセスです。 便宜上、結果の出力を次の内容に整理しました。

Ask-User-Agent ヘルパー:

ユーザーは現在の日付を尋ね、万科A株と招商銀行株の収益の比較を要求し、チャートを要求しました。

ソリューション アシスタントからユーザー エージェントへ:

アシスタントは、主に次の 3 つのステップから成る解決策を考案しました。

1. Python の datetime ライブラリを使用して現在の日付を取得します。

2. pandas_datareader ライブラリを使用して、Yahoo Finance から過去の株価データを取得します。

3. matplotlib ライブラリを使用してデータをグラフにプロットし、2 つの株式の収益を比較します。

しかし、Yahoo Finance データを取得するコードを実行しようとすると、問題が発生しました。エラー メッセージには、型が間違っており、文字列インデックスは整数でなければならないと表示されました。

コードを再度実行します - ユーザーエージェントへのヘルパー:

アシスタントは、Yahoo Finance からデータを取得する問題を解決するために、pandas_datareader の代わりに yfinance ライブラリを使用することを提案しました。 yfinance ライブラリを正常にインストールすると、アシスタントは株価データを再取得し、そのデータを CSV ファイルに保存するための新しいコード スニペットを提供します。次に、チャートを作成するための別のコードが提供され、今回はコードが正常に実行されました。

最終結果は、ユーザーエージェントのアシスタントです。

アシスタントは、Vanke A と China Merchants Bank の過去の価格データが正常に取得され、チャートが作成されたことを確認します。環境の制限により、アシスタントはチャートを直接表示できないことを指摘し、チャートを表示するにはローカル環境でコードを実行することをユーザーに推奨します。最後に、「TERMINATE」を送信することで会話は終了しました。

AutoGen タスク コード

プロセス全体を通じて、ユーザー エージェントとアシスタント間のやり取りは、問題の解決とコードの実行に重点が置かれます。アシスタントは、問題の診断と解決において適応性と柔軟性を発揮し、最終的にユーザーの要求を満たす結果を提供しました。

以下に、ユーザー アシスタントによって生成されたコードを参考用に掲載します。この Python コードは、2 つの株式 (Vanke A と China Merchants Bank) の日次収益を比較し、結果をグラフに表示するために使用されます。以下にコードの各部分の詳細な説明を示します。

 # 导入必要的Python库。 import datetime # 用于处理日期和时间。 import pandas as pd # 用于数据分析和操作。 import matplotlib.pyplot as plt # 用于数据可视化。 import yfinance as yf # 用于从Yahoo Finance下载股票数据。 # 获取当前日期并打印。 today = datetime.date.today() print("今天是:", today) # 设置获取股票数据的起始和结束日期。 start_date = '2020-01-01' # 设置起始日期为2020年1月1日。 end_date = today # 设置结束日期为当前日期。 # 使用yfinance下载万科A和招商银行的股票数据。 vanke = yf.download('000002.SZ', start=start_date, end=end_date) # 下载万科A的数据。 cmb = yf.download('600036.SS', start=start_date, end=end_date) # 下载招商银行的数据。 # 计算每日收益率。收益率是通过将每日的收盘价与前一日的收盘价进行比较计算得出的。 vanke['Daily Return'] = vanke['Close'].pct_change() # 计算万科A的每日收益率。 cmb['Daily Return'] = cmb['Close'].pct_change() # 计算招商银行的每日收益率。 # 使用matplotlib创建图表并设置图表大小。 plt.figure(figsize=(12,6)) # 设置图表的标题。 plt.title('Daily Return Comparison') # 绘制两只股票的每日收益率曲线。 vanke['Daily Return'].plot(label='Vanke A') # 绘制万科A的收益率曲线。 cmb['Daily Return'].plot(label='CMB') # 绘制招商银行的收益率曲线。 # 添加图例。 plt.legend() # 显示图表。 plt.show()

全体的なコードは比較的単純で、実行プロセスは次のようになります。

1. 必要なライブラリをインポートします。

2. 現在の日付を取得して出力します。

3. 在庫データを取得する時間範囲を定義します。

4. Yahoo Finance から、指定された日付範囲内の Vanke A と China Merchants Bank の株価データをダウンロードします。

5. ダウンロードしたデータに毎日のリターンを計算して追加します。

6. 2 つの株式の日次収益を比較するチャートを描いて表示します。

コードで使用されている yfinance ライブラリは、Yahoo Finance から過去の市場データをダウンロードできる人気の金融データ インターフェイスです。 Matplotlibは、さまざまな静的、動的、インタラクティブなチャートを作成できる、広く使用されている Python プロット ライブラリです。 .pct_change() 関数は、データ フレーム内の要素のパーセンテージの変化を計算するために使用され、財務データ分析におけるリターンの計算によく使用されます。 plt.show() 関数呼び出しにより、生成されたチャートを表示するウィンドウが開きます。 Jupyter Notebook やその他のインタラクティブな環境では、通常、プロットは直接表示されます。

2つの株式のリターンの比較チャート

要約する

この論文では、Auto G en フレームワークとその財務データ分析への応用について紹介します。ユーザーはエージェントを通じてヘルプを要求し、Auto Genフレームワークのヘルパー エージェントがタスクを受け取ると、Python コードを使用して株価データを処理し、比較チャートを描画します。このプロセスは、データのダウンロード、分析、視覚化を処理するAuto Genの機能を示しています。

Auto Gen は、シンプルな A 共有アシスタントを実装することで、ユーザーの作業負荷を軽減し、タスク実行の精度と効率を向上させます。 Auto Genを使用すると、プロセスの構築、エージェントの割り当て、コード実行の自動化によって複雑なタスクも簡素化され、ユーザーはデータと分析結果をより直感的に提示できるようになります。

著者について

51CTO コミュニティ エディター兼シニア アーキテクトの Cui Hao 氏は、ソフトウェア開発とアーキテクチャで 18 年の経験があり、分散アーキテクチャでは 10 年の経験があります。


<<:  誰でも大きなモデルを使用できます。よく構成されたプロンプトにより、簡単に始めることができます。

>>:  GoogleはDeepMind AIを使用して何千もの新しい素材を分析および予測しました

ブログ    
ブログ    
ブログ    

推薦する

Githubの包括的なレビュー! 2021 年の最も素晴らしい AI 論文 38 件

[[443053]] 2021年は人工知能が飛躍的に進歩し続ける年です。最近、Github で誰かが...

ここでは、あなたが歩むかもしれない未来の世界を描いた、自動運転に関する 73 の特徴を紹介します。

自動運転車の登場は私たちの生活のあらゆる側面に影響を与え、変化をもたらすでしょう。未来はどうなるの...

ChatGPTが話せるようになりました! Siriなどのスマートアシスタントへの直接的な脅威

OpenAIは米国時間9月26日月曜日、チャットボット「ChatGPT」に音声会話機能を追加したと発...

Python 用 OpenCV について Dlib を使って顔検出を実装する

Dlib は、プログラミング言語 C++ で記述された汎用のクロスプラットフォーム ソフトウェア ラ...

スマートテクノロジーが現代のビジネス運営を強化する7つの方法

スマート テクノロジーは、あらゆる業界の企業に無限のチャンスをもたらします。小さな変更でも、企業を完...

ドローン盗撮の防止は難しく、3つの面での取り組みが必須

近年、民間ドローンの急速な普及は、空中撮影、レジャーや娯楽、農作物の保護、電力検査など、人々の生産と...

...

AI + リアルタイム監視技術が公共サービスを改善する10の方法

石油やガスの価格変動、運用コストの増加、サイバー/物理的な脅威の増大により、公益事業会社はセキュリテ...

ツイッターがマスク氏の買収を阻止:15%以上の株式を保有する者は割引価格で発行される

イーロン・マスクによるツイッター買収のドラマもついにこの回まで来た。ツイッターは現地時間4月15日、...

...

大規模データストレージソリューションの構築: MongoDB の水平拡張の検討

MongoDB は、大規模なデータ ストレージ ソリューションの構築に適した NoSQL データベー...

自然言語処理技術はビジネス分野でどのようなアプリケーションをサポートできますか?

[[224853]] [51CTO.com クイック翻訳] 人工知能と機械学習技術は、多くの分野で...

Capital One は NLP を使用して SMS 経由で顧客と潜在的な詐欺行為について話し合う

[[412098]] [51CTO.com クイック翻訳]キャピタル・ワンのモバイル、ウェブ、会話型...