Questa la devo provare:
https://hackaday.com/2023/12/29/using-local-ai-on-the-command-line-to-rename-images-and-more/
UPDATE: E infatti poi l’ho provata. Ho dovuto fare un po di aggiustamenti per utilizzare il tutto con windows e ho provato a modificare i prompt in italiano.
Le modifiche si limitano ai controlli sulla presenza dei llama-file e sui prompt.
Controllo presenza file:
if ! LLAVA=$(command -v ./llava-v1.5-7b-q4.llamafile.exe); then
printf '%s\n' "llava-v1.5-7b-q4-main.llamafile: fatal error: update this script with the path of your llava llamafile" >&2
printf '%s\n' "please download https://huggingface.co/jartine/mistral-7b.llamafile/blob/main/mistral-7b-instruct-v0.1-Q4_K_M.llamafile, rename to llava-v1.5-7b-q4.llamafile.exe, and put it in the same directory of this script" >&2
abort
fi
if ! MISTRAL=$(command -v ./mistral-7b-instruct-v0.2.Q3_K_L.llamafile.exe); then
printf '%s\n' "mistral-7b-instruct-v0.1-Q4_K_M-main.llamafile: fatal error: update this script with the path of your mistral llamafile" >&2
printf '%s\n' "please download https://huggingface.co/jartine/Mistral-7B-Instruct-v0.2-llamafile/blob/main/mistral-7b-instruct-v0.2.Q3_K_L.llamafile, rename to mistral-7b-instruct-v0.2.Q3_K_L.llamafile.exe, and put it in the same directory of this script" >&2
abort
fi
Prompt italiani:
isgood() {
"$MISTRAL" \
--temp 0 \
--grammar 'root ::= "si" | "no"' \
-p "[INST]Questo nome file '${1##*/}' è una descrizione comprensibile e corretta in lingua italiana?[/INST]" \
--silent-prompt 2>/dev/null
}
pickname() {
"$LLAVA" \
--image "$1" --temp 0.3 \
--grammar 'root ::= [a-z]+ (" " [a-z]+)+' -n 15 \
-p '### User: Questa immagine contiene ...
### Assistant:' \
--silent-prompt 2>/dev/null
}
Inoltre per mistral ho dovuto scegliere una versione di dimensione non superiore ai 4giga, per limitazioni proprie di windows.
Il comportamento in inglese è buono, mentre l’output in italiano non e’ molto utile e spesso capita qualche parola di spagnolo qua e la.