Ini adalah demo yang menggunakan agen model bahasa untuk memainkan game petualangan teks seperti Zork.
Demo membutuhkan file game untuk Zork. Anda dapat mengunduh file game dari arsip internet.
Anda juga akan membutuhkan kunci API dari Openai.
Untuk menjalankan demo dengan Docker, Anda membutuhkan Docker.
Untuk menginstal, klon repo dan masukkan direktori NPC:
git clone https://github.com/deepfates/npc.git
cd npc Pindahkan file zork1.z5 ke direktori npc .
Selanjutnya, buat file .env di direktori npc dan tambahkan
OPENAI_API_KEY= < your openai api key > (Tanpa tanda < > )
Akhirnya, bangun gambar Docker:
docker build -t npc .Untuk menjalankan demo, jalankan:
docker run --network= " host " -t npc Kemudian buka localhost:8080 di browser Anda.
Untuk membangun demo, Anda memerlukan versi Python 3.8 atau 3.9 dan puisi.
Untuk menginstal, klon repo dan masukkan direktori NPC:
git clone https://github.com/deepfates/npc.git
cd npcKemudian instal dependensi Python:
poetry install Selanjutnya, buat file .env di direktori npc dan tambahkan
OPENAI_API_KEY= < your openai api key > (Tanpa tanda < > )
Akhirnya, salin file zork1.z5 ke direktori npc .
Demo ini adalah game petualangan teks yang sepenuhnya interaktif. Anda dapat memainkan game sendiri atau menjalankan agen untuk menyarankan perintah atau memainkan game untuk Anda.
Untuk memainkan game, masukkan direktori npc dan jalankan server:
poetry run python server.py Kemudian buka localhost:8080 di browser Anda.
Saat memainkan game, Anda dapat menekan tombol ⇥ untuk mengaktifkan agen. Pikiran internal agen akan ditampilkan di atas kotak perintah, dan saran akan ditampilkan di kotak perintah. Anda dapat menekan ⇥ lagi untuk mengirim saran dan mengaktifkan agen secara otomatis.
Agen menjalankan loop internal pada templat yang cepat. Anda dapat mengakses template prompt ini dengan menekan tombol di UI Game. Anda dapat mengedit templat prompt dan menekan tombol ↵ untuk mengaktifkan agen dengan templat prompt khusus Anda. Template prompt harus berisi {placeholders} yang sama dengan template prompt default.
Untuk berkembang di backend, Anda memerlukan versi Python 3.8 atau 3.9 dan puisi. Instal lingkungan Python seperti pada instruksi instalasi, tetapi jalankan server dengan bendera --debug seperti itu:
poetry run python server.py --debug Saat menjalankan server.py , perubahan Anda ke backend akan tercermin dalam aplikasi di localhost:8080 . Server akan restart setiap kali Anda menyimpan pengeditan, jadi jika Anda menjalankan frontend Anda harus menyegarkan halaman untuk mendapatkan ID sesi baru.
Agen saat ini menjalankan loop bereaksi yang dimodifikasi. Lihat Kertas React di https://arxiv.org/pdf/2210.03629.pdf untuk detail lebih lanjut.
Agen berada di file npc/agent.py . Itu membungkus loop bereaksi dengan memori buffer pendek dan template prompt khusus. Fungsi asli adalah menjalankan loop untuk selusin iterasi atau lebih dan membiarkannya berinteraksi dengan PWorld melalui alat play. Ini saat ini dimatikan untuk keperluan demo, karena tindakan bermain tidak terlihat oleh frontend. Sekarang agen mengambil hingga 3 tindakan termasuk tampilan dan inventaris, lalu merekomendasikan perintah. Penyetelan yang cepat diperlukan agar fungsi ini berfungsi dengan baik.
Agen dibangun dengan Langchain. Lihat dokumentasi mereka yang sangat baik untuk lebih lanjut tentang fungsionalitas yang mendasarinya.
Untuk mengembangkan di frontend, Anda memerlukan node.js dan npm.
Untuk menginstal dependensi frontend, masukkan direktori client dan jalankan:
npm installUntuk menjalankan frontend dalam mode pengembangan, jalankan:
npm run devUntuk membangun frontend untuk produksi, jalankan:
npm run build Setelah frontend dibangun, atau saat dalam mode pengembangan, aplikasi dapat dilayani dengan menjalankan server seperti dalam instruksi instalasi. Perubahan Anda pada frontend akan tercermin dalam aplikasi di localhost:8080 .
Frontend dibangun menggunakan SVELTE. Panggilan API utama dan formulir input ada di file App.svelte . Direktori components berisi komponen tampilan.
Svelte mengkompilasi ke JavaScript, jadi setelah frontend dibangun, Anda dapat menjalankan server tanpa dependensi frontend. Backend Flask akan melayani file frontend dari direktori client/build .
Fungsi API dalam aplikasi langsing utama tidak terlalu idiomatik. Saya pikir mereka harus membuat penugasan reaktif yang lebih baik. Tetapi mereka melakukan pekerjaan untuk saat ini.