AI 中世ドラマ シミュレーター、Arcadia へようこそ。このプロジェクトは、生成 AI テクノロジーを使用して物語体験を作成する実験であり、さまざまな生成 AI API の使用方法に関するベスト プラクティスのより大きなコミュニティへの例として機能することを期待しています。
最新の安定バージョンは常に https://www.generativestoryelling.ai でホストされていることに注意してください。
Arcadia では、LLM を使用してアニメーションの物語を生成し、選択した宮廷でのドラマを詳しく説明します。友達や家族の名前をリストアップして、王国を支配するために彼らが裏切り、毒を盛り、結婚し、刺し合う様子を見てください。
ナレーションは GPT 3.5 によって提供されます
3D 背景は Blockadelabs からのものです
キャラクターのポートレートはDalleによって生成されます
今後の機能には、テキスト読み上げナレーション、音楽、効果音、ストーリーの保存、共有、再生機能が含まれます。
これが人々の模範となるように、コード内のサードパーティへの依存を最小限に抑え、ビルド システムを可能な限りシンプルに保つよう努めました。派手な方法 (Sass、OpenAPI など) と単純な方法 (TypeScript ファイルの共有ディレクトリ) のどちらかを選択する場合は、単純な方法が選択されます。
TypeScript、Express、HTML に精通していれば、コード ベースを理解できるのが理想的です。
Svelte はフロントエンドで使用されます。Svelte に慣れていない場合でも、これは HTML でデータ バインディングを行うための非常に最小限のツール セットです。基本は 1 時間以内で習得でき、完全なチュートリアルは 2 ~ 3 時間かかります。最大で数時間Svelte を知らなくても、フロントエンドのコードは簡単に理解できると思います。
コードは 3 つのフォルダーに分割されています。
shared
フォルダーはbackend
フォルダーとfrontend
フォルダーにシンボリックリンクされます。これは、完全なモノリポジトリをセットアップしなくても、プロジェクト間で TypeScript の型とモジュールを共有できる気の利いたトリックです。古いバージョンの Windows (Windows 10 より前) を使用している場合は、システム上で管理者以外のアカウントのシンボリックリンクを手動で有効にする必要がある場合があります。
バックエンドは、GPT にプロンプトを表示して構造化された応答を返し、それらの応答を解析する方法を示す最小限の Express.js サーバーです。 GPT からのフェッチの 2 つの例が含まれています。1 つはチャットの REST エンドポイントにヒットし、2 つ目はチャットのストリーミング応答を表示します。どちらの場合も、結果は Web ソケット経由でサーバーからフロントエンド Web クライアントに送信されます。
バックエンドを機能させるには、 OPENAI_API_KEY
キーを含む独自の.env
ファイルを作成する必要があります。ストーリーを保存したい場合は、AWS_ACCESS_KEY_ID と AWS_SECRET_ACCESS_KEY も追加する必要があります。悲しいことに、vultr は s3 プロバイダーとしてハードコードされており、ある時点で env ファイルにも抽出する必要があることに注意してください。
フロントエンドは Svelte Web アプリで、王宮のメンバーの名前を収集してバックエンドに送信し、ストーリーが取得されるとDialogue.svelte
コンポーネントでアニメーション化します。
共通の型とユーティリティ関数はshared
にあります。主にフロントエンドとバックエンドで共有されるデータ型に使用されます。
一部の OS のビルドの問題により、残念ながらバックエンドには共有タイプのハードコピーが存在するため、MacOS でシンボリックリンクが認識されない理由を解明する必要があります。
プロジェクトを実行するには、次の手順を実行します。
backend
のルート フォルダーに.env
ファイルを作成し、それにOPENAI_API_KEY=
を入力し、キーを入力します。shared
、 backend
、 frontend
のそれぞれでnpm install
とnpm build
を実行しますfrontend
に移動して、vite を起動するnpm run dev
と入力します。そして、 http://localhost:5173/
に接続し、上部と上部の両方のチェックボックスを選択します。それからmake some drama
。 a.表示される事前生成ストーリーを変更するには、StoryFetcherws.ts の 14 行目のインデックスを変更します。
`const events = parseOutEvents(pregenStories[2].story);`
backend
に移動し、 npm run dev
と入力します。フロントエンドは、ローカルで実行されると、ローカルホスト上のバックエンドへの接続を自動的に試みます。npm run debug
node --inspect
を実行するバックエンドでサポートされています。今後の機能: