nano-bots 3.0.1 → 3.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Gemfile +3 -3
- data/Gemfile.lock +80 -65
- data/README.md +63 -63
- data/components/providers/google.rb +32 -16
- data/components/providers/maritaca.rb +7 -6
- data/components/providers/openai.rb +5 -1
- data/docker-compose.example.yml +2 -2
- data/logic/cartridge/parser.rb +1 -1
- data/nano-bots.gemspec +14 -10
- data/static/cartridges/baseline.yml +1 -1
- data/static/fennel/fennel.lua +863 -807
- data/static/gem.rb +1 -1
- metadata +78 -54
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f6ee7d534a42c2e11bc5a66d81b4a3c6baad7bb9e72ceb8ac4ad4735ac2f9d78
|
4
|
+
data.tar.gz: 8cfaf1303ad1f65b4b50f99c860252c93d2817d6e0a5b3d3ee978d08397ebaa8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 114798cb6c752de8d01297c5a6359b25c7d80d6b63b07a5c47f5ed4d677c0454ee0848ba412251f6ef81db02efd3ce285d6aaa08908ff3143d27d80d84315d16
|
7
|
+
data.tar.gz: 6fcbd9a54554b23aff0767fe002e6435d2f09007bf7190c98179b6998512fa003898403a59f025e4c97204e6128877dde52dd48e17b986ab9b8cd1a568dc988f
|
data/Gemfile
CHANGED
@@ -6,7 +6,7 @@ gemspec
|
|
6
6
|
|
7
7
|
group :test, :development do
|
8
8
|
gem 'pry-byebug', '~> 3.10', '>= 3.10.1'
|
9
|
-
gem 'rspec', '~> 3.
|
10
|
-
gem 'rubocop', '~> 1.
|
11
|
-
gem 'rubocop-rspec', '~>
|
9
|
+
gem 'rspec', '~> 3.13'
|
10
|
+
gem 'rubocop', '~> 1.64', '>= 1.64.1'
|
11
|
+
gem 'rubocop-rspec', '~> 3.0', '>= 3.0.1'
|
12
12
|
end
|
data/Gemfile.lock
CHANGED
@@ -1,75 +1,92 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
nano-bots (3.0
|
4
|
+
nano-bots (3.2.0)
|
5
5
|
babosa (~> 2.0)
|
6
|
-
cohere-ai (~> 1.
|
7
|
-
concurrent-ruby (~> 1.
|
8
|
-
dotenv (~>
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
6
|
+
cohere-ai (~> 1.1)
|
7
|
+
concurrent-ruby (~> 1.3, >= 1.3.3)
|
8
|
+
dotenv (~> 3.1, >= 3.1.2)
|
9
|
+
faraday (~> 2.9, >= 2.9.2)
|
10
|
+
faraday-typhoeus (~> 1.1)
|
11
|
+
gemini-ai (~> 4.0)
|
12
|
+
maritaca-ai (~> 1.2)
|
13
|
+
mistral-ai (~> 1.2)
|
14
|
+
ollama-ai (~> 1.2, >= 1.2.1)
|
13
15
|
pry (~> 0.14.2)
|
14
16
|
rainbow (~> 3.1, >= 3.1.1)
|
15
17
|
rbnacl (~> 7.1, >= 7.1.1)
|
16
18
|
redcarpet (~> 3.6)
|
17
|
-
ruby-openai (~>
|
18
|
-
sweet-moon (~>
|
19
|
+
ruby-openai (~> 7.1)
|
20
|
+
sweet-moon (~> 1.0)
|
21
|
+
typhoeus (~> 1.4, >= 1.4.1)
|
19
22
|
|
20
23
|
GEM
|
21
24
|
remote: https://rubygems.org/
|
22
25
|
specs:
|
23
|
-
addressable (2.8.
|
24
|
-
public_suffix (>= 2.0.2, <
|
26
|
+
addressable (2.8.7)
|
27
|
+
public_suffix (>= 2.0.2, < 7.0)
|
25
28
|
ast (2.4.2)
|
26
29
|
babosa (2.0.0)
|
30
|
+
base64 (0.2.0)
|
27
31
|
byebug (11.1.3)
|
28
32
|
coderay (1.1.3)
|
29
|
-
cohere-ai (1.0
|
33
|
+
cohere-ai (1.1.0)
|
30
34
|
faraday (~> 2.9)
|
31
|
-
|
32
|
-
|
33
|
-
|
35
|
+
faraday-typhoeus (~> 1.1)
|
36
|
+
concurrent-ruby (1.3.3)
|
37
|
+
diff-lcs (1.5.1)
|
38
|
+
dotenv (3.1.2)
|
39
|
+
ethon (0.16.0)
|
40
|
+
ffi (>= 1.15.0)
|
34
41
|
event_stream_parser (1.0.0)
|
35
|
-
faraday (2.9.
|
42
|
+
faraday (2.9.2)
|
36
43
|
faraday-net_http (>= 2.0, < 3.2)
|
37
44
|
faraday-multipart (1.0.4)
|
38
45
|
multipart-post (~> 2)
|
39
46
|
faraday-net_http (3.1.0)
|
40
47
|
net-http
|
41
|
-
|
42
|
-
|
48
|
+
faraday-typhoeus (1.1.0)
|
49
|
+
faraday (~> 2.0)
|
50
|
+
typhoeus (~> 1.4)
|
51
|
+
ffi (1.17.0)
|
52
|
+
gemini-ai (4.0.0)
|
43
53
|
event_stream_parser (~> 1.0)
|
44
54
|
faraday (~> 2.9)
|
55
|
+
faraday-typhoeus (~> 1.1)
|
45
56
|
googleauth (~> 1.8)
|
46
|
-
|
57
|
+
typhoeus (~> 1.4, >= 1.4.1)
|
58
|
+
google-cloud-env (2.1.1)
|
47
59
|
faraday (>= 1.0, < 3.a)
|
48
|
-
googleauth (1.
|
60
|
+
googleauth (1.11.0)
|
49
61
|
faraday (>= 1.0, < 3.a)
|
50
62
|
google-cloud-env (~> 2.1)
|
51
63
|
jwt (>= 1.4, < 3.0)
|
52
64
|
multi_json (~> 1.11)
|
53
65
|
os (>= 0.9, < 2.0)
|
54
66
|
signet (>= 0.16, < 2.a)
|
55
|
-
json (2.7.
|
56
|
-
jwt (2.
|
67
|
+
json (2.7.2)
|
68
|
+
jwt (2.8.2)
|
69
|
+
base64
|
57
70
|
language_server-protocol (3.17.0.3)
|
58
|
-
maritaca-ai (1.0
|
71
|
+
maritaca-ai (1.2.0)
|
72
|
+
event_stream_parser (~> 1.0)
|
59
73
|
faraday (~> 2.9)
|
60
|
-
|
61
|
-
|
74
|
+
faraday-typhoeus (~> 1.1)
|
75
|
+
method_source (1.1.0)
|
76
|
+
mistral-ai (1.2.0)
|
62
77
|
event_stream_parser (~> 1.0)
|
63
78
|
faraday (~> 2.9)
|
79
|
+
faraday-typhoeus (~> 1.1)
|
64
80
|
multi_json (1.15.0)
|
65
|
-
multipart-post (2.
|
81
|
+
multipart-post (2.4.1)
|
66
82
|
net-http (0.4.1)
|
67
83
|
uri
|
68
|
-
ollama-ai (1.
|
84
|
+
ollama-ai (1.2.1)
|
69
85
|
faraday (~> 2.9)
|
86
|
+
faraday-typhoeus (~> 1.1)
|
70
87
|
os (1.1.4)
|
71
|
-
parallel (1.
|
72
|
-
parser (3.3.0
|
88
|
+
parallel (1.25.1)
|
89
|
+
parser (3.3.3.0)
|
73
90
|
ast (~> 2.4.1)
|
74
91
|
racc
|
75
92
|
pry (0.14.2)
|
@@ -78,60 +95,58 @@ GEM
|
|
78
95
|
pry-byebug (3.10.1)
|
79
96
|
byebug (~> 11.0)
|
80
97
|
pry (>= 0.13, < 0.15)
|
81
|
-
public_suffix (
|
82
|
-
racc (1.
|
98
|
+
public_suffix (6.0.0)
|
99
|
+
racc (1.8.0)
|
83
100
|
rainbow (3.1.1)
|
84
101
|
rbnacl (7.1.1)
|
85
102
|
ffi
|
86
103
|
redcarpet (3.6.0)
|
87
|
-
regexp_parser (2.9.
|
88
|
-
rexml (3.
|
89
|
-
|
90
|
-
|
91
|
-
rspec-
|
92
|
-
rspec-
|
93
|
-
|
94
|
-
|
95
|
-
|
104
|
+
regexp_parser (2.9.2)
|
105
|
+
rexml (3.3.0)
|
106
|
+
strscan
|
107
|
+
rspec (3.13.0)
|
108
|
+
rspec-core (~> 3.13.0)
|
109
|
+
rspec-expectations (~> 3.13.0)
|
110
|
+
rspec-mocks (~> 3.13.0)
|
111
|
+
rspec-core (3.13.0)
|
112
|
+
rspec-support (~> 3.13.0)
|
113
|
+
rspec-expectations (3.13.1)
|
96
114
|
diff-lcs (>= 1.2.0, < 2.0)
|
97
|
-
rspec-support (~> 3.
|
98
|
-
rspec-mocks (3.
|
115
|
+
rspec-support (~> 3.13.0)
|
116
|
+
rspec-mocks (3.13.1)
|
99
117
|
diff-lcs (>= 1.2.0, < 2.0)
|
100
|
-
rspec-support (~> 3.
|
101
|
-
rspec-support (3.
|
102
|
-
rubocop (1.
|
118
|
+
rspec-support (~> 3.13.0)
|
119
|
+
rspec-support (3.13.1)
|
120
|
+
rubocop (1.64.1)
|
103
121
|
json (~> 2.3)
|
104
122
|
language_server-protocol (>= 3.17.0)
|
105
123
|
parallel (~> 1.10)
|
106
|
-
parser (>= 3.
|
124
|
+
parser (>= 3.3.0.2)
|
107
125
|
rainbow (>= 2.2.2, < 4.0)
|
108
126
|
regexp_parser (>= 1.8, < 3.0)
|
109
127
|
rexml (>= 3.2.5, < 4.0)
|
110
|
-
rubocop-ast (>= 1.
|
128
|
+
rubocop-ast (>= 1.31.1, < 2.0)
|
111
129
|
ruby-progressbar (~> 1.7)
|
112
130
|
unicode-display_width (>= 2.4.0, < 3.0)
|
113
|
-
rubocop-ast (1.
|
114
|
-
parser (>= 3.
|
115
|
-
rubocop-
|
116
|
-
rubocop (~> 1.
|
117
|
-
|
118
|
-
rubocop (~> 1.41)
|
119
|
-
rubocop-rspec (2.26.1)
|
120
|
-
rubocop (~> 1.40)
|
121
|
-
rubocop-capybara (~> 2.17)
|
122
|
-
rubocop-factory_bot (~> 2.22)
|
123
|
-
ruby-openai (6.3.1)
|
131
|
+
rubocop-ast (1.31.3)
|
132
|
+
parser (>= 3.3.1.0)
|
133
|
+
rubocop-rspec (3.0.1)
|
134
|
+
rubocop (~> 1.61)
|
135
|
+
ruby-openai (7.1.0)
|
124
136
|
event_stream_parser (>= 0.3.0, < 2.0.0)
|
125
137
|
faraday (>= 1)
|
126
138
|
faraday-multipart (>= 1)
|
127
139
|
ruby-progressbar (1.13.0)
|
128
|
-
signet (0.
|
140
|
+
signet (0.19.0)
|
129
141
|
addressable (~> 2.8)
|
130
142
|
faraday (>= 0.17.5, < 3.a)
|
131
143
|
jwt (>= 1.5, < 3.0)
|
132
144
|
multi_json (~> 1.10)
|
133
|
-
|
134
|
-
|
145
|
+
strscan (3.1.0)
|
146
|
+
sweet-moon (1.0.0)
|
147
|
+
ffi (~> 1.17)
|
148
|
+
typhoeus (1.4.1)
|
149
|
+
ethon (>= 0.9.0)
|
135
150
|
unicode-display_width (2.5.0)
|
136
151
|
uri (0.13.0)
|
137
152
|
|
@@ -141,9 +156,9 @@ PLATFORMS
|
|
141
156
|
DEPENDENCIES
|
142
157
|
nano-bots!
|
143
158
|
pry-byebug (~> 3.10, >= 3.10.1)
|
144
|
-
rspec (~> 3.
|
145
|
-
rubocop (~> 1.
|
146
|
-
rubocop-rspec (~>
|
159
|
+
rspec (~> 3.13)
|
160
|
+
rubocop (~> 1.64, >= 1.64.1)
|
161
|
+
rubocop-rspec (~> 3.0, >= 3.0.1)
|
147
162
|
|
148
163
|
BUNDLED WITH
|
149
164
|
2.4.22
|
data/README.md
CHANGED
@@ -9,7 +9,7 @@ https://user-images.githubusercontent.com/113217272/238141567-c58a240c-7b67-4b3b
|
|
9
9
|
## TL;DR and Quick Start
|
10
10
|
|
11
11
|
```sh
|
12
|
-
gem install nano-bots -v 3.0
|
12
|
+
gem install nano-bots -v 3.2.0
|
13
13
|
```
|
14
14
|
|
15
15
|
```bash
|
@@ -50,7 +50,7 @@ provider:
|
|
50
50
|
access-token: ENV/OPENAI_API_KEY
|
51
51
|
settings:
|
52
52
|
user: ENV/NANO_BOTS_END_USER
|
53
|
-
model: gpt-
|
53
|
+
model: gpt-4o
|
54
54
|
```
|
55
55
|
|
56
56
|
```bash
|
@@ -59,7 +59,7 @@ nb gpt.yml - eval "hi"
|
|
59
59
|
```
|
60
60
|
|
61
61
|
```ruby
|
62
|
-
gem 'nano-bots', '~> 3.0
|
62
|
+
gem 'nano-bots', '~> 3.2.0'
|
63
63
|
```
|
64
64
|
|
65
65
|
```ruby
|
@@ -76,43 +76,43 @@ end
|
|
76
76
|
|
77
77
|
- [TL;DR and Quick Start](#tldr-and-quick-start)
|
78
78
|
- [Usage](#usage)
|
79
|
-
|
80
|
-
|
81
|
-
|
79
|
+
- [Command Line](#command-line)
|
80
|
+
- [Debugging](#debugging)
|
81
|
+
- [Library](#library)
|
82
82
|
- [Setup](#setup)
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
83
|
+
- [Cohere Command](#cohere-command)
|
84
|
+
- [Maritaca AI MariTalk](#maritaca-ai-maritalk)
|
85
|
+
- [Mistral AI](#mistral-ai)
|
86
|
+
- [Ollama](#ollama)
|
87
|
+
- [OpenAI ChatGPT](#openai-chatgpt)
|
88
|
+
- [Google Gemini](#google-gemini)
|
89
|
+
- [Option 1: API Key (Generative Language API)](#option-1-api-key-generative-language-api)
|
90
|
+
- [Option 2: Service Account Credentials File (Vertex AI API)](#option-2-service-account-credentials-file-vertex-ai-api)
|
91
|
+
- [Option 3: Application Default Credentials (Vertex AI API)](#option-3-application-default-credentials-vertex-ai-api)
|
92
|
+
- [Custom Project ID](#custom-project-id)
|
93
93
|
- [Cartridges](#cartridges)
|
94
|
-
|
95
|
-
|
96
|
-
|
94
|
+
- [Tools (Functions)](#tools-functions)
|
95
|
+
- [Experimental Clojure Support](#experimental-clojure-support)
|
96
|
+
- [Marketplace](#marketplace)
|
97
97
|
- [Security and Privacy](#security-and-privacy)
|
98
|
-
|
99
|
-
|
100
|
-
|
98
|
+
- [Cryptography](#cryptography)
|
99
|
+
- [End-user IDs](#end-user-ids)
|
100
|
+
- [Decrypting](#decrypting)
|
101
101
|
- [Supported Providers](#supported-providers)
|
102
102
|
- [Docker](#docker)
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
103
|
+
- [Cohere Command Container](#cohere-command-container)
|
104
|
+
- [Maritaca AI MariTalk Container](#maritaca-ai-maritalk-container)
|
105
|
+
- [Mistral AI Container](#mistral-ai-container)
|
106
|
+
- [Ollama Container](#ollama-container)
|
107
|
+
- [OpenAI ChatGPT Container](#openai-chatgpt-container)
|
108
|
+
- [Google Gemini Container](#google-gemini-container)
|
109
|
+
- [Option 1: API Key (Generative Language API) Config](#option-1-api-key-generative-language-api-config)
|
110
|
+
- [Option 2: Service Account Credentials File (Vertex AI API) Config](#option-2-service-account-credentials-file-vertex-ai-api-config)
|
111
|
+
- [Option 3: Application Default Credentials (Vertex AI API) Config](#option-3-application-default-credentials-vertex-ai-api-config)
|
112
|
+
- [Custom Project ID Config](#custom-project-id-config)
|
113
|
+
- [Running the Container](#running-the-container)
|
114
114
|
- [Development](#development)
|
115
|
-
|
115
|
+
- [Publish to RubyGems](#publish-to-rubygems)
|
116
116
|
|
117
117
|
## Usage
|
118
118
|
|
@@ -250,13 +250,13 @@ end
|
|
250
250
|
To install the CLI on your system:
|
251
251
|
|
252
252
|
```sh
|
253
|
-
gem install nano-bots -v 3.0
|
253
|
+
gem install nano-bots -v 3.2.0
|
254
254
|
```
|
255
255
|
|
256
256
|
To use it in a Ruby project as a library, add to your `Gemfile`:
|
257
257
|
|
258
258
|
```ruby
|
259
|
-
gem 'nano-bots', '~> 3.0
|
259
|
+
gem 'nano-bots', '~> 3.2.0'
|
260
260
|
```
|
261
261
|
|
262
262
|
```sh
|
@@ -372,7 +372,7 @@ provider:
|
|
372
372
|
credentials:
|
373
373
|
api-key: ENV/MARITACA_API_KEY
|
374
374
|
settings:
|
375
|
-
model:
|
375
|
+
model: sabia-2-medium
|
376
376
|
```
|
377
377
|
|
378
378
|
Read the [full specification](https://spec.nbots.io/#/README?id=mistral-ai) for Mistral AI.
|
@@ -424,7 +424,7 @@ provider:
|
|
424
424
|
credentials:
|
425
425
|
api-key: ENV/MISTRAL_API_KEY
|
426
426
|
settings:
|
427
|
-
model: mistral-medium
|
427
|
+
model: mistral-medium-latest
|
428
428
|
```
|
429
429
|
|
430
430
|
Read the [full specification](https://spec.nbots.io/#/README?id=mistral-ai) for Mistral AI.
|
@@ -476,7 +476,7 @@ provider:
|
|
476
476
|
credentials:
|
477
477
|
address: ENV/OLLAMA_API_ADDRESS
|
478
478
|
settings:
|
479
|
-
model:
|
479
|
+
model: llama3
|
480
480
|
```
|
481
481
|
|
482
482
|
Read the [full specification](https://spec.nbots.io/#/README?id=ollama) for Ollama.
|
@@ -529,7 +529,7 @@ provider:
|
|
529
529
|
access-token: ENV/OPENAI_API_KEY
|
530
530
|
settings:
|
531
531
|
user: ENV/NANO_BOTS_END_USER
|
532
|
-
model: gpt-
|
532
|
+
model: gpt-4o
|
533
533
|
```
|
534
534
|
|
535
535
|
Read the [full specification](https://spec.nbots.io/#/README?id=openai-chatgpt) for OpenAI ChatGPT.
|
@@ -758,7 +758,7 @@ provider:
|
|
758
758
|
access-token: ENV/OPENAI_API_KEY
|
759
759
|
settings:
|
760
760
|
user: ENV/NANO_BOTS_END_USER
|
761
|
-
model: gpt-
|
761
|
+
model: gpt-4o
|
762
762
|
```
|
763
763
|
|
764
764
|
### Tools (Functions)
|
@@ -786,7 +786,7 @@ The randomly generated number is 59.
|
|
786
786
|
|
787
787
|
🤖> |
|
788
788
|
```
|
789
|
-
To successfully use Tools (Functions), you need to specify a provider and a model that supports them. As of the writing of this README, the provider that supports them is [OpenAI](https://platform.openai.com/docs/models), with models `gpt-3.5-turbo-1106` and `gpt-
|
789
|
+
To successfully use Tools (Functions), you need to specify a provider and a model that supports them. As of the writing of this README, the provider that supports them is [OpenAI](https://platform.openai.com/docs/models), with models `gpt-3.5-turbo-1106` and `gpt-4o`, and [Google](https://cloud.google.com/vertex-ai/docs/generative-ai/multimodal/function-calling#supported_models), with the `vertex-ai-api` service and the model `gemini-pro`. Other providers do not yet have support.
|
790
790
|
|
791
791
|
Check the [Nano Bots specification](https://spec.nbots.io/#/README?id=tools-functions-2) to learn more about Tools (Functions).
|
792
792
|
|
@@ -945,10 +945,10 @@ If you lose your password, you lose your data. It is not possible to recover it
|
|
945
945
|
- [x] [Maritaca AI MariTalk](https://www.maritaca.ai)
|
946
946
|
- [x] [Mistral AI](https://mistral.ai)
|
947
947
|
- [x] [Ollama](https://ollama.ai)
|
948
|
-
|
949
|
-
|
950
|
-
|
951
|
-
|
948
|
+
- [x] [01.AI Yi](https://01.ai)
|
949
|
+
- [x] [LMSYS Vicuna](https://github.com/lm-sys/FastChat)
|
950
|
+
- [x] [Meta Llama](https://ai.meta.com/llama/)
|
951
|
+
- [x] [WizardLM](https://wizardlm.github.io)
|
952
952
|
- [x] [Open AI ChatGPT](https://openai.com/chatgpt)
|
953
953
|
|
954
954
|
01.AI Yi, LMSYS Vicuna, Meta Llama, and WizardLM are open-source models that are supported through [Ollama](https://ollama.ai).
|
@@ -971,8 +971,8 @@ Set your provider credentials and choose your desired path for the cartridges fi
|
|
971
971
|
---
|
972
972
|
services:
|
973
973
|
nano-bots:
|
974
|
-
image: ruby:3.
|
975
|
-
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.0
|
974
|
+
image: ruby:3.3.3-slim-bookworm
|
975
|
+
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.2.0 && bash"
|
976
976
|
environment:
|
977
977
|
COHERE_API_KEY: your-api-key
|
978
978
|
NANO_BOTS_ENCRYPTION_PASSWORD: UNSAFE
|
@@ -988,8 +988,8 @@ services:
|
|
988
988
|
---
|
989
989
|
services:
|
990
990
|
nano-bots:
|
991
|
-
image: ruby:3.
|
992
|
-
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.0
|
991
|
+
image: ruby:3.3.3-slim-bookworm
|
992
|
+
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.2.0 && bash"
|
993
993
|
environment:
|
994
994
|
MARITACA_API_KEY: your-api-key
|
995
995
|
NANO_BOTS_ENCRYPTION_PASSWORD: UNSAFE
|
@@ -1005,8 +1005,8 @@ services:
|
|
1005
1005
|
---
|
1006
1006
|
services:
|
1007
1007
|
nano-bots:
|
1008
|
-
image: ruby:3.
|
1009
|
-
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.0
|
1008
|
+
image: ruby:3.3.3-slim-bookworm
|
1009
|
+
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.2.0 && bash"
|
1010
1010
|
environment:
|
1011
1011
|
MISTRAL_API_KEY: your-api-key
|
1012
1012
|
NANO_BOTS_ENCRYPTION_PASSWORD: UNSAFE
|
@@ -1024,8 +1024,8 @@ Remember that your `localhost` is by default inaccessible from inside Docker. Yo
|
|
1024
1024
|
---
|
1025
1025
|
services:
|
1026
1026
|
nano-bots:
|
1027
|
-
image: ruby:3.
|
1028
|
-
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.0
|
1027
|
+
image: ruby:3.3.3-slim-bookworm
|
1028
|
+
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.2.0 && bash"
|
1029
1029
|
environment:
|
1030
1030
|
OLLAMA_API_ADDRESS: http://localhost:11434
|
1031
1031
|
NANO_BOTS_ENCRYPTION_PASSWORD: UNSAFE
|
@@ -1043,8 +1043,8 @@ services:
|
|
1043
1043
|
---
|
1044
1044
|
services:
|
1045
1045
|
nano-bots:
|
1046
|
-
image: ruby:3.
|
1047
|
-
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.0
|
1046
|
+
image: ruby:3.3.3-slim-bookworm
|
1047
|
+
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.2.0 && bash"
|
1048
1048
|
environment:
|
1049
1049
|
OPENAI_API_KEY: your-access-token
|
1050
1050
|
NANO_BOTS_ENCRYPTION_PASSWORD: UNSAFE
|
@@ -1062,8 +1062,8 @@ services:
|
|
1062
1062
|
---
|
1063
1063
|
services:
|
1064
1064
|
nano-bots:
|
1065
|
-
image: ruby:3.
|
1066
|
-
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.0
|
1065
|
+
image: ruby:3.3.3-slim-bookworm
|
1066
|
+
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.2.0 && bash"
|
1067
1067
|
environment:
|
1068
1068
|
GOOGLE_API_KEY: your-api-key
|
1069
1069
|
NANO_BOTS_ENCRYPTION_PASSWORD: UNSAFE
|
@@ -1079,8 +1079,8 @@ services:
|
|
1079
1079
|
---
|
1080
1080
|
services:
|
1081
1081
|
nano-bots:
|
1082
|
-
image: ruby:3.
|
1083
|
-
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.0
|
1082
|
+
image: ruby:3.3.3-slim-bookworm
|
1083
|
+
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.2.0 && bash"
|
1084
1084
|
environment:
|
1085
1085
|
GOOGLE_CREDENTIALS_FILE_PATH: /root/.config/google-credentials.json
|
1086
1086
|
GOOGLE_REGION: us-east4
|
@@ -1098,8 +1098,8 @@ services:
|
|
1098
1098
|
---
|
1099
1099
|
services:
|
1100
1100
|
nano-bots:
|
1101
|
-
image: ruby:3.
|
1102
|
-
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.0
|
1101
|
+
image: ruby:3.3.3-slim-bookworm
|
1102
|
+
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.2.0 && bash"
|
1103
1103
|
environment:
|
1104
1104
|
GOOGLE_REGION: us-east4
|
1105
1105
|
NANO_BOTS_ENCRYPTION_PASSWORD: UNSAFE
|
@@ -1161,5 +1161,5 @@ gem build nano-bots.gemspec
|
|
1161
1161
|
|
1162
1162
|
gem signin
|
1163
1163
|
|
1164
|
-
gem push nano-bots-3.0.
|
1164
|
+
gem push nano-bots-3.2.0.gem
|
1165
1165
|
```
|
@@ -28,6 +28,8 @@ module NanoBot
|
|
28
28
|
def initialize(options, settings, credentials, _environment)
|
29
29
|
@settings = settings
|
30
30
|
|
31
|
+
@service = credentials[:service]
|
32
|
+
|
31
33
|
gemini_options = options.transform_keys { |key| key.to_s.gsub('-', '_').to_sym }
|
32
34
|
|
33
35
|
unless gemini_options.key?(:stream)
|
@@ -66,10 +68,7 @@ module NanoBot
|
|
66
68
|
end
|
67
69
|
end
|
68
70
|
|
69
|
-
|
70
|
-
%i[backdrop directive].each do |key|
|
71
|
-
next unless input[:behavior][key]
|
72
|
-
|
71
|
+
if input[:behavior][:backdrop]
|
73
72
|
messages.prepend(
|
74
73
|
{ role: 'model',
|
75
74
|
parts: { text: 'Understood.' },
|
@@ -78,13 +77,27 @@ module NanoBot
|
|
78
77
|
|
79
78
|
messages.prepend(
|
80
79
|
{ role: 'user',
|
81
|
-
parts: { text: input[:behavior][
|
80
|
+
parts: { text: input[:behavior][:backdrop] },
|
82
81
|
_meta: { at: Time.now } }
|
83
82
|
)
|
84
83
|
end
|
85
84
|
|
86
85
|
payload = { contents: messages, generationConfig: { candidateCount: 1 } }
|
87
86
|
|
87
|
+
if input[:behavior][:directive] && @service == 'vertex-ai-api'
|
88
|
+
payload[:system_instruction] = {
|
89
|
+
role: 'user',
|
90
|
+
parts: { text: input[:behavior][:directive] }
|
91
|
+
}
|
92
|
+
elsif input[:behavior][:directive]
|
93
|
+
# TODO: Will generative-language-api support system instructions?
|
94
|
+
messages.prepend(
|
95
|
+
{ role: 'user',
|
96
|
+
parts: { text: input[:behavior][:directive] },
|
97
|
+
_meta: { at: Time.now } }
|
98
|
+
)
|
99
|
+
end
|
100
|
+
|
88
101
|
if @settings
|
89
102
|
SETTINGS.each_key do |key|
|
90
103
|
SETTINGS[key].each do |sub_key|
|
@@ -120,13 +133,13 @@ module NanoBot
|
|
120
133
|
# TODO: How to better handle finishReason == 'OTHER'?
|
121
134
|
return if event.dig('candidates', 0, 'finishReason') == 'OTHER'
|
122
135
|
|
123
|
-
partial_content = event.dig('candidates', 0, 'content', 'parts')
|
136
|
+
partial_content = event.dig('candidates', 0, 'content', 'parts')&.filter do |part|
|
124
137
|
part.key?('text')
|
125
|
-
end
|
138
|
+
end&.map { |part| part['text'] }&.join || ''
|
126
139
|
|
127
|
-
partial_tools = event.dig('candidates', 0, 'content', 'parts')
|
140
|
+
partial_tools = event.dig('candidates', 0, 'content', 'parts')&.filter do |part|
|
128
141
|
part.key?('functionCall')
|
129
|
-
end
|
142
|
+
end || []
|
130
143
|
|
131
144
|
tools.concat(partial_tools) if partial_tools.size.positive?
|
132
145
|
|
@@ -138,10 +151,9 @@ module NanoBot
|
|
138
151
|
)
|
139
152
|
end
|
140
153
|
|
141
|
-
if event.dig('candidates', 0, 'finishReason')
|
142
|
-
|
143
|
-
|
144
|
-
# Is this a bug from the Google Gemini REST API or expected behavior?
|
154
|
+
if event.dig('candidates', 0, 'finishReason') == 'SAFETY'
|
155
|
+
reasons = event.dig('candidates', 0, 'safetyRatings')
|
156
|
+
raise StandardError, "Generation stopped for safety reasons: #{reasons}"
|
145
157
|
end
|
146
158
|
end
|
147
159
|
|
@@ -193,9 +205,13 @@ module NanoBot
|
|
193
205
|
end
|
194
206
|
|
195
207
|
content = result.map do |answer|
|
196
|
-
answer.dig('candidates', 0, 'content', 'parts')
|
197
|
-
|
198
|
-
|
208
|
+
parts = answer.dig('candidates', 0, 'content', 'parts')
|
209
|
+
|
210
|
+
if parts
|
211
|
+
parts.filter { |part| part.key?('text') }.map { |part| part['text'] }.join
|
212
|
+
else
|
213
|
+
''
|
214
|
+
end
|
199
215
|
end.join
|
200
216
|
|
201
217
|
feedback.call(
|
@@ -15,7 +15,7 @@ module NanoBot
|
|
15
15
|
attr_reader :settings
|
16
16
|
|
17
17
|
CHAT_SETTINGS = %i[
|
18
|
-
max_tokens model do_sample temperature top_p repetition_penalty stopping_tokens
|
18
|
+
max_tokens model stream do_sample temperature top_p repetition_penalty stopping_tokens
|
19
19
|
].freeze
|
20
20
|
|
21
21
|
def initialize(options, settings, credentials, _environment)
|
@@ -27,13 +27,14 @@ module NanoBot
|
|
27
27
|
{}
|
28
28
|
end
|
29
29
|
|
30
|
-
unless
|
31
|
-
|
32
|
-
|
30
|
+
unless @settings.key?(:stream)
|
31
|
+
@settings = Marshal.load(Marshal.dump(@settings))
|
32
|
+
@settings[:stream] = Logic::Helpers::Hash.fetch(
|
33
|
+
Logic::Cartridge::Default.instance.values, %i[provider settings stream]
|
33
34
|
)
|
34
35
|
end
|
35
36
|
|
36
|
-
maritaca_options[:server_sent_events] =
|
37
|
+
maritaca_options[:server_sent_events] = @settings[:stream]
|
37
38
|
|
38
39
|
@client = ::Maritaca.new(
|
39
40
|
credentials: credentials.transform_keys { |key| key.to_s.gsub('-', '_').to_sym },
|
@@ -71,7 +72,7 @@ module NanoBot
|
|
71
72
|
content = ''
|
72
73
|
|
73
74
|
stream_call_back = proc do |event, _raw|
|
74
|
-
partial_content = event['
|
75
|
+
partial_content = event['text']
|
75
76
|
|
76
77
|
if partial_content
|
77
78
|
content += partial_content
|