このプロジェクトは、Pokémon Go UX を強化するために設計されたエンドツーエンドのアーキテクチャです。ここでは、複数の大規模言語モデル (LLM) gpt-4
エージェントが関与する連続プロセスを示し、検索拡張生成 (RAG) システムを利用してパーソナライズされた応答を配信します。
アーキテクチャを深く理解し、記事全文にアクセスするには、私の Web サイトにアクセスしてください。
アーキテクチャを詳しく調べてアプリケーションを探索するには、Langchain ライブラリおよび Faiss by Meta とともにPython 3.10
インストールされていることを確認してください。
重要な注意事項:
システム- セットアップ プロセス全体は Unix ベースのシステム用に設計されているため、次の Makefile コマンドを使用してシステムをローカルで実行できます。それ以外の場合は、ターミナルで Makefile のコマンドを複製できます。
環境変数- 次の各コマンドは、 .env
ファイルで定義された変数source
するため、OpenAI API キーが適切に配置されていることを再確認してください。永続的な変更を加えたい場合は、これらの変数をシェル初期化スクリプト (Unix/Linux/MacOS の.bashrc
、 .bash_profile
、または.zshrc
、または Windows の環境変数など) に追加する必要があります。
次のコマンドを使用して仮想環境を作成します。
make create_venv
次のコマンドを使用して仮想環境をアクティブ化します。
source .venv/bin/activate
次のコマンドを使用して依存関係をインストールします。
make install_dev
次のコマンドを使用して、テストの依存関係をインストールします。
make install_test
次のコマンドを使用して API サーバーを実行します。
make api_server
http://localhost:8000/docs にある Swagger UI ドキュメントを表示して、利用可能なエンドポイントを確認します。
次のコマンドを使用して、Streamlit アプリを実行します。
make display_ui
以下は、システムが処理できるさまざまなタイプのインタラクションの例であり、インテント タイプと構造タイプによって分類されています。
defense_suggestion
: 未知のポケモンが出現したため、ユーザーはそれに対してポケモンを使用するための提案が必要です。ユーザーは入力の一部としてポケモンの名前を入力する必要があります。
information_request
: ユーザーはポケモンについて詳しく知りたいと考えています。入力では、ユーザーは次の入力テキスト構造のいずれかを提供する必要があります: (1) 情報を要求するポケモンの名前、(2) ポケモンの名前を明示的に言及せずに自然言語でポケモンの説明ポケモンが何であるかを推測する意図、または (3) ポケモン名が明示的に記載されているポケモンに関する質問で、進化、食事、生息地、基本ステータスなどの特定の属性を尋ねます。
squad_build
: ユーザーは、相手のポケモンのタイプに基づいてポケモンの分隊を構築したいと考えています。ユーザーは入力の一部としてポケモン名のリストを提供する必要があります。
None
: GPT-4 独自の応答を返します。ユーザーのリクエストは上記のカテゴリのいずれにも当てはまりません。
プロンプトの例:
インテントのタイプ | 構造タイプ | 例 |
---|---|---|
防御提案 | any | 公園でくつろぐ野生のグロヴィルに遭遇しました。壮大な戦いで倒すにはどのポケモンを選べばいいでしょうか? |
情報リクエスト | pokemon_names | よし、ポケモン図鑑!カビゴンとピカチュウについてすべてを知る時が来ました! |
情報リクエスト | natural_language_question | どのような生息地でサイアヒルが見つかるか知っていますか? |
情報リクエスト | natural_language_description | 進化すると大きな植物に成長する、背中の植物の球根で知られる草/どくのデュアルタイプのポケモンはどれか当てられますか? |
分隊ビルド | any | ファイアジムリーダーに挑戦しましょう!彼はナインタレスとコンブスケンを擁する厳しいチームを持っていますが、チームを構築するにはあなたの助けが必要です |
なし | any | プレッツェルが大好きです |
応答例:
プロンプト:ルカリオがどのような生息地で見つかるか知っていますか?
JSON mode
を有効にして回答します。
{
"header" : " Lucario can be found in Cave, Forest, and Mountain habitats. n " ,
"body" : [
" ### Lucario nn **ID**: 448 nn **Stats**: - HP: 70 n - Speed: 90 n - Attack: 110 n - Special-Attack: 115 n - Defense: 70 n - Special-Defense: 70 nn **Height**: 1.2m **Weight**: 54.0kg nn **Types**: fighting, steel nn **Abilities**: steadfast, inner-focus, justified nn **Damage Relations**: n - no damage to: ghost n - half damage to: flying n - double damage to: normal n - half damage from: rock n - double damage from: flying n "
],
"sprites" : {
"Lucario" : [
" https://raw.githubusercontent.com/PokeAPI/sprites/master/sprites/pokemon/back/448.png " ,
" https://raw.githubusercontent.com/PokeAPI/sprites/master/sprites/pokemon/back/shiny/448.png " ,
" https://raw.githubusercontent.com/PokeAPI/sprites/master/sprites/pokemon/448.png " ,
" https://raw.githubusercontent.com/PokeAPI/sprites/master/sprites/pokemon/shiny/448.png "
]
},
"intent_type" : " information_request " ,
"intent_structure" : " natural_language_question "
}