That’s Awesome. So Neo is the main player?
I haven’t really decided who will be in charge of the whole thing; Neo may end up being the guy I go to for stuff not directly related to the home.
The hardware, at least the Dell system itself, seems to have been faulty, so I’m upgrading it to a dual 3060 12GB system with a different PC as base. I will probably also start on a quad GPU system for heavier stuff.
No really? What happened?
It won’t boot. It seems like an issue with the power supply, and since it’s a Dell, that means if it’s bad, I have to find one from the same model, since they use a custom one and not the ATX standard like a lot of of other vendors.
With Friday’s DGX1 on reserve and the construction under way were really ready to get this party started.
Construction foreman, not banana for scale.
I said hot tub. Did I stutter? (Apologies to Drew Lynch)
The Caldera Spas (Watkins) IQ2020 system is compatible with an Esp32 through its service port. The spa cover just needs a few dry contact switches…
I have about a month now to finish that KungFu component…
Friday’s Hot Tub Time Machine begins now.
Nice framework and that’s a big hot tub.
Okay, I’ve got Neo’s script mostly done, based heavily on the one for Kronk. I will probably make a few other changes to make his focus more general knowledge and data retrieval from the Internet (aka The Matrix). Now for Jarvis and possibly Friday.
Thanks 8 person + cover, the pad is 10x10’ but because of the grade and weight were having to pour a stupidly well engineered footer and lets just say rebar won’t be an issue. It’s more a bunker now than a pad.
So here’s where we start ton get tactical and share.
Im thinking we’re all going to land on the same basic construct. So the scripts are all going to start looking the same. The ones I’m building I’m separating the prompt out intentionally so you can mod it later.
One of those mods is another pluggable personality module. That prompt is basically the same as the hero prompt same limits etc. (well within reason and model appropriate)
So in my next version I’m going to have a var: personality. And another default_prompt
It build prompt by combining the other parts. Then… All you need to then do is have storage of your personality module somewhere and…
Sounds good. What’s the best option for personality storage?
I’m using the trigger text sensor for most of this kind of stuff. So when reading back it’s a simple select_attr() call.
We’re missing some base intents.
If you want to use something like my room manager (credit Bangali - its a port of his old SmartThings Room Manager code) - you get into selects and Input Selects fast. THIS is actually an input_select (you’re just doing a select action with each of those buttons)
You’ll need these - Somone put some polish on these and repost em even better - tune them up and submit them as a FR (AFTER consolidating them)…
Base Intents for input_select and select entities
todo:
- bulletproof
- merge them all into one intent
- Yes we gotta, see discussion on max # of intents - this needs to be 1 tool not 4. You can assume a set with nullstring input is a read, then figure out if the user specified a domain or not - if no domain assume input_select so it would read an input select by default and functionality expands from there.
get_input_select_options:
description: >
"Returns available options and current state of an input_select entity
example: >
```json
{
'name': 'input_select.office_occupancy'
}
```
Yes you read that right... Shortcut to get [roomname] occupancy options..."
parameters:
name: # Describes the name of the input_select entity_id passed from the voice input or your context
required: true
action: []
speech:
text: >
{% from 'fridays_toolbox.jinja' import input_select_available_options %}
{%- set options = input_select_available_options(name) -%}
'{{- name -}}':{'state':'{{- states(name) -}}', 'options':[{{- options -}}],}
get_select_options:
description:
"Set an 'entity_id' to a sepcific 'option' from selected presets.
example: >
```json
{
'name': 'select.nest_protect_master_bedroom_brightness',
}
```"
parameters:
name: # Describes the name of the select. domain entity_id passed from the voice input or your context
required: true
action: []
speech:
text: >
{% from 'fridays_toolbox.jinja' import input_select_available_options %}
{%- set options = input_select_available_options(name) -%}
'{{- name -}}':{'state':'{{- states(name) -}}', 'options':[{{- options -}}],}
set_input_select:
description:
"Set an 'entity_id' to a sepcific 'option' from selected presets.
example: >
```json
{
'name': 'input_select.office_occupancy',
'option': 'Vacant'
}
```"
parameters:
name: # Describes an existing, valid 'entity_id' to set
required: true
option: # Describes the option to set note:'Case Sensitive' - on error use get_input_select_options( [ENTITY_ID] ) to get state and avalaible options
required: true
action:
action: input_select.select_option
data:
option: "{{ option }}"
target:
entity_id: >
{%- set dot = name.find('.') -%}
{%- if dot == -1 -%}
{%- set entity_id = 'input_select.'+ slugify( name | replace(':','') ) -%}
{%- else -%}
{%- if name[0:13] == 'input_select.' -%}
{%- set entity_id = name -%}
{%- else -%}
{%- set entity_id = '' -%}
{%- endif -%}
{%- endif -%}
{{- entity_id -}}
speech:
text: >
{% from 'fridays_toolbox.jinja' import input_select_available_options %}
{%- set options = input_select_available_options(name) -%}
'{{- name -}}' requested: '{{- option -}}', 'state:'{{- states(name) -}}'
set_select:
description:
"Set an 'entity_id' to a sepcific 'option' from selected presets.
example: >
```json
{
'name': 'select.nest_protect_master_bedroom_brightness',
'option': 'High'
}
```"
parameters:
name: # Describes an existing, valid select domain 'entity_id' to set
required: true
option: # Describes the option to set note:'Case Sensitive' - on error use get_select_options( [ENTITY_ID] ) to get state and avalaible options
required: true
action:
action: input_select.select_option
data:
option: "{{ option }}"
target:
entity_id: >
{%- set dot = name.find('.') -%}
{%- if dot == -1 -%}
{%- set entity_id = 'select.'+ slugify( name | replace(':','') ) -%}
{%- else -%}
{%- if name[0:7] == 'select.' -%}
{%- set entity_id = name -%}
{%- else -%}
{%- set entity_id = '' -%}
{%- endif -%}
{%- endif -%}
{{- entity_id -}}
speech:
text: >
{% from 'fridays_toolbox.jinja' import input_select_available_options %}
{%- set options = input_select_available_options(name) -%}
'{{- name -}}' requested: '{{- option -}}', 'state:'{{- states(name) -}}'
fridays_toolbox.jinja (Yes you can absolutely include above - I had reasons for splitting it at the time) Like I said - Not how I’d do it in YOUR system - but here’s the roadmap - it works.
{%- macro input_select_available_options(entity_id) -%}
{%- if states(entity_id) -%}
{{- state_attr(entity_id, 'options') | join(', ') -}}
{%- else -%}
{%- endif -%}
{%- endmacro -%}
Merry selections!
If we can get the tool calls combined and increase the number of them allowed, if possible, things get much easier.
Isn’t that over 5 years old and still like $25k used?
They announced a standalone Blackwell box for availability this summer pre tarrif price @3000 usd. You can lash two together and you get about 1000 TOPS out of each (Go watch engadgets rundoyof Jensens last stage appearance. I think it’s in that video)
Basically should be able to chew through a local reasoning engine like butter.
You’re thinking about the D1 supercomputer l, of which this is basically one compute node.
Oh, that’s not DGX-1, that’s DGX Spark.
Nah, I was referring to DGX-1
They need new names.
In any case, I uh… Messed up something. This weekend and ended up hosing the storage for the box. So I did what any sys admin does whr you have to open the box anyway. I loaded it up with two TB of SSD and 96GB of DDR5
We’ll see if 100 tops is enough for a local reasoner…
Is that anything like buying a “new” computer when the last used one fails to work? Not that the Dell PowerEdge R410 is going to be used for this, mind you. Howerver, the HP Z440 is.
Shhhhhhh nooooooo?
Maybe
Hopefully you can get Friday back up and running better than ever. Once I get the HP Z440, I’ll be starting to bring my system online.
Edited to add: The HP Z440 and the second GPU came in today and I now have a working LLM server.
depends on the ops. FP16? Definitely - that’s what a 5090 has.