Nano -Apps sind winzige Anwendungen, die in Nano -Bots eingebettet werden können. So wie Menschen seine Funktionen mit Zugriff auf Tools wie einen Schraubenschlüssel, einen Taschenrechner, einen Bildschirmleser oder einen Internetzugang verstärken können, kann ein Nano -Bot seine Funktionen verbessern, wenn sie mit Nano -Apps ausgestattet sind.
Nano -Apps können in Lua, Fenchel oder Clojure geschrieben werden. Dieses spezielle Repository hat sich für die Verwendung von Clojure für seine Nano -Apps entschieden.
Installieren und richten Sie Nano Bots CLI und Babashka ein: Dann:
git clone https://github.com/gbaptista/nano-apps.git
cd nano-apps
bb tasks/generate-cartridge.clj cartridges/template.yml cartridge.yml
# Cartridge successfully generated at cartridge.yml
nb cartridge.yml - repl ?> What day of the week is it today?
date-and-time {}
{:date-time 2023-12-02T14:19:18-03:00, :timezone America/Sao_Paulo}
Today is Saturday.
?> |
Sie können die Reply beenden, indem Sie exit eingeben.
Bietet GNU -Oktave für arithmetische und symbolische Mathematik, einschließlich grundlegender Operationen und komplexer Berechnungen wie Derivaten und Integralen.
Installieren von GNU Octave:
sudo pacman -S octave # Arch / Manjaro
sudo apt-get install octave # Debian / Ubuntu / Raspberry Pi OS
sudo dnf install octave # Fedora / CentOS / RHEL Nach der Installation müssen Sie das symbolic Paket installieren: pkg install -forge symbolic
octave GNU Octave, version 6.4.0
octave:1> pkg install -forge symbolic
For information about changes from previous versions of the symbolic package, run 'news symbolic'.
octave:2>
Ableitungsbeispiele:
?> What is the derivative of the function f(x) = 3x^2 + 5x + 2 with respect to x?
advanced-calculator {"expression":"syms x; diff(3*x^2 + 5*x + 2)"}
Symbolic pkg v3.1.1: Python communication link active, SymPy v1.11.1.
ans = (sym) 6⋅x + 5
The derivative of the function f(x) = 3x^2 + 5x + 2 with respect to x is 6x + 5.
?> Find the derivative of the function g(x) = e^(2x) – cos(x) with respect to x.
advanced-calculator {"expression":"syms x; diff(exp(2*x) - cos(x))"}
Symbolic pkg v3.1.1: Python communication link active, SymPy v1.11.1.
ans = (sym)
2⋅x
2⋅ℯ + sin(x)
The derivative of the function g(x) = e^(2x) – cos(x) with respect to x is 2e^(2x) + sin(x).
?> |
Integrale Beispiele:
?> What is the indefinite integral of the function f(x) = 1/(x^2 + 1) with respect to x?
advanced-calculator {"expression":"syms x; int(1/(x^2 + 1))"}
Symbolic pkg v3.1.1: Python communication link active, SymPy v1.11.1.
ans = (sym) atan(x)
The indefinite integral of the function f(x) = 1/(x^2 + 1) with respect to x is atan(x) + C,
where C is the constant of integration.
?> Calculate the definite integral of g(x) from x = 0 to x = pi of g(x) = sin^2(x).
advanced-calculator {"expression":"syms x; int(sin(x)^2, 0, pi)"}
Symbolic pkg v3.1.1: Python communication link active, SymPy v1.11.1.
ans = (sym)
π
─
2
The definite integral of g(x) = sin^2(x) from x = 0 to x = pi is pi/2.
?> |
Bietet grundlegenden Zugriff auf die Uhr, sodass der Nano -Bot auf Datum und Uhrzeit zugreifen kann.
Beispiele:
?> What time is it?
date-and-time {}
{:date-time 2023-12-02T12:22:01-03:00, :timezone America/Sao_Paulo}
The current time is 12:22:01 PM in the timezone America/Sao Paulo.
?> What day of the week is it today?
Today is Saturday.
?> |
Bietet PlayerCTL für die Kontrolle von Medienspieler, die die MPRIS D-Bus-Schnittstellenspezifikation implementieren.
Installieren von PlayerCtl:
sudo pacman -S playerctl # Arch / Manjaro
sudo apt-get install playerctl # Debian / Ubuntu / Raspberry Pi OS
sudo dnf install playerctl # Fedora / CentOS / RHELBeispiele:
?> which players do i have?
media-player-control {"command":"list"}
chromium.instance12231
plasma-browser-integration
You have two media players available for control:
1. Chromium, with an instance ID of 12231.
2. Plasma Browser Integration.
These players can be controlled with play, pause,
stop, and various other media control commands.
?> what's playing on plasma?
media-player-control {"command":"metadata","player":"plasma-browser-integration"}
plasma-browser-integration kde:mediaSrc blob:https://www.youtube.com/9c1414f1-5ae7-43d3-a7e2-45f519cdb0a9
plasma-browser-integration kde:pid 12231
plasma-browser-integration mpris:artUrl https://i.ytimg.com/vi/1JNmz17gnMw/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDr0ppBmCZeRzvIfsuDAY7BxKYeBQ
plasma-browser-integration mpris:length 350041000
plasma-browser-integration mpris:trackid '/org/kde/plasma/browser_integration/1337'
plasma-browser-integration xesam:artist Polyphia
plasma-browser-integration xesam:title Polyphia - Ego Death feat. Steve Vai (Official Music Video)
plasma-browser-integration xesam:url https://www.youtube.com/watch?v=1JNmz17gnMw
Currently, on Plasma Browser Integration, the track
"Ego Death" by Polyphia featuring Steve Vai is playing.
This is the official music video on YouTube.
The artwork for the track is available as well, which
you would recognize from the video thumbnail on YouTube.
?> pause the song
media-player-control {"command":"pause","player":"plasma-browser-integration"}
The song has been paused on Plasma Browser Integration.
If you wish to resume playback, just let me know!
?> resume playing
media-player-control {"command":"play","player":"plasma-browser-integration"}
The song is now playing again on Plasma Browser Integration.
Enjoy the music!
?> go back to the beginning of the song
media-player-control {"command":"position","player":"plasma-browser-integration","option":"0"}
I've reset the song to the beginning for you.
?> turn up the volume to the maximum
media-player-control {"command":"volume","player":"plasma-browser-integration","option":"1.0"}
?> |
Es bietet die Fähigkeit, Zufallszahlen zu generieren.
Beispiele:
?> Choose a random number.
random-number {"from":1,"to":100}
53
The random number chosen is 53.
?> I would like a random number between 350 and 480.
random-number {"from":350,"to":480}
382
The random number chosen between 350 and 480 is 382.
?> |
☠️ Warnung: Diese Nano -App kann gefährliche und zerstörerische Operationen auf einem System ausführen. Sei vorsichtig damit.
Bietet ein Mittel, um mit dem Computersystem und den Daten zu interagieren, indem Shell -Befehle ausgeführt werden, ähnlich wie in einem Linux -Terminal. Es kann Befehle an Software senden, Informationen extrahieren und verschiedene Aktionen ausführen.
Beispiele:
?> How much space do I have on my disk?
sh {"command":["df","-h","--output=avail","/"]}
Avail
478G
You have 478 GB of available space on your disk.
?> How many cores does my CPU have?
sh {"command":["nproc"]}
8
Your CPU has 8 cores.
?> Am I connected to the Internet?
sh {"command":["ping","-c","1","8.8.8.8"]}
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=58 time=16.1 ms
--- 8.8.8.8 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 16.126/16.126/16.126/0.000 ms
Yes, you are connected to the Internet. I successfully pinged the
IP address 8.8.8.8 (Google's DNS server) and received a response.
?> |
Stellen Sie GNU BC zur Durchführung arithmetischer Berechnungen bereit. Es kann Addition, Subtraktion, Multiplikation, Abteilung und Moduloperationen sowie Exponentiation und verschiedene Funktionen mit willkürlicher Genauigkeit verarbeiten.
Installieren von GNU BC:
sudo pacman -S bc # Arch / Manjaro
sudo apt-get install bc # Debian / Ubuntu / Raspberry Pi OS
sudo dnf install bc # Fedora / CentOS / RHELBeispiele:
?> How much is 10 plus 15?
simple-calculator {"expression":"10+15"}
25
10 plus 15 equals 25.
?> What is the remainder when dividing 28 by 6?
simple-calculator {"expression":"28 % 6"}
4
The remainder when dividing 28 by 6 is 4.
?> Calculate if 3 is less than 4.
simple-calculator {"expression":"3<4"}
1
The calculation confirms that 3 is less than 4.
?> What is 3 divided by 2?
simple-calculator {"expression":"scale=1; 3/2"}
1.5
3 divided by 2 equals 1.5.
?> |
Bietet Wettervorhersagen und aktuelle Bedingungen, einschließlich Temperatur, Windgeschwindigkeit und Luftfeuchtigkeit, von wttr.in. Es bietet auch astronomische Daten wie Sonnenaufgang und Sonnenuntergang sowie Details über den Mond.
Beispiele:
?> What's the current temperature in New York?
weather {"location":"New York"}
{:current_condition [{:FeelsLikeC 4, :windspeedMiles...
The current temperature in New York is 6°C (43°F).
?> Tell me about the moon in Cairo today.
weather {"location":"Cairo"}
{:current_condition [{:FeelsLikeC 25, :windspeedMiles...
In Cairo today, the moon is in a Waning Gibbous phase with 79% illumination.
Moonrise is at 9:30 PM and moonset is at 10:57 AM (local time).
?> Should I wear sunglasses or carry an umbrella in Rome today?
weather {"location":"Rome"}
{:current_condition [{:FeelsLikeC 12, :windspeedMiles...
You should wear sunglasses in Rome today, as the weather is partly cloudy with
a 0.0 mm precipitation forecast, indicating no need for an umbrella.
?> What's the likelihood of me seeing a rainbow this afternoon in Rio de Janeiro?
weather {"location":"Rio de Janeiro"}
{:current_condition [{:FeelsLikeC 29, :windspeedMiles...
The likelihood of seeing a rainbow this afternoon in Rio de Janeiro is
low as the weather is partly cloudy with no precipitation reported.
Rainbows typically require rain combined with sunshine.
?> Is it a good day for kite flying in Sydney based on wind conditions?
weather {"location":"Sydney"}
{:current_condition [{:FeelsLikeC 18, :windspeedMiles...
Yes, it's a good day for kite flying in Sydney.
The weather is clear with wind speeds of 9 km/h (6 miles per hour).
?> |
Kopieren Sie einfach einen Ordner /apps der dem ähnelt, was Sie tun möchten. Die Struktur ist:
app.clj : Der Quellcode von Nano App.specification.yml : Die Nano -App -Spezifikation für den Nano -Bot.test.clj : Tests für die Nano -App.Zusätzlich:
README.md : Ein Readme für Menschen, nicht anderswo verwendet, nur um diese Readme zu verbessern.Generieren Sie aus einer Basisvorlage eine Patrone mit allen enthaltenen Nano -Apps:
bb tasks/generate-cartridge.clj [CARTRIDGE-TEMPLATE] [OUTPUT-FILE]
# If you don't want to include your private Nano Apps:
bb tasks/generate-cartridge.clj [CARTRIDGE-TEMPLATE] [OUTPUT-FILE] --no-private
bb tasks/generate-cartridge.clj cartridges/template.yml cartridge.yml
# => cartridge.yml
bb tasks/generate-cartridge.clj cartridges/template.yml cartridge.yml --no-private
# => cartridge.ymlNachdem Sie eine Patrone generiert haben, können Sie es sofort versuchen:
nb cartridge.yml - repl
?> what time is it?
date-and-time {}
{:date-time 2023-12-02T14:10:05Z, :timezone UTC}
The current time in UTC is 14:10:05 on December 2, 2023.
?> |
Sie können die Reply beenden, indem Sie exit eingeben.
Alle Tests ausführen:
bb tasks/run-tests.cljAusführen individueller Tests:
bb apps/simple-calculator/test.cljAusführen aller Tests ohne private Nano -Apps:
bb tasks/run-tests.clj --no-private Aktualisieren Sie die Datei template.md und dann:
bb tasks/generate-readme.clj Trick für die automatische Aktualisierung der README.md , wenn sich template.md ändert:
sudo pacman -S inotify-tools # Arch / Manjaro
sudo apt-get install inotify-tools # Debian / Ubuntu / Raspberry Pi OS
sudo dnf install inotify-tools # Fedora / CentOS / RHEL
while inotifywait -e modify -e create template.md apps/ * /README.md ; do bb tasks/generate-readme.clj ; doneTrick für die Markdown -Live -Vorschau:
pip install -U markdown_live_preview
mlp README.md -p 8076bb tasks/cljfmt-fix.clj Sie können private Nano -Apps erstellen, die mithilfe der Muster user@app nicht zum Repository verpflichtet werden:
apps/your-name@your-app/app.clj
Gleiches gilt für private Patronenvorlagen:
cartridges/[email protected]
Sie können Ihre privaten Nano -Apps von der Patronengeneration ausschließen mit:
bb tasks/generate-cartridge.clj cartridges/template.yml cartridge.yml --no-privateAusführen aller Tests ohne private Nano -Apps:
bb tasks/run-tests.clj --no-private Nano -Apps sind Teil von Nano -Bots. Daher ist es wichtig, sich mit der Spezifikation und den Prinzipien der Nano -Bots vertraut zu machen: Nano Bots -Spezifikation
Eine Nano -App ist nur so gut wie die Fähigkeit des KI -Anbieters, sie zu nutzen. Daher sollte alles, was Sie über ein schnelles Engineering gelernt haben, als Kernprinzip berücksichtigt und auf die Entwicklung von Nano -Apps angewendet werden, insbesondere beim Schreiben ihrer Spezifikationen:
Manchmal haben Sie vielleicht das Gefühl: "Dies ist zu komplex" oder "es wird nicht nützlich sein" oder "Warum sollte es das verwenden" usw. Sie werden möglicherweise überrascht, wie Nano -Apps von Modellen verwendet werden.
Für ein konkretes Beispiel enthält die Media Player -Steuerung Befehle, von denen Sie vielleicht glauben, dass sie es nicht wert sind, bereitzustellen. Wenn Sie jedoch einige Zeit damit verbringen, herumzuspielen, werden Sie viele "Wow" -Momente darüber haben, wie das Modell es verwendet, um das zu erreichen, was Sie verlangen.
Geben Sie ihm also Raum, um kreativ zu sein und zu erkunden. Halten Sie die Funktionalität nicht zurück, nur weil Sie sich nicht sicher fühlen.
Obwohl LLMs zunehmend in der Lage sind, erhebliche Datenmengen zu bewältigen, müssen wir in Bezug auf Token Folgendes berücksichtigen:
Vermeiden Sie es, unnötig lange Ausgänge bereitzustellen. Nutzen Sie die Gelegenheit, Ihre Ausgänge präzise zu machen. Seien Sie vorsichtig, wenn Sie Nano -Apps erstellen, die Datenbanken abfragen oder Befehle ausführen, da sie unerwartet lange Ausgänge erzeugen können.
Stellen Sie bei der Verwendung von Nano -Apps als Proxy für beliebte Software sicher, dass die Ausgabe der tatsächlichen Software treu ist. Modelle Grund besser, wenn die Ausgabe genau das ist, was es vom Programm erwarten würde.
Beispiel: Wenn Ihre Nano -App ein Proxy für die GNU -Octave -Software ist, wäre die erwartete Ausgabe für den Betrieb:
ans = 6
Es kann verlockend sein, es zu verkürzen, um nur 6 anstelle von ans = 6 zurückzugeben. Tu das nicht; Halten Sie die ursprüngliche Ausgabe, wie es das Modell lernte, während seines Trainings erwartet zu werden.
Halten Sie Fehler aufbewahrt (präzise Ausgaben) und hilfsbereit (formuliert Engineering).
Priorisieren Sie bei der Verwendung von Nano -Apps als Proxy für die beliebte Software die Freigabe der ursprünglichen Fehlerausgabe aus der Software (Ausgabetreue). Einige Software generieren lange Fehlerstapelspuren. In diesem Szenario ist es am besten, alternative benutzerdefinierte Kurznachrichten bereitzustellen oder die Ausgangsgröße einzuschränken, ohne die erforderlichen Details zu beeinträchtigen. Balance Output -Treue mit prägnanten Ausgaben.
Rückkehr () , da die Ausgabe einer Funktion dazu führen kann, dass OpenAI -Modelle anfordern, dass die Funktion erneut ausgeführt wird, was möglicherweise zu einer unendlichen Schleife führt.
Dies ist ein experimentelles Projekt im Frühstadium. Nano -Apps können gefährlich sein. Seien Sie also vorsichtig mit dem, was Sie zu bauen versuchen. Sie könnten zerstörerische Aktionen auf Ihrem Computer ausführen. Beachten Sie auch Ihr Budget: Stellen Sie sicher, dass Sie den von Ihnen verwendeten Anbieter überwachen und budgetieren. Nano-Apps können unerwartet langwierige Inhalte oder unendliche/zu lange Schleifen produzieren, die dazu führen, dass Ihre Kosten in die Höhe schnellen.
Diese Software wird unter der MIT -Lizenz verteilt, die einen Garantieausschluss enthält. Darüber hinaus übernehmen die Autoren keine Verantwortung für Schäden oder Kosten, die sich aus der Verwendung dieses experimentellen Projekts im Frühstadium ergeben können. Verwenden Sie Nano -Apps auf eigenes Risiko.