node-red-contrib-ollama 0.2.0 → 0.2.3

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.
@@ -7,8 +7,8 @@ module.exports = function( RED ) {
7
7
 
8
8
  node.on( 'input', async function( msg ) {
9
9
  const {
10
- host,
11
- model,
10
+ host: payloadHost,
11
+ model: payloadModel,
12
12
  prompt,
13
13
  suffix,
14
14
  system,
@@ -21,8 +21,14 @@ module.exports = function( RED ) {
21
21
  options
22
22
  } = msg.payload
23
23
 
24
+ const server = RED.nodes.getNode( config.server )
25
+ const host = ( server ) ? server.host + ':' + server.port : payloadHost
26
+
24
27
  const ollama = new Ollama( { host } )
25
28
 
29
+ const modelConfig = RED.nodes.getNode( config.model )
30
+ const model = ( modelConfig ) ? modelConfig.name : payloadModel
31
+
26
32
  const response = await ollama.generate( {
27
33
  model,
28
34
  prompt,
@@ -3,7 +3,8 @@
3
3
  category: 'AI',
4
4
  color: 'rgb(186 230 253)',
5
5
  defaults: {
6
- name: { value: '' },
6
+ name: { value: 'Ollama List Local Models' },
7
+ server: { value: '', type: 'ollama-config-server', required: false }
7
8
  },
8
9
  inputs: 1,
9
10
  outputs: 1,
@@ -19,6 +20,11 @@
19
20
  <label for="node-input-name"><i class="fa fa-tag"></i> Name</label>
20
21
  <input type="text" id="node-input-name" placeholder="Name" />
21
22
  </div>
23
+
24
+ <div class="form-row">
25
+ <label for="node-input-server"><i class="fa fa-server"></i> Server</label>
26
+ <input type="text" id="node-input-server" />
27
+ </div>
22
28
  </script>
23
29
 
24
30
  <script type="text/html" data-help-name="ollama-list">
@@ -27,12 +33,23 @@
27
33
  <h3>Inputs</h3>
28
34
 
29
35
  <dl class="message-properties">
30
- <dt>
31
- payload.host
32
-
33
- <span class="property-type">string</span>
36
+ <dt class="optional">
37
+ payload <span class="property-type">object</span>
34
38
  </dt>
35
- <dd>The host of the Ollama instance.</dd>
39
+
40
+ <dd>
41
+ The payload object.
42
+
43
+ <dl class="message-properties">
44
+ <dt class="optional">
45
+ payload.host <span class="property-type">string</span>
46
+ </dt>
47
+ <dd>
48
+ The host of the Ollama instance.<br />
49
+ <em>Alternative to the <code>Server</code> field.</em>
50
+ </dd>
51
+ </dl>
52
+ </dd>
36
53
  </dl>
37
54
 
38
55
  <h3>Outputs</h3>
@@ -6,7 +6,13 @@ module.exports = function( RED ) {
6
6
  const node = this
7
7
 
8
8
  node.on( 'input', async function( msg ) {
9
- const { host } = msg.payload
9
+ const {
10
+ host: payloadHost
11
+ } = msg.payload
12
+
13
+ const server = RED.nodes.getNode( config.server )
14
+
15
+ const host = ( server ) ? server.host + ':' + server.port : payloadHost
10
16
 
11
17
  const ollama = new Ollama( { host } )
12
18
 
@@ -3,7 +3,8 @@
3
3
  category: 'AI',
4
4
  color: 'rgb(186 230 253)',
5
5
  defaults: {
6
- name: { value: '' },
6
+ name: { value: 'Ollama List Running Models' },
7
+ server: { value: '', type: 'ollama-config-server', required: false }
7
8
  },
8
9
  inputs: 1,
9
10
  outputs: 1,
@@ -19,6 +20,11 @@
19
20
  <label for="node-input-name"><i class="fa fa-tag"></i> Name</label>
20
21
  <input type="text" id="node-input-name" placeholder="Name" />
21
22
  </div>
23
+
24
+ <div class="form-row">
25
+ <label for="node-input-server"><i class="fa fa-server"></i> Server</label>
26
+ <input type="text" id="node-input-server" />
27
+ </div>
22
28
  </script>
23
29
 
24
30
  <script type="text/html" data-help-name="ollama-ps">
@@ -27,12 +33,23 @@
27
33
  <h3>Inputs</h3>
28
34
 
29
35
  <dl class="message-properties">
30
- <dt>
31
- payload.host
32
-
33
- <span class="property-type">string</span>
36
+ <dt class="optional">
37
+ payload <span class="property-type">object</span>
34
38
  </dt>
35
- <dd>The host of the Ollama instance.</dd>
39
+
40
+ <dd>
41
+ The payload object.
42
+
43
+ <dl class="message-properties">
44
+ <dt class="optional">
45
+ payload.host <span class="property-type">string</span>
46
+ </dt>
47
+ <dd>
48
+ The host of the Ollama instance.<br />
49
+ <em>Alternative to the <code>Server</code> field.</em>
50
+ </dd>
51
+ </dl>
52
+ </dd>
36
53
  </dl>
37
54
 
38
55
  <h3>Outputs</h3>
@@ -6,7 +6,13 @@ module.exports = function( RED ) {
6
6
  const node = this
7
7
 
8
8
  node.on( 'input', async function( msg ) {
9
- const { host } = msg.payload
9
+ const {
10
+ host: payloadHost
11
+ } = msg.payload
12
+
13
+ const server = RED.nodes.getNode( config.server )
14
+
15
+ const host = ( server ) ? server.host + ':' + server.port : payloadHost
10
16
 
11
17
  const ollama = new Ollama( { host } )
12
18
 
@@ -3,7 +3,9 @@
3
3
  category: 'AI',
4
4
  color: 'rgb(186 230 253)',
5
5
  defaults: {
6
- name: { value: '' },
6
+ name: { value: 'Ollama Pull' },
7
+ server: { value: '', type: 'ollama-config-server', required: false },
8
+ model: { value: '', type: 'ollama-config-model', required: false },
7
9
  },
8
10
  inputs: 1,
9
11
  outputs: 1,
@@ -19,6 +21,16 @@
19
21
  <label for="node-input-name"><i class="fa fa-tag"></i> Name</label>
20
22
  <input type="text" id="node-input-name" placeholder="Name" />
21
23
  </div>
24
+
25
+ <div class="form-row">
26
+ <label for="node-input-server"><i class="fa fa-server"></i> Server</label>
27
+ <input type="text" id="node-input-server" />
28
+ </div>
29
+
30
+ <div class="form-row">
31
+ <label for="node-input-model"><i class="fa fa-bookmark"></i> Model</label>
32
+ <input type="text" id="node-input-model" />
33
+ </div>
22
34
  </script>
23
35
 
24
36
  <script type="text/html" data-help-name="ollama-pull">
@@ -27,33 +39,41 @@
27
39
  <h3>Inputs</h3>
28
40
 
29
41
  <dl class="message-properties">
30
- <dt>
31
- payload.host
32
-
33
- <span class="property-type">string</span>
42
+ <dt class="optional">
43
+ payload <span class="property-type">object</span>
34
44
  </dt>
35
- <dd>The host of the Ollama instance.</dd>
36
-
37
- <dt>
38
- payload.model
39
45
 
40
- <span class="property-type">string</span>
41
- </dt>
42
- <dd>The name of the model to download.</dd>
43
-
44
- <dt>
45
- payload.insecure
46
-
47
- <span class="property-type">boolean</span>
48
- </dt>
49
- <dd>Pull from servers whose identity cannot be verified.</dd>
50
-
51
- <dt>
52
- payload.stream
53
-
54
- <span class="property-type">boolean</span>
55
- </dt>
56
- <dd>When true an AsyncGenerator is returned.</dd>
46
+ <dd>
47
+ The payload object.
48
+
49
+ <dl class="message-properties">
50
+ <dt class="optional">
51
+ payload.host <span class="property-type">string</span>
52
+ </dt>
53
+ <dd>
54
+ The host of the Ollama instance.<br />
55
+ <em>Alternative to the <code>Server</code> field.</em>
56
+ </dd>
57
+
58
+ <dt class="optional">
59
+ payload.model <span class="property-type">string</span>
60
+ </dt>
61
+ <dd>
62
+ The name of the model to download.<br />
63
+ <em>Alternative to the <code>Model</code> field.</em>
64
+ </dd>
65
+
66
+ <dt>
67
+ payload.insecure <span class="property-type">boolean</span>
68
+ </dt>
69
+ <dd>Pull from servers whose identity cannot be verified.</dd>
70
+
71
+ <dt>
72
+ payload.stream <span class="property-type">boolean</span>
73
+ </dt>
74
+ <dd>When true an AsyncGenerator is returned.</dd>
75
+ </dl>
76
+ </dd>
57
77
  </dl>
58
78
 
59
79
  <h3>Outputs</h3>
@@ -6,11 +6,26 @@ module.exports = function( RED ) {
6
6
  const node = this
7
7
 
8
8
  node.on( 'input', async function( msg ) {
9
- const { host, model, insecure, stream } = msg.payload
9
+ const {
10
+ host: payloadHost,
11
+ model: payloadModel,
12
+ insecure,
13
+ stream
14
+ } = msg.payload
15
+
16
+ const server = RED.nodes.getNode( config.server )
17
+ const host = ( server ) ? server.host + ':' + server.port : payloadHost
10
18
 
11
19
  const ollama = new Ollama( { host } )
12
20
 
13
- const response = await ollama.pull( { model, insecure, stream } )
21
+ const modelConfig = RED.nodes.getNode( config.model )
22
+ const model = ( modelConfig ) ? modelConfig.name : payloadModel
23
+
24
+ const response = await ollama.pull( {
25
+ model,
26
+ insecure,
27
+ stream
28
+ } )
14
29
  .catch( error => {
15
30
  node.error( error )
16
31
  } )
@@ -3,7 +3,9 @@
3
3
  category: 'AI',
4
4
  color: 'rgb(186 230 253)',
5
5
  defaults: {
6
- name: { value: '' },
6
+ name: { value: 'Ollama Push' },
7
+ server: { value: '', type: 'ollama-config-server', required: false },
8
+ model: { value: '', type: 'ollama-config-model', required: false },
7
9
  },
8
10
  inputs: 1,
9
11
  outputs: 1,
@@ -19,6 +21,16 @@
19
21
  <label for="node-input-name"><i class="fa fa-tag"></i> Name</label>
20
22
  <input type="text" id="node-input-name" placeholder="Name" />
21
23
  </div>
24
+
25
+ <div class="form-row">
26
+ <label for="node-input-server"><i class="fa fa-server"></i> Server</label>
27
+ <input type="text" id="node-input-server" />
28
+ </div>
29
+
30
+ <div class="form-row">
31
+ <label for="node-input-model"><i class="fa fa-bookmark"></i> Model</label>
32
+ <input type="text" id="node-input-model" />
33
+ </div>
22
34
  </script>
23
35
 
24
36
  <script type="text/html" data-help-name="ollama-push">
@@ -27,33 +39,41 @@
27
39
  <h3>Inputs</h3>
28
40
 
29
41
  <dl class="message-properties">
30
- <dt>
31
- payload.host
32
-
33
- <span class="property-type">string</span>
42
+ <dt class="optional">
43
+ payload <span class="property-type">object</span>
34
44
  </dt>
35
- <dd>The host of the Ollama instance.</dd>
36
-
37
- <dt>
38
- payload.model
39
45
 
40
- <span class="property-type">string</span>
41
- </dt>
42
- <dd>The name of the model to upload.</dd>
43
-
44
- <dt>
45
- payload.insecure
46
-
47
- <span class="property-type">boolean</span>
48
- </dt>
49
- <dd>Push to servers whose identity cannot be verified.</dd>
50
-
51
- <dt>
52
- payload.stream
53
-
54
- <span class="property-type">boolean</span>
55
- </dt>
56
- <dd>When true an AsyncGenerator is returned.</dd>
46
+ <dd>
47
+ The payload object.
48
+
49
+ <dl class="message-properties">
50
+ <dt class="optional">
51
+ payload.host <span class="property-type">string</span>
52
+ </dt>
53
+ <dd>
54
+ The host of the Ollama instance.<br />
55
+ <em>Alternative to the <code>Server</code> field.</em>
56
+ </dd>
57
+
58
+ <dt class="optional">
59
+ payload.model <span class="property-type">string</span>
60
+ </dt>
61
+ <dd>
62
+ The name of the model to upload.<br />
63
+ <em>Alternative to the <code>Model</code> field.</em>
64
+ </dd>
65
+
66
+ <dt>
67
+ payload.insecure <span class="property-type">boolean</span>
68
+ </dt>
69
+ <dd>Push to servers whose identity cannot be verified.</dd>
70
+
71
+ <dt>
72
+ payload.stream <span class="property-type">boolean</span>
73
+ </dt>
74
+ <dd>When true an AsyncGenerator is returned.</dd>
75
+ </dl>
76
+ </dd>
57
77
  </dl>
58
78
 
59
79
  <h3>Outputs</h3>
@@ -6,11 +6,26 @@ module.exports = function( RED ) {
6
6
  const node = this
7
7
 
8
8
  node.on( 'input', async function( msg ) {
9
- const { host, model, insecure, stream } = msg.payload
9
+ const {
10
+ host: payloadHost,
11
+ model: payloadModel,
12
+ insecure,
13
+ stream
14
+ } = msg.payload
15
+
16
+ const server = RED.nodes.getNode( config.server )
17
+ const host = ( server ) ? server.host + ':' + server.port : payloadHost
10
18
 
11
19
  const ollama = new Ollama( { host } )
12
20
 
13
- const response = await ollama.push( { model, insecure, stream } )
21
+ const modelConfig = RED.nodes.getNode( config.model )
22
+ const model = ( modelConfig ) ? modelConfig.name : payloadModel
23
+
24
+ const response = await ollama.push( {
25
+ model,
26
+ insecure,
27
+ stream
28
+ } )
14
29
  .catch( error => {
15
30
  node.error( error )
16
31
  } )
@@ -3,7 +3,9 @@
3
3
  category: 'AI',
4
4
  color: 'rgb(186 230 253)',
5
5
  defaults: {
6
- name: { value: '' },
6
+ name: { value: 'Ollama Show' },
7
+ server: { value: '', type: 'ollama-config-server', required: false },
8
+ model: { value: '', type: 'ollama-config-model', required: false },
7
9
  },
8
10
  inputs: 1,
9
11
  outputs: 1,
@@ -19,6 +21,16 @@
19
21
  <label for="node-input-name"><i class="fa fa-tag"></i> Name</label>
20
22
  <input type="text" id="node-input-name" placeholder="Name" />
21
23
  </div>
24
+
25
+ <div class="form-row">
26
+ <label for="node-input-server"><i class="fa fa-server"></i> Server</label>
27
+ <input type="text" id="node-input-server" />
28
+ </div>
29
+
30
+ <div class="form-row">
31
+ <label for="node-input-model"><i class="fa fa-bookmark"></i> Model</label>
32
+ <input type="text" id="node-input-model" />
33
+ </div>
22
34
  </script>
23
35
 
24
36
  <script type="text/html" data-help-name="ollama-show">
@@ -27,39 +39,45 @@
27
39
  <h3>Inputs</h3>
28
40
 
29
41
  <dl class="message-properties">
30
- <dt>
31
- payload.host
32
-
33
- <span class="property-type">string</span>
34
- </dt>
35
- <dd>The host of the Ollama instance.</dd>
36
-
37
- <dt>
38
- payload.model
39
-
40
- <span class="property-type">string</span>
42
+ <dt class="optional">
43
+ payload <span class="property-type">object</span>
41
44
  </dt>
42
- <dd>The model to show information for.</dd>
43
45
 
44
- <dt class="optional">
45
- payload.system
46
+ <dd>
47
+ The payload object.
46
48
 
47
- <span class="property-type">string</span>
48
- </dt>
49
- <dd>Override the model system prompt.</dd>
49
+ <dl class="message-properties">
50
+ <dt class="optional">
51
+ payload.host <span class="property-type">string</span>
52
+ </dt>
53
+ <dd>
54
+ The host of the Ollama instance.<br />
55
+ <em>Alternative to the <code>Server</code> field.</em>
56
+ </dd>
50
57
 
51
- <dt class="optional">
52
- payload.template
58
+ <dt class="optional">
59
+ payload.model <span class="property-type">string</span>
60
+ </dt>
61
+ <dd>
62
+ The model to show information for.<br />
63
+ <em>Alternative to the <code>Model</code> field.</em>
64
+ </dd>
53
65
 
54
- <span class="property-type">string</span>
55
- </dt>
66
+ <dt class="optional">
67
+ payload.system <span class="property-type">string</span>
68
+ </dt>
69
+ <dd>Override the model system prompt.</dd>
56
70
 
57
- <dt class="optional">
58
- payload.options
71
+ <dt class="optional">
72
+ payload.template <span class="property-type">string</span>
73
+ </dt>
59
74
 
60
- <span class="property-type">object</span>
61
- </dt>
62
- <dd>Options to configure the runtime.</dd>
75
+ <dt class="optional">
76
+ payload.options <span class="property-type">object</span>
77
+ </dt>
78
+ <dd>Options to configure the runtime.</dd>
79
+ </dl>
80
+ </dd>
63
81
  </dl>
64
82
 
65
83
  <h3>Outputs</h3>
@@ -7,15 +7,21 @@ module.exports = function( RED ) {
7
7
 
8
8
  node.on( 'input', async function( msg ) {
9
9
  const {
10
- host,
11
- model,
10
+ host: payloadHost,
11
+ model: payloadModel,
12
12
  system,
13
13
  template,
14
14
  options
15
15
  } = msg.payload
16
16
 
17
+ const server = RED.nodes.getNode( config.server )
18
+ const host = ( server ) ? server.host + ':' + server.port : payloadHost
19
+
17
20
  const ollama = new Ollama( { host } )
18
21
 
22
+ const modelConfig = RED.nodes.getNode( config.model )
23
+ const model = ( modelConfig ) ? modelConfig.name : payloadModel
24
+
19
25
  const response = await ollama.show( {
20
26
  model,
21
27
  system,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "node-red-contrib-ollama",
3
- "version": "0.2.0",
3
+ "version": "0.2.3",
4
4
  "description": "Add AI functionality to your flows! This module includes a set of nodes that enable easy communication with Ollama, enriching your projects with intelligent solutions.",
5
5
  "keywords": [
6
6
  "ai",
@@ -28,14 +28,16 @@
28
28
  "ollama-push": "nodes/ollama-push.js",
29
29
  "ollama-show": "nodes/ollama-show.js",
30
30
  "ollama-ps": "nodes/ollama-ps.js",
31
- "ollama-abort": "nodes/ollama-abort.js"
31
+ "ollama-abort": "nodes/ollama-abort.js",
32
+ "ollama-config-server": "nodes/ollama-config-server.js",
33
+ "ollama-config-model": "nodes/ollama-config-model.js"
32
34
  }
33
35
  },
34
36
  "engines": {
35
37
  "node": ">=18.0.0"
36
38
  },
37
39
  "dependencies": {
38
- "ollama": "^0.5.9"
40
+ "ollama": "^0.5.11"
39
41
  },
40
42
  "bugs": {
41
43
  "url": "https://github.com/jakubburkiewicz/node-red-contrib-ollama/issues"