Это демонстрация с использованием агента языковой модели для игры в текстовые приключенческие игры, такие как Zork.
Демонстрация требует игрового файла для Zork. Вы можете скачать файл игры из интернет -архива.
Вам также понадобится ключ API от Openai.
Чтобы запустить демонстрацию с Docker, вам нужен Docker.
Чтобы установить, клонировать репо и введите каталог NPC:
git clone https://github.com/deepfates/npc.git
cd npc Переместите файл zork1.z5 в каталог npc .
Затем создайте файл .env в каталоге npc и добавьте
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 и поэзия.
Чтобы установить, клонировать репо и введите каталог 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 в вашем браузере.
Во время игры вы можете нажать кнопку ⇥ , чтобы активировать агент. Внутренние мысли агента будут отображаться над командным поле, а в командном поле будет отображаться предложение. Вы можете нажать ⇥ снова, чтобы отправить предложение и автоматически активировать агента.
Агент запускает внутреннюю петлю на шаблоне быстрого приглашения. Вы можете получить доступ к этому шаблону подсказки, нажав кнопку в пользовательском интерфейсе игры. Вы можете редактировать шаблон приглашения и нажать кнопку ↵ , чтобы активировать агент с помощью пользовательского шаблона приглашения. Шаблон приглашения должен содержать тот же {placeholders} что и шаблон приглашения по умолчанию.
Чтобы развить на бэкэнд, вам нужна версия Python 3.8 или 3.9 и поэзия. Установите среду Python, как в инструкциях по установке, но запустите сервер с флагом -debug, как SO:
poetry run python server.py --debug При запуске server.py ваши изменения в бэкэнд будут отражены в приложении по адресу localhost:8080 . Сервер будет перезагружаться каждый раз, когда вы сохраняете изменения, поэтому, если вы запускаете Frontend, вам нужно обновить страницу, чтобы получить новый идентификатор сеанса.
Агент в настоящее время запускает модифицированный цикл React. См. React Paper по адресу https://arxiv.org/pdf/2210.03629.pdf для получения более подробной информации.
Агент находится в файле npc/agent.py . Он завершает цикл React короткой буферной памятью и пользовательским шаблоном быстрого приглашения. Первоначальная функциональность заключалась в том, чтобы запустить петлю в течение десятка итераций или около того, и позволить ему взаимодействовать с Pworld через инструмент Play. В настоящее время это отключено для целей демонстрации, потому что игровые действия были невидимыми для фронта. Теперь агент предпринимает до 3 действий, включая внешний вид и инвентарь, а затем рекомендует команду. Быстрая настройка еще необходима для того, чтобы эта функциональность работала хорошо.
Агент построен с Langchain. Смотрите их отличную документацию, чтобы узнать больше о основной функции.
Чтобы развить на фронте, вам нужны node.js и npm.
Чтобы установить зависимости фронта, введите client каталог и запустите:
npm installЧтобы запустить фронт в режиме разработки, запустите:
npm run devЧтобы построить фронт для производства, беги:
npm run build После того, как фронт будет построен, или в режиме разработки, приложение может быть обслуживанием, запустив сервер, как в инструкциях по установке. Ваши изменения в фронта будут отражены в приложении по адресу localhost:8080 .
Фронтан построен с использованием стр. Основные вызовы API и входная форма находятся в файле App.svelte . Справочник components содержит компоненты отображения.
СВЕЛИ СОКРАТИВАЕТСЯ В JAVASCRICT, поэтому, как только фронт будет построен, вы можете запустить сервер без зависимостей Frontend. Бэкэнд Flask будет служить файлам Frontend из каталога client/build .
Функции API в основном приложении Svelte не очень идиоматические. Я думаю, что они должны лучше реагировать на реактивное задание. Но пока они делают работу.