该项目是一个端到端架构,旨在增强 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 "
}