Proyek ini adalah arsitektur ujung ke ujung yang dirancang untuk menyempurnakan Pokémon Go UX. Berikut ini menunjukkan proses berurutan yang melibatkan beberapa agen gpt-4
Model Bahasa Besar (LLM), memanfaatkan sistem Retrieval-Augmented Generation (RAG) untuk memberikan respons yang dipersonalisasi.
Untuk pemahaman mendalam tentang arsitektur dan untuk mengakses artikel lengkap, silakan kunjungi situs web saya.
Untuk mempelajari arsitektur dan menjelajahi aplikasi, pastikan Anda telah menginstal Python 3.10
, bersama dengan perpustakaan Langchain dan Faiss by Meta.
Catatan penting:
Sistem - Seluruh proses pengaturan dirancang untuk sistem berbasis Unix, sehingga Anda dapat menggunakan perintah Makefile berikutnya untuk menjalankan sistem Anda secara lokal, jika tidak, Anda dapat mereplikasi perintah Makefile di terminal Anda.
Variabel Lingkungan - setiap perintah berikutnya akan source
variabel yang ditentukan dalam file .env
Anda, jadi periksa kembali apakah Kunci API OpenAI Anda sudah ada. Jika Anda ingin membuat perubahan permanen, Anda perlu menambahkan variabel-variabel ini ke skrip inisialisasi shell Anda (seperti .bashrc
, .bash_profile
, atau .zshrc
untuk Unix/Linux/MacOS, atau Variabel Lingkungan di Windows).
Buat lingkungan virtual menggunakan perintah berikut:
make create_venv
Aktifkan lingkungan virtual menggunakan perintah berikut:
source .venv/bin/activate
Instal dependensi menggunakan perintah berikut:
make install_dev
Instal dependensi pengujian menggunakan perintah berikut:
make install_test
Jalankan server API menggunakan perintah berikut:
make api_server
Tampilkan dokumentasi Swagger UI untuk melihat titik akhir yang tersedia di: http://localhost:8000/docs
Jalankan aplikasi Streamlit menggunakan perintah berikut:
make display_ui
Berikut ini adalah contoh berbagai tipe interaksi yang dapat ditangani sistem, yang dikategorikan berdasarkan tipe maksud dan tipe struktur.
defense_suggestion
: Pokémon yang tidak dikenal telah muncul dan pengguna memerlukan saran untuk menggunakan Pokémon untuk melawannya. Pengguna harus memberikan nama Pokémon sebagai bagian dari input.
information_request
: Pengguna ingin mengetahui lebih banyak tentang Pokémon. Dalam inputnya, pengguna harus memberikan salah satu dari struktur teks input berikut: (1) nama Pokémon dengan permintaan informasi, (2) deskripsi Pokémon dalam bahasa alami tanpa menyebutkan secara eksplisit nama Pokémon dengan maksud untuk menebak apa itu Pokémon, ATAU (3) pertanyaan tentang Pokémon dengan nama Pokémon yang disebutkan secara eksplisit, menanyakan atribut tertentu seperti: Evolusi, Diet, Habitat, Base Stats, dll.
squad_build
: Pengguna ingin membangun skuad Pokémon berdasarkan tipe Pokémon lawan. Pengguna harus memberikan daftar nama Pokémon sebagai bagian dari masukan.
None
: Mengembalikan respons GPT-4 sendiri. Permintaan pengguna tidak termasuk dalam kategori mana pun di atas.
Contoh cepat :
Jenis Maksud | Tipe Struktur | Contoh |
---|---|---|
pertahanan_saran | any | Saya menemukan Grovyle liar yang sedang bersantai di taman! Pokemon mana yang harus saya pilih untuk pertempuran epik untuk mengalahkannya? |
informasi_permintaan | pokemon_names | Baiklah, Pokedex! Saatnya mencari tahu segalanya tentang Snorlax dan Pikachu! |
informasi_permintaan | natural_language_question | Tahukah Anda di habitat seperti apa saya bisa menemukan Psyduck? |
informasi_permintaan | natural_language_description | Dapatkah Anda menebak Pokémon mana yang merupakan Pokémon Rumput/Racun bertipe ganda yang dikenal dengan umbi tanaman di punggungnya, yang tumbuh menjadi tanaman besar seiring dengan evolusinya. |
skuad_build | any | Saatnya menantang Pemimpin Fire Gym! Dia punya tim yang tangguh dengan Ninetales dan Combusken, tapi saya butuh bantuan Anda untuk membangun skuad |
Tidak ada | any | Saya suka Pretzel |
Contoh tanggapan :
Prompt: Tahukah Anda di habitat seperti apa saya dapat menemukan Lucario?
Jawab dengan JSON mode
diaktifkan:
{
"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 "
}