Une implémentation de la spécification Nano Bots avec le support pour Anthropic Claude, Cohere Command, Google Gemini, Maritaca Ai Sabiá, Mistral AI, Olllama, Openai Chatgpt et autres, avec le support pour les outils d'appel (fonctions).
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? Après avoir installé la gemme, la commande nb binaire sera disponible pour votre projet ou système.
Exemples d'utilisation:
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?
?> |
Vous pouvez quitter le REP en tapant exit .
Toutes les commandes ci-dessus sont apatrides. Si vous souhaitez préserver l'historique de vos interactions, remplacez le - par une clé d'état:
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 replVous pouvez utiliser une clé simple, comme votre nom d'utilisateur, ou un nom généré de manière aléatoire:
require 'securerandom'
SecureRandom . hex # => 6ea6c43c42a1c076b1e3c36fa349ac2cnb - - cartridge
nb cartridge.yml - cartridge
nb - STATE-KEY state
nb cartridge.yml STATE-KEY statePour l'utiliser comme bibliothèque:
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 Pour installer la CLI sur votre système:
gem install nano-bots -v 3.4.0 Pour l'utiliser dans un projet Ruby en tant que bibliothèque, ajoutez à votre Gemfile :
gem 'nano-bots' , '~> 3.4.0' bundle install Pour les informations d'identification et les configurations, les variables d'environnement pertinentes peuvent être définies dans vos fichiers .bashrc , .zshrc ou équivalents, ainsi que dans votre conteneur Docker ou votre environnement système. Exemple:
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 Alternativement, si votre répertoire actuel a un fichier .env avec les variables d'environnement, ils seront automatiquement chargés:
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/cartridgesVous pouvez obtenir vos informations d'identification sur la console anthropique.
export ANTHROPIC_API_KEY=your-api-key Alternativement, si votre répertoire actuel a un fichier .env avec les variables d'environnement, ils seront automatiquement chargés:
ANTHROPIC_API_KEY=your-api-key Créer un fichier 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 : 4096Lisez la spécification complète pour Anthropic Claude.
nb cartridge.yml - eval " Hello "
nb cartridge.yml - repl bot = NanoBot . new ( cartridge : 'cartridge.yml' )
puts bot . eval ( 'Hello' )Vous pouvez obtenir vos informations d'identification sur la plate-forme Cohere.
export COHERE_API_KEY=your-api-key Alternativement, si votre répertoire actuel a un fichier .env avec les variables d'environnement, ils seront automatiquement chargés:
COHERE_API_KEY=your-api-key Créer un fichier 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 : commandLisez la spécification complète de la commande cohere.
nb cartridge.yml - eval " Hello "
nb cartridge.yml - repl bot = NanoBot . new ( cartridge : 'cartridge.yml' )
puts bot . eval ( 'Hello' )Vous pouvez obtenir votre clé API à Coritalk.
Encluant des informations d'identification dans des devis uniques lors de l'utilisation de variables d'environnement pour éviter les problèmes avec le caractère $ dans la clé API:
export MARITACA_API_KEY= ' 123...$a12... ' Alternativement, si votre répertoire actuel a un fichier .env avec les variables d'environnement, ils seront automatiquement chargés:
MARITACA_API_KEY= ' 123...$a12... ' Créer un fichier 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-mediumLisez la spécification complète de Mistral AI.
nb cartridge.yml - eval " Hello "
nb cartridge.yml - repl bot = NanoBot . new ( cartridge : 'cartridge.yml' )
puts bot . eval ( 'Hello' )Vous pouvez obtenir vos informations d'identification sur la plate-forme Mistral.
export MISTRAL_API_KEY=your-api-key Alternativement, si votre répertoire actuel a un fichier .env avec les variables d'environnement, ils seront automatiquement chargés:
MISTRAL_API_KEY=your-api-key Créer un fichier 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-latestLisez la spécification complète de Mistral AI.
nb cartridge.yml - eval " Hello "
nb cartridge.yml - repl bot = NanoBot . new ( cartridge : 'cartridge.yml' )
puts bot . eval ( 'Hello' )Pour installer et configurer, suivez les instructions sur le site Web d'Ollama.
export OLLAMA_API_ADDRESS=http://localhost:11434 Alternativement, si votre répertoire actuel a un fichier .env avec les variables d'environnement, ils seront automatiquement chargés:
OLLAMA_API_ADDRESS=http://localhost:11434 Créer un fichier 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 : llama3Lisez la spécification complète pour Olllama.
nb cartridge.yml - eval " Hello "
nb cartridge.yml - repl bot = NanoBot . new ( cartridge : 'cartridge.yml' )
puts bot . eval ( 'Hello' )Vous pouvez obtenir vos informations d'identification sur la plate-forme OpenAI.
export OPENAI_API_KEY=your-access-token Alternativement, si votre répertoire actuel a un fichier .env avec les variables d'environnement, ils seront automatiquement chargés:
OPENAI_API_KEY=your-access-token Créer un fichier 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-4oLisez la spécification complète pour Openai Chatgpt.
nb cartridge.yml - eval " Hello "
nb cartridge.yml - repl bot = NanoBot . new ( cartridge : 'cartridge.yml' )
puts bot . eval ( 'Hello' )Cliquez ici pour apprendre à obtenir vos informations d'identification.
export GOOGLE_API_KEY=your-api-key Alternativement, si votre répertoire actuel a un fichier .env avec les variables d'environnement, ils seront automatiquement chargés:
GOOGLE_API_KEY=your-api-key Créer un fichier 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-proLisez la spécification complète 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 Alternativement, si votre répertoire actuel a un fichier .env avec les variables d'environnement, ils seront automatiquement chargés:
GOOGLE_CREDENTIALS_FILE_PATH=google-credentials.json
GOOGLE_REGION=us-east4 Créer un fichier 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-proLisez la spécification complète 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 Alternativement, si votre répertoire actuel a un fichier .env avec les variables d'environnement, ils seront automatiquement chargés:
GOOGLE_REGION=us-east4 Créer un fichier 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-proLisez la spécification complète de Google Gemini.
nb cartridge.yml - eval " Hello "
nb cartridge.yml - repl bot = NanoBot . new ( cartridge : 'cartridge.yml' )
puts bot . eval ( 'Hello' ) Si vous devez définir manuellement un ID de projet Google:
export GOOGLE_PROJECT_ID=your-project-id Alternativement, si votre répertoire actuel a un fichier .env avec les variables d'environnement, ils seront automatiquement chargés:
GOOGLE_PROJECT_ID=your-project-id Ajouter à votre fichier cartridge.yml :
---
provider :
id : google
credentials :
project-id : ENV/GOOGLE_PROJECT_ID Vérifiez la spécification Nano Bots pour en savoir plus sur la façon de construire des cartouches.
Essayez la Nano Bots Clinic (éditeur en direct) pour découvrir la création de cartouches.
Voici à quoi ressemble une cartouche 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-4oLes nano bots peuvent également être alimentés par des outils (fonctions):
---
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.
?> |
Pour utiliser avec succès des outils (fonctions), vous devez spécifier un fournisseur et un modèle qui les prend en charge. Depuis la rédaction de ce lecture, le fournisseur qui les prend en charge est OpenAI, avec des modèles gpt-3.5-turbo-1106 et gpt-4o , et Google, avec le service vertex-ai-api et le modèle gemini-pro . D'autres fournisseurs n'ont pas encore de soutien.
Vérifiez la spécification Nano Bots pour en savoir plus sur les outils (fonctions).
Nous explorons l'utilisation de Clojure à travers Babashka, alimentée par Graalvm.
Le support expérimental de Clojure serait similaire à Lua et Fennel, en utilisant la clojure: Clé:
---
clojure : |
(-> (java.time.ZonedDateTime/now)
(.format (java.time.format.DateTimeFormatter/ofPattern "yyyy-MM-dd HH:mm"))
(clojure.string/trimr)) Contrairement à Lua et Fennel, le support de Clojure n'est pas intégré à cette implémentation. Il s'appuie sur le fait que le Babashka Binary ( bb ) soit disponible dans votre environnement où le nano bot est en cours d'exécution.
Voici comment installer Babashka:
curl -s https://raw.githubusercontent.com/babashka/babashka/master/install | sudo bashCeci est une vérification rapide pour s'assurer qu'elle est disponible et fonctionne:
bb -e ' {:hello "world"} '
# => {:hello "world"}Nous n'avons pas de prise en charge de Sandbox pour Clojure; Cela signifie que vous devez le désactiver pour pouvoir exécuter du code Clojure, que vous faites à vos propres risques:
---
safety :
functions :
sandboxed : falseVous pouvez explorer le marché Nano Bots pour découvrir de nouvelles cartouches qui peuvent vous aider.
Chaque fournisseur aura ses propres politiques de sécurité et de confidentialité (par exemple, la politique OpenAI), vous devez donc les consulter pour comprendre leurs implications.
Par défaut, tous les états stockés sur votre disque local sont chiffrés.
Pour vous assurer que le chiffrement est sécurisé, vous devez définir un mot de passe via la variable d'environnement NANO_BOTS_ENCRYPTION_PASSWORD . Sinon, bien que le contenu soit crypté, n'importe qui pourrait le déchiffrer sans mot de passe.
Il est important de noter que le contenu partagé avec les fournisseurs, bien qu'il soit transmis sur des connexions sécurisées (par exemple, HTTPS), sera lisible par le fournisseur. En effet, les fournisseurs doivent fonctionner sur les données, ce qui ne serait pas possible si le contenu était crypté au-delà de HTTPS. Ainsi, les données stockées localement sur votre système sont cryptées, ce qui ne signifie pas que ce que vous partagez avec les fournisseurs ne sera pas lisible par eux.
Pour vous assurer que votre chiffrement et votre mot de passe sont configurés correctement, vous pouvez exécuter la commande suivante:
nb securityQui devrait revenir:
✅ 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.
Alternativement, vous pouvez le vérifier au moment de l'exécution avec:
require 'nano-bots'
NanoBot . security . check
# => { encryption: true, password: true }Une stratégie courante pour déployer des nano-robots à plusieurs utilisateurs via des API ou des automatisations consiste à attribuer un ID d'utilisateur final unique pour chaque utilisateur. Cela peut être utile si l'un de vos utilisateurs viole la politique du fournisseur en raison d'un comportement abusif. En fournissant l'ID de l'utilisateur final, vous pouvez démêler que même si l'activité provenait de votre clé API, les actions prises n'étaient pas les vôtres.
Vous pouvez définir des identificateurs d'utilisateurs finaux personnalisés de la manière suivante:
NanoBot . new ( environment : { NANO_BOTS_END_USER : 'custom-user-a' } )
NanoBot . new ( environment : { NANO_BOTS_END_USER : 'custom-user-b' } )Considérez que vous avez l'identifiant de l'utilisateur final suivant dans votre environnement:
NANO_BOTS_END_USER=your-nameOu une configuration dans votre cartouche:
---
provider :
id : openai
settings :
user : your-nameLes demandes seront effectuées comme suit:
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 fait, pour améliorer la confidentialité, ni votre utilisateur ni les identificateurs de vos utilisateurs ne seront partagés de cette manière. Au lieu de cela, ils seront cryptés avant d'être partagés avec le fournisseur:
'your-name'
# _O7OjYUESagb46YSeUeSfSMzoO1Yg0BZqpsAkPg4j62SeNYlgwq3kn51Ob2wmIehoA==
'custom-user-a'
# _O7OjYUESagb46YSeUeSfSMzoO1Yg0BZJgIXHCBHyADW-rn4IQr-s2RvP7vym8u5tnzYMIs=
'custom-user-b'
# _O7OjYUESagb46YSeUeSfSMzoO1Yg0BZkjUwCcsh9sVppKvYMhd2qGRvP7vym8u5tnzYMIg= De cette manière, vous possédez des identifiants si nécessaire, cependant, leur contenu réel ne peut être décrypté que par vous via votre mot de passe sécurisé ( NANO_BOTS_ENCRYPTION_PASSWORD ).
Pour décrypter vos données cryptées, une fois que vous avez correctement configuré votre mot de passe, vous pouvez simplement exécuter:
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 vous perdez votre mot de passe, vous perdez vos données. Il n'est pas possible de le récupérer du tout. Pour de vrai.
01.ai yi, lmsys vicuna, meta llama et wizardlm sont des modèles open source qui sont soutenus via Olllama.
Clone le référentiel et copier le modèle de composition Docker:
git clone https://github.com/icebaker/ruby-nano-bots.git
cd ruby-nano-bots
cp docker-compose.example.yml docker-compose.yml
Définissez vos informations d'identification du fournisseur et choisissez votre chemin d'accès souhaité pour les fichiers de cartouches:
---
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 N'oubliez pas que votre localhost est par défaut inaccessible à l'intérieur de Docker. Vous devez soit établir un réseautage inter-container, utiliser l'adresse de l'hôte ou utiliser le réseau hôte, selon l'endroit où le serveur Olllama est en cours d'exécution et vos préférences.
---
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 vous devez définir manuellement un ID de projet Google:
environment :
GOOGLE_PROJECT_ID=your-project-idEntrez le conteneur:
docker compose run nano-botsCommencez à jouer:
nb - - eval " hello "
nb - - repl
nb assistant.yml - eval " hello "
nb assistant.yml - repl Vous pouvez quitter le REP en tapant 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 vous rencontrez des problèmes de mise à niveau des versions de gemmes:
bundle install --full-indexgem build nano-bots.gemspec
gem signin
gem push nano-bots-3.4.0.gem