Uma implementação da especificação Nano Bots com suporte para Claude Antrópico, Coere Comando, Google Gemini, Maritaca AI Sabiá, AI Mistral AI, Ollama, Openai Chatgpt e outros, com apoio a ferramentas de chamada (funções).
gem install nano-bots -v 3.4.0nb - - eval " hello "
# => Hello! How may I assist you today? nb - - 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?
?> |
---
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 :
access-token : ENV/OPENAI_API_KEY
settings :
user : ENV/NANO_BOTS_END_USER
model : gpt-4o nb gpt.yml - eval " hi "
# => Hello! How can I assist you today? gem 'nano-bots' , '~> 3.4.0' require 'nano-bots'
bot = NanoBot . new ( cartridge : 'gpt.yml' )
bot . eval ( 'Hi!' ) do | content , fragment , finished , meta |
print fragment unless fragment . nil?
end
# => Hello! How can I assist you today? Após a instalação da gema, o comando binário nb estará disponível para o seu projeto ou sistema.
Exemplos de uso:
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?
?> |
Você pode sair do Repl digitando exit .
Todos os comandos acima são apátridas. Se você deseja preservar o histórico de suas interações, substitua a - por uma chave de estado:
nb assistant.yml your-user eval " Salut, comment ça va? "
nb assistant.yml your-user repl
nb assistant.yml 6ea6c43c42a1c076b1e3c36fa349ac2c eval " Salut, comment ça va? "
nb assistant.yml 6ea6c43c42a1c076b1e3c36fa349ac2c replVocê pode usar uma chave simples, como seu nome de usuário ou um gerado aleatoriamente:
require 'securerandom'
SecureRandom . hex # => 6ea6c43c42a1c076b1e3c36fa349ac2cnb - - cartridge
nb cartridge.yml - cartridge
nb - STATE-KEY state
nb cartridge.yml STATE-KEY statePara usá -lo como uma biblioteca:
require 'nano-bots/cli' # Equivalent to the `nb` command. require 'nano-bots'
NanoBot . cli # Equivalent to the `nb` command.
NanoBot . repl ( cartridge : 'cartridge.yml' ) # Starts a new REPL.
bot = NanoBot . new ( cartridge : 'cartridge.yml' )
bot = NanoBot . new (
cartridge : YAML . safe_load ( File . read ( 'cartridge.yml' ) , permitted_classes : [ Symbol ] )
)
bot = NanoBot . new (
cartridge : { ... } # Parsed Cartridge Hash
)
bot . eval ( 'Hello' )
bot . eval ( 'Hello' , as : 'eval' )
bot . eval ( 'Hello' , as : 'repl' )
# When stream is enabled and available:
bot . eval ( 'Hi!' ) do | content , fragment , finished , meta |
print fragment unless fragment . nil?
end
bot . repl # Starts a new REPL.
NanoBot . repl ( cartridge : 'cartridge.yml' , state : '6ea6c43c42a1c076b1e3c36fa349ac2c' )
bot = NanoBot . new ( cartridge : 'cartridge.yml' , state : '6ea6c43c42a1c076b1e3c36fa349ac2c' )
bot . prompt # => "?u001b[34m> u001b[0m"
bot . boot
bot . boot ( as : 'eval' )
bot . boot ( as : 'repl' )
bot . boot do | content , fragment , finished , meta |
print fragment unless fragment . nil?
end Para instalar a CLI em seu sistema:
gem install nano-bots -v 3.4.0 Para usá -lo em um projeto Ruby como uma biblioteca, adicione ao seu Gemfile :
gem 'nano-bots' , '~> 3.4.0' bundle install Para credenciais e configurações, as variáveis de ambiente relevantes podem ser definidas em seus arquivos .bashrc , .zshrc ou equivalente, bem como no seu contêiner do docker ou no ambiente do sistema. Exemplo:
export NANO_BOTS_ENCRYPTION_PASSWORD=UNSAFE
export NANO_BOTS_END_USER=your-user
# export NANO_BOTS_STATE_PATH=/home/user/.local/state/nano-bots
# export NANO_BOTS_CARTRIDGES_PATH=/home/user/.local/share/nano-bots/cartridges Como alternativa, se o seu diretório atual tiver um arquivo .env com as variáveis de ambiente, elas serão carregadas automaticamente:
NANO_BOTS_ENCRYPTION_PASSWORD=UNSAFE
NANO_BOTS_END_USER=your-user
# NANO_BOTS_STATE_PATH=/home/user/.local/state/nano-bots
# NANO_BOTS_CARTRIDGES_PATH=/home/user/.local/share/nano-bots/cartridgesVocê pode obter suas credenciais no console antrópico.
export ANTHROPIC_API_KEY=your-api-key Como alternativa, se o seu diretório atual tiver um arquivo .env com as variáveis de ambiente, elas serão carregadas automaticamente:
ANTHROPIC_API_KEY=your-api-key Crie um arquivo cartridge.yml :
---
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 : anthropic
credentials :
api-key : ENV/ANTHROPIC_API_KEY
settings :
model : claude-3-5-sonnet-20240620
max_tokens : 4096Leia a especificação completa para Claude Antrópico.
nb cartridge.yml - eval " Hello "
nb cartridge.yml - repl bot = NanoBot . new ( cartridge : 'cartridge.yml' )
puts bot . eval ( 'Hello' )Você pode obter suas credenciais na plataforma coere.
export COHERE_API_KEY=your-api-key Como alternativa, se o seu diretório atual tiver um arquivo .env com as variáveis de ambiente, elas serão carregadas automaticamente:
COHERE_API_KEY=your-api-key Crie um arquivo cartridge.yml :
---
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 : cohere
credentials :
api-key : ENV/COHERE_API_KEY
settings :
model : commandLeia a especificação completa para o comando coere.
nb cartridge.yml - eval " Hello "
nb cartridge.yml - repl bot = NanoBot . new ( cartridge : 'cartridge.yml' )
puts bot . eval ( 'Hello' )Você pode obter sua chave da API no Maritalk.
Inclua credenciais em citações únicas ao usar variáveis de ambiente para evitar problemas com o caractere $ na tecla API:
export MARITACA_API_KEY= ' 123...$a12... ' Como alternativa, se o seu diretório atual tiver um arquivo .env com as variáveis de ambiente, elas serão carregadas automaticamente:
MARITACA_API_KEY= ' 123...$a12... ' Crie um arquivo cartridge.yml :
---
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 : maritaca
credentials :
api-key : ENV/MARITACA_API_KEY
settings :
model : sabia-2-mediumLeia a especificação completa da IA Mistral.
nb cartridge.yml - eval " Hello "
nb cartridge.yml - repl bot = NanoBot . new ( cartridge : 'cartridge.yml' )
puts bot . eval ( 'Hello' )Você pode obter suas credenciais na plataforma Mistral.
export MISTRAL_API_KEY=your-api-key Como alternativa, se o seu diretório atual tiver um arquivo .env com as variáveis de ambiente, elas serão carregadas automaticamente:
MISTRAL_API_KEY=your-api-key Crie um arquivo cartridge.yml :
---
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 : mistral
credentials :
api-key : ENV/MISTRAL_API_KEY
settings :
model : mistral-medium-latestLeia a especificação completa da IA Mistral.
nb cartridge.yml - eval " Hello "
nb cartridge.yml - repl bot = NanoBot . new ( cartridge : 'cartridge.yml' )
puts bot . eval ( 'Hello' )Para instalar e configurar, siga as instruções no site da Ollama.
export OLLAMA_API_ADDRESS=http://localhost:11434 Como alternativa, se o seu diretório atual tiver um arquivo .env com as variáveis de ambiente, elas serão carregadas automaticamente:
OLLAMA_API_ADDRESS=http://localhost:11434 Crie um arquivo cartridge.yml :
---
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 : ollama
credentials :
address : ENV/OLLAMA_API_ADDRESS
settings :
model : llama3Leia a especificação completa para Ollama.
nb cartridge.yml - eval " Hello "
nb cartridge.yml - repl bot = NanoBot . new ( cartridge : 'cartridge.yml' )
puts bot . eval ( 'Hello' )Você pode obter suas credenciais na plataforma Openai.
export OPENAI_API_KEY=your-access-token Como alternativa, se o seu diretório atual tiver um arquivo .env com as variáveis de ambiente, elas serão carregadas automaticamente:
OPENAI_API_KEY=your-access-token Crie um arquivo cartridge.yml :
---
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 :
access-token : ENV/OPENAI_API_KEY
settings :
user : ENV/NANO_BOTS_END_USER
model : gpt-4oLeia a especificação completa para o OpenAi chatgpt.
nb cartridge.yml - eval " Hello "
nb cartridge.yml - repl bot = NanoBot . new ( cartridge : 'cartridge.yml' )
puts bot . eval ( 'Hello' )Clique aqui para aprender como obter suas credenciais.
export GOOGLE_API_KEY=your-api-key Como alternativa, se o seu diretório atual tiver um arquivo .env com as variáveis de ambiente, elas serão carregadas automaticamente:
GOOGLE_API_KEY=your-api-key Crie um arquivo cartridge.yml :
---
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 : google
credentials :
service : generative-language-api
api-key : ENV/GOOGLE_API_KEY
options :
model : gemini-proLeia a especificação completa do Google Gemini.
nb cartridge.yml - eval " Hello "
nb cartridge.yml - repl bot = NanoBot . new ( cartridge : 'cartridge.yml' )
puts bot . eval ( 'Hello' ) export GOOGLE_CREDENTIALS_FILE_PATH=google-credentials.json
export GOOGLE_REGION=us-east4 Como alternativa, se o seu diretório atual tiver um arquivo .env com as variáveis de ambiente, elas serão carregadas automaticamente:
GOOGLE_CREDENTIALS_FILE_PATH=google-credentials.json
GOOGLE_REGION=us-east4 Crie um arquivo cartridge.yml :
---
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 : google
credentials :
service : vertex-ai-api
file-path : ENV/GOOGLE_CREDENTIALS_FILE_PATH
region : ENV/GOOGLE_REGION
options :
model : gemini-proLeia a especificação completa do Google Gemini.
nb cartridge.yml - eval " Hello "
nb cartridge.yml - repl bot = NanoBot . new ( cartridge : 'cartridge.yml' )
puts bot . eval ( 'Hello' ) export GOOGLE_REGION=us-east4 Como alternativa, se o seu diretório atual tiver um arquivo .env com as variáveis de ambiente, elas serão carregadas automaticamente:
GOOGLE_REGION=us-east4 Crie um arquivo cartridge.yml :
---
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 : google
credentials :
service : vertex-ai-api
region : ENV/GOOGLE_REGION
options :
model : gemini-proLeia a especificação completa do Google Gemini.
nb cartridge.yml - eval " Hello "
nb cartridge.yml - repl bot = NanoBot . new ( cartridge : 'cartridge.yml' )
puts bot . eval ( 'Hello' ) Se você precisar definir manualmente um ID do projeto do Google:
export GOOGLE_PROJECT_ID=your-project-id Como alternativa, se o seu diretório atual tiver um arquivo .env com as variáveis de ambiente, elas serão carregadas automaticamente:
GOOGLE_PROJECT_ID=your-project-id Adicione ao seu arquivo cartridge.yml :
---
provider :
id : google
credentials :
project-id : ENV/GOOGLE_PROJECT_ID Verifique a especificação Nano Bots para saber mais sobre como criar cartuchos.
Experimente a clínica Nano Bots (editor ao vivo) para aprender sobre a criação de cartuchos.
Aqui está como se parece um cartucho de nano bot:
---
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 :
access-token : ENV/OPENAI_API_KEY
settings :
user : ENV/NANO_BOTS_END_USER
model : gpt-4oNano Bots também pode ser alimentado por ferramentas (funções):
---
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.
?> |
Para usar com êxito as ferramentas (funções), você precisa especificar um provedor e um modelo que as suporta. Até a redação deste readme, o provedor que os suporta é o OpenAI, com os modelos gpt-3.5-turbo-1106 e gpt-4o e Google, com o Serviço vertex-ai-api e o modelo gemini-pro . Outros provedores ainda não têm apoio.
Verifique a especificação Nano Bots para saber mais sobre as ferramentas (funções).
Estamos explorando o uso do Clojure através de Babashka, alimentado por Graalvm.
O apoio experimental ao clojure seria semelhante a Lua e erva -doce, usando o clojure: chave:
---
clojure : |
(-> (java.time.ZonedDateTime/now)
(.format (java.time.format.DateTimeFormatter/ofPattern "yyyy-MM-dd HH:mm"))
(clojure.string/trimr)) Ao contrário de Lua e Fennel, o suporte de clojure não está incorporado a essa implementação. Ele depende de ter o Babashka Binário ( bb ) disponível em seu ambiente, onde o Nano Bot está em execução.
Veja como instalar Babashka:
curl -s https://raw.githubusercontent.com/babashka/babashka/master/install | sudo bashEsta é uma verificação rápida para garantir que esteja disponível e funcionando:
bb -e ' {:hello "world"} '
# => {:hello "world"}Não temos suporte de sandbox para Clojure; Isso significa que você precisa desativá -lo para poder executar o código de clojure, o que você faz por sua conta e risco:
---
safety :
functions :
sandboxed : falseVocê pode explorar o mercado de bots Nano para descobrir novos cartuchos que podem ajudá -lo.
Cada provedor terá suas próprias políticas de segurança e privacidade (por exemplo, a política do OpenAI); portanto, você deve consultá -las para entender suas implicações.
Por padrão, todos os estados armazenados em seu disco local são criptografados.
Para garantir que a criptografia esteja segura, você precisa definir uma senha através da variável de ambiente NANO_BOTS_ENCRYPTION_PASSWORD . Caso contrário, embora o conteúdo seja criptografado, qualquer um poderá descriptografá -lo sem uma senha.
É importante observar que o conteúdo compartilhado com os fornecedores, apesar de ser transmitido por conexões seguras (por exemplo, HTTPS), será legível pelo provedor. Isso ocorre porque os provedores precisam operar nos dados, o que não seria possível se o conteúdo fosse criptografado além do HTTPS. Portanto, os dados armazenados localmente no seu sistema são criptografados, o que não significa que o que você compartilha com os provedores não será legível por eles.
Para garantir que sua criptografia e senha sejam configuradas corretamente, você pode executar o seguinte comando:
nb securityQue deve retornar:
✅ Encryption is enabled and properly working.
This means that your data is stored in an encrypted format on your disk.
✅ A password is being used for the encrypted content.
This means that only those who possess the password can decrypt your data.
Como alternativa, você pode verificar em tempo de execução com:
require 'nano-bots'
NanoBot . security . check
# => { encryption: true, password: true }Uma estratégia comum para implantar o Nano Bots em vários usuários por meio de APIs ou automações é atribuir um ID de usuário final exclusivo para cada usuário. Isso pode ser útil se algum de seus usuários violar a política do provedor devido ao comportamento abusivo. Ao fornecer o ID do usuário final, você pode desvendar que, embora a atividade tenha se originado da sua chave da API, as ações tomadas não foram as suas.
Você pode definir identificadores personalizados do usuário final da seguinte maneira:
NanoBot . new ( environment : { NANO_BOTS_END_USER : 'custom-user-a' } )
NanoBot . new ( environment : { NANO_BOTS_END_USER : 'custom-user-b' } )Considere que você tem o seguinte identificador do usuário final em seu ambiente:
NANO_BOTS_END_USER=your-nameOu uma configuração em seu cartucho:
---
provider :
id : openai
settings :
user : your-nameOs pedidos serão executados da seguinte forma:
NanoBot . new ( cartridge : '-' )
# { user: 'your-name' }
NanoBot . new ( cartridge : '-' , environment : { NANO_BOTS_END_USER : 'custom-user-a' } )
# { user: 'custom-user-a' }
NanoBot . new ( cartridge : '-' , environment : { NANO_BOTS_END_USER : 'custom-user-b' } )
# { user: 'custom-user-b' }Na verdade, para melhorar a privacidade, nem o usuário nem os identificadores de seus usuários serão compartilhados dessa maneira. Em vez disso, eles serão criptografados antes de serem compartilhados com o provedor:
'your-name'
# _O7OjYUESagb46YSeUeSfSMzoO1Yg0BZqpsAkPg4j62SeNYlgwq3kn51Ob2wmIehoA==
'custom-user-a'
# _O7OjYUESagb46YSeUeSfSMzoO1Yg0BZJgIXHCBHyADW-rn4IQr-s2RvP7vym8u5tnzYMIs=
'custom-user-b'
# _O7OjYUESagb46YSeUeSfSMzoO1Yg0BZkjUwCcsh9sVppKvYMhd2qGRvP7vym8u5tnzYMIg= Dessa maneira, você possui identificadores, se necessário, no entanto, seu conteúdo real só pode ser descriptografado por você através da sua senha segura ( NANO_BOTS_ENCRYPTION_PASSWORD ).
Para descriptografar seus dados criptografados, depois de configurar sua senha corretamente, você pode simplesmente executar:
require 'nano-bots'
NanoBot . security . decrypt ( '_O7OjYUESagb46YSeUeSfSMzoO1Yg0BZqpsAkPg4j62SeNYlgwq3kn51Ob2wmIehoA==' )
# your-name
NanoBot . security . decrypt ( '_O7OjYUESagb46YSeUeSfSMzoO1Yg0BZJgIXHCBHyADW-rn4IQr-s2RvP7vym8u5tnzYMIs=' )
# custom-user-a
NanoBot . security . decrypt ( '_O7OjYUESagb46YSeUeSfSMzoO1Yg0BZkjUwCcsh9sVppKvYMhd2qGRvP7vym8u5tnzYMIg=' )
# custom-user-bSe você perder sua senha, perderá seus dados. Não é possível recuperá -lo. Sério.
01.
Clone o repositório e copie o modelo de composição do docker:
git clone https://github.com/icebaker/ruby-nano-bots.git
cd ruby-nano-bots
cp docker-compose.example.yml docker-compose.yml
Defina suas credenciais do provedor e escolha o caminho desejado para os arquivos de cartuchos:
---
services :
nano-bots :
image : ruby:3.3.3-slim-bookworm
command : sh -c "apt-get update && apt-get install -y --no-install-recommends build-essential libffi-dev libsodium-dev lua5.4-dev curl && curl -s https://raw.githubusercontent.com/babashka/babashka/master/install | bash && gem install nano-bots -v 3.4.0 && bash"
environment :
ANTHROPIC_API_KEY : your-api-key
NANO_BOTS_ENCRYPTION_PASSWORD : UNSAFE
NANO_BOTS_END_USER : your-user
volumes :
- ./your-cartridges:/root/.local/share/nano-bots/cartridges
- ./your-state-path:/root/.local/state/nano-bots---
services :
nano-bots :
image : ruby:3.3.3-slim-bookworm
command : sh -c "apt-get update && apt-get install -y --no-install-recommends build-essential libffi-dev libsodium-dev lua5.4-dev curl && curl -s https://raw.githubusercontent.com/babashka/babashka/master/install | bash && gem install nano-bots -v 3.4.0 && bash"
environment :
COHERE_API_KEY : your-api-key
NANO_BOTS_ENCRYPTION_PASSWORD : UNSAFE
NANO_BOTS_END_USER : your-user
volumes :
- ./your-cartridges:/root/.local/share/nano-bots/cartridges
- ./your-state-path:/root/.local/state/nano-bots---
services :
nano-bots :
image : ruby:3.3.3-slim-bookworm
command : sh -c "apt-get update && apt-get install -y --no-install-recommends build-essential libffi-dev libsodium-dev lua5.4-dev curl && curl -s https://raw.githubusercontent.com/babashka/babashka/master/install | bash && gem install nano-bots -v 3.4.0 && bash"
environment :
MARITACA_API_KEY : your-api-key
NANO_BOTS_ENCRYPTION_PASSWORD : UNSAFE
NANO_BOTS_END_USER : your-user
volumes :
- ./your-cartridges:/root/.local/share/nano-bots/cartridges
- ./your-state-path:/root/.local/state/nano-bots---
services :
nano-bots :
image : ruby:3.3.3-slim-bookworm
command : sh -c "apt-get update && apt-get install -y --no-install-recommends build-essential libffi-dev libsodium-dev lua5.4-dev curl && curl -s https://raw.githubusercontent.com/babashka/babashka/master/install | bash && gem install nano-bots -v 3.4.0 && bash"
environment :
MISTRAL_API_KEY : your-api-key
NANO_BOTS_ENCRYPTION_PASSWORD : UNSAFE
NANO_BOTS_END_USER : your-user
volumes :
- ./your-cartridges:/root/.local/share/nano-bots/cartridges
- ./your-state-path:/root/.local/state/nano-bots Lembre -se de que o seu localhost é por padrão inacessível de dentro do Docker. Você precisa estabelecer redes entre contadores, usar o endereço do host ou usar a rede host, dependendo de onde o servidor Ollama está em execução e suas preferências.
---
services :
nano-bots :
image : ruby:3.3.3-slim-bookworm
command : sh -c "apt-get update && apt-get install -y --no-install-recommends build-essential libffi-dev libsodium-dev lua5.4-dev curl && curl -s https://raw.githubusercontent.com/babashka/babashka/master/install | bash && gem install nano-bots -v 3.4.0 && bash"
environment :
OLLAMA_API_ADDRESS : http://localhost:11434
NANO_BOTS_ENCRYPTION_PASSWORD : UNSAFE
NANO_BOTS_END_USER : your-user
volumes :
- ./your-cartridges:/root/.local/share/nano-bots/cartridges
- ./your-state-path:/root/.local/state/nano-bots
# If you are running the Ollama server on your localhost:
network_mode : host # WARNING: Be careful, this may be a security risk.---
services :
nano-bots :
image : ruby:3.3.3-slim-bookworm
command : sh -c "apt-get update && apt-get install -y --no-install-recommends build-essential libffi-dev libsodium-dev lua5.4-dev curl && curl -s https://raw.githubusercontent.com/babashka/babashka/master/install | bash && gem install nano-bots -v 3.4.0 && bash"
environment :
OPENAI_API_KEY : your-access-token
NANO_BOTS_ENCRYPTION_PASSWORD : UNSAFE
NANO_BOTS_END_USER : your-user
volumes :
- ./your-cartridges:/root/.local/share/nano-bots/cartridges
- ./your-state-path:/root/.local/state/nano-bots---
services :
nano-bots :
image : ruby:3.3.3-slim-bookworm
command : sh -c "apt-get update && apt-get install -y --no-install-recommends build-essential libffi-dev libsodium-dev lua5.4-dev curl && curl -s https://raw.githubusercontent.com/babashka/babashka/master/install | bash && gem install nano-bots -v 3.4.0 && bash"
environment :
GOOGLE_API_KEY : your-api-key
NANO_BOTS_ENCRYPTION_PASSWORD : UNSAFE
NANO_BOTS_END_USER : your-user
volumes :
- ./your-cartridges:/root/.local/share/nano-bots/cartridges
- ./your-state-path:/root/.local/state/nano-bots ---
services :
nano-bots :
image : ruby:3.3.3-slim-bookworm
command : sh -c "apt-get update && apt-get install -y --no-install-recommends build-essential libffi-dev libsodium-dev lua5.4-dev curl && curl -s https://raw.githubusercontent.com/babashka/babashka/master/install | bash && gem install nano-bots -v 3.4.0 && bash"
environment :
GOOGLE_CREDENTIALS_FILE_PATH : /root/.config/google-credentials.json
GOOGLE_REGION : us-east4
NANO_BOTS_ENCRYPTION_PASSWORD : UNSAFE
NANO_BOTS_END_USER : your-user
volumes :
- ./google-credentials.json:/root/.config/google-credentials.json
- ./your-cartridges:/root/.local/share/nano-bots/cartridges
- ./your-state-path:/root/.local/state/nano-bots ---
services :
nano-bots :
image : ruby:3.3.3-slim-bookworm
command : sh -c "apt-get update && apt-get install -y --no-install-recommends build-essential libffi-dev libsodium-dev lua5.4-dev curl && curl -s https://raw.githubusercontent.com/babashka/babashka/master/install | bash && gem install nano-bots -v 3.4.0 && bash"
environment :
GOOGLE_REGION : us-east4
NANO_BOTS_ENCRYPTION_PASSWORD : UNSAFE
NANO_BOTS_END_USER : your-user
volumes :
- ./your-cartridges:/root/.local/share/nano-bots/cartridges
- ./your-state-path:/root/.local/state/nano-bots Se você precisar definir manualmente um ID do projeto do Google:
environment :
GOOGLE_PROJECT_ID=your-project-idDigite o contêiner:
docker compose run nano-botsComece a jogar:
nb - - eval " hello "
nb - - repl
nb assistant.yml - eval " hello "
nb assistant.yml - repl Você pode sair do Repl digitando exit .
bundle
rubocop -A
rspec
bundle exec ruby spec/tasks/run-all-models.rb
bundle exec ruby spec/tasks/run-model.rb spec/data/cartridges/models/openai/gpt-4-turbo.yml
bundle exec ruby spec/tasks/run-model.rb spec/data/cartridges/models/openai/gpt-4-turbo.yml streamSe você enfrentar problemas de atualização das versões GEM:
bundle install --full-indexgem build nano-bots.gemspec
gem signin
gem push nano-bots-3.4.0.gem