Приложения Nano - это крошечные приложения, которые могут быть встроены в нано -боты. Подобно тому, как люди могут усилить свои возможности с помощью доступа к таким инструментам, как гаечный ключ, калькулятор, считыватель экрана или доступ к Интернету, нано -бот может расширить свои возможности при оснащении Nano Apps.
Приложения Nano могут быть написаны в Lua, Fenner или Clojure. Этот конкретный репозиторий решил использовать Clojure для своих приложений Nano.
Установите и установите Nano Bots Cli и Babashka, затем:
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.
?> |
Вы можете выйти из реплики, набрав exit .
Обеспечивает октаву GNU для арифметической и символической математики, включая основные операции и сложные расчеты, такие как производные и интегралы.
Установка 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 После установки необходимо установить symbolic пакет: 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>
Производные примеры:
?> 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).
?> |
Интегральные примеры:
?> 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.
?> |
Обеспечивает базовый доступ к часам, что позволяет Nano Bot добраться до даты и времени.
Примеры:
?> 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.
?> |
Предоставляет PlayerCTL для контроля медиаплееров, которые реализуют спецификацию интерфейса MPRIS D-BUS.
Установка Playerctl:
sudo pacman -S playerctl # Arch / Manjaro
sudo apt-get install playerctl # Debian / Ubuntu / Raspberry Pi OS
sudo dnf install playerctl # Fedora / CentOS / RHELПримеры:
?> 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"}
?> |
Это обеспечивает возможность генерировать случайные числа.
Примеры:
?> 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.
?> |
☠ Предупреждение: это приложение Nano может выполнять опасные и разрушительные операции в системе; Будьте осторожны с этим.
Предоставляет средства для взаимодействия с компьютерной системой и данных путем выполнения команд оболочки, аналогичных тем, которые используются в терминале Linux. Он может отправлять команды в программное обеспечение, извлекать информацию и выполнять различные действия.
Примеры:
?> 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.
?> |
Предоставьте GNU BC для выполнения арифметических расчетов. Он может обрабатывать добавление, вычитание, умножение, деление и операции модуля, а также экспонентацию и различные функции, все с произвольной точностью.
Установка GNU BC:
sudo pacman -S bc # Arch / Manjaro
sudo apt-get install bc # Debian / Ubuntu / Raspberry Pi OS
sudo dnf install bc # Fedora / CentOS / RHELПримеры:
?> 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.
?> |
Предоставляет прогнозы погоды и текущие условия, включая температуру, скорость ветра и влажность, от Wttr.in. Он также предлагает астрономические данные, такие как время восхода солнца и заката, а также подробности о Луне.
Примеры:
?> 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).
?> |
Просто скопируйте и вставьте любую папку внутри /apps , которые напоминают то, что вы пытаетесь сделать. Структура:
app.clj : исходный код приложения Nano.specification.yml : спецификация приложения Nano для Nano Bot.test.clj : тесты для приложения Nano.Кроме того:
README.md : readme для людей, не используемый в другом месте, просто для улучшения этого чтения.Из базового шаблона генерируйте картридж со всеми приложениями Nano, включенными:
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.ymlПосле создания картриджа, учитывая, что у вас есть CLI Nano Bots, вы можете попробовать его сразу:
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.
?> |
Вы можете выйти из реплики, набрав exit .
Запуск всех тестов:
bb tasks/run-tests.cljЗапуск отдельных тестов:
bb apps/simple-calculator/test.cljЗапуск всех тестов, за исключением частных приложений Nano:
bb tasks/run-tests.clj --no-private Обновите файл template.md , а затем:
bb tasks/generate-readme.clj Уловка для автоматического обновления README.md при изменении template.md :
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 ; doneТрюк для предварительного просмотра Markdown Live:
pip install -U markdown_live_preview
mlp README.md -p 8076bb tasks/cljfmt-fix.clj Вы можете создать частные приложения Nano, которые не будут привержены репозитории, используя user@app atment:
apps/your-name@your-app/app.clj
То же самое относится и к частям частных картридж:
cartridges/[email protected]
Вы можете исключить свои частные приложения Nano из поколения картриджа с:
bb tasks/generate-cartridge.clj cartridges/template.yml cartridge.yml --no-privateЗапуск всех тестов, за исключением частных приложений Nano:
bb tasks/run-tests.clj --no-private Приложения Nano разработаны как часть Nano Bots, поэтому важно ознакомиться со спецификацией и принципами Nano Bots: Specification Nano Bots
Приложение Nano так же хорошо, как и способность поставщика ИИ использовать его. Следовательно, в качестве основного принципа, все, что вы узнали о быстрой инженерии, должно быть рассмотрено и применено к разработке приложений Nano, особенно при написании их спецификаций:
Иногда вы можете чувствовать, что «это слишком сложно», или «это будет бесполезно» или «зачем это использовать» и т. Д. Вы можете быть удивлены творческими способами, которые нано используются моделями.
Для конкретного примера, управление медиаплеером имеет команды, которые, как вы можете думать, не стоит предоставлять. Но, если вы потратите некоторое время на игру, у вас будет много «вау» о том, как модель использует ее для достижения того, о чем вы просите.
Итак, дайте ему место , чтобы быть креативным и исследовать, не удерживайте функциональность только потому, что вы чувствуете себя неуверенным.
Хотя LLMS становится все более способным обрабатывать значительные объемы данных, мы должны рассмотреть следующее, когда речь идет о токенах:
Избегайте предоставления излишне длинных выходов; Воспользуйтесь возможностью сделать ваши результаты кратким. Будьте осторожны при создании Nano -приложений, которые запрашивают базы данных или выполняют команды, поскольку они могут создавать неожиданно длинные выходы.
При использовании Nano Apps в качестве прокси для популярного программного обеспечения убедитесь, что выход верен фактическому программному обеспечению. Модели приводят к лучшему, когда вывод - это именно то, что он ожидал от программы.
Например, если ваше приложение Nano является прокси для программного обеспечения GNU Octave, ожидаемым выводом для операций будет:
ans = 6
Может быть заманчиво сократить его, чтобы вернуть только 6 вместо ans = 6 . Не делай этого; Сохраняйте исходный вывод, как это было то, что модель научилась ожидать во время обучения.
Храните ошибки кратко (краткие выходы) и полезные (быстрое инженерия).
При использовании Nano Apps в качестве прокси для популярного программного обеспечения приоритет обмен исходным выводом ошибки от программного обеспечения (выходная версия). Некоторое программное обеспечение генерирует длительные трассировки стека ошибок. В этом сценарии лучше всего предоставить альтернативные пользовательские короткие сообщения или ограничить размер выхода, не жертвуя необходимыми деталями. Баланс вывода верность с краткими выходами.
Returning () , поскольку выход функции может привести к тому, что модели Openai требуют, чтобы функция снова выполнялась, потенциально приводит к бесконечному циклу.
Это экспериментальный, ранний проект. Приложения Nano могут быть опасными, поэтому будьте осторожны с тем, что вы пытаетесь построить; Они могут выполнить разрушительные действия на вашем компьютере. Кроме того, помните о своем бюджете: убедитесь, что вы отслеживаете и бюджет любого поставщика, который вы используете. Nano Apps могут создавать неожиданно длительный контент или бесконечные/слишком длительные петли, которые могут привести к росту затрат.
Это программное обеспечение распространяется по лицензии MIT, которая включает в себя отказ от гарантии. Кроме того, авторы не несут никакой ответственности за какие-либо ущерб или затраты, которые могут возникнуть в результате использования этого экспериментального, раннего проекта. Используйте приложения Nano на свой страх и риск.