นี่คือการสาธิตโดยใช้เอเจนต์รูปแบบภาษาเพื่อเล่นเกมผจญภัยข้อความเช่น Zork
การสาธิตต้องใช้ไฟล์เกมสำหรับ Zork คุณสามารถดาวน์โหลดไฟล์เกมได้จาก Internet Archive
คุณจะต้องใช้คีย์ API จาก OpenAI
ในการเรียกใช้การสาธิตด้วย Docker คุณต้องใช้ Docker
ในการติดตั้งให้โคลน repo และป้อนไดเรกทอรี NPC:
git clone https://github.com/deepfates/npc.git
cd npc ย้ายไฟล์ zork1.z5 ไปยังไดเรกทอรี npc
ถัดไปสร้างไฟล์ .env ในไดเรกทอรี npc และเพิ่ม
OPENAI_API_KEY= < your openai api key > (ไม่มีเครื่องหมาย < และ > )
ในที่สุดสร้างภาพนักเทียบท่า:
docker build -t npc .เพื่อเรียกใช้การสาธิต Run:
docker run --network= " host " -t npc จากนั้นเปิด localhost:8080 ในเบราว์เซอร์ของคุณ
ในการสร้างตัวอย่างคุณต้องมีรุ่น Python 3.8 หรือ 3.9 และบทกวี
ในการติดตั้งให้โคลน repo และป้อนไดเรกทอรี NPC:
git clone https://github.com/deepfates/npc.git
cd npcจากนั้นติดตั้งการพึ่งพา Python:
poetry install ถัดไปสร้างไฟล์ .env ในไดเรกทอรี npc และเพิ่ม
OPENAI_API_KEY= < your openai api key > (ไม่มีเครื่องหมาย < และ > )
ในที่สุดคัดลอกไฟล์ zork1.z5 ลงในไดเรกทอรี npc
การสาธิตนี้เป็นเกมผจญภัยข้อความแบบโต้ตอบอย่างเต็มที่ คุณสามารถเล่นเกมด้วยตัวเองหรือเรียกใช้ตัวแทนเพื่อแนะนำคำสั่งหรือเล่นเกมให้คุณ
ในการเล่นเกมให้ป้อนไดเรกทอรี npc และเรียกใช้เซิร์ฟเวอร์:
poetry run python server.py จากนั้นเปิด localhost:8080 ในเบราว์เซอร์ของคุณ
ในขณะที่เล่นเกมคุณสามารถกดปุ่ม ⇥ เพื่อเปิดใช้งานตัวแทน ความคิดภายในของเอเจนต์จะปรากฏขึ้นเหนือกล่องคำสั่งและข้อเสนอแนะจะแสดงในกล่องคำสั่ง คุณสามารถกด ⇥ อีกครั้งเพื่อส่งคำแนะนำและเปิดใช้งานตัวแทนโดยอัตโนมัติ
เอเจนต์เรียกใช้ลูปภายในบนเทมเพลตพรอมต์ คุณสามารถเข้าถึงเทมเพลตพรอมต์นี้ได้โดยกดปุ่มในเกม UI คุณสามารถแก้ไขเทมเพลตพรอมต์และกดปุ่ม ↵ เพื่อเปิดใช้งานตัวแทนด้วยเทมเพลตพรอมต์ที่กำหนดเองของคุณ เทมเพลตพรอมต์จะต้องมี {placeholders} เหมือนเทมเพลตพรอมต์เริ่มต้น
ในการพัฒนาบนแบ็กเอนด์คุณต้องมีรุ่น Python 3.8 หรือ 3.9 และบทกวี ติดตั้งสภาพแวดล้อม Python เช่นเดียวกับในคำแนะนำในการติดตั้ง แต่เรียกใช้เซิร์ฟเวอร์ด้วยธง -เบ็ดเช่น So:
poetry run python server.py --debug ในขณะที่เรียกใช้ server.py การเปลี่ยนแปลงของคุณไปยังแบ็กเอนด์จะปรากฏในแอพที่ localhost:8080 เซิร์ฟเวอร์จะรีสตาร์ททุกครั้งที่คุณบันทึกการแก้ไขดังนั้นหากคุณใช้งานส่วนหน้าคุณจะต้องรีเฟรชหน้าเพื่อรับรหัสเซสชันใหม่
เอเจนต์ปัจจุบันเรียกใช้ลูปรีแอนด์ที่แก้ไขแล้ว ดูกระดาษตอบสนองที่ https://arxiv.org/pdf/2220.03629.pdf สำหรับรายละเอียดเพิ่มเติม
เอเจนต์อยู่ในไฟล์ npc/agent.py มันจะปิดการวนซ้ำแบบวนซ้ำด้วยหน่วยความจำบัฟเฟอร์สั้น ๆ และเทมเพลตพรอมต์ที่กำหนดเอง ฟังก์ชั่นดั้งเดิมคือการเรียกใช้ลูปสำหรับการวนซ้ำโหลหรือมากกว่านั้นและปล่อยให้มันโต้ตอบกับ pworld ผ่านเครื่องมือเล่น ในขณะนี้จะปิดเพื่อจุดประสงค์ของการสาธิตเพราะการกระทำของการเล่นนั้นมองไม่เห็นในส่วนหน้า ตอนนี้เอเจนต์ดำเนินการสูงสุด 3 รายการรวมถึงรูปลักษณ์และสินค้าคงคลังจากนั้นแนะนำคำสั่ง การปรับจูนยังจำเป็นสำหรับฟังก์ชั่นนี้เพื่อให้ทำงานได้ดี
ตัวแทนถูกสร้างขึ้นด้วย Langchain ดูเอกสารที่ยอดเยี่ยมของพวกเขาสำหรับข้อมูลเพิ่มเติมเกี่ยวกับฟังก์ชั่นพื้นฐาน
ในการพัฒนาในส่วนหน้าคุณต้องใช้ node.js และ npm
ในการติดตั้งการพึ่งพาส่วนหน้าให้ป้อนไดเรกทอรี client และเรียกใช้:
npm installในการเรียกใช้ส่วนหน้าในโหมดการพัฒนาให้เรียกใช้:
npm run devเพื่อสร้างส่วนหน้าสำหรับการผลิต Run:
npm run build เมื่อส่วนหน้าถูกสร้างขึ้นหรือในขณะที่อยู่ในโหมดพัฒนาแอพสามารถให้บริการได้โดยเรียกใช้เซิร์ฟเวอร์เช่นเดียวกับในคำแนะนำการติดตั้ง การเปลี่ยนแปลงส่วนหน้าของคุณจะสะท้อนให้เห็นในแอพที่ localhost:8080
ส่วนหน้าถูกสร้างขึ้นโดยใช้ svelte การเรียก API หลักและแบบฟอร์มอินพุตอยู่ในไฟล์ App.svelte ไดเรกทอรี components มีส่วนประกอบที่แสดง
Svelte รวบรวมไปยัง JavaScript ดังนั้นเมื่อสร้างส่วนหน้าคุณสามารถเรียกใช้เซิร์ฟเวอร์ได้โดยไม่ต้องพึ่งพาส่วนหน้า แบ็กเอนด์ Flask จะให้บริการไฟล์ส่วนหน้าจากไดเรกทอรี client/build
ฟังก์ชั่น API ในแอพ Svelte หลักนั้นไม่ได้เป็นสำนวนมากนัก ฉันคิดว่าพวกเขาควรจะทำปฏิกิริยาตอบสนองที่ดีกว่า แต่ตอนนี้พวกเขาทำงานในตอนนี้