โปรเจ็กต์นี้เป็นสถาปัตยกรรมแบบครบวงจรที่ออกแบบมาเพื่อปรับปรุง Pokémon Go UX ที่นี่สาธิตกระบวนการตามลำดับที่เกี่ยวข้องกับตัวแทน Large Language Model (LLM) gpt-4
จำนวนมาก โดยใช้ประโยชน์จากระบบการดึงข้อมูล-Augmented Generation (RAG) เพื่อส่งมอบการตอบสนองส่วนบุคคล
หากต้องการทำความเข้าใจเชิงลึกเกี่ยวกับสถาปัตยกรรมและเข้าถึงบทความเต็ม โปรดไปที่เว็บไซต์ของฉัน
หากต้องการเจาะลึกสถาปัตยกรรมและสำรวจแอปพลิเคชัน โปรดตรวจสอบให้แน่ใจว่าคุณได้ติดตั้ง Python 3.10
พร้อมด้วยไลบรารี Langchain และ Faiss by Meta
หมายเหตุสำคัญ:
ระบบ - กระบวนการติดตั้งทั้งหมดได้รับการออกแบบมาสำหรับระบบที่ใช้ Unix ดังนั้นคุณสามารถใช้คำสั่ง Makefile ถัดไปเพื่อรันระบบของคุณภายในเครื่อง ไม่เช่นนั้น คุณสามารถจำลองคำสั่งของ Makefile ในเทอร์มินัลของคุณได้
ตัวแปรสภาพแวดล้อม - แต่ละคำสั่งถัดไปจะ source
ที่มาของตัวแปรที่กำหนดไว้ในไฟล์ .env
ของคุณ ดังนั้นโปรดตรวจสอบอีกครั้งว่าคีย์ OpenAI API ของคุณอยู่ในตำแหน่งนั้นแล้ว หากคุณต้องการทำการเปลี่ยนแปลงอย่างถาวร คุณจะต้องเพิ่มตัวแปรเหล่านี้ลงในสคริปต์การเริ่มต้นเชลล์ของคุณ (เช่น .bashrc
, .bash_profile
หรือ .zshrc
สำหรับ Unix/Linux/MacOS หรือตัวแปรสภาพแวดล้อมบน 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 คำขอของผู้ใช้ไม่อยู่ในหมวดหมู่ใดๆ ข้างต้น
ตัวอย่างพร้อมท์ :
ประเภทความตั้งใจ | ประเภทโครงสร้าง | ตัวอย่าง |
---|---|---|
Defense_ข้อเสนอแนะ | any | ฉันบังเอิญเจอ Grovyle ที่กำลังพักผ่อนอยู่ในสวนสาธารณะ! ฉันควรเลือกโปเกมอนตัวไหนในการต่อสู้ครั้งยิ่งใหญ่เพื่อเอาชนะมัน |
ข้อมูล_คำขอ | pokemon_names | เอาล่ะ โปเกเด็กซ์! ถึงเวลาค้นหาทุกสิ่งเกี่ยวกับ Snorlax และ Pikachu! |
ข้อมูล_คำขอ | natural_language_question | คุณรู้ไหมว่าฉันสามารถหา Psyduck ได้ในแหล่งที่อยู่อาศัยแบบไหน? |
ข้อมูล_คำขอ | natural_language_description | คุณเดาได้ไหมว่าโปเกมอนตัวไหนเป็นโปเกมอนหญ้า/พิษสองประเภทที่รู้จักกันในชื่อหัวพืชที่ด้านหลัง ซึ่งจะเติบโตเป็นต้นไม้ขนาดใหญ่เมื่อมันวิวัฒนาการ |
Squad_build | any | ถึงเวลาท้าทายหัวหน้า Fire Gym! เขามีทีมที่แข็งแกร่งทั้งไนนิตาเลสและคอมบัสเกน แต่ฉันต้องการความช่วยเหลือจากคุณในการสร้างทีม |
ไม่มี | any | ฉันรักเพรทเซล |
ตัวอย่างการตอบกลับ :
Prompt: คุณรู้ไหมว่าฉันสามารถหา Lucario ได้ในแหล่งที่อยู่อาศัยประเภทใด?
ตอบโดยเปิดใช้งาน 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 "
}