これは、言語モデルエージェントを使用してZorkのようなテキストアドベンチャーゲームをプレイするデモです。
デモには、Zorkのゲームファイルが必要です。インターネットアーカイブからゲームファイルをダウンロードできます。
また、OpenaiのAPIキーも必要です。
Dockerでデモを実行するには、Dockerが必要です。
インストールするには、リポジトリをクローンし、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のバージョンと詩が必要です。
インストールするには、リポジトリをクローンし、NPCディレクトリを入力します。
git clone https://github.com/deepfates/npc.git
cd npc次に、Python依存関係をインストールします。
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のバージョンと詩が必要です。インストール手順のようにPython環境をインストールしますが、次のような-debugフラグを使用してサーバーを実行します。
poetry run python server.py --debug server.pyを実行している間、バックエンドの変更はlocalhost:8080のアプリに反映されます。サーバーは編集を保存するたびに再起動するため、フロントエンドを実行している場合は、新しいセッションIDを取得するにはページを更新する必要があります。
エージェントは現在、変更されたReactループを実行しています。詳細については、https://arxiv.org/pdf/2210.03629.pdfのReact Paperを参照してください。
エージェントはnpc/agent.pyファイルにあります。 Reactループを短いバッファメモリとカスタムプロンプトテンプレートでラップします。元の機能は、ループを数十個程度の繰り返しで実行し、再生ツールを介して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関数はそれほど慣用的ではありません。リアクティブな割り当てを改善する必要があると思います。しかし、彼らは今のところ仕事をしています。