README.md in nano-bots-0.0.1 vs README.md in nano-bots-0.0.2

- old
+ new

@@ -6,10 +6,11 @@ _Image artificially created by Midjourney through a prompt generated by a Nano Bot specialized in Midjourney._ https://user-images.githubusercontent.com/113217272/237840989-1e29a5cc-6644-48d0-87b4-62798dc6ebd3.mp4 - [Setup](#setup) + - [Docker](#docker) - [Usage](#usage) - [Command Line](#command-line) - [Library](#library) - [Cartridges](#cartridges) - [Development](#development) @@ -18,17 +19,17 @@ ## Setup For a system usage: ```sh -gem install nano-bots -v 0.0.1 +gem install nano-bots -v 0.0.2 ``` To use it in a project, add it to your `Gemfile`: ```ruby -gem 'nano-bots', '~> 0.0.1' +gem 'nano-bots', '~> 0.0.2' ``` ```sh bundle install ``` @@ -44,72 +45,120 @@ export NANO_BOTS_CARTRIDGES_DIRECTORY=/home/user/.local/share/nano-bots/cartridges ``` Alternatively, if your current directory has a `.env` file with the environment variables, they will be automatically loaded. +## Docker + +Clone the repository and copy the Docker Compose template: + +``` +git clone git@github.com:icebaker/ruby-nano-bots.git +cd ruby-nano-bots +cp docker-compose.example.yml docker-compose.yml +``` + +Set your provider credentials and choose your desired directory for the cartridges files: + +```yaml +version: '3.7' + +services: + nano-bots: + image: ruby:3.2.2-slim-bullseye + command: sh -c "gem install nano-bots -v 0.0.2 && bash" + environment: + OPENAI_API_ADDRESS: https://api.openai.com + OPENAI_API_ACCESS_TOKEN: your-token + OPENAI_API_USER_IDENTIFIER: your-user + volumes: + - ./your-cartridges:/cartridges +``` + +Enter the container: +```sh +docker compose run nano-bots +``` + +Start playing: +```sh +nb cartridges/assistant.yml - repl +``` + ## Usage ### Command Line -After installing the gem, the `rnb` binary command will be available for your project or system. +After installing the gem, the `nb` binary command will be available for your project or system. Examples of usage: ```bash -rnb to-en-us-translator.yml - eval "Salut, comment ça va?" +nb to-en-us-translator.yml - eval "Salut, comment ça va?" # => Hello, how are you doing? -rnb midjourney.yml - eval "happy and friendly cyberpunk robot" -# => The robot exploring a bustling city, surrounded by neon lights -# and high-rise buildings. The prompt should include colorful -# lighting and a sense of excitement in the facial expression. +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. -rnb lisp.yml - eval "(+ 1 2)" +nb lisp.yml - eval "(+ 1 2)" # => 3 cat article.txt | - rnb to-en-us-translator.yml - eval | - rnb summarizer.yml - eval + 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. ``` ```bash -rnb assistant.yml - repl +nb assistant.yml - repl ``` -All of the commands above are stateless. If you want to preserve the history of your interactions, replace the `-` with a state key. You can use a simple key, such as your username, or a randomly generated one: +```text +🤖> Hi, how are you doing? -```ruby -require 'securerandom' +As an AI language model, I do not experience emotions but I am functioning +well. How can I assist you? -SecureRandom.hex # => 6ea6c43c42a1c076b1e3c36fa349ac2c +🤖> | ``` +All of the commands above are stateless. If you want to preserve the history of your interactions, replace the `-` with a state key: + ```bash -rnb assistant.yml your-user eval "Salut, comment ça va?" -rnb assistant.yml your-user repl +nb assistant.yml your-user eval "Salut, comment ça va?" +nb assistant.yml your-user repl -rnb assistant.yml 6ea6c43c42a1c076b1e3c36fa349ac2c eval "Salut, comment ça va?" -rnb assistant.yml 6ea6c43c42a1c076b1e3c36fa349ac2c repl +nb assistant.yml 6ea6c43c42a1c076b1e3c36fa349ac2c eval "Salut, comment ça va?" +nb assistant.yml 6ea6c43c42a1c076b1e3c36fa349ac2c repl ``` +You can use a simple key, such as your username, or a randomly generated one: + +```ruby +require 'securerandom' + +SecureRandom.hex # => 6ea6c43c42a1c076b1e3c36fa349ac2c +``` + ### Library To use it as a library: ```ruby -require 'nano-bots/cli' # Equivalent to the `rnb` command. +require 'nano-bots/cli' # Equivalent to the `nb` command. ``` ```ruby require 'nano-bots' -NanoBot.cli # Equivalent to the `rnb` command. +NanoBot.cli # Equivalent to the `nb` command. NanoBot.repl(cartridge: 'cartridge.yml') # Starts a new REPL. bot = NanoBot.new(cartridge: 'cartridge.yml') @@ -126,24 +175,19 @@ Here's what a Nano Bot Cartridge looks like: ```yaml --- -name: Assistant -version: 0.0.1 +meta: + name: Nano Bot Name + author: Your Name + version: 0.0.1 behaviors: interaction: directive: You are a helpful assistant. -interfaces: - repl: - prompt: - - text: '🤖' - - text: '> ' - color: blue - provider: name: openai settings: model: gpt-3.5-turbo credentials: @@ -167,7 +211,7 @@ ```bash gem build nano-bots.gemspec gem signin -gem push nano-bots-0.0.1.gem +gem push nano-bots-0.0.2.gem ```