Pinokio ist ein Browser, mit dem Sie jede KI auf Ihrem Computer lokal installieren, ausführen und automatisieren können. Alles, was Sie in Ihrer Befehlszeile ausführen können, kann mit dem Pinokio-Skript mit einer benutzerfreundlichen Benutzeroberfläche automatisiert werden.
Mit Pinokio können Sie alles automatisieren, einschließlich:
Installieren Sie KI-Apps und -Modelle
KI-Apps verwalten und ausführen
Erstellen Sie Workflows, um installierte KI-Apps zu orchestrieren
Führen Sie einen beliebigen Befehl aus, um Dinge auf Ihrem Computer zu automatisieren
und mehr...
Das macht Pinokio so besonders:
Lokal: Alles wird lokal installiert und ausgeführt. Keine Ihrer Daten werden auf dem Server einer anderen Person gespeichert.
Kostenlos: Pinokio ist eine Open-Source-Anwendung, die zu 100 % kostenlos und ohne Einschränkungen verwendet werden kann. Es gibt niemanden, der für den API-Zugriff bezahlt, da alles auf Ihrem lokalen Rechner läuft. Spielen Sie so viel mit KI, wie Sie möchten, für immer kostenlos.
Privat: Sie müssen sich keine Gedanken über die Übermittlung privater Daten machen, nur um KI auszuführen, alles läuft zu 100 % privat auf Ihrem eigenen Computer.
Benutzerfreundliche Oberfläche: Pinokio bietet eine benutzerfreundliche Benutzeroberfläche zum Ausführen und Automatisieren aller Aufgaben, für die Sie normalerweise das Terminal verwenden müssen.
Im Lieferumfang enthaltene Batterien: Pinokio ist ein eigenständiges System. Sie müssen kein weiteres Programm installieren. Pinokio kann alles automatisieren, einschließlich Programm-/Bibliotheksinstallationen. Das einzige Programm, das Sie benötigen, ist Pinokio.
Plattformübergreifend: Pinokio funktioniert auf ALLEN Betriebssystemen (Windows, Mac, Linux) .
Sparen Sie Speicherplatz und Ressourcen: Pinokio verfügt über zahlreiche Optimierungsfunktionen, mit denen Sie Hunderte Gigabyte Speicherplatz sparen können. Darüber hinaus sind mit Pinokio viele weitere Funktionen zur Ressourcenoptimierung (z. B. Speicher) möglich.
Ausdrucksstarke Skriptsprache: Pinokio-Skript ist eine leistungsstarke Automatisierungs-Skriptsprache mit Funktionen wie Speicher, dynamischer Vorlage und erweiterbaren Low-Level-APIs.
Portabel: Alles wird in einem isolierten Ordner gespeichert und liegt als Datei vor, was bedeutet, dass Sie ganz einfach alles sichern oder Apps löschen können, indem Sie einfach Dateien löschen.
Pinokio lässt sich von der Funktionsweise traditioneller Computer inspirieren.
So wie ein Computer dank seiner umfassenden Architektur alles Mögliche tun kann, ist Pinokio als virtueller Computer eine umfassende Plattform, um alles, was Sie sich vorstellen können, mit KI auszuführen und zu automatisieren.
Dateisystem: Wo und wie Pinokio Dateien speichert.
Prozessor: Wie Pinokio Aufgaben ausführt.
Speicher: Wie pinokio eine Zustandsmaschine mithilfe seines integrierten nativen Speichers implementiert.
Skript: Die Programmiersprache, die Pinokio betreibt.
UI: Die UI (Benutzeroberfläche), über die Benutzer auf Apps zugreifen.
Windows
Mac
Linux
Befolgen Sie unbedingt ALLE unten aufgeführten Schritte!
Für Windows herunterladen
Entpacken Sie die heruntergeladene Datei und Sie sehen eine .exe-Installationsdatei.
Führen Sie die Installationsdatei aus und Sie erhalten die folgende Windows-Warnung:
Diese Meldung wird angezeigt, weil die App aus dem Internet heruntergeladen wurde. Dies ist, was Windows bei aus dem Internet heruntergeladenen Apps tut.
Um dies zu umgehen,
Klicken Sie auf „Weitere Informationen“
Klicken Sie dann auf „Trotzdem ausführen“
Stellen Sie sicher, dass Sie SOWOHL Schritt 1 ALS AUCH Schritt 2 befolgen.
Für Apple Silicon Mac (M1/M2/M3/M4) herunterladen. Für Intel Mac herunterladen
Nach dem Herunterladen der DMG-Dateien MÜSSEN Sie einen Patch erstellen , wie unten gezeigt:
Führen Sie die heruntergeladene DMG-Installationsdatei aus
Ziehen Sie die „Pinokio“-App in den Anwendungsordner
Führen Sie den „patch.command“ aus.
Öffnen Sie die Pinokio-App im Anwendungsordner
Unter Linux können Sie die neueste Version direkt auf Github herunterladen und installieren (für alle Binärdateien scrollen Sie nach unten auf der Seite):
Gehen Sie zur Seite „Veröffentlichungen“.
Um über alle neuen APIs und App-Integrationen auf dem Laufenden zu bleiben,
Folgen Sie @cocktailpeanut auf X, um über alle neu veröffentlichten Skripte und Funktionsaktualisierungen auf dem Laufenden zu bleiben.
Treten Sie dem Pinokio-Discord bei, um Fragen zu stellen und Hilfe zu erhalten.
Pinokio ist eine eigenständige Plattform, mit der Sie Apps isoliert installieren können.
Isolierte Umgebung: Sie müssen sich keine Sorgen machen, dass Ihre globalen Systemkonfigurationen und Umgebungen durcheinander geraten
Batterien im Lieferumfang enthalten: Sie müssen die erforderlichen Programme nicht manuell installieren, nur um etwas zu installieren (z. B. ffpeg , node.js , visual studio , conda , python , pip usw.). Pinokio kümmert sich automatisch darum.
Um dies zu erreichen, speichert Pinokio alles in einem einzigen isolierten Ordner („pinokio home“) , sodass es nie auf Ihre systemweiten Konfigurationen und Programme angewiesen ist, sondern alles in eigenständiger Weise ausführt.
Sie können den Pinokio-Home -Ordner festlegen, wenn Sie Pinokio zum ersten Mal einrichten, und ihn später über die Registerkarte „Einstellungen“ an einen neuen Speicherort ändern.
Wo werden die Dateien gespeichert? Klicken Sie auf der Startseite auf die Schaltfläche „Dateien“:
Dadurch wird der Home-Ordner von Pinokio in Ihrem Datei-Explorer geöffnet:
Sehen wir uns kurz an, was die einzelnen Ordner tun:
api
: speichert alle heruntergeladenen Apps (Skripte).
Die Ordner in diesem Ordner werden auf der Startseite Ihres Pinokios angezeigt.
bin
: speichert global installierte Module, die von mehreren Apps gemeinsam genutzt werden, sodass Sie sie nicht redundant installieren müssen.
Zum Beispiel ffmpeg
, nodejs
, python
usw.
cache
: Speichert alle Dateien, die von den von Ihnen ausgeführten Apps automatisch zwischengespeichert werden.
Wenn etwas nicht funktioniert, können Sie das Problem möglicherweise beheben, indem Sie diesen Ordner löschen und neu starten.
Es ist in Ordnung, den cache
-Ordner zu löschen, da er mit den von Ihnen verwendeten Apps neu gefüllt wird, wenn Sie mit der Verwendung von Apps beginnen.
drive
: speichert alle virtuellen Laufwerke, die von der fs.link Pinokio-API erstellt wurden
logs
: Speichert alle Protokolldateien für jede App.
Mehr über das Dateisystem erfahren Sie hier
Schreiben wir ein Skript, das ein Git-Repository klont.
Erstellen Sie einen Ordner mit dem Namen helloworld
im Pinokio-API-Ordner.
Erstellen Sie eine Datei mit dem Namen git.json
im Ordner Pinokio api/helloworld
.
{ "run": [{"method": "shell.run", "params": { "message": "git clone https://github.com/pinokiocomputer/test"} }] }
Wenn Sie nun zu Pinokio zurückkehren, wird Ihr helloworld
-Repository angezeigt. Navigieren Sie dorthin und klicken Sie auf die Registerkarte git.json
um es auszuführen:
Sie werden sehen, dass ein api/helloworld/test
Ordner aus dem https://github.com/pinokiocomputer/test-Repository geklont wurde.
Mithilfe von Vorlagen können wir auch dynamisch ändern, welche Befehle ausgeführt werden sollen und wie sie ausgeführt werden.
Als Beispiel schreiben wir ein Skript, das dir
unter Windows und ls
unter Linux und Mac ausführt.
Erstellen Sie in Ihrem api/helloworld
Ordner eine Datei mit dem Namen files.json
:
{ "run": [{"method": "shell.run", "params": { "message": "{{platform === 'win32' ? 'dir' : 'ls'}}"} }] }
Der Vorlagenausdruck {{ }}
enthält einen JavaScript-Ausdruck
In jedem Vorlagenausdruck stehen mehrere Variablen zur Verfügung, darunter auch die Plattform.
Der Wert der platform
ist entweder darwin
(Mac), win32
(Windows) oder linux
(Linux).
Das bedeutet, dass das obige Skript unter Windows äquivalent ist zu:
{ "run": [{"method": "shell.run", "params": { "message": "dir"} }] }
Oder wenn es sich nicht um Windows (Mac oder Linux) handelt, ist es äquivalent zu:
{ "run": [{"method": "shell.run", "params": { "message": "ls"} }] }
Mehr über Vorlagen erfahren Sie hier
Wenn die Ausführung eines Pinokio-Skripts beendet ist, wird jede Shell-Sitzung, die durch das Skript erzeugt wurde, verworfen und alle zugehörigen Prozesse werden heruntergefahren.
Versuchen wir beispielsweise, einen lokalen Webserver über http-server zu starten. Erstellen Sie einen neuen Ordner mit dem Namen httpserver
unter dem Pinokio api
-Ordner und erstellen Sie ein neues Skript mit dem Namen index.json
:
{ "run": [{"method": "shell.run", "params": { "message": "npx -y http-server"} }] }
Gehen Sie dann zurück zu Pinokio und Sie werden sehen, dass diese App auf der Startseite angezeigt wird. Klicken Sie durch und klicken Sie auf die Registerkarte index.json
in der Seitenleiste. Daraufhin wird dieses Skript gestartet, das den Webserver mit npx http-server
starten soll.
Das Problem ist jedoch, dass der Server direkt nach dem Start sofort heruntergefahren wird und Sie den Webserver nicht verwenden können.
Dies liegt daran, dass Pinokio automatisch alle mit dem Skript verbundenen Prozesse herunterfährt, wenn alle Schritte im run
ausgeführt werden.
Um dies zu vermeiden, müssen Sie Pinokio mitteilen, dass diese App auch nach der Ausführung aller Schritte aktiv bleiben soll. Wir müssen lediglich ein daemon
-Attribut hinzufügen:
{ „daemon“: true, „run“: [{„method“: „shell.run“, „params“: { „message“: „npx -y http-server“} }] }
Versuchen Sie nun erneut, das Skript zu starten. Sie werden feststellen, dass der Webserver ausgeführt wird und nicht heruntergefahren wird.
Der Webserver stellt alle Dateien im aktuellen Ordner (in diesem Fall nur index.json
) wie folgt bereit:
Sie können das Skript stoppen, indem Sie oben auf der Seite auf die Schaltfläche „Stopp“ klicken.
Erfahren Sie hier mehr über den Daemon-Modus
Sie können auch mehrere Befehle mit einem shell.run
-Aufruf ausführen.
Versuchen wir es mit einem Beispiel. Wir werden eine Dokumentations-Engine in einem Skript installieren, initialisieren und starten.
Früher waren solche Dinge für normale Leute nicht zugänglich (da man sie im Terminal ausführen musste), aber mit Pinokio ist es so einfach wie ein Klick.
Erstellen Sie einen Ordner mit dem Namen docsify
im Pinokio api
-Ordner
Erstellen Sie eine Datei mit dem Namen index.json
im Ordner api/docsify
. Die Datei index.json
sollte wie folgt aussehen:
{ "daemon": true, "run": [{"method": "shell.run", "params": { "message": ["npx -y docsify-cli init docs", "npx -y docsify- cli Serve-Dokumente" ] } }] }
Dieses Beispiel bewirkt zwei Dinge:
Initialisieren Sie ein docsify-Dokumentationsprojekt
Starten Sie den Docsify-Entwicklungsserver
Wenn Sie im Pinokio-Terminal auf den Dev-Server-Link klicken, wird die Dokumentationsseite in einem Webbrowser geöffnet:
Erfahren Sie hier mehr über die
shell.run
API
Einer der häufigsten Anwendungsfälle für Pinokio ist:
Erstellen/aktivieren Sie einen Venv
Installieren Sie Abhängigkeiten im aktivierten Venv
Versuchen wir es mit einem einfachen Beispiel. Dieses Beispiel ist eine Minimal-Gradio-App aus dem offiziellen Gradio-Tutorial
Erstellen Sie zunächst einen Ordner mit dem Namen gradio_demo
im api
-Ordner von Pinokio.
Erstellen Sie als Nächstes eine Datei mit dem Namen app.py
im Ordner api/gradio_demo
.
# app.pyimport Gradio as Grdef Greet(Name, Intensität):return „Hallo, „ + Name + „!“ * int(intensity)demo = gr.Interface(fn=greet,inputs=["text", "slider"],outputs=["text"], )demo.launch()
Wir benötigen außerdem eine Datei requirements.txt
, die so aussieht:
# requirements.txt gradio
Schließlich benötigen wir ein install.json
-Skript, das die Abhängigkeiten aus der Datei requirements.txt
installiert:
{ "run": [{"method": "shell.run", "params": { "venv": "env", "message": "pip install -r require.txt"} }] }
Die Ordnerstruktur sieht folgendermaßen aus:
/PINOKIO_HOME /api /gradio_demo app.py requirements.txt install.json
Gehen Sie zurück zu Pinokio und Sie sehen die gradio_demo
-App. Klicken Sie auf die Benutzeroberfläche und dann auf die Registerkarte install.json
. Folgendes wird ausgeführt:
Erstellen Sie einen venv
Ordner im Pfad env
Aktivieren Sie die env
Umgebung
Führen Sie pip install -r requirements.txt
aus, wodurch die gradio
Abhängigkeit in der env
installiert wird.
So sieht der Installationsprozess aus (beachten Sie, dass am Ende ein neuer env
Ordner erstellt wurde):
Erfahren Sie hier mehr über die venv API
Fortsetzung vom letzten Abschnitt.
Schreiben wir nun ein einfaches Skript, das den Gradio-Server über app.py
aus dem letzten Abschnitt startet. Erstellen Sie eine Datei mit dem Namen start.json
im selben Ordner:
{ „daemon“: true, „run“: [{„method“: „shell.run“, „params“: { „venv“: „env“, „message“: „python app.py“} }] }
Gehen Sie zurück zu Pinokio und Sie werden sehen, dass die Datei start.json
jetzt auch in der Seitenleiste angezeigt wird. Klicken Sie hier, um das start.json
-Skript zu starten. Dies wird:
Aktivieren Sie die env
, die wir im Installationsschritt erstellt haben
Führen Sie python app.py
im Daemon-Modus ( daemon: true
) aus, wodurch der Gradio-Server gestartet und am Laufen gehalten wird.
Es wird ungefähr so aussehen:
Erfahren Sie hier mehr über die venv API
Pinokio verfügt über eine plattformübergreifende API zum einfachen und zuverlässigen Herunterladen von Dateien (einschließlich automatischer Wiederholungsversuche usw.).
Versuchen wir, ein einfaches Skript zu schreiben, das eine PDF-Datei herunterlädt.
Erstellen Sie zunächst einen Ordner mit dem Namen download
im Pinokio api
-Ordner und anschließend eine Datei mit dem Namen index.json
:
{ "run": [{"method": "fs.download", "params": { "uri": "https://arxiv.org/pdf/1706.03762.pdf", "dir": "pdf"} }] }
Dadurch wird die Datei unter https://arxiv.org/pdf/1706.03762.pdf in einen Ordner namens pdf
heruntergeladen (die fs.download
API erstellt automatisch einen Ordner am Speicherort, falls dieser noch nicht vorhanden ist). So sieht es aus:
Erfahren Sie hier mehr über die
fs.download
API
In vielen Fällen möchten Sie möglicherweise ein Skript von einem anderen Skript aus aufrufen. Einige Beispiele:
Ein Orchestrierungsskript, das stable diffusion
und dann llama
startet.
Ein Agent, der stable diffusion
startet, sofort eine Anforderung zum Generieren eines Bildes stellt und schließlich den stable diffusion
Server automatisch stoppt, um Ressourcen zu sparen.
Ein Agent, der eine Anfrage an einen llama
-Endpunkt stellt und die Antwort dann an einen stable diffusion
Diffusionsendpunkt weiterleitet.
Dies können wir mit den script
APIs erreichen:
script.start
: Starten Sie ein Remote-Skript (laden Sie es zuerst herunter, falls es noch nicht existiert)
script.return
: Wenn das aktuelle Skript ein untergeordneter Prozess war, geben Sie den Rückgabewert an, der im nächsten Schritt des Aufruferskripts verfügbar gemacht wird.
Hier ist ein Beispiel. Lassen Sie uns eine einfache caller.json
und callee.json
erstellen:
caller.json
:
{ "run": [{"method": "script.start", "params": { "uri": "callee.json", "params": { "a": 1, "b": 2 } } }, {"method": "log", "params": { "json2": "{{input}}"} }] }
Im ersten Schritt ruft caller.json
callee.json
mit den Parametern { "a": 1, "b": 2 }
auf.
Dieses params-Objekt wird als args
an die callee.json
übergeben:
callee.json
:
{ "run": [{"method": "script.return", "params": { "ressponse": "{{args.a + args.b}}"} }] }
Das Skript callee.json
gibt mit dem Aufruf script.return
sofort den Wert {{args.a + args.b}}
zurück.
Schließlich ruft caller.json
den letzten Schritt log
auf, der den Wert {{input}}
ausgibt, der der Rückgabewert von callee.json
ist. Dadurch wird 3
gedruckt:
Im letzten Abschnitt wurde erklärt, wie Sie ein Skript aus demselben Repository aufrufen können. Was aber, wenn Sie Skripte aus anderen Repositories aufrufen möchten?
Die script.start
API kann auch Remote-Skripte im Handumdrehen herunterladen und ausführen.
Erstellen Sie einen Ordner mit dem Namen remotescript
im Pinokio api
-Ordner und eine Datei mit dem Namen install.json
unter api/remotescript
:
{ "run": [{"method": "script.start", "params": { "uri": "https://github.com/cocktailpeanutlabs/moondream2.git/install.js"} }, {"method": "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": [ { "path": "https://media.timeout.com/images/105795964/750/422/image.jpg" },"Erklären Sie, was hier vor sich geht" ] } }, {"method": "log", "params": { "json2": "{{input}}"} }, {"method": "script.stop", "params": { "uri": "https://github.com/cocktailpeanutlabs/moondream2.git/start.js"} }] }
Im ersten Schritt wird das Skript https://github.com/cocktailpeanutlabs/moondream2.git/install.js gestartet.
Wenn das Repository moondream2.git
bereits auf Pinokio vorhanden ist, wird das Skript „install.js“ ausgeführt.
Wenn es noch nicht vorhanden ist, klont Pinokio automatisch zuerst das https://github.com/cocktailpeanutlabs/moondream2.git
und startet anschließend das install.js-Skript.
Nach Abschluss der Installation wird die Gradio-App mithilfe des Skripts https://github.com/cocktailpeanutlabs/moondream2.git/start.js gestartet. Dieses Skript wird nach dem Start des Servers zurückgegeben.
Jetzt führen wir gradio.predict
aus und verwenden dabei die API „kernel.script.local()“, um das lokale Variablenobjekt für das start.js-Skript abzurufen, und rufen dann seinen url
Wert ab (der programmgesteuert in „ moondream2.git/start.js
festgelegt wird). Skript).
Im Grunde stellt dieser Schritt eine Anfrage an den Gradio-Endpunkt, um den LLM zu bitten, „Erklären Sie, was hier vor sich geht“ und ein Bild zu übergeben.
Als nächstes wird der Rückgabewert von gradio.predict
mithilfe der log
-API im Terminal protokolliert.
Schließlich stoppen wir das Skript moondream2/start.js
, um den Moondream-Gradio-Server mithilfe der API script.stop
herunterzufahren.
Wenn wir script.stop
nicht aufrufen, läuft die Moondream2-App auch nach dem Anhalten dieses Skripts weiter.
So würde es aussehen:
Die Möglichkeit,
script.start
und dannscript.stop
auszuführen, ist sehr nützlich für die Ausführung von KI auf Personalcomputern, da die meisten Personalcomputer nicht über unbegrenzten Speicher verfügen und Ihrem Computer schnell der Speicher ausgeht, wenn Sie diese KI-Engines nicht herunterfahren können programmatisch.Mit
script.stop
können Sie ein Skript starten, seine Antwort erhalten und es sofort herunterfahren, sobald die Aufgabe abgeschlossen ist, wodurch der Systemspeicher frei wird, den Sie für die Ausführung anderer nachfolgender KI-Aufgaben verwenden können.
Pinokio-Apps haben eine einfache Struktur:
Verknüpfung: Die App-Verknüpfung, die auf der Pinokio-Startseite angezeigt wird.
app: Das Haupt-UI-Layout für die App
Shortcut
App
Menü: Die Seitenleiste, die alle Links anzeigt, die Sie ausführen können (sowie deren Ausführungsstatus).
Fenster: Das Ansichtsfenster, das eine Webseite anzeigt, oder ein Terminal , das die Skripte ausführt
Wenn Ihr Projekt keine pinokio.js
Datei enthält,
Die Verknüpfung zeigt den Ordnernamen als Titel und ein Standardsymbol als Symbol der App an.
Das Menü zeigt alle .js
oder .json
Dateien in Ihrem Repository-Stammverzeichnis an.
Das ist zwar praktisch für den Einstieg, aber nicht flexibel genug:
Sie können nicht steuern, was in der Menüleiste angezeigt wird
Sie können nicht steuern, wie die Skripte gestartet werden (z. B. durch Übergabe params
).
Sie können nicht steuern, wie die App angezeigt wird
Der Titel der App ist Ihr Ordnername
Es gibt keine Beschreibung
Das Symbol zeigt lediglich ein Standardsymbol an.
Um das Verhalten Ihrer App selbst anzupassen, sollten Sie ein UI-Skript namens pinokio.js
schreiben.
Versuchen wir, eine minimale Benutzeroberfläche zu schreiben:
Erstellen Sie einen Ordner mit dem Namen downloader
im Ordner /PINOKIO_HOME/api
Fügen Sie ein beliebiges Symbol zum Ordner /PINOKIO_HOME/api/downloader
hinzu und nennen Sie es icon.png
Erstellen Sie eine Datei mit dem Namen /PINOKIO_HOME/api/downloader/download.json
Erstellen Sie eine Datei mit dem Namen /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
module.exports = { Titel: „Alles herunterladen“, Beschreibung: „Laden Sie ein Git-Repository herunter“, Symbol: „icon.png“, Menü: [{text: "Start",href: "download.json",params: { url: "https://github.com/cocktailpeanut/dalai"} }]}
Das Endergebnis wird in Ihrem Datei-Explorer so aussehen:
Gehen Sie nun zurück zu Pinokio und aktualisieren Sie. Ihre App wird angezeigt:
Der Titel lautet Download Anything
In der Beschreibung wird Download a git repository
angezeigt
Das Symbol ist die von uns hinzugefügte icon.png
Wenn Sie nun in die App klicken, sehen Sie Folgendes:
Sie sehen den Menüpunkt Start
.
Klicken Sie hier, um download.json
auszuführen, das durch das href
Attribut angegeben wird.
Beachten Sie außerdem, dass das Skript den Wert von https://github.com/cocktailpeanut/dalai als params.url
-Wert übergibt.
Die an download.json
übergebenen params
werden als input
zur Verfügung gestellt, sodass der git clone {{input.url}}
als git clone https://github.com/cocktailpeanut/dalai
instanziiert wird.
Sobald Sie über ein funktionierendes Skript-Repository verfügen, können Sie es bei jedem Git-Hosting-Dienst veröffentlichen und die URL teilen, und jeder kann Ihr Skript installieren und ausführen.
Sie können jedes Pinokio-Skript-Repository ganz einfach installieren:
Klicken Sie oben auf der Discover-Seite auf die Schaltfläche „Von URL herunterladen“.
Geben Sie die Git-URL ein (Sie können optional auch den Zweig angeben).
Wenn Sie auf Github veröffentlicht haben, können Sie Ihr Repository mit „pinokio“ markieren, damit es im Abschnitt „Neueste“ der Discover-Seite angezeigt wird.
Jetzt wird es automatisch im Abschnitt „Neueste“ (unten auf der Seite „Entdecken“) angezeigt:
Pinokio erstellt den Abschnitt „Neueste“ automatisch über die GitHub-API „/repositories“ unter https://api.github.com/search/repositories?q=topic:pinokio&sort=updated&direction=desc
Wenn Sie also Ihr Repository als „pinokio“ gekennzeichnet haben, es aber nicht angezeigt wird, überprüfen Sie das API-Ergebnis und versuchen Sie herauszufinden, warum es dort nicht enthalten ist.
Obwohl es wichtig ist zu verstehen, wie das alles funktioniert, möchten Sie in den meisten Fällen möglicherweise eine einfache „Launcher-Kombination“, die Folgendes umfasst:
App-Installationsskript: Installiert die App-Abhängigkeiten
App-Startskript: Startet die App
Benutzeroberfläche: Zeigt die Benutzeroberfläche des Launchers an.
Skript zurücksetzen: Setzt den App-Status zurück, wenn etwas schief geht.
Update-Skript: Aktualisiert die App mit einem Klick auf die neueste Version.
Dieser Anwendungsfall wird so oft benötigt, dass wir ein Programm implementiert haben, das diese Skripte sofort automatisch generiert. Es heißt Gepeto.
Oft möchten Sie möglicherweise weitere Informationen zu jedem Skript teilen. Dafür können Sie den Newsfeed nutzen.
Erstellen Sie dazu einfach eine pinokio_meta.json
Datei mit einem posts
Array-Attribut, wobei jedes Element eine x.com-URL ist. Hier ist ein Beispiel:
{ "Beiträge": ["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“ ] }
Sie können es in Aktion sehen: https://github.com/cocktailpeanutlabs/comfyui/blob/main/pinokio_meta.json
Sobald Sie es veröffentlichen, wird dies sofort auf der Landingpage des Skripts angezeigt.
<iframe width="1280" height="720" src="https://www.youtube.com/embed/D8jdowszkMg" title="YouTube-Videoplayer" frameborder="0"allow="Beschleunigungsmesser; automatische Wiedergabe; Zwischenablage- write; verschlüsselte Medien; Bild-in-Bild"allowfullscreen></iframe>
Gepeto ist ein Programm, mit dem Sie automatisch Pinokio-Skripte speziell für App-Launcher generieren können.
Beginnen wir mit der tatsächlichen Generierung einer App und ihres Launchers in 1 Minute.
<iframe width="1280" height="720" src="https://www.youtube.com/embed/I-_W-MkV8tc" title="YouTube-Videoplayer" frameborder="0"allow="accelerometer; Autoplay; Zwischenablage-Schreiben; Gyroskop; Bild-in-Bild“
Wenn Sie Gepeto noch nicht installiert haben, suchen Sie es auf Pinokio und installieren Sie es zuerst.
Sie sehen eine einfache Web-Benutzeroberfläche, mit der Sie ein Formular ausfüllen können. Geben Sie der Einfachheit halber einfach Helloworld
als Projektnamen ein und klicken Sie auf „Senden“ .
Dadurch wird ein Projekt initialisiert. Wenn du zu Pinokio nach Hause zurückgehst,
Sie werden einen neuen Eintrag mit dem Namen Helloworld
sehen. Klicken Sie darauf und Sie sehen den Startbildschirm.
Überprüfen Sie außerdem Ihren Ordner /PINOKIO_HOME/api
. Dort finden Sie einen neuen Ordner namens Helloworld
mit einigen Skriptdateien.
Klicken wir nun auf die Schaltfläche „Installieren“ , um die App zu installieren. Wenn der Vorgang abgeschlossen ist, klicken wir auf „Start“ , um sie zu starten.
Sie sehen eine Minimal-Gradio-App, in der Sie eine Eingabeaufforderung eingeben können und die mithilfe von Stable Diffusion XL Turbo ein Bild generiert.
Was ist also gerade passiert? Wir haben gerade ein leeres Projekt erstellt , das eine minimale Demo-App enthält.
Schauen wir uns im nächsten Abschnitt jede generierte Datei an.
Gepeto generiert automatisch einen minimalen Satz an Skripten, die für einen App-Launcher erforderlich sind. Ein typischer App-Launcher verfügt über die folgenden Funktionen:
Installieren: Installieren Sie die zum Ausführen der App erforderlichen Abhängigkeiten. ( install.js
)
Starten: Starten Sie die App selbst. ( start.js
)
Installation zurücksetzen: Setzen Sie alle installierten Abhängigkeiten zurück, falls Sie eine Neuinstallation durchführen müssen. ( reset.js
)
Update: Aktualisieren Sie auf die neueste Version, wenn das Projekt aktualisiert wird. ( update.js
)
GUI: Das Skript, das beschreibt, wie der Launcher auf der Pinokio-Startseite und als Seitenleistenmenü aussehen und sich verhalten wird. ( pinokio.js
)
So sieht es aus:
Beachten Sie, dass gepeto zusätzlich zu den oben genannten Skripten einige zusätzliche Dateien generiert hat:
app.py
: Eine einfache Demo-App. Ersetzen Sie dies durch Ihren eigenen Code.
requirements.txt
: deklariert alle erforderlichen PIP-Abhängigkeiten für app.py
Ersetzen Sie es durch Ihr eigenes.
icon.png
: Eine Standardsymboldatei für die App. Ersetzen Sie es durch Ihr eigenes.
torch.js
: torch.js
ist ein Hilfsskript, das von install.js
aufgerufen wird. Da Torch in fast allen KI-Projekten verwendet wird und es ziemlich schwierig ist, sie plattformübergreifend zu installieren, ist dieses Skript standardmäßig enthalten. Sie müssen sich um diese Datei keine Sorgen machen, verstehen Sie nur, dass sie von install.js
verwendet wird. Nicht berühren.
Die bemerkenswertesten Dateien, die Sie sich ansehen sollten, sind die Dateien app.py
und requirements.txt
:
Gradio als Grimport Torchfrom Diffuser importieren Import DiffusionPipelineImport Devicetorch# Holen Sie sich das aktuelle Gerät ("mps", "cuda" oder "cpu")device = devicetorch.get(torch)# Erstellen Sie eine Diffusionspipelinepipe = DiffusionPipeline.from_pretrained("stabilityai/sdxl -turbo").to(device)# Führen Sie inferencedef generic_image(prompt):return pipe( prompt, num_inference_steps=2, Strength=0.5, Guidance_scale=0.0).images[0]# Erstellen Sie eine Texteingabe- und Bildausgabe-Benutzeroberfläche mit Gradioapp = gr.Interface(fn=generate_image, inputs="text", Outputs="image")app .Start()
Im Folgenden sind die Bibliotheken aufgeführt, die zum Ausführen von app.py
erforderlich sind.
transformers accelerate diffusers gradio devicetorch
Wie werden diese Dateien eigentlich verwendet?
Wenn Sie einen Blick in install.js
werfen, werden Sie feststellen, dass pip install -r requirements.txt
ausgeführt wird, um die Abhängigkeiten in der Datei zu installieren, etwa so:
module.exports = { run: [// Löschen Sie diesen Schritt, wenn Ihr Projekt Torch nicht verwendet{ method: "script.start", params: {uri: "torch.js",params: { venv: "env", // Bearbeiten Sie dies, um es anzupassen der venv-Ordnerpfad // xformers: true // Kommentieren Sie diese Zeile aus, wenn Ihr Projekt xformers erfordert} }},// Bearbeiten Sie diesen Schritt mit Ihren benutzerdefinierten Installationsbefehlen{ method: "shell.run", params: {venv: "env" , // Dies bearbeiten So passen Sie den Pfad zum Venv-Ordner an: Meldung: [ „pip install -r require.txt“], }},// Kommentieren Sie diesen Schritt aus, um die automatische Venv-Deduplizierung hinzuzufügen (experimentell)// {// Methode: „fs.link“,// params: {// venv: „env“// }// },{ method: „notify“, params: {html: „Klicken Sie auf die Registerkarte „Start“, um zu beginnen!“ }} ]}
Im ersten Schritt wird script.start
ausgeführt, um ein Skript mit dem Namen torch.js
aufzurufen. Dadurch wird die Taschenlampe installiert.
Im zweiten Schritt wird die Datei pip install -r requirements.txt
ausgeführt, um alles in dieser Datei zu installieren.