該專案是一個端到端架構,旨在增強 Pokémon Go UX。這裡演示了涉及多個大型語言模型 (LLM) gpt-4
代理的順序過程,利用檢索增強生成 (RAG) 系統來提供個人化回應。
要深入了解該架構並訪問全文,請訪問我的網站。
要深入研究架構並探索應用程序,請確保安裝了Python 3.10
、Langchain 庫和 Meta 的 Faiss。
重要提示:
系統- 整個安裝過程是為基於 Unix 的系統設計的,因此您可以使用接下來的 Makefile 命令在系統本地運行,否則,您可以在終端機中複製 Makefile 的命令。
環境變數- 接下來的每個命令都會source
您.env
檔案中定義的變量,因此請仔細檢查您的 OpenAI API 金鑰是否已就位。如果要進行永久性更改,則需要將這些變數新增至 shell 初始化腳本中(例如 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
顯示 Swagger UI 文件以查看可用端點:http://localhost:8000/docs
使用以下命令運行 Streamlit 應用程式:
make display_ui
以下是系統可以處理的不同類型互動的範例,這些互動按意圖類型和結構類型進行分類。
defense_suggestion
:出現了未知的神奇寶貝,使用者需要建議以使用神奇寶貝來對抗它。使用者必須提供神奇寶貝的名稱作為輸入的一部分。
information_request
:使用者想要了解更多關於神奇寶貝的資訊。在輸入中,使用者必須提供以下輸入文字結構之一:(1)請求訊息的神奇寶貝名稱,(2)用自然語言對神奇寶貝進行描述,但不明確提及神奇寶貝的名稱猜測神奇寶貝是什麼的意圖,或(3)關於明確提及神奇寶貝名稱的神奇寶貝的問題,詢問特定屬性,例如:進化、飲食、棲息地、基礎統計數據等。
squad_build
:使用者想要根據對手的神奇寶貝類型建立神奇寶貝小隊。使用者必須提供神奇寶貝名稱清單作為輸入的一部分。
None
:回傳 GPT-4 自己的回應。用戶請求不屬於上述任何類別。
提示範例:
意圖類型 | 結構類型 | 例子 |
---|---|---|
辯護建議 | any | 我在公園裡偶然發現了一隻野生的格羅維爾!我該選擇哪隻神奇寶貝來一場史詩般的戰鬥來擊敗它? |
資訊請求 | pokemon_names | 好吧,圖鑑!是時候了解有關 Snorlax 和皮卡丘的一切了! |
資訊請求 | 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 "
}