مرحبًا بك في Arcadia، محاكي الدراما في العصور الوسطى الذي يعمل بالذكاء الاصطناعي. يعد هذا المشروع بمثابة تجربة لاستخدام تقنيات الذكاء الاصطناعي التوليدية لإنشاء تجربة سردية، ونأمل أيضًا أن يكون بمثابة مثال للمجتمع الأكبر لأفضل الممارسات حول كيفية استخدام واجهات برمجة تطبيقات الذكاء الاصطناعي التوليدية المتنوعة.
لاحظ أن أحدث إصدار ثابت يتم استضافته دائمًا على https://www.geneativestorytelling.ai
تسلط Arcadia الضوء على استخدام LLMs لإنشاء قصص رسوم متحركة، وتفاصيل الدراما في البلاط الملكي من اختيارك. قم بإدراج أسماء أصدقائك وعائلتك، وشاهدهم وهم يخونون، ويسممون، ويتزوجون، ويطعنون بعضهم البعض للسيطرة على المملكة!
يتم توفير السرد بواسطة GPT 3.5
الخلفية ثلاثية الأبعاد من Blockadelabs
يتم إنشاء صور الشخصيات بواسطة Dalle
تتضمن الميزات القادمة تحويل النص إلى كلام، والموسيقى، والمؤثرات الصوتية، والقدرة على حفظ القصص ومشاركتها وإعادة تشغيلها.
للتأكد من أن هذا يمكن أن يكون بمثابة مثال للناس، حاولت تقليل تبعيات الطرف الثالث في التعليمات البرمجية، وكذلك الحفاظ على نظام البناء بسيطًا قدر الإمكان. عندما يكون هناك خيار بين القيام بالأشياء بطريقة رائعة (مثل Sass وOpenAPI) أو بطريقة بسيطة (الدليل المشترك لملفات TypeScript)، فقد تم اختيار الطريقة البسيطة.
من الناحية المثالية، إذا كنت على دراية بـ TypeScript وExpress وHTML، فيجب أن تكون قادرًا على فهم قاعدة التعليمات البرمجية.
يتم استخدام Svelte في الواجهة الأمامية، إذا لم تكن على دراية بـ Svelte، فهي عبارة عن مجموعة صغيرة جدًا من الأدوات للقيام بربط البيانات بتنسيق HTML، ويمكن التعرف على الأساسيات في أقل من ساعة مع البرنامج التعليمي الكامل الذي يستغرق 2 أو 3 ساعات كحد أقصى. حتى لو كنت لا تعرف Svelte، نأمل أن يظل من السهل فهم رمز الواجهة الأمامية.
يتم تقسيم الكود إلى ثلاثة مجلدات:
يتم ربط المجلد shared
بمجلدات backend
frontend
، وهي خدعة رائعة تسمح بمشاركة أنواع ووحدات TypeScript بين المشاريع دون الحاجة إلى إعداد مستودع أحادي كامل. إذا كنت تستخدم إصدارًا قديمًا من Windows (ما قبل Windows 10)، فقد يتعين عليك تمكين الارتباطات الرمزية يدويًا لحسابات غير المسؤولين على نظامك.
الواجهة الخلفية عبارة عن خادم Express.js بسيط يوضح كيفية مطالبة GPT بحيث يقدم استجابات منظمة، ثم تحليل تلك الاستجابات. تم تضمين مثالين للجلب من GPT، أحدهما يصل إلى نقطة نهاية REST للدردشة، والثاني يعرض استجابات البث للدردشة. في كلتا الحالتين، يتم إرسال النتائج من الخادم عبر مقبس الويب إلى عميل الويب الأمامي.
لتشغيل الواجهة الخلفية، ستحتاج إلى إنشاء ملف .env
الخاص بك مع مفتاح OPENAI_API_KEY
بداخله. إذا كنت تريد حفظ القصص، فستحتاج أيضًا إلى إضافة AWS_ACCESS_KEY_ID وAWS_SECRET_ACCESS_KEY. لاحظ أنه من المؤسف أن vultr مشفر بشكل ثابت كموفر s3، ويجب استخراجه إلى ملف env أيضًا في مرحلة ما.
الواجهة الأمامية عبارة عن تطبيق ويب Svelte يجمع أسماء أعضاء الديوان الملكي، ويرسلها إلى الواجهة الخلفية، وعندما يتم جلب قصة، يقوم بتحريكها على مكون Dialogue.svelte
.
الأنواع الشائعة ووظائف الأداة المساعدة shared
. يُستخدم بشكل أساسي لأنواع البيانات التي تتم مشاركتها بواسطة الواجهة الأمامية والخلفية.
نظرًا لوجود مشكلات في البناء على بعض أنظمة التشغيل، للأسف، تحتوي الواجهة الخلفية الآن على نسخة مطبوعة من الأنواع المشتركة، وتحتاج إلى معرفة سبب عدم التقاط الارتباط الرمزي على نظام MacOS.
لتشغيل المشروع قم بما يلي:
backend
قم بإنشاء ملف .env
وقم بتعبئته بـ OPENAI_API_KEY=
واملأ مفتاحك.backend
والواجهة frontend
shared
، قم npm install
وبناء npm build
frontend
وأدخل npm run dev
الذي سيبدأ تشغيل vite، ويمكنك الاتصال بـ http://localhost:5173/
، وحدد مربعي الاختيار في الأعلى و ثم make some drama
. أ. لتغيير القصة التي تم إنشاؤها مسبقًا والتي يتم عرضها، يمكنك تغيير الفهرس الموجود في السطر 14 من StoryFetcherws.ts
`const events = parseOutEvents(pregenStories[2].story);`
backend
وأدخل npm run dev
. ستحاول الواجهة الأمامية، عند تشغيلها محليًا، الاتصال تلقائيًا بالواجهة الخلفية على المضيف المحلي.npm run debug
على الواجهة الخلفية لتشغيل node --inspect
الميزات القادمة: