Image artificially created by Midjourney through a prompt generated by a Nano Bot specialized in Midjourney.
Nano Bots is an open specification that can be implemented in any programming language. It specifies a configuration file with human-readable instructions for creating small and specialized AI-powered bots that can be effortlessly shared as a single, lightweight file.
Implementations of this specification:
- Nano Bots CLI (Ruby)
- Nano Bots for Sublime Text
- Nano Bots for Visual Studio Code
- Nano Bots for Obsidian
- Nano Bots API
- Nano Bots Clinic (Live Editor)
- Nano Bots Marketplace
Here's what a Nano Bot Cartridge looks like:
---
meta:
symbol: 🤖
name: Nano Bot Name
author: Your Name
version: 1.0.0
license: CC0-1.0
description: A helpful assistant.
behaviors:
interaction:
directive: You are a helpful assistant.
provider:
id: openai
credentials:
address: ENV/OPENAI_API_ADDRESS
access-token: ENV/OPENAI_API_KEY
settings:
user: ENV/NANO_BOTS_END_USER
model: gpt-4o
Here's what a fully-functional implementation of Nano Bots feels like:
nb - - eval "hello"
# => Hello! How may I assist you today?
nb to-en-us-translator.yml - eval "Salut, comment ça va?"
# => Hello, how are you doing?
nb midjourney.yml - eval "happy cyberpunk robot"
# => A cheerful and fun-loving robot is dancing wildly amidst a
# futuristic and lively cityscape. Holographic advertisements
# and vibrant neon colors can be seen in the background.
nb lisp.yml - eval "( 1 2)"
# => 3
cat article.txt |
nb to-en-us-translator.yml - eval |
nb summarizer.yml - eval
# -> LLM stands for Large Language Model, which refers to an
# artificial intelligence algorithm capable of processing
# and understanding vast amounts of natural language data,
# allowing it to generate human-like responses and perform
# a range of language-related tasks.
nb - - repl
nb assistant.yml - repl
🤖> Hi, how are you doing?
As an AI language model, I do not experience emotions but I am functioning
well. How can I assist you?
🤖> |
Nano Bots can also be powered by Tools (Functions):
---
tools:
- name: random-number
description: Generates a random number between 1 and 100.
fennel: |
(math.random 1 100)
🤖> please generate a random number
random-number {} [yN] y
random-number {}
59
The randomly generated number is 59.
🤖> |
Check out the full specification for Nano Bots: https://spec.nbots.io