AWSにおける生成AIとマルチモーダルエージェント:金融市場における新たな価値を開拓するための鍵
AWSにおける生成AIとマルチモーダルエージェント:金融市場における新たな価値を開拓するための鍵' In English 'Generating AI and Multimodal Agents in AWS Key to Exploring New Value in the Financial Market
マルチモーダルデータは、市場、経済、顧客、ニュースとソーシャルメディア、リスクデータなど、金融業界の貴重な要素です。金融機関はこのデータを生成し、収集し、使用して、金融業務に対する洞察を得たり、より良い意思決定を行ったり、パフォーマンスを向上させるために利用しています。しかし、マルチモーダルデータにはいくつかの課題があります。金融システムとデータの形式と品質の複雑さと標準化の欠如、データの断片化と非構造化性などが挙げられます。金融クライアントはマルチモーダルデータから金融の洞察を得るための運用上の負荷を頻繁に説明しており、これには複雑な抽出と変換ロジックが必要であり、労力とコストがかさむ結果となります。マルチモーダルデータの技術的な課題は、さまざまなデータ型の統合とモデル化の複雑さ、複数のモダリティ(テキスト、画像、音声、ビデオ)からのデータの組み合わせの難しさ、高度なコンピュータサイエンスのスキルと洗練された分析ツールの必要性などがあります。
マルチモーダルデータを処理する人気のある方法の一つは、マルチモーダルエージェントの使用です。マルチモーダルエージェントは、適切なツールを使って複数のモダリティのデータを理解し、分析するAIシステムです。これらの多様なデータタイプ間の洞察をつなぎ合わせ、より包括的な理解を得て適切な応答を生成することができます。マルチモーダルエージェントは、生成AIと組み合わせて、金融市場で広く応用されています。以下はいくつかの人気のあるユースケースです:
- スマートな報告と市場情報 – AIはさまざまな金融情報源を分析して市場情報レポートを生成できます。これにより、アナリスト、投資家、企業がトレンドを把握するのに役立ちます。マルチモーダルエージェントは長い金融レポートを短時間で要約し、アナリストの時間と労力を節約できます。
- 量的モデリングと予測 – 生成モデルは大量の金融データを合成して、株価の予測、ポートフォリオ最適化、リスクモデリングなどの機械学習(ML)モデルのトレーニングに使用できます。さまざまなデータソースを理解するマルチモーダルモデルはより堅牢な予測を提供できます。
- コンプライアンスと詐欺検出 – このソリューションには、通話、メール、チャット、アクセスログなどの通信チャネルを分析して、内部者取引や市場操作の可能性を特定する監視ツールを含めることができます。さまざまなデータタイプ間での不正な共謀の検出には、マルチモーダル分析が必要です。
マルチモーダルエージェントによる生成AIは、金融アナリストの生産性を向上させることができます。これにより、アナリストは反復的でルーティン化されたタスクを自動化し、高付加価値の業務に集中する時間を確保できます。マルチモーダルエージェントは、研究と分析を支援することで、アナリストが洞察を得る能力を高めることができます。マルチモーダルエージェントは、強化された定量的分析と金融モデルを生成することも可能であり、アナリストがより速く、より正確に作業することができます。
AWSを使用したマルチモーダルエージェントの実装により、大規模な構造化および非構造化データからの主要な洞察を一元化することができます。マルチモーダルエージェントは、Amazon BedrockとAmazon SageMaker JumpStartの生成AIの力をAWS AnalyticsおよびAI / MLサービスのデータ処理機能と組み合わせることで、AWS内で安全でスケーラブルな方法でマルチモーダルデータから効率的に分析し、洞察を収集するためのアジャイルなソリューションを提供できます。Amazonは、自然言語処理(NLP)、音声認識、テキスト抽出、検索を可能にする一連のAIサービスを提供しています:
- Amazon Comprehendは、テキストをキーフレーズで分析し、感情を分析するNLPサービスです
- Amazon Textractは、文書から正確にテキストとデータを抽出するインテリジェントなドキュメント処理サービスです
- Amazon Transcribeは、音声をテキストに変換する自動音声認識サービスです
- Amazon Kendraは、文書やナレッジベースを含むさまざまなデータソースから情報を検索するMLによるエンタープライズ検索サービスです
このポストでは、金融アナリストが組織のマルチモーダルデータ(テキスト、音声、表形式のデータ)にアクセスし、金融の洞察を収集するシナリオを紹介します。このインタラクションでは、マルチモーダルエージェントがユーザーのクエリを計画し実行し、関連するデータソースから結果を取得する方法をデモンストレーションします。これはすべてAWSサービスを使用して達成されており、金融アナリストがAWS内でマルチモーダル金融データを包括的に分析し、洞察を得る効率を向上させることができます。
以下のスクリーンショットはUIの例を示しています。
ソリューションの概要
次の図は、エージェントを使用してマルチモーダルデータを用いた生成的AIを使用するための概念的なアーキテクチャを示しています。手順は次のとおりです:
- 金融アナリストは、チャットボットなどのプラットフォームを介して質問を投げかけます。
- プラットフォームは、最適なマルチモーダルエージェントツールを決定するためのフレームワークを使用します。
- 特定された後、プラットフォームは、以前に特定されたツールにリンクされたコードを実行します。
- ツールは、金融アナリストの要求に応じた金融データの分析を生成します。
- 結果を要約する際、大規模な言語モデルが金融アナリストに取り戻し、報告します。
技術的アーキテクチャ
マルチモーダルエージェントは、ビジネスユーザーからの自然言語のプロンプトに基づいてさまざまなツールを組み合わせて洞察を生成します。非構造化データに対しては、エージェントはドキュメントの分析のためにAmazon Textract、音声認識のためにAmazon Transcribe、NLPのためにAmazon Comprehend、インテリジェントサーチのためにAmazon KendraなどのAIサービスを使用するためにAWS Lambda関数を使用します。構造化データに対しては、エージェントはSQL ConnectorおよびSQLAlchemyを使用してAmazon Athenaを含むデータベースを分析するために使用します。エージェントはまた、計算と数量モデリングのためにLambdaとAmazon SageMaker SDKでPythonを利用しています。エージェントはまた、プロンプトと結果をAmazon DynamoDBに保存するための長期的なメモリも持っています。マルチモーダルエージェントはSageMakerノートブックに存在し、ビジネスユーザーからの英語のプロンプトに基づいてこれらのツールをStreamlit UI内で調整します。
技術的アーキテクチャの主要なコンポーネントは次のとおりです:
- データの保存と分析 – 四半期の財務収益記録をオーディオファイル、財務年報をPDFファイル、S&P株式データをCSVファイルとしてAmazon Simple Storage Service(Amazon S3)にホストしています。株式データのデータ探索はAthenaを使用して行われます。
- 大規模な言語モデル – 大規模な言語モデル(LLM)は、Amazon Bedrock、SageMaker JumpStart、またはAPIを介して利用できます。
- エージェント – LangChainのエージェントを使用して、LLMやその他のツールへのユーザー入力として事前に決められていない連鎖コールを行います。このタイプのチェーンでは、スイートのツールにアクセスできるエージェントがあります。各ツールは特定のタスクに対して構築されています。ユーザーの入力に応じて、エージェントは質問に答えるためにどのツールまたはツールの組み合わせを呼び出すかを決定します。私たちは、次のようなシナリオに特化したエージェントツールを作成しました:
- 株式クエリツール – AthenaとSQLAlchemyを使用してS&P株式データをクエリします。
- ポートフォリオ最適化ツール – 選択した株式に基づいてポートフォリオを構築します。
- 財務情報検索ツール – Amazon Kendraを使用して、マルチページのPDFファイルに保存されている財務収益情報を検索します。
- Python計算ツール – 数学的計算に使用します。
- 感情分析ツール – Amazon Comprehendを使用して、トピックの感情を特定しスコアリングします。
- フレーズ検出ツール – Amazon Comprehendを使用して、最近の四半期報告書からキーフレーズを見つけます。
- テキスト抽出ツール – Amazon Textractを使用して、四半期報告書のPDFバージョンをテキストファイルに変換します。
- 音声の文字起こしツール – Amazon Transcribeを使用して、音声録音をテキストファイルに変換します。
エージェントは、エージェントとのユーザーの対話の連鎖を保持するエージェントメモリがDynamoDBに保存されます。
以下のセクションでは、主要なステップのいくつかと関連するコードについて説明します。ここで示されているすべてのステップのソリューションとコードについて詳しく知りたい場合は、GitHubのリポジトリを参照してください。
前提条件
このソリューションを実行するには、Anthropic Claude v2などのLLMに対するAPIキーを持っているか、Amazon Bedrockの基礎モデルにアクセスできる必要があります。
LLMsとLangChainを使用して構造化および非構造化データから応答を生成するには、Amazon Bedrock、SageMaker JumpStart、またはAPIキーを介してLLMsにアクセスする必要があります。さらに、SQLAlchemyと互換性のあるデータベースを使用する必要があります。AWS Identity and Access Management(IAM)ポリシーも必要です。詳細はGitHubリポジトリで確認できます。
マルチモーダルエージェントの主要なコンポーネント
マルチモーダルエージェントのいくつかの主要なコンポーネントは次のとおりです:
- マルチモーダルエージェントのツールのために定義された関数
- マルチモーダルエージェントのために定義されたツール
- マルチモーダルエージェントのための長期メモリ
- 計画実行型マルチモーダルエージェント(ツール、LLMs、メモリによって定義される)
このセクションでは、関連するコードスニペットを使用して、主要なコンポーネントを説明します。
マルチモーダルエージェントのツールのために定義された関数
マルチモーダルエージェントは、テキスト、音声、画像などの異なるタイプのデータを処理するために、さまざまなAIサービスを使用する必要があります。これらの関数のいくつかは、テキストを分析するためのAmazon Comprehend、画像やドキュメントを分析するためのAmazon Textract、音声をテキストに変換するためのAmazon TranscribeなどのAWS AIサービスを呼び出す必要があります。これらの関数は、エージェント内でローカルに呼び出すか、エージェントが呼び出すことができるLambda関数としてデプロイすることもできます。Lambda関数は内部的に関連するAWS AIサービスを呼び出して結果をエージェントに返します。このアプローチにより、ロジックがモジュール化され、エージェントがよりメンテナンスしやすく拡張性が向上します。
次の関数は、選択した株式に基づいて最適化されたポートフォリオを計算する方法を定義しています。Pythonベースの関数をLLMツールに変換する方法の1つは、BaseToolラッパーを使用することです。
class OptimizePortfolio(BaseTool):
name = "ポートフォリオ最適化ツール"
description = """
株価の最適化のための最適なポートフォリオを構築する必要がある場合にこのツールを使用します。
stock_lsは['WWW'、'AAA'、'GGGG']のような株式のシンボルのリストである必要があります。
"""
def _run(self, stock_ls: List):
session = boto3.Session(region_name=region_name)
athena_client = session.client('athena')
database=database_name
table=table_Name
...
次は、AWS AIサービス(Amazon Comprehend、Amazon Textract、Amazon Transcribe)APIを呼び出すためのLambdaのコードです:
def SentimentAnalysis(inputString):
print(inputString)
lambda_client = boto3.client('lambda')
lambda_payload = {"inputString:"+inputString}
response=lambda_client.invoke(FunctionName='FSI-SentimentDetecttion',
InvocationType='RequestResponse',
Payload=json.dumps(inputString))
print(response['Payload'].read())
return response
マルチモーダルエージェントのために定義されたツール
マルチモーダルエージェントは、機能を有効にするためにさまざまなツールにアクセスできます。株式に関する質問に答えるために株式データベースをクエリできます。専用のツールを使用してポートフォリオを最適化できます。Amazon Kendraから情報を取得することもできます。Python REPLツールを使用してエージェントがPythonコードを実行できます。ツールの構造の例(名前と説明を含む)は、次のコードで示されています。この記事の実際のツールボックスには、株式クエリツール、ポートフォリオ最適化ツール、財務情報検索ツール、Python計算ツール、感情分析ツール、フレーズ検出ツール、テキスト抽出ツール、および音声の転記ツールの8つのツールがあります。
tools = [
Tool(
name="財務情報検索ツール",
func=run_chain,
description="""
Kendraを使用して財務情報を検索する必要がある場合に便利です。
"""
),
Tool(
name="感情分析ツール",
func=SentimentAnalysis,
description="""
トピックの感情を分析する必要がある場合に便利です。
"""
),
Tool(
name="フレーズ検出ツール",
func=DetectKeyPhrases,
description="""
最近の四半期報告書でキーフレーズを検出する必要がある場合に便利です。
"""
),
...
]
マルチモーダルエージェントのための長期メモリ
次のコードは、マルチモーダルエージェントの長期メモリの構成を示しています。このコードでは、DynamoDBテーブルがメモリとして追加され、将来の参照のためにプロンプトと回答を保存します。
chat_history_table = dynamodb_table_name
chat_history_memory = DynamoDBChatMessageHistory(table_name=chat_history_table, session_id=chat_session_id)
memory = ConversationBufferMemory(memory_key="chat_history",
chat_memory=chat_history_memory, return_messages=True)
プランナー実行者ベースのマルチモーダルエージェント
プランナー実行者ベースのマルチモーダルエージェントアーキテクチャには、プランナーと実行者の2つの主要なコンポーネントがあります。プランナーは、実行とプロンプト質問に答えるために必要なステップを含む高レベルの計画を生成します。実行者は、必要なツールを使用して各計画ステップに対して適切なシステム応答を生成することにより、この計画を実行します。以下のコードをご覧ください:
llm = ChatAnthropic(temperature=0, anthropic_api_key=ANTHROPIC_API_KEY, max_tokens_to_sample = 512)
model = llm
planner = load_chat_planner(model)
system_message_prompt = SystemMessagePromptTemplate.from_template(combo_template)
human_message_prompt = planner.llm_chain.prompt.messages[1]
planner.llm_chain.prompt = ChatPromptTemplate.from_messages([system_message_prompt, human_message_prompt])
executor = load_agent_executor(model, tools, verbose=True)
agent = PlanAndExecute(planner=planner, executor=executor, verbose=True, max_iterations=2)
金融アナリストによる質問に基づくシナリオの例
このセクションでは、金融アナリストからの質問に基づいてマルチモーダルエージェントが実行するエンドツーエンドの手順を示すために、2つの例のシナリオを探索します。
シナリオ1:構造化データに関連する金融アナリストの質問
このシナリオでは、金融アナリストがマルチモーダルエージェントに対して企業の株式に関する英語での質問を行います。マルチモーダルLangChainエージェントは、マルチステップの計画を立て、各ステップに対してどのツールを使用するかを決定します。次の図は、次のステップを含む例のワークフローを示しています:
- 金融アナリストがUIを介してマルチモーダルエージェントに対して金融の質問を英語で行います。
- エージェントは、質問に答えるためにデータベースツールが必要であることを特定します。質問に基づいてSQLクエリを生成し、Athenaデータベースにクエリを実行します。
- AthenaはSQLクエリを実行し、関連する結果(5つの企業の株価時系列)を取得し、結果をエージェントに渡します。
- エージェントは、質問に答えるために2番目のツールが必要であることを特定します。取得したデータをポートフォリオ最適化のためのPythonツールに渡します。
- Pythonツールは、必要な最適ポートフォリオ(ウェイトを含む)を計算し、その回答をエージェント内のLLMに渡します。
- エージェントは、必要な情報と計算をLLMを使用してまとめ、金融アナリストに対して英語でUIを介して回答します。
金融アナリストは以下の質問をします:
「2018年にAAAA、WWW、DDDの株価の終値は何ですか?これらの3銘柄を使用して最適化されたポートフォリオを構築できますか?」
以下のコードは、マルチモーダルエージェントのプランナーによって特定されたステップを示しています:
steps=[Step(value='Use Stocks Querying Tool to find closing stock prices of AAAA, WWW and DDD in year 2018.'),
Step(value='Use Portfolio Optimization Tool to build an optimized portfolio using the three stocks.'),
Step(value='Provide the closing stock prices and optimized portfolio allocation.')]
エージェントは、質問のプロンプトを以下のSQLクエリに変換しました:
SELECT date, aaaa, www, ddd
FROM "blog-stock-prices-db"."stock_prices"
WHERE date BETWEEN '2018-01-01' AND '2018-12-31'
ORDER BY date DESC
以下のコードは、質問に基づいてマルチモーダルエージェントによる最終的な回答を示しています:
2018年のAAAA、WWW、DDDの終値は次の通りです:
AAAA: $172.44
WWW: $85.91
DDD: $9.82
AAAA、WWW、DDDの最適化されたポートフォリオの割り当ては次の通りです:
AAAA: 55%
WWW: 45%
DDD: 0%'
シナリオ2:非構造化データに関連する金融アナリストの質問
このシナリオでは、金融アナリストが企業の財務状況に関する複数の質問をマルチモーダルエージェントに対して行います。エージェントは、非構造化データを持つAmazon KendraとPython計算ツールの2つのツールエージェントを呼び出して情報を収集し、必要な計算を行います。エージェントは、ツールからの情報を自身の言語モデルを使用してまとめ、アナリストに完全な回答を提供します。このシナリオのキーは、エージェントが前の質問の質問と回答を覚えており、会話にコンテキストを組み込むことができることです。以下の図は、次のステップで構成されるワークフローを示しています:
- 金融アナリストは、マルチモーダルエージェントを介して英語で金融に関する質問をUIに投げかけます。
- エージェントは、質問に答えるためにAmazon Kendraツールが必要であると判断し、Amazon Kendraエージェントツールを呼び出します。
- Amazon Kendraは、Amazon S3の非構造化データコーパスを検索し、答えを含む関連するドキュメントを取得します。
- Retrieval Augmented Generation(RAG)を使用して、Amazon Kendraは関連するドキュメントから答えをLLMに渡します。
- エージェントは、質問の後半の答えのために2番目のツールが必要であると判断します。最初のツールから情報をPython計算ツールに渡します。
- Pythonツールは必要な比率を計算し、その答えをエージェント内のLLMに渡します。
- エージェントは、必要な情報と計算をLLMを使用してまとめ、UIを介して金融アナリストに回答します。
以下はアナリストとマルチモーダルエージェントの間での質問と回答です。
エージェントは、「2022年12月決算のAmazonの純損失は何ですか?」という質問に対して、「Amazonは2022年度に合計純売上高5140億ドルと純損失27億ドルを報告しました。」と回答します。ソースは、Amazonの2022年12月決算に関する10K報告書であり、Retrive_Kendra
ツールを使用して取得されました。
「同じ年の純損失は何ですか?」という質問に対して、エージェントは「27億ドルです。」と回答します。ソースは、Amazonの2022年12月決算に関する10K報告書であり、Retrive_Kendra
ツールを使用して取得されました。この質問は2番目の質問に似ていますが、会社名や年数は特定されていません。しかし、エージェントは会話の文脈に基づいて正しい会社名と年数を使用することができました。
「利益率の一種である純利益率の公式は何ですか?」という質問に対して、エージェントは「Amazonは2022年度に合計純売上高5140億ドルと純損失27億ドルを報告しました。Amazonの2022年度の純利益率は-0.5%です。」と回答します。ソースはRetrieve_Kendra
およびPythonREPLTool()
です。
ソリューションの詳細を探る
この記事のソリューションと表示されているコードの詳細を確認するには、GitHubのリポジトリをチェックしてください。
GitHubのリポジトリでは、エンド・ツー・エンドのソリューションを持つPythonノートブック、インフラストラクチャをプロビジョニングするためのAWS CloudFormationテンプレート、非構造化データ(収益報告書のPDFファイル、収益通話の音声ファイル)および構造化データ(株価時系列)を見つけることができます。
最後に、金融アナリストが尋ねたさまざまな質問、呼び出されたエージェントツール、およびマルチモーダルエージェントからの回答が表形式でまとめられています。
クリーンアップ
マルチモーダルエージェントを実行した後は、使用しないリソースをクリーンアップしてください。使用したデータベース(Athena)をシャットダウンして削除してください。また、Amazon S3のデータを削除し、さらなる料金が発生しないようにSageMaker Studioのノートブックインスタンスを停止してください。使用されていない長期メモリの一部であるLambda関数とDynamoDBテーブルを削除してください。SageMaker JumpStartを使用してSageMakerリアルタイムエンドポイントとしてLLMを展開した場合は、SageMakerコンソールまたはSageMaker Studioを使用してエンドポイントを削除してください。
結論
この記事では、AWSのストレージ、AI/ML、およびコンピュートサービスの幅広い範囲を使用して、LangChainフレームワークと生成AIとともに高度なマルチモーダルAIソリューションを構築する方法を示しました。NLP、音声認識、およびMLテクノロジーを統合することで、このシナリオで開発されたマルチモーダルエージェントは、多様な金融データのモダリティ(構造化および非構造化)を分析し、自然言語(英語)でプロンプトに応答することができます。これにより、金融アナリストの生産性と効率が向上し、彼らは高付加価値の戦略的な業務に集中することができます。AWSによるマルチモーダルAIソリューションは、繰り返し作業の自動化、人間の能力の向上、効率的なデータ駆動型の洞察の生成により、金融市場を変革する可能性を持っています。構造化データには、生成AIとLLMを組み合わせたモダンなデータアーキテクチャを使用することができます。詳細については、「データ体験の再創造:生成AIとモダンなデータアーキテクチャを活用した洞察の解放」を参照してください。また、ジェネレーティブAI、ファンデーションモデル、および大規模言語モデルのユースケースについては、Amazon Bedrockを参照してください。
付録
以下の表は、構造化データと非構造化データに基づいて、金融アナリストがマルチモーダルエージェントに対して行う例の質問を示しています。
質問の目的 | 金融アナリストがUIを通じて行う質問 | エージェントツールの起動 | エージェントツールが使用する主なAWSサービス | マルチモーダルエージェントからの回答 |
LangChainエージェントに対して収集データから情報を前処理し抽出するように指示します。 | Amazonの最近の四半期の10Kおよび10Qファイルをテキスト形式に変換してください |
1. テキスト抽出ツール |
Textract 2. AWS Lambda 3. Amazon S3 |
Amazonの財務報告書を含むテキストファイルはクリーンアップされ、分析のために準備ができています。 |
LangChainエージェントに対してオーディオ録音をテキストに変換するように指示します。 | 最新の四半期の収益通話をテキスト形式に変換してください |
|
Transcribe 2. AWS Lambda 3. Amazon S3 |
収益通話のテキストデータがありますので、キーフレーズを抽出できます。 |
LangChainエージェントに対して企業の財務状況とパフォーマンスを分析するように指示します。 | 10Kレポートに基づいてAmazonの財務状況を分析し、重要な財務比率を計算してください。回答は5文に制限してください。 |
|
|
以下はAmazonの財務状況の要約です。利益率が低く、売上に対する利益性が低いことを示しています。ただし、資産利益率が高く、利益を生み出すために資産を効果的に使用しています。負債対資本比率が低く、財務レバレッジとリスクが低いことを示しています。流動比率が高く、短期の債務を返済する能力と短期の流動性ポジションが良いことを示しています。全体的に、Amazonは効率的な運営と低リスクで良い財務状況にあるようです。 |
LangChainエージェントに対して企業の財務パフォーマンスを分析するように指示します。 | 四半期ごとの収益成長の主な要因は何ですか?回答は5文に制限してください。 |
|
|
以下は収益成長の主な要因の要約です。Amazonの収益は、新規顧客からの購読およびサポート収入の増加により成長しました。既存顧客口座も拡大し、収益成長に寄与しました。より高い純売上が会社の収益を押し上げました。正確な収益成長率を計算することはできませんでしたが、キーフレーズと抽出された情報は、収益成長が主に新しい購読、既存顧客の拡大、およびより高い純売上によって推進されていることを示しています。 |
LangChainエージェントに対して企業の経営陣と将来の計画を分析するように指示します。 | 来年の会社の重要な優先事項は何ですか?会社が直面する最大のリスクは何ですか?回答は5文に制限してください。 |
|
|
以下は5文での回答の要約です。Amazonの優先事項は成長と新しい市場への進出に投資することです。ただし、消費者の需要の変化や競争の変化などのリスクが彼らのビジネスを脅かしています。財務報告書のキーフレーズを分析することで、フルフィルメント、技術、新製品に焦点を当てた傾向が浮かび上
|