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
|
||||
ansible.builtin.set_fact:
|
||||
zeroclaw: zeroclaw
|
||||
ollama: ollama
|
||||
llm_installs:
|
||||
##### 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.
|
||||
zeroclaw: zeroclaw
|
||||
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
|
||||
ansible.builtin.set_fact:
|
||||
@@ -218,10 +297,10 @@
|
||||
- http://127.0.0.1:11434/
|
||||
- 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: |
|
||||
set -o pipefail
|
||||
item='{{ item }}'
|
||||
item='{{ item.model }}'
|
||||
if ollama list | grep -q $item; then
|
||||
echo "OKAY" &&
|
||||
return
|
||||
@@ -237,11 +316,12 @@
|
||||
failed_when: "'FAILED' in shell_check.stdout"
|
||||
become: true
|
||||
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: |
|
||||
set -o pipefail
|
||||
item='{{ item }}'
|
||||
item='{{ item.model }}'
|
||||
if ollama list | grep -q $item; then
|
||||
ollama rm $item &&
|
||||
echo "INSTALLED" &&
|
||||
@@ -257,5 +337,28 @@
|
||||
failed_when: "'FAILED' in shell_check.stdout"
|
||||
become: true
|
||||
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"
|
||||
|
||||
Reference in New Issue
Block a user