node-red-contrib-ollama 0.2.2 → 0.2.4
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.
- package/nodes/ollama-chat.html +19 -3
- package/nodes/ollama-chat.js +8 -3
- package/nodes/ollama-config-model.html +18 -0
- package/nodes/ollama-config-model.js +9 -0
- package/nodes/ollama-config-tools.html +30 -0
- package/nodes/ollama-config-tools.js +10 -0
- package/nodes/ollama-create.html +15 -6
- package/nodes/ollama-create.js +4 -2
- package/nodes/ollama-delete.html +12 -3
- package/nodes/ollama-delete.js +4 -2
- package/nodes/ollama-embed.html +12 -3
- package/nodes/ollama-embed.js +4 -2
- package/nodes/ollama-generate.html +12 -3
- package/nodes/ollama-generate.js +4 -2
- package/nodes/ollama-pull.html +12 -3
- package/nodes/ollama-pull.js +9 -3
- package/nodes/ollama-push.html +12 -3
- package/nodes/ollama-push.js +9 -3
- package/nodes/ollama-show.html +12 -3
- package/nodes/ollama-show.js +4 -2
- package/package.json +4 -2
package/nodes/ollama-chat.html
CHANGED
|
@@ -4,7 +4,9 @@
|
|
|
4
4
|
color: 'rgb(186 230 253)',
|
|
5
5
|
defaults: {
|
|
6
6
|
name: { value: 'Ollama Chat' },
|
|
7
|
-
server: { value: '', type: 'ollama-config-server', required: false }
|
|
7
|
+
server: { value: '', type: 'ollama-config-server', required: false },
|
|
8
|
+
model: { value: '', type: 'ollama-config-model', required: true },
|
|
9
|
+
tools: { value: '', type: 'ollama-config-tools', required: false },
|
|
8
10
|
},
|
|
9
11
|
inputs: 1,
|
|
10
12
|
outputs: 1,
|
|
@@ -25,6 +27,16 @@
|
|
|
25
27
|
<label for="node-input-server"><i class="fa fa-server"></i> Server</label>
|
|
26
28
|
<input type="text" id="node-input-server" />
|
|
27
29
|
</div>
|
|
30
|
+
|
|
31
|
+
<div class="form-row">
|
|
32
|
+
<label for="node-input-model"><i class="fa fa-bookmark"></i> Model</label>
|
|
33
|
+
<input type="text" id="node-input-model" />
|
|
34
|
+
</div>
|
|
35
|
+
|
|
36
|
+
<div class="form-row">
|
|
37
|
+
<label for="node-input-tools"><i class="fa fa-cog"></i> Tools</label>
|
|
38
|
+
<input type="text" id="node-input-tools" />
|
|
39
|
+
</div>
|
|
28
40
|
</script>
|
|
29
41
|
|
|
30
42
|
<script type="text/html" data-help-name="ollama-chat">
|
|
@@ -49,10 +61,13 @@
|
|
|
49
61
|
<em>Alternative to the <code>Server</code> field.</em>
|
|
50
62
|
</dd>
|
|
51
63
|
|
|
52
|
-
<dt>
|
|
64
|
+
<dt class="optional">
|
|
53
65
|
payload.model <span class="property-type">string</span>
|
|
54
66
|
</dt>
|
|
55
|
-
<dd>
|
|
67
|
+
<dd>
|
|
68
|
+
The model to use for generating the next message.<br />
|
|
69
|
+
<em>Alternative to the <code>Model</code> field.</em>
|
|
70
|
+
</dd>
|
|
56
71
|
|
|
57
72
|
<dt>
|
|
58
73
|
payload.messages <span class="property-type">array</span>
|
|
@@ -105,6 +120,7 @@
|
|
|
105
120
|
<dd>
|
|
106
121
|
Tools for the model to use if supported.<br />
|
|
107
122
|
Requires <code>stream</code> to be set to <code>false</code>.
|
|
123
|
+
<em>Alternative to the <code>Model</code> field.</em>
|
|
108
124
|
|
|
109
125
|
<p>
|
|
110
126
|
For more information, see the Ollama API documentation:<br />
|
package/nodes/ollama-chat.js
CHANGED
|
@@ -8,21 +8,26 @@ module.exports = function( RED ) {
|
|
|
8
8
|
node.on( 'input', async function( msg ) {
|
|
9
9
|
const {
|
|
10
10
|
host: payloadHost,
|
|
11
|
-
model,
|
|
11
|
+
model: payloadModel,
|
|
12
12
|
messages,
|
|
13
13
|
format,
|
|
14
14
|
stream,
|
|
15
15
|
keep_alive,
|
|
16
|
-
tools,
|
|
16
|
+
tools: payloadTools,
|
|
17
17
|
options
|
|
18
18
|
} = msg.payload
|
|
19
19
|
|
|
20
20
|
const server = RED.nodes.getNode( config.server )
|
|
21
|
-
|
|
22
21
|
const host = ( server ) ? server.host + ':' + server.port : payloadHost
|
|
23
22
|
|
|
24
23
|
const ollama = new Ollama( { host } )
|
|
25
24
|
|
|
25
|
+
const modelConfig = RED.nodes.getNode( config.model )
|
|
26
|
+
const model = ( modelConfig ) ? modelConfig.name : payloadModel
|
|
27
|
+
|
|
28
|
+
const toolsConfig = RED.nodes.getNode( config.tools )
|
|
29
|
+
const tools = ( toolsConfig ) ? toolsConfig.json : payloadTools
|
|
30
|
+
|
|
26
31
|
const response = await ollama.chat( {
|
|
27
32
|
model,
|
|
28
33
|
messages,
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
<script type="text/javascript">
|
|
2
|
+
RED.nodes.registerType( 'ollama-config-model', {
|
|
3
|
+
category: 'config',
|
|
4
|
+
defaults: {
|
|
5
|
+
name: { value: '', required: true }
|
|
6
|
+
},
|
|
7
|
+
label: function() {
|
|
8
|
+
return this.name;
|
|
9
|
+
}
|
|
10
|
+
} )
|
|
11
|
+
</script>
|
|
12
|
+
|
|
13
|
+
<script type="text/html" data-template-name="ollama-config-model">
|
|
14
|
+
<div class="form-row">
|
|
15
|
+
<label for="node-config-input-name"><i class="fa fa-server"></i> Name</label>
|
|
16
|
+
<input type="text" id="node-config-input-name" placeholder="llama3.3" />
|
|
17
|
+
</div>
|
|
18
|
+
</script>
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
<script type="text/javascript">
|
|
2
|
+
RED.nodes.registerType( 'ollama-config-tools', {
|
|
3
|
+
category: 'config',
|
|
4
|
+
defaults: {
|
|
5
|
+
name: { value: 'Ollama Tools Config' },
|
|
6
|
+
json: { value: '' }
|
|
7
|
+
},
|
|
8
|
+
label: function() {
|
|
9
|
+
return this.name;
|
|
10
|
+
},
|
|
11
|
+
oneditprepare: function() {
|
|
12
|
+
$( '#node-config-input-json' ).typedInput( {
|
|
13
|
+
type: 'json',
|
|
14
|
+
types: [ 'json' ]
|
|
15
|
+
} )
|
|
16
|
+
}
|
|
17
|
+
} )
|
|
18
|
+
</script>
|
|
19
|
+
|
|
20
|
+
<script type="text/html" data-template-name="ollama-config-tools">
|
|
21
|
+
<div class="form-row">
|
|
22
|
+
<label for="node-config-input-name"><i class="fa fa-server"></i> Name</label>
|
|
23
|
+
<input type="text" id="node-config-input-name" placeholder="Ollama Tools Config" />
|
|
24
|
+
</div>
|
|
25
|
+
|
|
26
|
+
<div class="form-row">
|
|
27
|
+
<label for="node-config-input-json"><i class="fa fa-cog"></i> JSON</label>
|
|
28
|
+
<input type="text" id="node-config-input-json" placeholder="" />
|
|
29
|
+
</div>
|
|
30
|
+
</script>
|
package/nodes/ollama-create.html
CHANGED
|
@@ -4,7 +4,8 @@
|
|
|
4
4
|
color: 'rgb(186 230 253)',
|
|
5
5
|
defaults: {
|
|
6
6
|
name: { value: 'Ollama Create' },
|
|
7
|
-
server: { value: '', type: 'ollama-config-server', required: false }
|
|
7
|
+
server: { value: '', type: 'ollama-config-server', required: false },
|
|
8
|
+
model: { value: '', type: 'ollama-config-model', required: false },
|
|
8
9
|
},
|
|
9
10
|
inputs: 1,
|
|
10
11
|
outputs: 1,
|
|
@@ -25,6 +26,11 @@
|
|
|
25
26
|
<label for="node-input-server"><i class="fa fa-server"></i> Server</label>
|
|
26
27
|
<input type="text" id="node-input-server" />
|
|
27
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>
|
|
28
34
|
</script>
|
|
29
35
|
|
|
30
36
|
<script type="text/html" data-help-name="ollama-create">
|
|
@@ -49,25 +55,28 @@
|
|
|
49
55
|
<em>Alternative to the <code>Server</code> field.</em>
|
|
50
56
|
</dd>
|
|
51
57
|
|
|
52
|
-
<dt>
|
|
58
|
+
<dt class="optional">
|
|
53
59
|
payload.model <span class="property-type">string</span>
|
|
54
60
|
</dt>
|
|
55
|
-
<
|
|
61
|
+
<dd>
|
|
62
|
+
The name of the model to create.<br />
|
|
63
|
+
<em>Alternative to the <code>Model</code> field.</em>
|
|
64
|
+
</dd>
|
|
56
65
|
|
|
57
66
|
<dt class="optional">
|
|
58
67
|
payload.path <span class="property-type">string</span>
|
|
59
68
|
</dt>
|
|
60
|
-
<
|
|
69
|
+
<dd>The path to the Modelfile to use for creating the model.</dd>
|
|
61
70
|
|
|
62
71
|
<dt class="optional">
|
|
63
72
|
payload.modelfile <span class="property-type">string</span>
|
|
64
73
|
</dt>
|
|
65
|
-
<
|
|
74
|
+
<dd>The content of the Modelfile to create.</dd>
|
|
66
75
|
|
|
67
76
|
<dt class="optional">
|
|
68
77
|
payload.stream <span class="property-type">boolean</span>
|
|
69
78
|
</dt>
|
|
70
|
-
<
|
|
79
|
+
<dd>When true an AsyncGenerator is returned.</dd>
|
|
71
80
|
</dl>
|
|
72
81
|
</dd>
|
|
73
82
|
</dl>
|
package/nodes/ollama-create.js
CHANGED
|
@@ -8,18 +8,20 @@ module.exports = function( RED ) {
|
|
|
8
8
|
node.on( 'input', async function( msg ) {
|
|
9
9
|
const {
|
|
10
10
|
host: payloadHost,
|
|
11
|
-
model,
|
|
11
|
+
model: payloadModel,
|
|
12
12
|
modelfile,
|
|
13
13
|
stream,
|
|
14
14
|
path
|
|
15
15
|
} = msg.payload
|
|
16
16
|
|
|
17
17
|
const server = RED.nodes.getNode( config.server )
|
|
18
|
-
|
|
19
18
|
const host = ( server ) ? server.host + ':' + server.port : payloadHost
|
|
20
19
|
|
|
21
20
|
const ollama = new Ollama( { host } )
|
|
22
21
|
|
|
22
|
+
const modelConfig = RED.nodes.getNode( config.model )
|
|
23
|
+
const model = ( modelConfig ) ? modelConfig.name : payloadModel
|
|
24
|
+
|
|
23
25
|
const response = await ollama.create( {
|
|
24
26
|
model,
|
|
25
27
|
modelfile,
|
package/nodes/ollama-delete.html
CHANGED
|
@@ -4,7 +4,8 @@
|
|
|
4
4
|
color: 'rgb(186 230 253)',
|
|
5
5
|
defaults: {
|
|
6
6
|
name: { value: 'Ollama Delete' },
|
|
7
|
-
server: { value: '', type: 'ollama-config-server', required: false }
|
|
7
|
+
server: { value: '', type: 'ollama-config-server', required: false },
|
|
8
|
+
model: { value: '', type: 'ollama-config-model', required: false },
|
|
8
9
|
},
|
|
9
10
|
inputs: 1,
|
|
10
11
|
outputs: 1,
|
|
@@ -25,6 +26,11 @@
|
|
|
25
26
|
<label for="node-input-server"><i class="fa fa-server"></i> Server</label>
|
|
26
27
|
<input type="text" id="node-input-server" />
|
|
27
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>
|
|
28
34
|
</script>
|
|
29
35
|
|
|
30
36
|
<script type="text/html" data-help-name="ollama-delete">
|
|
@@ -49,10 +55,13 @@
|
|
|
49
55
|
<em>Alternative to the <code>Server</code> field.</em>
|
|
50
56
|
</dd>
|
|
51
57
|
|
|
52
|
-
<dt>
|
|
58
|
+
<dt class="optional">
|
|
53
59
|
payload.model <span class="property-type">string</span>
|
|
54
60
|
</dt>
|
|
55
|
-
<dd>
|
|
61
|
+
<dd>
|
|
62
|
+
The name of the model to delete.<br />
|
|
63
|
+
<em>Alternative to the <code>Model</code> field.</em>
|
|
64
|
+
</dd>
|
|
56
65
|
</dl>
|
|
57
66
|
</dd>
|
|
58
67
|
</dl>
|
package/nodes/ollama-delete.js
CHANGED
|
@@ -8,15 +8,17 @@ module.exports = function( RED ) {
|
|
|
8
8
|
node.on( 'input', async function( msg ) {
|
|
9
9
|
const {
|
|
10
10
|
host: payloadHost,
|
|
11
|
-
model
|
|
11
|
+
model: payloadModel
|
|
12
12
|
} = msg.payload
|
|
13
13
|
|
|
14
14
|
const server = RED.nodes.getNode( config.server )
|
|
15
|
-
|
|
16
15
|
const host = ( server ) ? server.host + ':' + server.port : payloadHost
|
|
17
16
|
|
|
18
17
|
const ollama = new Ollama( { host } )
|
|
19
18
|
|
|
19
|
+
const modelConfig = RED.nodes.getNode( config.model )
|
|
20
|
+
const model = ( modelConfig ) ? modelConfig.name : payloadModel
|
|
21
|
+
|
|
20
22
|
const response = await ollama.delete( { model } )
|
|
21
23
|
.catch( error => {
|
|
22
24
|
node.error( error )
|
package/nodes/ollama-embed.html
CHANGED
|
@@ -4,7 +4,8 @@
|
|
|
4
4
|
color: 'rgb(186 230 253)',
|
|
5
5
|
defaults: {
|
|
6
6
|
name: { value: 'Ollama Embed' },
|
|
7
|
-
server: { value: '', type: 'ollama-config-server', required: false }
|
|
7
|
+
server: { value: '', type: 'ollama-config-server', required: false },
|
|
8
|
+
model: { value: '', type: 'ollama-config-model', required: false },
|
|
8
9
|
},
|
|
9
10
|
inputs: 1,
|
|
10
11
|
outputs: 1,
|
|
@@ -25,6 +26,11 @@
|
|
|
25
26
|
<label for="node-input-server"><i class="fa fa-server"></i> Server</label>
|
|
26
27
|
<input type="text" id="node-input-server" />
|
|
27
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>
|
|
28
34
|
</script>
|
|
29
35
|
|
|
30
36
|
<script type="text/html" data-help-name="ollama-embed">
|
|
@@ -49,10 +55,13 @@
|
|
|
49
55
|
<em>Alternative to the <code>Server</code> field.</em>
|
|
50
56
|
</dd>
|
|
51
57
|
|
|
52
|
-
<dt>
|
|
58
|
+
<dt class="optional">
|
|
53
59
|
payload.model <span class="property-type">string</span>
|
|
54
60
|
</dt>
|
|
55
|
-
<dd>
|
|
61
|
+
<dd>
|
|
62
|
+
The name of the model used to generate the embeddings.<br />
|
|
63
|
+
<em>Alternative to the <code>Model</code> field.</em>
|
|
64
|
+
</dd>
|
|
56
65
|
|
|
57
66
|
<dt>
|
|
58
67
|
payload.input <span class="property-type">string | array[string]</span>
|
package/nodes/ollama-embed.js
CHANGED
|
@@ -8,7 +8,7 @@ module.exports = function( RED ) {
|
|
|
8
8
|
node.on( 'input', async function( msg ) {
|
|
9
9
|
const {
|
|
10
10
|
host: payloadHost,
|
|
11
|
-
model,
|
|
11
|
+
model: payloadModel,
|
|
12
12
|
input,
|
|
13
13
|
truncate,
|
|
14
14
|
keep_alive,
|
|
@@ -16,11 +16,13 @@ module.exports = function( RED ) {
|
|
|
16
16
|
} = msg.payload
|
|
17
17
|
|
|
18
18
|
const server = RED.nodes.getNode( config.server )
|
|
19
|
-
|
|
20
19
|
const host = ( server ) ? server.host + ':' + server.port : payloadHost
|
|
21
20
|
|
|
22
21
|
const ollama = new Ollama( { host } )
|
|
23
22
|
|
|
23
|
+
const modelConfig = RED.nodes.getNode( config.model )
|
|
24
|
+
const model = ( modelConfig ) ? modelConfig.name : payloadModel
|
|
25
|
+
|
|
24
26
|
const response = await ollama.embed( {
|
|
25
27
|
model,
|
|
26
28
|
input,
|
|
@@ -4,7 +4,8 @@
|
|
|
4
4
|
color: 'rgb(186 230 253)',
|
|
5
5
|
defaults: {
|
|
6
6
|
name: { value: 'Ollama Generate' },
|
|
7
|
-
server: { value: '', type: 'ollama-config-server', required: false }
|
|
7
|
+
server: { value: '', type: 'ollama-config-server', required: false },
|
|
8
|
+
model: { value: '', type: 'ollama-config-model', required: false },
|
|
8
9
|
},
|
|
9
10
|
inputs: 1,
|
|
10
11
|
outputs: 1,
|
|
@@ -25,6 +26,11 @@
|
|
|
25
26
|
<label for="node-input-server"><i class="fa fa-server"></i> Server</label>
|
|
26
27
|
<input type="text" id="node-input-server" />
|
|
27
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>
|
|
28
34
|
</script>
|
|
29
35
|
|
|
30
36
|
<script type="text/html" data-help-name="ollama-generate">
|
|
@@ -49,10 +55,13 @@
|
|
|
49
55
|
<em>Alternative to the <code>Server</code> field.</em>
|
|
50
56
|
</dd>
|
|
51
57
|
|
|
52
|
-
<dt>
|
|
58
|
+
<dt class="optional">
|
|
53
59
|
payload.model <span class="property-type">string</span>
|
|
54
60
|
</dt>
|
|
55
|
-
<dd>
|
|
61
|
+
<dd>
|
|
62
|
+
The model to use for generating the next message.<br />
|
|
63
|
+
<em>Alternative to the <code>Model</code> field.</em>
|
|
64
|
+
</dd>
|
|
56
65
|
|
|
57
66
|
<dt>
|
|
58
67
|
payload.prompt <span class="property-type">string</span>
|
package/nodes/ollama-generate.js
CHANGED
|
@@ -8,7 +8,7 @@ module.exports = function( RED ) {
|
|
|
8
8
|
node.on( 'input', async function( msg ) {
|
|
9
9
|
const {
|
|
10
10
|
host: payloadHost,
|
|
11
|
-
model,
|
|
11
|
+
model: payloadModel,
|
|
12
12
|
prompt,
|
|
13
13
|
suffix,
|
|
14
14
|
system,
|
|
@@ -22,11 +22,13 @@ module.exports = function( RED ) {
|
|
|
22
22
|
} = msg.payload
|
|
23
23
|
|
|
24
24
|
const server = RED.nodes.getNode( config.server )
|
|
25
|
-
|
|
26
25
|
const host = ( server ) ? server.host + ':' + server.port : payloadHost
|
|
27
26
|
|
|
28
27
|
const ollama = new Ollama( { host } )
|
|
29
28
|
|
|
29
|
+
const modelConfig = RED.nodes.getNode( config.model )
|
|
30
|
+
const model = ( modelConfig ) ? modelConfig.name : payloadModel
|
|
31
|
+
|
|
30
32
|
const response = await ollama.generate( {
|
|
31
33
|
model,
|
|
32
34
|
prompt,
|
package/nodes/ollama-pull.html
CHANGED
|
@@ -4,7 +4,8 @@
|
|
|
4
4
|
color: 'rgb(186 230 253)',
|
|
5
5
|
defaults: {
|
|
6
6
|
name: { value: 'Ollama Pull' },
|
|
7
|
-
server: { value: '', type: 'ollama-config-server', required: false }
|
|
7
|
+
server: { value: '', type: 'ollama-config-server', required: false },
|
|
8
|
+
model: { value: '', type: 'ollama-config-model', required: false },
|
|
8
9
|
},
|
|
9
10
|
inputs: 1,
|
|
10
11
|
outputs: 1,
|
|
@@ -25,6 +26,11 @@
|
|
|
25
26
|
<label for="node-input-server"><i class="fa fa-server"></i> Server</label>
|
|
26
27
|
<input type="text" id="node-input-server" />
|
|
27
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>
|
|
28
34
|
</script>
|
|
29
35
|
|
|
30
36
|
<script type="text/html" data-help-name="ollama-pull">
|
|
@@ -49,10 +55,13 @@
|
|
|
49
55
|
<em>Alternative to the <code>Server</code> field.</em>
|
|
50
56
|
</dd>
|
|
51
57
|
|
|
52
|
-
<dt>
|
|
58
|
+
<dt class="optional">
|
|
53
59
|
payload.model <span class="property-type">string</span>
|
|
54
60
|
</dt>
|
|
55
|
-
<dd>
|
|
61
|
+
<dd>
|
|
62
|
+
The name of the model to download.<br />
|
|
63
|
+
<em>Alternative to the <code>Model</code> field.</em>
|
|
64
|
+
</dd>
|
|
56
65
|
|
|
57
66
|
<dt>
|
|
58
67
|
payload.insecure <span class="property-type">boolean</span>
|
package/nodes/ollama-pull.js
CHANGED
|
@@ -8,18 +8,24 @@ module.exports = function( RED ) {
|
|
|
8
8
|
node.on( 'input', async function( msg ) {
|
|
9
9
|
const {
|
|
10
10
|
host: payloadHost,
|
|
11
|
-
model,
|
|
11
|
+
model: payloadModel,
|
|
12
12
|
insecure,
|
|
13
13
|
stream
|
|
14
14
|
} = msg.payload
|
|
15
15
|
|
|
16
16
|
const server = RED.nodes.getNode( config.server )
|
|
17
|
-
|
|
18
17
|
const host = ( server ) ? server.host + ':' + server.port : payloadHost
|
|
19
18
|
|
|
20
19
|
const ollama = new Ollama( { host } )
|
|
21
20
|
|
|
22
|
-
const
|
|
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
|
+
} )
|
|
23
29
|
.catch( error => {
|
|
24
30
|
node.error( error )
|
|
25
31
|
} )
|
package/nodes/ollama-push.html
CHANGED
|
@@ -4,7 +4,8 @@
|
|
|
4
4
|
color: 'rgb(186 230 253)',
|
|
5
5
|
defaults: {
|
|
6
6
|
name: { value: 'Ollama Push' },
|
|
7
|
-
server: { value: '', type: 'ollama-config-server', required: false }
|
|
7
|
+
server: { value: '', type: 'ollama-config-server', required: false },
|
|
8
|
+
model: { value: '', type: 'ollama-config-model', required: false },
|
|
8
9
|
},
|
|
9
10
|
inputs: 1,
|
|
10
11
|
outputs: 1,
|
|
@@ -25,6 +26,11 @@
|
|
|
25
26
|
<label for="node-input-server"><i class="fa fa-server"></i> Server</label>
|
|
26
27
|
<input type="text" id="node-input-server" />
|
|
27
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>
|
|
28
34
|
</script>
|
|
29
35
|
|
|
30
36
|
<script type="text/html" data-help-name="ollama-push">
|
|
@@ -49,10 +55,13 @@
|
|
|
49
55
|
<em>Alternative to the <code>Server</code> field.</em>
|
|
50
56
|
</dd>
|
|
51
57
|
|
|
52
|
-
<dt>
|
|
58
|
+
<dt class="optional">
|
|
53
59
|
payload.model <span class="property-type">string</span>
|
|
54
60
|
</dt>
|
|
55
|
-
<dd>
|
|
61
|
+
<dd>
|
|
62
|
+
The name of the model to upload.<br />
|
|
63
|
+
<em>Alternative to the <code>Model</code> field.</em>
|
|
64
|
+
</dd>
|
|
56
65
|
|
|
57
66
|
<dt>
|
|
58
67
|
payload.insecure <span class="property-type">boolean</span>
|
package/nodes/ollama-push.js
CHANGED
|
@@ -8,18 +8,24 @@ module.exports = function( RED ) {
|
|
|
8
8
|
node.on( 'input', async function( msg ) {
|
|
9
9
|
const {
|
|
10
10
|
host: payloadHost,
|
|
11
|
-
model,
|
|
11
|
+
model: payloadModel,
|
|
12
12
|
insecure,
|
|
13
13
|
stream
|
|
14
14
|
} = msg.payload
|
|
15
15
|
|
|
16
16
|
const server = RED.nodes.getNode( config.server )
|
|
17
|
-
|
|
18
17
|
const host = ( server ) ? server.host + ':' + server.port : payloadHost
|
|
19
18
|
|
|
20
19
|
const ollama = new Ollama( { host } )
|
|
21
20
|
|
|
22
|
-
const
|
|
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
|
+
} )
|
|
23
29
|
.catch( error => {
|
|
24
30
|
node.error( error )
|
|
25
31
|
} )
|
package/nodes/ollama-show.html
CHANGED
|
@@ -4,7 +4,8 @@
|
|
|
4
4
|
color: 'rgb(186 230 253)',
|
|
5
5
|
defaults: {
|
|
6
6
|
name: { value: 'Ollama Show' },
|
|
7
|
-
server: { value: '', type: 'ollama-config-server', required: false }
|
|
7
|
+
server: { value: '', type: 'ollama-config-server', required: false },
|
|
8
|
+
model: { value: '', type: 'ollama-config-model', required: false },
|
|
8
9
|
},
|
|
9
10
|
inputs: 1,
|
|
10
11
|
outputs: 1,
|
|
@@ -25,6 +26,11 @@
|
|
|
25
26
|
<label for="node-input-server"><i class="fa fa-server"></i> Server</label>
|
|
26
27
|
<input type="text" id="node-input-server" />
|
|
27
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>
|
|
28
34
|
</script>
|
|
29
35
|
|
|
30
36
|
<script type="text/html" data-help-name="ollama-show">
|
|
@@ -49,10 +55,13 @@
|
|
|
49
55
|
<em>Alternative to the <code>Server</code> field.</em>
|
|
50
56
|
</dd>
|
|
51
57
|
|
|
52
|
-
<dt>
|
|
58
|
+
<dt class="optional">
|
|
53
59
|
payload.model <span class="property-type">string</span>
|
|
54
60
|
</dt>
|
|
55
|
-
<dd>
|
|
61
|
+
<dd>
|
|
62
|
+
The model to show information for.<br />
|
|
63
|
+
<em>Alternative to the <code>Model</code> field.</em>
|
|
64
|
+
</dd>
|
|
56
65
|
|
|
57
66
|
<dt class="optional">
|
|
58
67
|
payload.system <span class="property-type">string</span>
|
package/nodes/ollama-show.js
CHANGED
|
@@ -8,18 +8,20 @@ module.exports = function( RED ) {
|
|
|
8
8
|
node.on( 'input', async function( msg ) {
|
|
9
9
|
const {
|
|
10
10
|
host: payloadHost,
|
|
11
|
-
model,
|
|
11
|
+
model: payloadModel,
|
|
12
12
|
system,
|
|
13
13
|
template,
|
|
14
14
|
options
|
|
15
15
|
} = msg.payload
|
|
16
16
|
|
|
17
17
|
const server = RED.nodes.getNode( config.server )
|
|
18
|
-
|
|
19
18
|
const host = ( server ) ? server.host + ':' + server.port : payloadHost
|
|
20
19
|
|
|
21
20
|
const ollama = new Ollama( { host } )
|
|
22
21
|
|
|
22
|
+
const modelConfig = RED.nodes.getNode( config.model )
|
|
23
|
+
const model = ( modelConfig ) ? modelConfig.name : payloadModel
|
|
24
|
+
|
|
23
25
|
const response = await ollama.show( {
|
|
24
26
|
model,
|
|
25
27
|
system,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "node-red-contrib-ollama",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.4",
|
|
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",
|
|
@@ -29,7 +29,9 @@
|
|
|
29
29
|
"ollama-show": "nodes/ollama-show.js",
|
|
30
30
|
"ollama-ps": "nodes/ollama-ps.js",
|
|
31
31
|
"ollama-abort": "nodes/ollama-abort.js",
|
|
32
|
-
"ollama-config-server": "nodes/ollama-config-server.js"
|
|
32
|
+
"ollama-config-server": "nodes/ollama-config-server.js",
|
|
33
|
+
"ollama-config-model": "nodes/ollama-config-model.js",
|
|
34
|
+
"ollama-config-tools": "nodes/ollama-config-tools.js"
|
|
33
35
|
}
|
|
34
36
|
},
|
|
35
37
|
"engines": {
|