Una implementación de la especificación de Nano Bots con soporte para Claude antrópico, Comando Cohere, Google Gemini, Maritaca Ai Sabiá, Mistral AI, Ollama, OpenAi Chatgpt y otros, con soporte para las herramientas de llamadas (funciones).
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? Después de instalar la gema, el comando binario nb estará disponible para su proyecto o sistema.
Ejemplos 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?
?> |
Puede salir del replica escribiendo exit .
Todos los comandos anteriores son apátridas. Si desea preservar el historial de sus interacciones, reemplace el - con una clave 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 replPuede usar una clave simple, como su nombre de usuario o una generada al azar:
require 'securerandom'
SecureRandom . hex # => 6ea6c43c42a1c076b1e3c36fa349ac2cnb - - cartridge
nb cartridge.yml - cartridge
nb - STATE-KEY state
nb cartridge.yml STATE-KEY statePara usarlo como 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 la CLI en su sistema:
gem install nano-bots -v 3.4.0 Para usarlo en un proyecto de Ruby como biblioteca, agregue a su Gemfile :
gem 'nano-bots' , '~> 3.4.0' bundle install Para las credenciales y configuraciones, las variables de entorno relevantes se pueden establecer en sus archivos .bashrc , .zshrc o equivalentes, así como en su entorno de contenedor o sistema Docker. Ejemplo:
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 Alternativamente, si su directorio actual tiene un archivo .env con las variables de entorno, se cargarán automáticamente:
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/cartridgesPuede obtener sus credenciales en la consola antrópica.
export ANTHROPIC_API_KEY=your-api-key Alternativamente, si su directorio actual tiene un archivo .env con las variables de entorno, se cargarán automáticamente:
ANTHROPIC_API_KEY=your-api-key Cree un archivo 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 : 4096Lea la especificación completa de Claude antrópico.
nb cartridge.yml - eval " Hello "
nb cartridge.yml - repl bot = NanoBot . new ( cartridge : 'cartridge.yml' )
puts bot . eval ( 'Hello' )Puede obtener sus credenciales en la plataforma Cohere.
export COHERE_API_KEY=your-api-key Alternativamente, si su directorio actual tiene un archivo .env con las variables de entorno, se cargarán automáticamente:
COHERE_API_KEY=your-api-key Cree un archivo 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 : commandLea la especificación completa para el comando Cohere.
nb cartridge.yml - eval " Hello "
nb cartridge.yml - repl bot = NanoBot . new ( cartridge : 'cartridge.yml' )
puts bot . eval ( 'Hello' )Puede obtener su clave API en Maritalk.
Adjunte las credenciales en cotizaciones individuales al usar variables de entorno para evitar problemas con el personaje $ en la clave API:
export MARITACA_API_KEY= ' 123...$a12... ' Alternativamente, si su directorio actual tiene un archivo .env con las variables de entorno, se cargarán automáticamente:
MARITACA_API_KEY= ' 123...$a12... ' Cree un archivo 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-mediumLea la especificación completa para la IA Mistral.
nb cartridge.yml - eval " Hello "
nb cartridge.yml - repl bot = NanoBot . new ( cartridge : 'cartridge.yml' )
puts bot . eval ( 'Hello' )Puede obtener sus credenciales en la plataforma Mistral.
export MISTRAL_API_KEY=your-api-key Alternativamente, si su directorio actual tiene un archivo .env con las variables de entorno, se cargarán automáticamente:
MISTRAL_API_KEY=your-api-key Cree un archivo 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-latestLea la especificación completa para la IA Mistral.
nb cartridge.yml - eval " Hello "
nb cartridge.yml - repl bot = NanoBot . new ( cartridge : 'cartridge.yml' )
puts bot . eval ( 'Hello' )Para instalar y configurar, siga las instrucciones en el sitio web de Ollama.
export OLLAMA_API_ADDRESS=http://localhost:11434 Alternativamente, si su directorio actual tiene un archivo .env con las variables de entorno, se cargarán automáticamente:
OLLAMA_API_ADDRESS=http://localhost:11434 Cree un archivo 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 : llama3Lea la especificación completa de Ollama.
nb cartridge.yml - eval " Hello "
nb cartridge.yml - repl bot = NanoBot . new ( cartridge : 'cartridge.yml' )
puts bot . eval ( 'Hello' )Puede obtener sus credenciales en la plataforma Operai.
export OPENAI_API_KEY=your-access-token Alternativamente, si su directorio actual tiene un archivo .env con las variables de entorno, se cargarán automáticamente:
OPENAI_API_KEY=your-access-token Cree un archivo 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-4oLea la especificación completa de OpenAI CHATGPT.
nb cartridge.yml - eval " Hello "
nb cartridge.yml - repl bot = NanoBot . new ( cartridge : 'cartridge.yml' )
puts bot . eval ( 'Hello' )Haga clic aquí para aprender a obtener sus credenciales.
export GOOGLE_API_KEY=your-api-key Alternativamente, si su directorio actual tiene un archivo .env con las variables de entorno, se cargarán automáticamente:
GOOGLE_API_KEY=your-api-key Cree un archivo 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-proLea la especificación completa de 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 Alternativamente, si su directorio actual tiene un archivo .env con las variables de entorno, se cargarán automáticamente:
GOOGLE_CREDENTIALS_FILE_PATH=google-credentials.json
GOOGLE_REGION=us-east4 Cree un archivo 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-proLea la especificación completa de 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 Alternativamente, si su directorio actual tiene un archivo .env con las variables de entorno, se cargarán automáticamente:
GOOGLE_REGION=us-east4 Cree un archivo 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-proLea la especificación completa de Google Gemini.
nb cartridge.yml - eval " Hello "
nb cartridge.yml - repl bot = NanoBot . new ( cartridge : 'cartridge.yml' )
puts bot . eval ( 'Hello' ) Si necesita establecer manualmente una ID de proyecto de Google:
export GOOGLE_PROJECT_ID=your-project-id Alternativamente, si su directorio actual tiene un archivo .env con las variables de entorno, se cargarán automáticamente:
GOOGLE_PROJECT_ID=your-project-id Agregue a su archivo cartridge.yml :
---
provider :
id : google
credentials :
project-id : ENV/GOOGLE_PROJECT_ID Consulte la especificación de Nano Bots para obtener más información sobre cómo construir cartuchos.
Pruebe la clínica Nano Bots (editor en vivo) para aprender sobre la creación de cartuchos.
Así es como se ve un cartucho 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-4oLos bots nano también pueden ser alimentados por herramientas (funciones):
---
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 con éxito herramientas (funciones), debe especificar un proveedor y un modelo que las admite. A partir de la escritura de este ReadMe, el proveedor que los respalda es OpenAI, con los modelos gpt-3.5-turbo-1106 y gpt-4o , y Google, con el servicio vertex-ai-api y el modelo gemini-pro . Otros proveedores aún no tienen apoyo.
Consulte la especificación de Nano Bots para obtener más información sobre las herramientas (funciones).
Estamos explorando el uso de Clojure a través de Babashka, impulsado por Graalvm.
El apoyo experimental para Clojure sería similar a Lua y Fennel, usando clojure: Key:
---
clojure : |
(-> (java.time.ZonedDateTime/now)
(.format (java.time.format.DateTimeFormatter/ofPattern "yyyy-MM-dd HH:mm"))
(clojure.string/trimr)) A diferencia de Lua y el hinojo, el soporte de Clojure no está integrado en esta implementación. Se basa en tener el binario babashka ( bb ) disponible en su entorno donde se está ejecutando el nano bot.
Aquí está cómo instalar babashka:
curl -s https://raw.githubusercontent.com/babashka/babashka/master/install | sudo bashEsta es una verificación rápida para asegurarse de que esté disponible y funcione:
bb -e ' {:hello "world"} '
# => {:hello "world"}No tenemos soporte de sandbox para Clojure; Esto significa que debe deshabilitarlo para poder ejecutar el código Clojure, lo que hace bajo su propio riesgo:
---
safety :
functions :
sandboxed : falsePuede explorar el mercado de Nano Bots para descubrir nuevos cartuchos que pueden ayudarlo.
Cada proveedor tendrá sus propias políticas de seguridad y privacidad (por ejemplo, Política de OpenAI), por lo que debe consultarlas para comprender sus implicaciones.
Por defecto, todos los estados almacenados en su disco local están encriptados.
Para asegurarse de que el cifrado sea seguro, debe definir una contraseña a través de la variable de entorno NANO_BOTS_ENCRYPTION_PASSWORD . De lo contrario, aunque el contenido estará encriptado, cualquiera podría descifrarlo sin contraseña.
Es importante tener en cuenta que el contenido compartido con los proveedores, a pesar de ser transmitidos a través de conexiones seguras (por ejemplo, HTTPS), será legible por el proveedor. Esto se debe a que los proveedores deben operar en los datos, lo que no sería posible si el contenido se encriptara más allá de HTTPS. Por lo tanto, los datos almacenados localmente en su sistema están encriptados, lo que no significa que lo que comparte con los proveedores no será legible por ellos.
Para asegurarse de que su cifrado y contraseña estén configurados correctamente, puede ejecutar el siguiente comando:
nb securityQue debería regresar:
✅ 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.
Alternativamente, puede verificarlo en tiempo de ejecución con:
require 'nano-bots'
NanoBot . security . check
# => { encryption: true, password: true }Una estrategia común para implementar nano bots a múltiples usuarios a través de API o automatizaciones es asignar una ID de usuario final única para cada usuario. Esto puede ser útil si alguno de sus usuarios viola la política del proveedor debido a un comportamiento abusivo. Al proporcionar la identificación del usuario final, puede desentrañar que a pesar de que la actividad se originó desde su clave API, las acciones tomadas no fueron suyas.
Puede definir identificadores de usuario final personalizado de la siguiente manera:
NanoBot . new ( environment : { NANO_BOTS_END_USER : 'custom-user-a' } )
NanoBot . new ( environment : { NANO_BOTS_END_USER : 'custom-user-b' } )Considere que tiene el siguiente identificador de usuario final en su entorno:
NANO_BOTS_END_USER=your-nameO una configuración en su cartucho:
---
provider :
id : openai
settings :
user : your-nameLas solicitudes se realizarán de la siguiente manera:
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' }En realidad, para mejorar la privacidad, ni los identificadores de su usuario ni de sus usuarios se compartirán de esta manera. En cambio, se encriptarán antes de ser compartidos con el proveedor:
'your-name'
# _O7OjYUESagb46YSeUeSfSMzoO1Yg0BZqpsAkPg4j62SeNYlgwq3kn51Ob2wmIehoA==
'custom-user-a'
# _O7OjYUESagb46YSeUeSfSMzoO1Yg0BZJgIXHCBHyADW-rn4IQr-s2RvP7vym8u5tnzYMIs=
'custom-user-b'
# _O7OjYUESagb46YSeUeSfSMzoO1Yg0BZkjUwCcsh9sVppKvYMhd2qGRvP7vym8u5tnzYMIg= De esta manera, posee identificadores si es necesario, sin embargo, su contenido real solo puede ser descifrado por usted a través de su contraseña segura ( NANO_BOTS_ENCRYPTION_PASSWORD ).
Para descifrar sus datos cifrados, una vez que haya configurado correctamente su contraseña, simplemente puede ejecutar:
require 'nano-bots'
NanoBot . security . decrypt ( '_O7OjYUESagb46YSeUeSfSMzoO1Yg0BZqpsAkPg4j62SeNYlgwq3kn51Ob2wmIehoA==' )
# your-name
NanoBot . security . decrypt ( '_O7OjYUESagb46YSeUeSfSMzoO1Yg0BZJgIXHCBHyADW-rn4IQr-s2RvP7vym8u5tnzYMIs=' )
# custom-user-a
NanoBot . security . decrypt ( '_O7OjYUESagb46YSeUeSfSMzoO1Yg0BZkjUwCcsh9sVppKvYMhd2qGRvP7vym8u5tnzYMIg=' )
# custom-user-bSi pierde su contraseña, pierde sus datos. No es posible recuperarlo en absoluto. Verdadero.
01.ai Yi, LMSYS Vicuna, Meta Llama y Wizardlm son modelos de código abierto que se apoyan a través de Ollama.
Clone el repositorio y copie la plantilla de composición de Docker:
git clone https://github.com/icebaker/ruby-nano-bots.git
cd ruby-nano-bots
cp docker-compose.example.yml docker-compose.yml
Establezca las credenciales de su proveedor y elija su ruta deseada para los archivos 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 Recuerde que su localhost es, por defecto, inaccesible desde el interior de Docker. Debe establecer la red entre contenedores, usar la dirección del host o usar la red de host, dependiendo de dónde se esté ejecutando el servidor Ollama y sus preferencias.
---
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 Si necesita establecer manualmente una ID de proyecto de Google:
environment :
GOOGLE_PROJECT_ID=your-project-idIngrese el contenedor:
docker compose run nano-botsEmpiece a jugar:
nb - - eval " hello "
nb - - repl
nb assistant.yml - eval " hello "
nb assistant.yml - repl Puede salir del replica escribiendo 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 streamSi enfrenta problemas actualizando versiones de GEM:
bundle install --full-indexgem build nano-bots.gemspec
gem signin
gem push nano-bots-3.4.0.gem