Eine Implementierung der Nano Bots -Spezifikation mit Unterstützung für anthropische Claude, Cohere -Befehl, Google Gemini, Maritaca AI Sabiá, Mistral AI, Ollama, OpenAI Chatgpt und andere mit Unterstützung für Anrufe (Funktionen).
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? Nach der Installation des GEM steht der Befehl nb binär für Ihr Projekt oder System zur Verfügung.
Beispiele für die Nutzung:
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?
?> |
Sie können die Reply beenden, indem Sie exit eingeben.
Alle oben genannten Befehle sind staatenlos. Wenn Sie die Geschichte Ihrer Interaktionen bewahren möchten, ersetzen Sie die - durch einen Zustandsschlüssel:
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 replSie können einen einfachen Schlüssel wie Ihren Benutzernamen oder einen zufällig generierten Schlüssel verwenden:
require 'securerandom'
SecureRandom . hex # => 6ea6c43c42a1c076b1e3c36fa349ac2cnb - - cartridge
nb cartridge.yml - cartridge
nb - STATE-KEY state
nb cartridge.yml STATE-KEY stateUm es als Bibliothek zu verwenden:
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 So installieren Sie die CLI in Ihrem System:
gem install nano-bots -v 3.4.0 Um es in einem Ruby -Projekt als Bibliothek zu verwenden, fügen Sie Ihre Gemfile hinzu:
gem 'nano-bots' , '~> 3.4.0' bundle install Für Anmeldeinformationen und Konfigurationen können relevante Umgebungsvariablen in Ihren .bashrc , .zshrc oder äquivalenten Dateien sowie in Ihrem Docker -Container- oder Systemumfeld festgelegt werden. Beispiel:
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 Wenn Ihr aktuelles Verzeichnis eine .env -Datei mit den Umgebungsvariablen enthält, werden sie automatisch geladen:
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/cartridgesSie können Ihre Anmeldeinformationen für die anthropische Konsole erhalten.
export ANTHROPIC_API_KEY=your-api-key Wenn Ihr aktuelles Verzeichnis eine .env -Datei mit den Umgebungsvariablen enthält, werden sie automatisch geladen:
ANTHROPIC_API_KEY=your-api-key Erstellen Sie eine cartridge.yml -Datei:
---
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 : 4096Lesen Sie die vollständige Spezifikation für anthropische Claude.
nb cartridge.yml - eval " Hello "
nb cartridge.yml - repl bot = NanoBot . new ( cartridge : 'cartridge.yml' )
puts bot . eval ( 'Hello' )Sie können Ihre Anmeldeinformationen auf der Cohere -Plattform erhalten.
export COHERE_API_KEY=your-api-key Wenn Ihr aktuelles Verzeichnis eine .env -Datei mit den Umgebungsvariablen enthält, werden sie automatisch geladen:
COHERE_API_KEY=your-api-key Erstellen Sie eine cartridge.yml -Datei:
---
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 : commandLesen Sie die vollständige Spezifikation für Cohere -Befehl.
nb cartridge.yml - eval " Hello "
nb cartridge.yml - repl bot = NanoBot . new ( cartridge : 'cartridge.yml' )
puts bot . eval ( 'Hello' )Sie können Ihren API -Schlüssel bei Maritalk erhalten.
Schalten Sie Anmeldeinformationen in einzelnen Zitaten bei, wenn Sie Umgebungsvariablen verwenden, um Probleme mit dem $ -Scharakter im API -Schlüssel zu verhindern:
export MARITACA_API_KEY= ' 123...$a12... ' Wenn Ihr aktuelles Verzeichnis eine .env -Datei mit den Umgebungsvariablen enthält, werden sie automatisch geladen:
MARITACA_API_KEY= ' 123...$a12... ' Erstellen Sie eine cartridge.yml -Datei:
---
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-mediumLesen Sie die vollständige Spezifikation für Mistral AI.
nb cartridge.yml - eval " Hello "
nb cartridge.yml - repl bot = NanoBot . new ( cartridge : 'cartridge.yml' )
puts bot . eval ( 'Hello' )Sie können Ihre Anmeldeinformationen auf der Mistral -Plattform erhalten.
export MISTRAL_API_KEY=your-api-key Wenn Ihr aktuelles Verzeichnis eine .env -Datei mit den Umgebungsvariablen enthält, werden sie automatisch geladen:
MISTRAL_API_KEY=your-api-key Erstellen Sie eine cartridge.yml -Datei:
---
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-latestLesen Sie die vollständige Spezifikation für Mistral AI.
nb cartridge.yml - eval " Hello "
nb cartridge.yml - repl bot = NanoBot . new ( cartridge : 'cartridge.yml' )
puts bot . eval ( 'Hello' )Um zu installieren und einzurichten, befolgen Sie die Anweisungen auf der Ollama -Website.
export OLLAMA_API_ADDRESS=http://localhost:11434 Wenn Ihr aktuelles Verzeichnis eine .env -Datei mit den Umgebungsvariablen enthält, werden sie automatisch geladen:
OLLAMA_API_ADDRESS=http://localhost:11434 Erstellen Sie eine cartridge.yml -Datei:
---
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 : llama3Lesen Sie die vollständige Spezifikation für Ollama.
nb cartridge.yml - eval " Hello "
nb cartridge.yml - repl bot = NanoBot . new ( cartridge : 'cartridge.yml' )
puts bot . eval ( 'Hello' )Sie können Ihre Anmeldeinformationen auf der OpenAI -Plattform erhalten.
export OPENAI_API_KEY=your-access-token Wenn Ihr aktuelles Verzeichnis eine .env -Datei mit den Umgebungsvariablen enthält, werden sie automatisch geladen:
OPENAI_API_KEY=your-access-token Erstellen Sie eine cartridge.yml -Datei:
---
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-4oLesen Sie die vollständige Spezifikation für OpenAI -Chatgpt.
nb cartridge.yml - eval " Hello "
nb cartridge.yml - repl bot = NanoBot . new ( cartridge : 'cartridge.yml' )
puts bot . eval ( 'Hello' )Klicken Sie hier, um zu erfahren, wie Sie Ihre Anmeldeinformationen erhalten.
export GOOGLE_API_KEY=your-api-key Wenn Ihr aktuelles Verzeichnis eine .env -Datei mit den Umgebungsvariablen enthält, werden sie automatisch geladen:
GOOGLE_API_KEY=your-api-key Erstellen Sie eine cartridge.yml -Datei:
---
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-proLesen Sie die vollständige Spezifikation für 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 Wenn Ihr aktuelles Verzeichnis eine .env -Datei mit den Umgebungsvariablen enthält, werden sie automatisch geladen:
GOOGLE_CREDENTIALS_FILE_PATH=google-credentials.json
GOOGLE_REGION=us-east4 Erstellen Sie eine cartridge.yml -Datei:
---
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-proLesen Sie die vollständige Spezifikation für 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 Wenn Ihr aktuelles Verzeichnis eine .env -Datei mit den Umgebungsvariablen enthält, werden sie automatisch geladen:
GOOGLE_REGION=us-east4 Erstellen Sie eine cartridge.yml -Datei:
---
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-proLesen Sie die vollständige Spezifikation für Google Gemini.
nb cartridge.yml - eval " Hello "
nb cartridge.yml - repl bot = NanoBot . new ( cartridge : 'cartridge.yml' )
puts bot . eval ( 'Hello' ) Wenn Sie eine Google -Projekt -ID manuell festlegen müssen:
export GOOGLE_PROJECT_ID=your-project-id Wenn Ihr aktuelles Verzeichnis eine .env -Datei mit den Umgebungsvariablen enthält, werden sie automatisch geladen:
GOOGLE_PROJECT_ID=your-project-id Fügen Sie zu Ihrer cartridge.yml -Datei hinzu:
---
provider :
id : google
credentials :
project-id : ENV/GOOGLE_PROJECT_ID Überprüfen Sie die Nano Bots -Spezifikation, um mehr darüber zu erfahren, wie Sie Patronen bauen.
Probieren Sie die Nano Bots Clinic (Live -Editor), um Kartuschen zu erstellen.
So sieht eine Nano -Bot -Patrone aus:
---
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 können auch von Tools (Funktionen) betrieben werden:
---
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.
?> |
Um erfolgreich Tools (Funktionen) zu verwenden, müssen Sie einen Anbieter und ein Modell angeben, das diese unterstützt. Zum Zeitpunkt des Schreibens dieses Readme ist der Anbieter, der sie unterstützt, mit den Modellen gpt-3.5-turbo-1106 und gpt-4o und Google mit dem vertex-ai-api Dienst und dem Modell gemini-pro . Andere Anbieter haben noch keine Unterstützung.
Überprüfen Sie die Nano Bots -Spezifikation, um mehr über Tools (Funktionen) zu erfahren.
Wir untersuchen die Verwendung von Clojure durch Babashka, die von Graalvm angetrieben werden.
Die experimentelle Unterstützung für Clojure würde Lua und Fenchel unter Verwendung des clojure: Schlüssel:
---
clojure : |
(-> (java.time.ZonedDateTime/now)
(.format (java.time.format.DateTimeFormatter/ofPattern "yyyy-MM-dd HH:mm"))
(clojure.string/trimr)) Im Gegensatz zu Lua und Fenchel wird in dieser Implementierung keine Clojure -Unterstützung eingebettet . Es ist darauf angewiesen, dass der Babashka Binary ( bb ) in Ihrer Umgebung verfügbar ist, in dem der Nano -Bot ausgeführt wird.
So installieren Sie Babashka:
curl -s https://raw.githubusercontent.com/babashka/babashka/master/install | sudo bashDies ist eine kurze Überprüfung, um sicherzustellen, dass es verfügbar ist und funktioniert:
bb -e ' {:hello "world"} '
# => {:hello "world"}Wir haben keine Sandbox -Unterstützung für Clojure; Dies bedeutet, dass Sie es deaktivieren müssen, um den Clojure -Code auszuführen, den Sie auf eigenes Risiko ausführen:
---
safety :
functions :
sandboxed : falseSie können den Markt für Nano Bots erkunden, um neue Patronen zu entdecken, die Ihnen helfen können.
Jeder Anbieter verfügt über eigene Sicherheits- und Datenschutzrichtlinien (z. B. OpenAI -Richtlinien), sodass Sie sie konsultieren müssen, um ihre Auswirkungen zu verstehen.
Standardmäßig sind alle in Ihrer lokalen Festplatte gespeicherten Staaten verschlüsselt.
Um sicherzustellen, dass die Verschlüsselung sicher ist, müssen Sie ein Kennwort über die Variable NANO_BOTS_ENCRYPTION_PASSWORD definieren. Obwohl der Inhalt verschlüsselt wird, könnte jeder ihn ohne Passwort entschlüsseln.
Es ist wichtig zu beachten, dass der mit Anbietern geteilte Inhalt, obwohl er über sichere Verbindungen (z. B. HTTPS) übertragen wird, vom Anbieter lesbar ist. Dies liegt daran, dass Anbieter mit den Daten arbeiten müssen, was nicht möglich wäre, wenn der Inhalt über HTTPS hinaus verschlüsselt würde. Die lokal auf Ihrem System gespeicherten Daten sind also verschlüsselt, was nicht bedeutet, dass das, was Sie mit Anbietern teilen, nicht von ihnen lesbar ist.
Um sicherzustellen, dass Ihre Verschlüsselung und Ihr Passwort ordnungsgemäß konfiguriert sind, können Sie den folgenden Befehl ausführen:
nb securityDie zurückkehren sollte:
✅ 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.
Alternativ können Sie es zur Laufzeit überprüfen mit:
require 'nano-bots'
NanoBot . security . check
# => { encryption: true, password: true }Eine gemeinsame Strategie für die Bereitstellung von Nano-Bots für mehrere Benutzer über APIs oder Automatisierungen besteht darin, jedem Benutzer eine eindeutige Endbenutzer-ID zuzuweisen. Dies kann nützlich sein, wenn einer Ihrer Benutzer aufgrund von missbräuchlichem Verhalten gegen die Richtlinien des Anbieters verstößt. Durch die Bereitstellung der Endbenutzer-ID können Sie entwirren, dass die ergriffenen Aktionen, obwohl die Aktivität aus Ihrem API-Schlüssel stammt, nicht Ihre eigenen waren.
Sie können benutzerdefinierte Endbenutzer-Identifikatoren auf folgende Weise definieren:
NanoBot . new ( environment : { NANO_BOTS_END_USER : 'custom-user-a' } )
NanoBot . new ( environment : { NANO_BOTS_END_USER : 'custom-user-b' } )Bedenken Sie, dass Sie die folgende Endbenutzer-Kennung in Ihrer Umgebung haben:
NANO_BOTS_END_USER=your-nameOder eine Konfiguration in Ihrer Patrone:
---
provider :
id : openai
settings :
user : your-nameDie Anfragen werden wie folgt durchgeführt:
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' }Um die Privatsphäre zu verbessern, werden weder Ihr Benutzer noch die Bezeichner Ihrer Benutzer auf diese Weise geteilt. Stattdessen werden sie verschlüsselt, bevor sie mit dem Anbieter geteilt werden:
'your-name'
# _O7OjYUESagb46YSeUeSfSMzoO1Yg0BZqpsAkPg4j62SeNYlgwq3kn51Ob2wmIehoA==
'custom-user-a'
# _O7OjYUESagb46YSeUeSfSMzoO1Yg0BZJgIXHCBHyADW-rn4IQr-s2RvP7vym8u5tnzYMIs=
'custom-user-b'
# _O7OjYUESagb46YSeUeSfSMzoO1Yg0BZkjUwCcsh9sVppKvYMhd2qGRvP7vym8u5tnzYMIg= Auf diese Weise besitzen Sie bei Bedarf Kennungen. Ihr tatsächlicher Inhalt kann jedoch nur über Ihr sicheres Passwort entschlüsselt werden ( NANO_BOTS_ENCRYPTION_PASSWORD ).
Um Ihre verschlüsselten Daten zu entschlüsseln, können Sie einfach ausführen, sobald Sie Ihr Passwort ordnungsgemäß konfiguriert haben:
require 'nano-bots'
NanoBot . security . decrypt ( '_O7OjYUESagb46YSeUeSfSMzoO1Yg0BZqpsAkPg4j62SeNYlgwq3kn51Ob2wmIehoA==' )
# your-name
NanoBot . security . decrypt ( '_O7OjYUESagb46YSeUeSfSMzoO1Yg0BZJgIXHCBHyADW-rn4IQr-s2RvP7vym8u5tnzYMIs=' )
# custom-user-a
NanoBot . security . decrypt ( '_O7OjYUESagb46YSeUeSfSMzoO1Yg0BZkjUwCcsh9sVppKvYMhd2qGRvP7vym8u5tnzYMIg=' )
# custom-user-bWenn Sie Ihr Passwort verlieren, verlieren Sie Ihre Daten. Es ist überhaupt nicht möglich, es wiederherzustellen. Wirklich.
01.
Klonen Sie das Repository und kopieren Sie die Docker Compose -Vorlage:
git clone https://github.com/icebaker/ruby-nano-bots.git
cd ruby-nano-bots
cp docker-compose.example.yml docker-compose.yml
Stellen Sie Ihre Anmeldeinformationen für Anbieter ein und wählen Sie Ihren gewünschten Pfad für die Patronendateien aus:
---
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 Denken Sie daran, dass Ihr localhost standardmäßig von Inside Docker nicht zugänglich ist. Sie müssen entweder das Netzwerk zwischen den Container einrichten, die Adresse des Hosts verwenden oder das Host-Netzwerk verwenden, je nachdem, wo der OLLAMA-Server ausgeführt wird und Ihre Einstellungen.
---
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 Wenn Sie eine Google -Projekt -ID manuell festlegen müssen:
environment :
GOOGLE_PROJECT_ID=your-project-idGeben Sie den Container ein:
docker compose run nano-botsBeginnen Sie zu spielen:
nb - - eval " hello "
nb - - repl
nb assistant.yml - eval " hello "
nb assistant.yml - repl Sie können die Reply beenden, indem Sie exit eingeben.
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 streamWenn Sie mit Problemen mit dem Upgrade von Edelsteinversionen konfrontiert sind:
bundle install --full-indexgem build nano-bots.gemspec
gem signin
gem push nano-bots-3.4.0.gem