이것은 언어 모델 에이전트를 사용하여 Zork와 같은 텍스트 어드벤처 게임을하는 데모입니다.
데모에는 Zork의 게임 파일이 필요합니다. 인터넷 아카이브에서 게임 파일을 다운로드 할 수 있습니다.
OpenAI에서 API 키도 필요합니다.
Docker와 함께 데모를 실행하려면 Docker가 필요합니다.
설치하려면 Repo를 복제하고 NPC 디렉토리를 입력하십시오.
git clone https://github.com/deepfates/npc.git
cd npc zork1.z5 파일을 npc 디렉토리로 이동하십시오.
다음으로 npc 디렉토리에서 .env 파일을 작성하고 추가하십시오.
OPENAI_API_KEY= < your openai api key > ( < > 없이)
마지막으로 Docker 이미지를 작성하십시오.
docker build -t npc .데모를 실행하려면 실행하십시오.
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그런 다음 파이썬 종속성을 설치하십시오.
poetry install 다음으로 npc 디렉토리에서 .env 파일을 작성하고 추가하십시오.
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의 버전과 시가 필요합니다. 설치 지침에서와 같이 파이썬 환경을 설치하지만 -DeBug 플래그와 같은 서버를 실행하십시오.
poetry run python server.py --debug server.py 실행하는 동안 백엔드 변경은 localhost:8080 의 앱에 반영됩니다. 편집을 저장할 때마다 서버가 다시 시작되므로 프론트 엔드를 실행하는 경우 새 세션 ID를 얻으려면 페이지를 새로 고침해야합니다.
에이전트는 현재 수정 된 반응 루프를 실행하고 있습니다. 자세한 내용은 https://arxiv.org/pdf/2210.03629.pdf의 반응 용지를 참조하십시오.
에이전트는 npc/agent.py 파일에 있습니다. 짧은 버퍼 메모리와 사용자 정의 프롬프트 템플릿으로 React 루프를 감습니다. 원래의 기능은 12 개 반복 정도의 루프를 실행하고 플레이 도구를 통해 Pworld와 상호 작용하도록하는 것이 었습니다. 플레이 액션이 프론트 엔드에 보이지 않기 때문에 현재 데모의 목적으로 꺼져 있습니다. 이제 에이전트는 외관 및 인벤토리를 포함하여 최대 3 개의 작업을 수행 한 다음 명령을 권장합니다. 이 기능이 잘 작동하려면 프롬프트 튜닝이 아직 필요합니다.
에이전트는 Langchain으로 제작되었습니다. 기본 기능에 대한 자세한 내용은 훌륭한 문서를 참조하십시오.
프론트 엔드에서 개발하려면 node.js 및 npm이 필요합니다.
프론트 엔드 종속성을 설치하려면 client 디렉토리를 입력하고 실행하십시오.
npm install개발 모드에서 프론트 엔드를 실행하려면 실행하십시오.
npm run dev생산을위한 프론트 엔드를 구축하려면 달리기 :
npm run build 프론트 엔드가 구축되거나 개발 모드에서 설치 지침에서와 같이 서버를 실행하여 앱을 제공 할 수 있습니다. 프론트 엔드 변경은 localhost:8080 의 앱에 반영됩니다.
프론트 엔드는 Svelte를 사용하여 구축되었습니다. 기본 API 호출 및 입력 양식은 App.svelte 파일에 있습니다. components 디렉토리에는 디스플레이 구성 요소가 포함되어 있습니다.
Svelte는 JavaScript로 컴파일하므로 프론트 엔드가 구축되면 프론트 엔드 종속성없이 서버를 실행할 수 있습니다. 플라스크 백엔드는 client/build 디렉토리의 프론트 엔드 파일을 제공합니다.
주요 Svelte 앱의 API 기능은 그다지 관용적이지 않습니다. 나는 그들이 반응 적 할당을 더 잘 모아야한다고 생각합니다. 그러나 그들은 지금 일을합니다.