さらに別のインテリジェント アシスタント (YAIA)
多くのツールにアクセスできるmultimodal chatインターフェイス。
説明
YAIA は、高度な AI モデルを搭載し、さまざまなツールを備えた洗練されたmultimodal chatインターフェイスです。できる:
- リアルタイムで Web を検索および閲覧する
- ウィキペディアに情報を問い合わせる
- ニュースや地図検索を実行する
- グラフや図などのテキストや画像を生成できる Python コードを安全に実行します。
- テキストと画像を組み合わせた長文記事を作成する
- 画像の生成、検索、比較
- 文書と画像を分析する
- arXiv 論文を検索してダウンロードする
- 会話をテキスト ファイルと音声ファイルとして生成して保存する
- ファイルを出力ディレクトリに保存する
- 個人の改善点を追跡する
- タスク追跡のためのチェックリストを管理する
建築
主なコンポーネントは次のとおりです。
- Web インターフェイス用の Gradio 5
- 会話とツールの使用を処理する Amazon Bedrock
- Anthropic Claude 3.5 Sonnet をメインモデルとして使用
- Amazon Titan テキストおよびマルチモーダル埋め込みモデル
- Amazon Titan 画像ジェネレーター
- テキストおよびマルチモーダルインデックスの OpenSearch
- 音声用の Amazon Polly
- コードインタープリタ用の AWS Lambda
例
さまざまなツールの使用例を次に示します。
Web 検索: 「量子コンピューティングの最近の進歩について Web を検索します。」
Wikipedia : 「人工知能の歴史に関する Wikipedia の記事を検索します。」
Python スクリプト: 「国別の世界の CO2 排出量の棒グラフを生成する Python スクリプトを作成します。」
スケッチブック: 「新しいスケッチブックを作成し、数値的手法を使用して円周率を計算する方法についての導入文を書きます。」
画像生成: 「空飛ぶ車や高層ビルのある未来都市の画像を生成します。」
画像検索: 「絶滅危惧種の写真を画像カタログで検索します。」
arXiv 統合: 「自然言語処理における深層学習に関する最近の研究論文を検索します。」
会話の生成: 「マルチモーダル RAG のセットアップ方法について話し合う 3 人の専門家の間で会話を作成します。」
ファイル管理: 「気候変動に関する議論の概要を「climate_change_summary.txt」という名前のファイルに保存します。」
個人的な改善: 「改善のための提案があります。回答を改善するには、公式の情報源を検索してください。」
チェックリスト: 「新しいチェックリストを開始して、タスクのリストを 1 つずつ実行します。」
主な機能とツール
ウェブインタラクション:
- DuckDuckGo Text Search: Web 検索を実行します。
- DuckDuckGo ニュース検索: 最近のニュース記事を検索します
- DuckDuckGo マップ検索: 場所とビジネスを検索します
- DuckDuckGo 画像検索: 公開されている画像を検索します
- Web ブラウザ: Web サイトを閲覧し、そのコンテンツを取得します。
ウィキペディアのツール:
- Wikipedia 検索: 関連する Wikipedia ページを検索します。
- Wikipedia 地理データ検索: 地理的位置に基づいて Wikipedia の記事を検索します。
- Wikipedia Page Retriever: Wikipedia ページの完全なコンテンツを取得します。
Python スクリプト:
- 計算、テスト、およびテキストや画像を含む出力生成のための Python スクリプトを実行します。
- Python モジュールを Python インタープリターに追加できます。
- Python コードは AWS Lambda が提供する安全な環境で実行されます
コンテンツ管理:
- 個人アーカイブ: セマンティック データベースを使用して、テキスト、マークダウン、または HTML コンテンツを保存および取得します。
- スケッチブック: 長い形式のコンテンツを作成およびレビューするための複数ページのスケッチブックを管理します。複数の出力形式をサポートします。
- マークダウン (.md): 読み取りと編集を容易にするため
- Word 文書 (.docx): 文書編集用
画像の処理:
- 画像生成: テキスト プロンプトに基づいて画像を作成します。
- 画像カタログ検索: 説明に基づいて画像を検索します
- 画像類似検索: 参照画像に基づいて類似した画像を検索します。
- ランダムな画像: カタログからランダムな画像を取得します。
- ID による画像の取得: ID を使用してカタログから特定の画像を取得します。
- 画像カタログ数: カタログ内の画像の総数を返します。
- 画像のダウンロード: URL からカタログに画像を追加します。
arXiv の統合:
- arXiv 論文を検索してダウンロードする
- 紙のコンテンツをアーカイブに保存して簡単に検索できるようにする
会話の生成:
- コンテンツを 2 ~ 4 人の会話に変換します
- テキスト読み上げを使用して会話用の音声ファイルを生成する
ファイル管理:
- ファイルの保存: テキスト コンテンツを出力ディレクトリ内の指定した名前のファイルに保存できます。
個人的な改善:
チェックリスト:
- 項目を追加し、完了としてマークし、進捗状況を確認する機能を備えたタスク リストを管理します。
利用可能なツールとその使用法の包括的なリストについては、 ./Config/tools.json
を参照してください。
要件
- コンテナー ツール: Docker または Finch (Finch をインストールするには、ここの手順に従ってください)
- Python 3.12以降
- Amazon Bedrock、AWS Lambda、Amazon ECR にアクセスするための適切なアクセス許可を持つ AWS アカウント
インストール
リポジトリのクローンを作成します。
git clone https://github.com/danilop/multimodal-chat
cd multimodal-chat
仮想環境を作成してアクティブ化します (オプションですが推奨)。
python -m venv venv
source venv/bin/activate # On Windows, use `venvScriptsactivate`
必要なパッケージをインストールします。
pip install -r requirements.txt
コード実行用に AWS Lambda 関数をセットアップします。
cd LambdaFunction
./deploy_lambda_function.sh
cd ..
Web ブラウジングに Selenium を使用するには、ChromeDriver をインストールします。 Homebrew の使用:
brew install --cask chromedriver
音声を出力するには、 ffmpeg
をインストールします。 Homebrew の使用:
OpenSearch のセットアップ
ローカルの OpenSearch インスタンスを使用することも、リモート サーバーに接続することもできます。ローカルセットアップの場合:
OpenSearch ディレクトリに移動します。
管理者パスワードを設定します (初回セットアップ)。この手順では、 .env
ファイルとopensearch_env.sh
ファイルが作成されます。
OpenSearch をローカルで開始します ( .env
ファイルへのアクセスが必要です)。
出力を確認して、OpenSearch (2 ノード + ダッシュボード) が正しく開始されることを確認します。
OpenSearch を更新するには、次のスクリプトを使用して新しいコンテナ イメージをダウンロードします。
リモート サーバーのセットアップの場合は、メイン スクリプト内のクライアント作成コードを更新します。
パスワードを変更するには、 finch
またはdocker
使用しているコンテナを削除し、新しいパスワードを設定する必要があります。
使用法
テキスト、画像、埋め込みのデフォルト モデルは、 Config/config.ini
ファイルにあります。使用するモデルは、Amazon Bedrock モデル ID またはクロスリージョン推論プロファイル ID を使用して指定されます。 「基盤モデルへのアクセス」で説明されているように、これらのモデルへのアクセス許可とアクセスが必要です。
このセクションでは、前述のように、OpenSearch が別のターミナル ウィンドウでローカルに実行されていることを前提としています。
OpenSearch 管理者パスワードを環境にロードします。
source OpenSearch/opensearch_env.sh
アプリケーションを実行します。
python multimodal_chat.py
テキストインデックスとマルチモーダルインデックスをリセットするには (注: これにより./Images/
内の画像は削除されません):
python multimodal_chat.py --reset-index
Web ブラウザを開いて http://127.0.0.1:7860/ に移動してチャットを開始します。
デモビデオ
このアプリケーションでできることの例をいくつか示します。
インターネットを閲覧し、セマンティック アーカイブを使用する
このデモでは:
- Selenium と DuckDuckGo の特定のツール (検索、ニュース、地理検索) および Wikipedia を使用して Web サイトを閲覧します。
- セマンティック テキスト アーカイブ ツールを使用してドキュメントをアーカイブし、キーワードで取得する
画像のインポートと検索
このデモでは:
- マルチモーダル インデックスとローカル ファイル システムを使用してイメージ カタログを管理する
- 生成された説明とともに画像を保存する
- テキストによる説明による画像の取得 (セマンティック検索)
- 別の画像との類似性によって画像を取得する
- ランダムな画像を取得する
画像の生成と検索
このデモでは:
- テキストによる説明から画像を生成する
- テキストから画像へのプロンプトはチャットの指示から生成されます
- このアプローチにより、会話全体を使用してプロンプトを改善することができます。
Pythonコードインタープリター
このデモでは:
- AI が生成したコードを実行して問題を解決する
- 基本的なアクセス許可を使用して AWS Lambda 関数でセキュリティを確保するために実行する
- コンテナ イメージを介してデプロイされ、Python モジュールを簡単に追加できます
- Python のみですが簡単に拡張可能
「スケッチブック」に書く
このデモでは:
- 記事やブログ投稿などの長文テキストの作成を支援するツール)
- ページ内に分割されたテキストへの順次アクセスを提供する
- モデルの入力サイズと出力サイズの間の「非対称性」を軽減するには
Python コードレビューを含むスケッチブック
このデモでは:
- 複数のツールを併用すると最良の結果が得られます
- 長い記事を書くにはスケッチブックから始めましょう
- 記事にはコード スニペットが含まれています
- レビューが実行され、すべてのコード スニペットがテストされ、各ページが更新されてコードが修正され (必要に応じて)、実際の結果が追加されます。
トラブルシューティング
- OpenSearch で問題が発生した場合は、接続設定を確認し、サービスが実行されていることを確認してください。
- AWS Lambda 関数エラーの場合は、AWS 認証情報と権限を確認してください
- 画像処理が失敗した場合は、必要なライブラリがインストールされていることを確認し、ファイルのアクセス許可を確認してください。
貢献する
YAIA への貢献は大歓迎です!プル リクエストの送信、問題の報告、機能のリクエストの方法の詳細については、コントリビュート ガイドラインを参照してください。
ライセンス
このプロジェクトは MIT ライセンスに基づいてライセンスされています。詳細については、LICENSE ファイルを参照してください。
使用上のヒント
- 複数のツールを組み合わせて複雑なタスクを実行します。たとえば、Web 検索を使用して情報を検索し、次にスケッチブックを使用して要約を作成し、最後にそのトピックに関する会話を生成します。
- 画像を操作する場合、新しい画像を生成したり、既存の画像を検索したり、Web から画像をダウンロードしてカタログに追加したりできます。
- arXiv 統合を使用して、関心のある分野の最新の研究を常に最新の状態に保ちます。
- 会話生成ツールは、魅力的なコンテンツの作成やプレゼンテーションの準備に最適です。
- 自分の改善点を定期的に確認して更新し、進捗状況と成長分野を追跡します。
特定のコンポーネントや高度な使用方法の詳細については、ソース コード内のインライン ドキュメントを参照してください。