Pinokio هو متصفح يتيح لك تثبيت أي ذكاء اصطناعي على جهاز الكمبيوتر الخاص بك وتشغيله وأتمتته محليًا . كل ما يمكنك تشغيله في سطر الأوامر الخاص بك يمكن تشغيله تلقائيًا باستخدام برنامج Pinokio النصي ، مع واجهة مستخدم سهلة الاستخدام.
يمكنك استخدام Pinokio لأتمتة أي شيء، بما في ذلك:
تثبيت تطبيقات ونماذج الذكاء الاصطناعي
إدارة وتشغيل تطبيقات الذكاء الاصطناعي
قم بإنشاء مهام سير العمل لتنسيق تطبيقات الذكاء الاصطناعي المثبتة
قم بتشغيل أي أمر لأتمتة الأشياء على جهازك
وأكثر...
إليك ما يجعل بينوكيو مميزًا:
محلي: يتم تثبيت كل شيء وتشغيله محليًا. لا يتم تخزين أي من بياناتك على خادم شخص آخر.
مجاني: Pinokio هو تطبيق مفتوح المصدر وهو مجاني بنسبة 100% للاستخدام دون أي قيود. لا يوجد أحد يدفع مقابل الوصول إلى واجهة برمجة التطبيقات (API)، حيث أن كل شيء يعمل على جهازك المحلي. العب مع الذكاء الاصطناعي بقدر ما تريد، مجانًا إلى الأبد.
خاص: لا داعي للقلق بشأن إرسال بيانات خاصة لتشغيل الذكاء الاصطناعي فقط، فكل شيء يعمل بخصوصية 100% على جهازك الخاص.
واجهة سهلة الاستخدام: يوفر Pinokio واجهة مستخدم رسومية سهلة الاستخدام لتشغيل وأتمتة أي شيء قد تحتاج عادةً إلى استخدام الجهاز من أجله.
البطاريات متضمنة: Pinokio هو نظام قائم بذاته. لا تحتاج إلى تثبيت أي برنامج آخر. يستطيع Pinokio أتمتة أي شيء، بما في ذلك عمليات تثبيت البرامج/المكتبات. البرنامج الوحيد الذي تحتاجه هو Pinokio.
منصة مشتركة: يعمل Pinokio على جميع أنظمة التشغيل (Windows، Mac، Linux) .
توفير مساحة التخزين والموارد: يتمتع Pinokio بالكثير من ميزات التحسين التي ستوفر لك مئات الجيجابايت من مساحة القرص. بالإضافة إلى ذلك، فإن العديد من ميزات تحسين الموارد الأخرى (مثل الذاكرة) كلها ممكنة مع Pinokio.
لغة البرمجة النصية التعبيرية: Pinokio script هي لغة برمجة نصية قوية للأتمتة مع ميزات مثل الذاكرة والقوالب الديناميكية وواجهات برمجة التطبيقات ذات المستوى المنخفض القابلة للتوسيع.
محمول: يتم تخزين كل شيء ضمن مجلد معزول وكل شيء موجود كملف، مما يعني أنه يمكنك بسهولة عمل نسخة احتياطية لكل شيء أو حذف التطبيقات ببساطة عن طريق حذف الملفات.
يستمد بينوكيو الإلهام من كيفية عمل أجهزة الكمبيوتر التقليدية.
وكما هو الحال مع الكمبيوتر الذي يمكنه القيام بجميع أنواع الأشياء بفضل بنيته الشاملة، فإن Pinokio ككمبيوتر افتراضي عبارة عن منصة شاملة لتشغيل وأتمتة أي شيء يمكنك تخيله باستخدام الذكاء الاصطناعي.
نظام الملفات: أين وكيف يقوم بينوكيو بتخزين الملفات.
المعالج: كيف يدير بينوكيو المهام.
الذاكرة: كيف يقوم بينوكيو بتنفيذ جهاز الحالة باستخدام ذاكرته الأصلية المدمجة.
السكربت: لغة البرمجة التي تعمل بنظام بينوكيو.
واجهة المستخدم: واجهة المستخدم (واجهة المستخدم) التي من خلالها يصل المستخدمون إلى التطبيقات.
ويندوز
ماك
لينكس
تأكد من اتباع جميع الخطوات أدناه!
تحميل لنظام التشغيل Windows
قم بفك ضغط الملف الذي تم تنزيله وسيظهر لك ملف التثبيت exe.
قم بتشغيل ملف التثبيت وسيظهر لك تحذير Windows التالي:
تظهر هذه الرسالة لأنه تم تنزيل التطبيق من الويب، وهذا ما يفعله Windows للتطبيقات التي تم تنزيلها من الويب.
لتجاوز هذا،
انقر فوق "مزيد من المعلومات"
ثم انقر فوق "تشغيل على أي حال"
تأكد من اتباع كل من الخطوة 1 والخطوة 2.
تنزيل لنظام Apple Silicon Mac (M1/M2/M3/M4) تنزيل لنظام Intel Mac
بعد تنزيل ملفات dmg، يجب عليك إجراء التصحيح ، كما هو موضح أدناه:
قم بتشغيل ملف تثبيت DMG الذي تم تنزيله
اسحب تطبيق "Pinokio" إلى مجلد التطبيقات
قم بتشغيل "patch.command"
افتح تطبيق Pinokio في مجلد التطبيقات
بالنسبة لنظام التشغيل Linux، يمكنك التنزيل والتثبيت مباشرةً من أحدث إصدار على Github (قم بالتمرير لأسفل إلى أسفل الصفحة للوصول إلى كافة الثنائيات):
انتقل إلى صفحة الإصدارات
للبقاء على اطلاع بجميع واجهات برمجة التطبيقات وعمليات تكامل التطبيقات الجديدة،
تابع @cocktailpeanut على X لتبقى مطلعًا على جميع البرامج النصية الجديدة التي يتم إصدارها وتحديثات الميزات.
انضم إلى Pinokio Discord لطرح الأسئلة والحصول على المساعدة.
Pinokio عبارة عن منصة قائمة بذاتها تتيح لك تثبيت التطبيقات بطريقة معزولة.
بيئة معزولة: لا داعي للقلق بشأن إفساد تكوينات وبيئات النظام العالمي لديك
البطاريات متضمنة: لا حاجة إلى تثبيت البرامج المطلوبة يدويًا فقط لتثبيت شيء ما (مثل ffpeg و node.js و visual studio وconda و python و pip وما إلى ذلك). يعتني بينوكيو بالأمر تلقائيًا.
ولتحقيق ذلك، يقوم Pinokio بتخزين كل شيء ضمن مجلد واحد معزول ("pinokio home") ، لذلك لا يتعين عليه أبدًا الاعتماد على التكوينات والبرامج على مستوى النظام، ولكنه يقوم بتشغيل كل شيء بطريقة قائمة بذاتها.
يمكنك تعيين مجلد pinokio الرئيسي عند إعداد Pinokio لأول مرة، بالإضافة إلى تغييره لاحقًا إلى موقع جديد من علامة تبويب الإعدادات .
إذن أين يتم تخزين الملفات؟ انقر على زر "الملفات" من الصفحة الرئيسية:
سيؤدي هذا إلى فتح المجلد الرئيسي لـ Pinokio في مستكشف الملفات الخاص بك:
دعنا نستعرض سريعًا ما يفعله كل مجلد:
api
: يخزن جميع التطبيقات التي تم تنزيلها (البرامج النصية).
يتم عرض المجلدات الموجودة داخل هذا المجلد في منزل Pinokio الخاص بك.
bin
: يقوم بتخزين الوحدات المثبتة عالميًا والتي تتقاسمها تطبيقات متعددة، لذلك لا تحتاج إلى تثبيتها بشكل متكرر.
على سبيل المثال، ffmpeg
و nodejs
و python
وما إلى ذلك.
cache
: يقوم بتخزين جميع الملفات المخزنة مؤقتًا تلقائيًا بواسطة التطبيقات التي تقوم بتشغيلها.
عندما لا يعمل شيء ما، قد يؤدي حذف هذا المجلد والبدء من جديد إلى إصلاحه.
لا بأس بحذف مجلد cache
المؤقت حيث ستتم إعادة تعبئته بواسطة التطبيقات التي تستخدمها عند بدء استخدام التطبيقات.
drive
: يخزن كافة محركات الأقراص الافتراضية التي تم إنشاؤها بواسطة fs.link Pinokio API
logs
: يخزن جميع ملفات السجل لكل تطبيق.
يمكنك معرفة المزيد عن نظام الملفات هنا
لنكتب نصًا يستنسخ مستودع git.
قم بإنشاء مجلد باسم helloworld
ضمن مجلد Pinokio api.
قم بإنشاء ملف باسم git.json
ضمن مجلد Pinokio api/helloworld
.
{ "run": [{"method": "shell.run"، "params": { "message": "git clone https://github.com/pinokiocomputer/test"} }] }
الآن عندما تعود إلى Pinokio، سترى ظهور مستودع helloworld
الخاص بك. انتقل إليه وانقر فوق علامة التبويب git.json
لتشغيله:
سترى أنه تم استنساخ مجلد api/helloworld/test
من مستودع https://github.com/pinokiocomputer/test.
يمكننا أيضًا تغيير الأوامر المطلوب تشغيلها وكيفية تشغيلها ديناميكيًا باستخدام القوالب.
على سبيل المثال، دعنا نكتب نصًا يقوم بتشغيل dir
على نظام Windows، و ls
على نظامي Linux وMac.
في المجلد api/helloworld
، أنشئ ملفًا باسم files.json
:
{ "run": [{"method": "shell.run"، "params": { "message": "{{platform === 'win32' ? 'dir' : 'ls'}}"} }] }
يحتوي تعبير القالب {{ }}
على تعبير JavaScript
هناك العديد من المتغيرات المتوفرة داخل كل تعبير قالب، وأحدها هو النظام الأساسي.
قيمة platform
هي إما darwin
(mac)، أو win32
(windows)، أو linux
(linux).
وهذا يعني أنه على نظام التشغيل Windows، فإن البرنامج النصي أعلاه يعادل:
{ "تشغيل": [{"الطريقة": "shell.run"، "params": { "message": "dir"} }] }
أو إذا لم يكن نظام التشغيل Windows (Mac أو Linux)، فهو يعادل:
{ "تشغيل": [{"الطريقة": "shell.run"، "params": { "message": "ls"} }] }
يمكنك معرفة المزيد عن القوالب هنا
عند انتهاء تشغيل البرنامج النصي Pinokio، يتم التخلص من كل جلسة Shell تم إنشاؤها من خلال البرنامج النصي، ويتم إيقاف جميع العمليات ذات الصلة.
على سبيل المثال، لنحاول تشغيل خادم ويب محلي باستخدام خادم http. قم بإنشاء مجلد جديد باسم httpserver
ضمن مجلد Pinokio api
، وقم بإنشاء برنامج نصي جديد باسم index.json
:
{ "تشغيل": [{"الطريقة": "shell.run"، "params": { "message": "npx -y http-server"} }] }
ثم ارجع إلى Pinokio وسترى هذا التطبيق يظهر على الصفحة الرئيسية. انقر فوق علامة التبويب index.json
الموجودة على الشريط الجانبي وانقر فوقها، وسيبدأ تشغيل هذا البرنامج النصي، والذي يجب أن يقوم بتشغيل خادم الويب باستخدام npx http-server
.
لكن المشكلة هي أنه بعد تشغيل الخادم مباشرة، سيتم إيقاف تشغيله على الفور ولن تتمكن من استخدام خادم الويب.
وذلك لأن Pinokio يقوم تلقائيًا بإيقاف تشغيل جميع العمليات المرتبطة بالبرنامج النصي عندما ينتهي من تشغيل جميع الخطوات في مصفوفة run
.
لتجنب ذلك، عليك إخبار Pinokio بأن هذا التطبيق يجب أن يظل نشطًا حتى بعد تشغيل جميع الخطوات. نحتاج ببساطة إلى إضافة سمة daemon
:
{ "daemon": صحيح، "run": [{"method": "shell.run"، "params": { "message": "npx -y http-server"} }] }
أعد الآن محاولة تشغيل البرنامج النصي، وسترى أن خادم الويب يبدأ في العمل ولا يتم إيقاف تشغيله.
سيخدم خادم الويب جميع الملفات الموجودة في المجلد الحالي (في هذه الحالة فقط index.json
) كما يلي:
يمكنك إيقاف البرنامج النصي بالضغط على زر "إيقاف" الموجود أعلى الصفحة.
تعرف على المزيد حول الوضع الخفي هنا
يمكنك أيضًا تشغيل أوامر متعددة باستخدام استدعاء shell.run
واحد.
دعونا نجرب مثالا. سنقوم بتثبيت محرك التوثيق وتهيئته وتشغيله في برنامج نصي واحد.
أشياء مثل هذه لم تكن متاحة للأشخاص العاديين (نظرًا لأنه يتعين عليك تشغيل هذه الأشياء في المحطة)، ولكن مع Pinokio، أصبح الأمر سهلاً بنقرة واحدة.
قم بإنشاء مجلد باسم docsify
ضمن مجلد Pinokio api
قم بإنشاء ملف باسم index.json
ضمن المجلد api/docsify
. يجب أن يبدو ملف index.json
بالشكل التالي:
{ "daemon": صحيح، "run": [{"method": "shell.run"، "params": { "message": ["npx -y docsify-cli init docs"،"npx -y docsify-" CLI تخدم المستندات" ] } }] }
هذا المثال يفعل شيئين:
تهيئة مشروع التوثيق docify
قم بتشغيل خادم docify dev
عند النقر فوق رابط خادم التطوير من محطة Pinokio، سيتم فتح صفحة الوثائق في متصفح الويب:
تعرف على المزيد حول واجهة برمجة تطبيقات
shell.run
هنا
إحدى حالات الاستخدام الشائعة لـ Pinokio هي:
إنشاء/تنشيط venv
قم بتثبيت التبعيات في venv
دعونا نجرب مثالا بسيطا. هذا المثال هو تطبيق الحد الأدنى من التدرج من البرنامج التعليمي الرسمي للتدرج
أولاً، قم بإنشاء مجلد باسم gradio_demo
ضمن مجلد Pinokio api
.
بعد ذلك، قم بإنشاء ملف باسم app.py
في المجلد api/gradio_demo
.
# app.pyimport gradio as grdef Greeting(name,كثافة):return "Hello, " + name + "!" * int(intensity)demo = gr.Interface(fn=greet,inputs=["text", "slider"],outputs=["text"], )demo.launch()
نحتاج أيضًا إلى ملف requirements.txt
الذي يبدو كالتالي:
# requirements.txt gradio
أخيرًا، نحتاج إلى برنامج نصي install.json
الذي سيقوم بتثبيت التبعيات من ملف requirements.txt
:
{ "run": [{"method": "shell.run"، "params": { "venv": "env"، "message": "pip install -r require.txt"} }] }
ستبدو بنية المجلد كما يلي:
/PINOKIO_HOME /api /gradio_demo app.py requirements.txt install.json
ارجع إلى Pinokio وسترى تطبيق gradio_demo
. انقر داخل واجهة المستخدم وانقر فوق علامة التبويب install.json
، وسوف:
قم بإنشاء مجلد venv
في المسار env
تفعيل بيئة env
قم بتشغيل pip install -r requirements.txt
، والذي سيقوم بتثبيت تبعية gradio
في بيئة env
.
إليك ما تبدو عليه عملية التثبيت (لاحظ أنه تم إنشاء مجلد env
جديد في النهاية):
تعرف على المزيد حول واجهة برمجة تطبيقات venv هنا
تابع من القسم الأخير.
لنكتب الآن نصًا بسيطًا سيُطلق خادم Gradio من app.py
من القسم الأخير. قم بإنشاء ملف باسم start.json
في نفس المجلد:
{ "daemon": true، "run": [{"method": "shell.run"، "params": { "venv": "env"، "message": "python app.py"} }] }
ارجع إلى Pinokio وسترى أن ملف start.json
يظهر الآن على الشريط الجانبي أيضًا. انقر لبدء البرنامج النصي start.json
. هذا سوف:
قم بتنشيط بيئة env
التي أنشأناها من خطوة التثبيت
قم بتشغيل python app.py
في الوضع الخفي ( daemon: true
)، والذي سيطلق خادم Gradio ويبقيه قيد التشغيل.
سوف يبدو مثل هذا:
تعرف على المزيد حول واجهة برمجة تطبيقات venv هنا
يحتوي Pinokio على واجهة برمجة تطبيقات مشتركة بين الأنظمة الأساسية لتنزيل الملفات بسهولة وبشكل موثوق (بما في ذلك عمليات إعادة المحاولة التلقائية، وما إلى ذلك).
دعونا نحاول كتابة برنامج نصي بسيط يقوم بتنزيل ملف PDF.
قم أولاً بإنشاء مجلد باسم download
ضمن مجلد Pinokio api
، ثم قم بإنشاء ملف باسم index.json
:
{ "run": [{"method": "fs.download"، "params": { "uri": "https://arxiv.org/pdf/1706.03762.pdf"، "dir": "pdf"} }] }
سيؤدي هذا إلى تنزيل الملف الموجود على https://arxiv.org/pdf/1706.03762.pdf إلى مجلد باسم pdf
(تقوم واجهة برمجة fs.download
تلقائيًا بإنشاء مجلد في الموقع إذا لم يكن موجودًا بالفعل). وهنا ما يبدو:
تعرف على المزيد حول واجهة برمجة تطبيقات
fs.download
هنا
في كثير من الحالات قد ترغب في استدعاء برنامج نصي من برنامج نصي آخر. بعض الأمثلة:
نص تنسيقي يقوم بتدوير stable diffusion
ثم llama
.
وكيل يبدأ stable diffusion
، ويقدم على الفور طلبًا لإنشاء صورة، وأخيرًا يوقف خادم stable diffusion
لحفظ الموارد تلقائيًا.
وكيل يقدم طلبًا إلى نقطة نهاية llama
، ثم يغذي الاستجابة إلى نقطة نهاية stable diffusion
.
يمكننا تحقيق ذلك باستخدام واجهات برمجة script
:
script.start
: بدء تشغيل برنامج نصي عن بعد (قم بالتنزيل أولاً إذا لم يكن موجودًا بعد)
script.return
: إذا كان البرنامج النصي الحالي عبارة عن عملية فرعية، فحدد قيمة الإرجاع، والتي ستكون متاحة في الخطوة التالية من البرنامج النصي للمتصل.
هنا مثال. لنقم بإنشاء caller.json
و callee.json
بسيطين:
caller.json
:
{ "run": [{"method": "script.start"، "params": { "uri": "callee.json"، "params": { "a": 1، "b": 2 } } }, {"الطريقة": "log"، "params": { "json2": "{{input}}"} }] }
الخطوة الأولى، سيقوم caller.json
باستدعاء callee.json
مع المعلمات { "a": 1, "b": 2 }
.
سيتم تمرير كائن المعلمات هذا إلى callee.json
على هيئة args
:
callee.json
:
{ "run": [{"method": "script.return"، "params": { "ressponse": "{{args.a + args.b}}"} }] }
يقوم البرنامج النصي callee.json
بإرجاع القيمة {{args.a + args.b}}
على الفور مع استدعاء script.return
.
أخيرًا، سيستدعي caller.json
log
الخطوة الأخيرة، والذي سيطبع القيمة {{input}}
، وهي القيمة المرجعة من callee.json
. سيؤدي هذا إلى طباعة 3
:
أوضح القسم الأخير كيف يمكنك استدعاء البرنامج النصي من داخل نفس المستودع. ولكن ماذا لو كنت تريد استدعاء البرامج النصية من مستودعات أخرى؟
يمكن لـ script.start
API أيضًا تنزيل البرامج النصية عن بعد وتشغيلها بسرعة.
أنشئ مجلدًا باسم remotescript
ضمن مجلد Pinokio api
وأنشئ ملفًا باسم install.json
ضمن api/remotescript
:
{ "تشغيل": [{"الطريقة": "script.start"، "params": { "uri": "https://github.com/cocktailpeanutlabs/moondream2.git/install.js"} }, {"الطريقة": "script.start"، "params": { "uri": "https://github.com/cocktailpeanutlabs/moondream2.git/start.js"} }, {"id": "run"، "method": "gradio.predict"، "params": { "uri": "{{kernel.script.local('https://github.com/cocktailpeanutlabs/) moondream2.git/start.js').url}}"، "path": "/answer_question_1"، "params": [ { "المسار": "https://media.timeout.com/images/105795964/750/422/image.jpg" }"،شرح ما يحدث هنا" ] } }, {"الطريقة": "log"، "params": { "json2": "{{input}}"} }, {"الطريقة": "script.stop"، "params": { "uri": "https://github.com/cocktailpeanutlabs/moondream2.git/start.js"} }] }
الخطوة الأولى تبدأ البرنامج النصي https://github.com/cocktailpeanutlabs/moondream2.git/install.js.
إذا كان مستودع moondream2.git
موجودًا بالفعل على Pinokio، فسيقوم بتشغيل البرنامج النصي install.js.
إذا لم يكن موجودًا بالفعل، فسيقوم Pinokio تلقائيًا باستنساخ مستودع https://github.com/cocktailpeanutlabs/moondream2.git
أولاً، ثم يبدأ البرنامج النصي install.js بعد ذلك.
بعد انتهاء التثبيت، يقوم بتشغيل تطبيق Gradio باستخدام البرنامج النصي https://github.com/cocktailpeanutlabs/moondream2.git/start.js. سيعود هذا البرنامج النصي بعد بدء تشغيل الخادم.
نقوم الآن بتشغيل gradio.predict
، باستخدام واجهة برمجة تطبيقات kernel.script.local() للحصول على كائن المتغير المحلي للبرنامج النصي start.js، ثم الحصول على قيمة url
الخاص به (والتي يتم تعيينها برمجيًا داخل moondream2.git/start.js
البرنامج النصي).
في الأساس، تقدم هذه الخطوة طلبًا إلى نقطة نهاية التدرج لتطلب من LLM "شرح ما يحدث هنا"، وتمرير صورة.
بعد ذلك، يتم تسجيل القيمة المرجعة من gradio.predict
إلى الوحدة الطرفية باستخدام log
API.
أخيرًا، قمنا بإيقاف البرنامج النصي moondream2/start.js
لإيقاف تشغيل خادم Moondream Gradio باستخدام script.stop
API.
إذا لم نقم باستدعاء script.stop
، فسيستمر تطبيق Moondream2 في العمل حتى بعد توقف هذا البرنامج النصي.
وهنا ما سيبدو عليه:
تعد القدرة على تشغيل
script.start
ثمscript.stop
مفيدة جدًا لتشغيل الذكاء الاصطناعي على أجهزة الكمبيوتر الشخصية، لأن معظم أجهزة الكمبيوتر الشخصية لا تحتوي على ذاكرة غير محدودة، وسوف تنفد ذاكرة جهاز الكمبيوتر الخاص بك بسرعة إذا لم تتمكن من إيقاف تشغيل محركات الذكاء الاصطناعي هذه برمجيا.باستخدام
script.stop
يمكنك بدء تشغيل البرنامج النصي والحصول على استجابته وإغلاقه على الفور بمجرد انتهاء المهمة، مما سيؤدي إلى تحرير ذاكرة النظام، والتي يمكنك استخدامها لتشغيل مهام الذكاء الاصطناعي اللاحقة الأخرى.
تتمتع تطبيقات Pinokio ببنية بسيطة:
الاختصار: اختصار التطبيق الذي يظهر على Pinokio home.
التطبيق: تخطيط واجهة المستخدم الرئيسية للتطبيق
Shortcut
App
القائمة: الشريط الجانبي الذي يعرض جميع الروابط التي يمكنك تشغيلها (بالإضافة إلى حالة تشغيلها)
النافذة: إطار العرض الذي يعرض صفحة ويب ، أو المحطة الطرفية التي تقوم بتشغيل البرامج النصية
افتراضيًا، إذا لم يكن لديك ملف pinokio.js
في مشروعك،
يعرض الاختصار اسم المجلد كعنوان، وأيقونة افتراضية كرمز للتطبيق.
تعرض القائمة جميع ملفات .js
أو .json
في جذر المستودع الخاص بك.
على الرغم من أن هذا مناسب للبدء، إلا أنه ليس مرنًا بدرجة كافية:
لا يمكنك التحكم في ما يتم عرضه في شريط القائمة
لا يمكنك التحكم في كيفية تشغيل البرامج النصية (عن طريق تمرير params
على سبيل المثال)
لا يمكنك التحكم في كيفية عرض التطبيق
سيكون عنوان التطبيق هو اسم المجلد الخاص بك
لا يوجد وصف
سيظهر الرمز رمزًا افتراضيًا فقط.
لتخصيص كيفية عمل تطبيقك نفسه، ستحتاج إلى كتابة برنامج نصي لواجهة المستخدم باسم pinokio.js
.
دعونا نحاول كتابة الحد الأدنى من واجهة المستخدم:
قم بإنشاء مجلد باسم downloader
في المجلد /PINOKIO_HOME/api
قم بإضافة أي أيقونة إلى المجلد /PINOKIO_HOME/api/downloader
وقم بتسميتها icon.png
أنشئ ملفًا باسم /PINOKIO_HOME/api/downloader/download.json
أنشئ ملفًا باسم /PINOKIO_HOME/api/downloader/pinokio.js
/PINOKIO_HOME/api/downloader/icon.png
/PINOKIO_HOME/api/downloader/download.json
{ "run": [{"method": "shell.run"، "params": { "message": "git clone {{input.url}}"} }] }
/PINOKIO_HOME/api/downloader/pinokio.js
وحدة التصدير = { العنوان: "تنزيل أي شيء"، الوصف: "تنزيل مستودع git"، أيقونة: "icon.png"، القائمة: [{نص: "ابدأ"،href: "download.json"،params: { url: "https://github.com/cocktailpeanut/dalai"} }]}
ستبدو النتيجة النهائية هكذا في مستكشف الملفات الخاص بك:
ارجع الآن إلى Pinokio وقم بالتحديث، وسترى تطبيقك يظهر:
يعرض العنوان Download Anything
يعرض الوصف Download a git repository
الرمز هو icon.png
الذي أضفناه
الآن عند الضغط على التطبيق سيظهر لك ما يلي:
سترى عنصر القائمة Start
.
انقر فوق هذا لتشغيل download.json
المحدد بواسطة السمة href
.
لاحظ أيضًا أن البرنامج النصي يقوم بتمرير قيمة https://github.com/cocktailpeanut/dalai كقيمة params.url
.
يتم توفير params
التي تم تمريرها إلى download.json
كمتغير input
، لذلك سيتم إنشاء مثيل git clone {{input.url}}
كـ git clone https://github.com/cocktailpeanut/dalai
.
بمجرد أن يكون لديك مستودع نصي فعال، يمكنك النشر على أي خدمة استضافة git ومشاركة عنوان URL، وسيتمكن أي شخص من تثبيت البرنامج النصي وتشغيله.
يمكنك تثبيت أي مستودع نصي لـ pinokio بسهولة شديدة:
انقر فوق الزر "تنزيل من URL" الموجود أعلى صفحة Discover.
أدخل عنوان URL لـ git (يمكنك اختياريًا تحديد الفرع أيضًا).
إذا قمت بالنشر على github، فيمكنك وضع علامة على مستودعك بـ "pinokio" لجعله يظهر في القسم "الأحدث" في صفحة Discover.
سيظهر الآن تلقائيًا في القسم "الأحدث" (أسفل صفحة "الاكتشاف"):
يقوم Pinokio بإنشاء القسم "الأحدث" تلقائيًا من واجهة برمجة تطبيقات GitHub "/repositories" على https://api.github.com/search/repositories?q=topic:pinokio&sort=updated&direction=desc
لذا، إذا قمت بوضع علامة على المستودع الخاص بك على أنه "pinokio" ولكن لم يظهر، فتحقق من نتيجة واجهة برمجة التطبيقات (API)، وحاول معرفة سبب عدم تضمينه هناك.
في حين أنه من المهم فهم كيفية عمل كل هذا، فقد تحتاج في معظم الحالات إلى "مجموعة تشغيل بسيطة" تتضمن:
البرنامج النصي لتثبيت التطبيق: يقوم بتثبيت تبعيات التطبيق
البرنامج النصي لتشغيل التطبيق: يبدأ تشغيل التطبيق
واجهة المستخدم: يعرض واجهة مستخدم المشغل.
إعادة تعيين البرنامج النصي: إعادة تعيين حالة التطبيق عندما يحدث خطأ ما.
تحديث البرنامج النصي: تحديث التطبيق إلى أحدث إصدار بنقرة واحدة.
هناك حاجة إلى حالة الاستخدام هذه في كثير من الأحيان، حيث قمنا بتنفيذ برنامج يقوم تلقائيًا بإنشاء هذه البرامج النصية على الفور. يطلق عليه جيبيتو.
في كثير من الأحيان قد ترغب في مشاركة المزيد من المعلومات حول كل نص برمجي. يمكنك استخدام ملف الأخبار لذلك.
للقيام بذلك، ما عليك سوى إنشاء ملف pinokio_meta.json
، باستخدام سمة مصفوفة posts
، حيث يكون كل عنصر عبارة عن عنوان URL لـ x.com. هنا مثال:
{ "دعامات": ["https://x.com/cocktailpeanut/status/1819482952071323788"، "https://x.com/cocktailpeanut/status/1819439443394109837"، "https://x.com/cocktailpeanut/status/1800944955738685648" "https://x.com/cocktailpeanut/status/1754244867159413001"، "https://x.com/cocktailpeanut/status/1729884460114727197"، "https://x.com/cocktailpeanut/status/1728075614807048208" ] }
يمكنك رؤيته عمليًا: https://github.com/cocktailpeanutlabs/comfyui/blob/main/pinokio_meta.json
بمجرد النشر، سينعكس ذلك فورًا على الصفحة المقصودة للبرنامج النصي.
<iframe width = "1280" height = "720" src = "https://www.youtube.com/embed/D8jdowszkMg" title = "مشغل فيديو YouTube" Frameborder = "0"allow = "مقياس التسارع؛ التشغيل التلقائي؛ الحافظة- الكتابة للوسائط المشفرة؛
Gepeto هو برنامج يتيح لك إنشاء نصوص Pinokio تلقائيًا، خصيصًا لمشغلات التطبيقات.
لنبدأ بإنشاء تطبيق ومشغله في دقيقة واحدة.
<iframe width = "1280" height = "720" src = "https://www.youtube.com/embed/I-_W-MkV8tc" title = "مشغل فيديو YouTube" Frameborder = "0"allow = "مقياس التسارع؛ التشغيل التلقائي؛ الكتابة في الحافظة؛ الوسائط المشفرة؛ صورة داخل صورة؛
إذا لم يكن لديك gepeto مثبتًا بالفعل، فابحث عنه على Pinokio وقم بتثبيته أولاً.
سترى واجهة مستخدم ويب بسيطة تتيح لك ملء نموذج. للتبسيط، فقط أدخل Helloworld
كاسم للمشروع، ثم اضغط على إرسال .
سيؤدي هذا إلى تهيئة المشروع. عندما تعود إلى منزل بينوكيو،
سترى إدخالًا جديدًا باسم Helloworld
. انقر فوقه وسترى شاشة المشغل.
تحقق أيضًا من المجلد /PINOKIO_HOME/api
، وستجد مجلدًا جديدًا باسم Helloworld
يحتوي على بعض ملفات البرامج النصية.
الآن دعنا ننقر على زر التثبيت لتثبيت التطبيق، وعندما ينتهي، انقر فوق ابدأ لبدء التشغيل.
سترى تطبيق تدرج بسيط، حيث يمكنك إدخال مطالبة وسيقوم بإنشاء صورة باستخدام Stable Diffusion XL Turbo.
إذن ماذا حدث للتو؟ لقد قمنا للتو بإنشاء مشروع فارغ ، والذي يأتي مع تطبيق تجريبي بسيط.
دعونا نلقي نظرة على كل ملف تم إنشاؤه في القسم التالي.
يقوم Gepeto تلقائيًا بإنشاء الحد الأدنى من البرامج النصية المطلوبة لمشغل التطبيق. يحتوي مشغل التطبيقات النموذجي على الميزات التالية:
التثبيت: تثبيت التبعيات المطلوبة لتشغيل التطبيق. ( install.js
)
الإطلاق: قم بتشغيل التطبيق نفسه. ( start.js
)
إعادة تعيين التثبيت: إعادة تعيين جميع التبعيات المثبتة في حالة احتياجك إلى إعادة التثبيت من جديد. ( reset.js
)
التحديث: قم بالتحديث إلى الإصدار الأحدث عندما يتم تحديث المشروع. ( update.js
)
واجهة المستخدم الرسومية: البرنامج النصي الذي يصف الشكل الذي سيبدو عليه المشغل ويتصرف فيه على صفحة Pinokio الرئيسية وكقائمة شريط جانبي. ( pinokio.js
)
وهنا ما يبدو:
لاحظ أنه بالإضافة إلى البرامج النصية المذكورة أعلاه، قام gepeto بإنشاء بعض الملفات الإضافية:
app.py
: تطبيق تجريبي بسيط. استبدل هذا بالكود الخاص بك.
requirements.txt
: يعلن عن جميع تبعيات PIP المطلوبة لـ app.py
استبدلها بنفسك.
icon.png
: ملف الرمز الافتراضي للتطبيق. استبدلها بنفسك.
torch.js
: torch.js
هو برنامج نصي للأداة المساعدة يتم استدعاؤه من install.js
. نظرًا لاستخدام الشعلة في جميع مشاريع الذكاء الاصطناعي تقريبًا، ومن الصعب جدًا تثبيتها بطريقة مشتركة بين الأنظمة الأساسية، يتم تضمين هذا البرنامج النصي افتراضيًا. لا داعي للقلق بشأن هذا الملف، فقط افهم أنه مستخدم بواسطة install.js
. لا تلمس.
الملفات البارزة التي يجب النظر إليها هي ملفات app.py
و requirements.txt
:
استيراد التدرج كشعلة جريمبورت من الناشرين import DiffusionPipelineimport devicestorch# احصل على الجهاز الحالي ("mps" أو "cuda" أو "cpu")device = devicestorch.get(torch)# إنشاء أنبوب أنابيب نشر = DiffusionPipeline.from_pretrained("stabilityai/sdxl" -turbo").to(device)# قم بتشغيل الاستدلالdef generator_image(prompt):return الأنابيب (موجه، num_inference_steps=2، القوة=0.5، التوجيه_مقياس=0.0).images[0]# إنشاء واجهة مستخدم لإدخال النص + إخراج الصورة باستخدام Gradioapp = gr.Interface(fn=generate_image, inputs="text"، outs=" صورة")app.launch()
فيما يلي المكتبات المطلوبة لتشغيل app.py
.
transformers accelerate diffusers gradio devicetorch
إذن كيف يتم استخدام هذه الملفات فعليًا؟
إذا نظرت داخل install.js
، فسترى أنه يقوم بتشغيل pip install -r requirements.txt
لتثبيت التبعيات داخل الملف، مثل هذا:
وحدة التصدير = { تشغيل: [// احذف هذه الخطوة إذا كان مشروعك لا يستخدم torch{ الطريقة: "script.start"، params: {uri: "torch.js"،params: { venv: "env"، // قم بتحرير هذا للتخصيص مسار مجلد venv // xformers: true // قم بإلغاء التعليق على هذا السطر إذا كان مشروعك يتطلب xformers} }},// قم بتحرير هذه الخطوة باستخدام أوامر التثبيت المخصصة الخاصة بك { الطريقة: "shell.run"، params: {venv: "env" ، // يحرر هذا لتخصيص رسالة مسار مجلد venv: [ "pip install -r require.txt"], }},// قم بإلغاء التعليق على هذه الخطوة لإضافة إلغاء البيانات المكررة تلقائيًا في venv (تجريبي)// {// الطريقة: "fs.link"،/ / params: {// venv: "env"// }// },{ الطريقة: "notify"، params: {html: "انقر فوق علامة التبويب "ابدأ" للبدء!" }} ]}
الخطوة الأولى هي تشغيل script.start
لاستدعاء برنامج نصي اسمه torch.js
. هذا يقوم بتثبيت الشعلة.
تقوم الخطوة الثانية بتشغيل ملف pip install -r requirements.txt
لتثبيت كل شيء في هذا الملف.