zeroclaw, automate which laptop gets which llm based on system specs, add providers automatically to config.toml, add some root levels defaults including a parameter which hopefully help with timeouts.
This commit is contained in:
@@ -24,44 +24,123 @@
|
|||||||
|
|
||||||
- name: Workstation | Linux | Software | ZeroClaw | Facts 01
|
- name: Workstation | Linux | Software | ZeroClaw | Facts 01
|
||||||
ansible.builtin.set_fact:
|
ansible.builtin.set_fact:
|
||||||
zeroclaw: zeroclaw
|
|
||||||
ollama: ollama
|
ollama: ollama
|
||||||
llm_installs:
|
zeroclaw: zeroclaw
|
||||||
##### QWEN #####
|
|
||||||
### 3.5, the recommended latest model of QWEN.
|
|
||||||
- qwen3.5:0.8b
|
|
||||||
- qwen3.5:2b
|
|
||||||
- qwen3.5:4b
|
|
||||||
#- qwen3.5:9b
|
|
||||||
#- qwen3.5:27b
|
|
||||||
#- qwen3.5:35b
|
|
||||||
### 3.0 Coder
|
|
||||||
#- qwen3-coder:30b
|
|
||||||
### 2.5 Coder, 7b recommended for code tasks vs QWEN 3.5 4b.
|
|
||||||
- qwen2.5-coder:0.5b
|
|
||||||
- qwen2.5-coder:1.5b
|
|
||||||
- qwen2.5-coder:3b
|
|
||||||
- qwen2.5-coder:7b
|
|
||||||
#- qwen2.5-coder:14b
|
|
||||||
#- qwen2.5-coder:32b
|
|
||||||
### 2.5, does not have "thinking" as an attribute, tempting!
|
|
||||||
#- qwen2.5:0.5b
|
|
||||||
#- qwen2.5:1.5b
|
|
||||||
#- qwen2.5:3b
|
|
||||||
#- qwen2.5:7b
|
|
||||||
#- qwen2.5:14b
|
|
||||||
#- qwen2.5:32b
|
|
||||||
### Others, TBD
|
|
||||||
#- deepseek-r1:1.5b
|
|
||||||
#- deepseek-r1:7b
|
|
||||||
#- mistal:7b
|
|
||||||
#- ministral:3b
|
|
||||||
#- ministral:8b
|
|
||||||
#- mistal:7b
|
|
||||||
#- glm4-flash
|
|
||||||
llm_removals:
|
|
||||||
- qwen3:4b # QWEN3 is the most similar to Ask Brave.
|
|
||||||
zerocode: zerocode
|
zerocode: zerocode
|
||||||
|
llm_installs: []
|
||||||
|
llm_removals:
|
||||||
|
# QWEN3 is the most similar to Ask Brave.
|
||||||
|
- { "model": "qwen3:4b", "provider": "qwen_30_040" }
|
||||||
|
llm_micro:
|
||||||
|
- { "model": "qwen3.5:0.8b", "provider": "qwen_35_008" }
|
||||||
|
- { "model": "qwen2.5-coder:0.5b", "provider": "qwen_25_coder_005" }
|
||||||
|
llm_small:
|
||||||
|
- { "model": "qwen3.5:2b", "provider": "qwen_35_020" }
|
||||||
|
- { "model": "qwen2.5-coder:1.5b", "provider": "qwen_25_coder_015" }
|
||||||
|
- { "model": "qwen2.5-coder:3b", "provider": "qwen_25_coder_030" }
|
||||||
|
llm_medium:
|
||||||
|
- { "model": "qwen3.5:4b", "provider": "qwen_35_040" }
|
||||||
|
- { "model": "qwen2.5-coder:7b", "provider": "qwen_25_coder_070" }
|
||||||
|
llm_large:
|
||||||
|
- { "model": "qwen3.5:9b", "provider": "qwen_35_090" }
|
||||||
|
- { "model": "qwen2.5-coder:14b", "provider": "qwen_25_coder_140" }
|
||||||
|
llm_huge:
|
||||||
|
- { "model": "qwen3.5:27b", "provider": "qwen_35_270" }
|
||||||
|
- { "model": "qwen3.5:35b", "provider": "qwen_35_350" }
|
||||||
|
- { "model": "qwen3-coder:30b", "provider": "qwen_30_coder_300" }
|
||||||
|
- { "model": "qwen2.5-coder:32b", "provider": "qwen_25_coder_320" }
|
||||||
|
llm_giant:
|
||||||
|
- { "model": "qwen3.5:27b", "provider": "qwen_35_270" }
|
||||||
|
- { "model": "qwen3.5:35b", "provider": "qwen_35_350" }
|
||||||
|
|
||||||
|
##### Others #####
|
||||||
|
### 2.5, does not have "thinking" as an attribute, tempting!
|
||||||
|
#- qwen2.5:0.5b
|
||||||
|
#- qwen2.5:1.5b
|
||||||
|
#- qwen2.5:3b
|
||||||
|
#- qwen2.5:7b
|
||||||
|
#- qwen2.5:14b
|
||||||
|
#- qwen2.5:32b
|
||||||
|
### TBD
|
||||||
|
#- deepseek-r1:1.5b
|
||||||
|
#- deepseek-r1:7b
|
||||||
|
#- mistal:7b
|
||||||
|
#- ministral:3b
|
||||||
|
#- ministral:8b
|
||||||
|
#- mistal:7b
|
||||||
|
#- glm4-flash
|
||||||
|
|
||||||
|
- name: Workstation | Linux | Software | ZeroClaw | Facts | Merge | Micro
|
||||||
|
ansible.builtin.set_fact:
|
||||||
|
llm_installs: "{{ llm_installs + llm_micro }}"
|
||||||
|
when: ansible_processor_vcpus >= 1
|
||||||
|
and ansible_memtotal_mb >= 2000
|
||||||
|
|
||||||
|
- name: Workstation | Linux | Software | ZeroClaw | Facts | Merge | Micro | Uninstall
|
||||||
|
ansible.builtin.set_fact:
|
||||||
|
llm_installs: "{{ llm_removals + llm_micro }}"
|
||||||
|
when: ansible_processor_vcpus < 1
|
||||||
|
or ansible_memtotal_mb < 2000
|
||||||
|
|
||||||
|
- name: Workstation | Linux | Software | ZeroClaw | Facts | Merge | Small
|
||||||
|
ansible.builtin.set_fact:
|
||||||
|
llm_installs: "{{ llm_installs + llm_small }}"
|
||||||
|
when: ansible_processor_vcpus >= 2
|
||||||
|
and ansible_memtotal_mb >= 4000
|
||||||
|
|
||||||
|
- name: Workstation | Linux | Software | ZeroClaw | Facts | Merge | Small | Uninstall
|
||||||
|
ansible.builtin.set_fact:
|
||||||
|
llm_installs: "{{ llm_removals + llm_small }}"
|
||||||
|
when: ansible_processor_vcpus < 2
|
||||||
|
or ansible_memtotal_mb < 4000
|
||||||
|
|
||||||
|
- name: Workstation | Linux | Software | ZeroClaw | Facts | Merge | Medium
|
||||||
|
ansible.builtin.set_fact:
|
||||||
|
llm_installs: "{{ llm_installs + llm_medium }}"
|
||||||
|
when: ansible_processor_vcpus >= 4
|
||||||
|
and ansible_memtotal_mb >= 8000
|
||||||
|
|
||||||
|
- name: Workstation | Linux | Software | ZeroClaw | Facts | Merge | Medium | Uninstalls
|
||||||
|
ansible.builtin.set_fact:
|
||||||
|
llm_installs: "{{ llm_removals + llm_medium }}"
|
||||||
|
when: ansible_processor_vcpus < 4
|
||||||
|
or ansible_memtotal_mb < 8000
|
||||||
|
|
||||||
|
- name: Workstation | Linux | Software | ZeroClaw | Facts | Merge | Large
|
||||||
|
ansible.builtin.set_fact:
|
||||||
|
llm_installs: "{{ llm_installs + llm_large }}"
|
||||||
|
when: ansible_processor_vcpus >= 8
|
||||||
|
and ansible_memtotal_mb >= 16000
|
||||||
|
|
||||||
|
- name: Workstation | Linux | Software | ZeroClaw | Facts | Merge | Large | Uninstalls
|
||||||
|
ansible.builtin.set_fact:
|
||||||
|
llm_installs: "{{ llm_removals + llm_large }}"
|
||||||
|
when: ansible_processor_vcpus < 8
|
||||||
|
and ansible_memtotal_mb < 16000
|
||||||
|
|
||||||
|
- name: Workstation | Linux | Software | ZeroClaw | Facts | Merge | Huge
|
||||||
|
ansible.builtin.set_fact:
|
||||||
|
llm_installs: "{{ llm_installs + llm_huge }}"
|
||||||
|
when: ansible_processor_vcpus >= 12
|
||||||
|
and ansible_memtotal_mb >= 32000
|
||||||
|
|
||||||
|
- name: Workstation | Linux | Software | ZeroClaw | Facts | Merge | Huge | Uninstalls
|
||||||
|
ansible.builtin.set_fact:
|
||||||
|
llm_installs: "{{ llm_removals + llm_huge }}"
|
||||||
|
when: ansible_processor_vcpus < 12
|
||||||
|
and ansible_memtotal_mb < 32000
|
||||||
|
|
||||||
|
- name: Workstation | Linux | Software | ZeroClaw | Facts | Merge | Giant
|
||||||
|
ansible.builtin.set_fact:
|
||||||
|
llm_installs: "{{ llm_installs + llm_huge }}"
|
||||||
|
when: ansible_processor_vcpus >= 18
|
||||||
|
and ansible_memtotal_mb >= 64000
|
||||||
|
|
||||||
|
- name: Workstation | Linux | Software | ZeroClaw | Facts | Merge | Giant | Uninstalls
|
||||||
|
ansible.builtin.set_fact:
|
||||||
|
llm_installs: "{{ llm_removals + llm_huge }}"
|
||||||
|
when: ansible_processor_vcpus < 18
|
||||||
|
and ansible_memtotal_mb < 64000
|
||||||
|
|
||||||
- name: Workstation | Linux | Software | ZeroClaw | Facts 02
|
- name: Workstation | Linux | Software | ZeroClaw | Facts 02
|
||||||
ansible.builtin.set_fact:
|
ansible.builtin.set_fact:
|
||||||
@@ -218,10 +297,10 @@
|
|||||||
- http://127.0.0.1:11434/
|
- http://127.0.0.1:11434/
|
||||||
- http://127.0.0.1:42617/health
|
- http://127.0.0.1:42617/health
|
||||||
|
|
||||||
- name: Workstation | Linux | Software | ZeroClaw | ollama | Models | Install
|
- name: Workstation | Linux | Software | ZeroClaw | Models | ollama | Install
|
||||||
ansible.builtin.shell: |
|
ansible.builtin.shell: |
|
||||||
set -o pipefail
|
set -o pipefail
|
||||||
item='{{ item }}'
|
item='{{ item.model }}'
|
||||||
if ollama list | grep -q $item; then
|
if ollama list | grep -q $item; then
|
||||||
echo "OKAY" &&
|
echo "OKAY" &&
|
||||||
return
|
return
|
||||||
@@ -237,11 +316,12 @@
|
|||||||
failed_when: "'FAILED' in shell_check.stdout"
|
failed_when: "'FAILED' in shell_check.stdout"
|
||||||
become: true
|
become: true
|
||||||
become_user: "{{ user }}"
|
become_user: "{{ user }}"
|
||||||
|
when: llm_installs | length > 0
|
||||||
|
|
||||||
- name: Workstation | Linux | Software | ZeroClaw | ollama | Models | Remove
|
- name: Workstation | Linux | Software | ZeroClaw | Models | ollama | Remove
|
||||||
ansible.builtin.shell: |
|
ansible.builtin.shell: |
|
||||||
set -o pipefail
|
set -o pipefail
|
||||||
item='{{ item }}'
|
item='{{ item.model }}'
|
||||||
if ollama list | grep -q $item; then
|
if ollama list | grep -q $item; then
|
||||||
ollama rm $item &&
|
ollama rm $item &&
|
||||||
echo "INSTALLED" &&
|
echo "INSTALLED" &&
|
||||||
@@ -257,5 +337,28 @@
|
|||||||
failed_when: "'FAILED' in shell_check.stdout"
|
failed_when: "'FAILED' in shell_check.stdout"
|
||||||
become: true
|
become: true
|
||||||
become_user: "{{ user }}"
|
become_user: "{{ user }}"
|
||||||
|
when: llm_removals | length > 0
|
||||||
|
|
||||||
|
- name: Workstation | Linux | Software | ZeroClaw | Models | zeroclaw | Defaults
|
||||||
|
ansible.builtin.blockinfile:
|
||||||
|
path: "{{ user_user.home }}/.zeroclaw/config.toml"
|
||||||
|
marker: "# {mark} ANSIBLE MANAGED BLOCK | zeroclaw | Defaults"
|
||||||
|
insertbefore: BOF
|
||||||
|
block: |
|
||||||
|
default_provider = "ollama"
|
||||||
|
default_model = "qwen3.5:4b"
|
||||||
|
provider_timeout_secs = 3600
|
||||||
|
|
||||||
|
# Cheat Sheet: https://docs.zeroclaw.com/master/en/providers/configuration.html
|
||||||
|
- name: Workstation | Linux | Software | ZeroClaw | Models | zeroclaw | Add Providers
|
||||||
|
ansible.builtin.blockinfile:
|
||||||
|
path: "{{ user_user.home }}/.zeroclaw/config.toml"
|
||||||
|
marker: "# {mark} ANSIBLE MANAGED BLOCK | zeroclaw | Providers"
|
||||||
|
block: |
|
||||||
|
{% for llm in llm_installs %}
|
||||||
|
[providers.models.ollama.ansible_{{ llm.provider }}]
|
||||||
|
model = "{{ llm.model }}"
|
||||||
|
timeout_secs = 3600 # 1 hour, default is 120 (2 minutes), issue happens between 5 and 6 minutes though.
|
||||||
|
{% endfor %}
|
||||||
|
|
||||||
when: ansible_pkg_mgr == "pacman"
|
when: ansible_pkg_mgr == "pacman"
|
||||||
|
|||||||
Reference in New Issue
Block a user