#!/usr/bin/env bash set -Eeuo pipefail trap cleanup SIGINT SIGTERM ERR EXIT payload=$(mktemp) script_dir=$(cd "$(dirname "${BASH_SOURCE[0]}")" &>/dev/null && pwd -P) usage() { cat <&2 -e -n "${1-}${2}" else echo >&2 -e "${1-}" fi } die() { local msg=$1 local code=${2-1} # default exit status 1 msg "$msg" exit "$code" } get_abs_filename() { # $1 : relative filename echo "$(cd "$(dirname "$1")" && pwd)/$(basename "$1")" } parse_params() { # default values of variables set from params #flag=0 output='' while :; do case "${1-}" in -h | --help) usage ;; -v | --verbose) set -x ;; --no-color) NO_COLOR=1 ;; #-f | --flag) flag=1 ;; # example flag -i | --image) image="${2-}" shift ;; -p | --prompt) prompt="${2-}" shift ;; -?*) die "Unknown option: $1" ;; *) break ;; esac shift done args=("$@") [[ -z "${prompt-}" ]] && prompt="${args[*]-}" # check required params and argument [[ -z "${prompt-}" ]] && die "Missing required parameter: prompt" return 0 } parse_params "$@" setup_colors # script logic here msg "${RED}Read parameters:${NOFORMAT}" msg "- image: ${image-}" msg "- prompt: ${prompt}" msg "- arguments: ${args[*]-}" if [[ -z "${image-}" ]]; then echo '{ "model": "gemma3:12b", "prompt": "'"${prompt}"'" }' >"$payload" else abspath=$(get_abs_filename "${image}") imgbase64=$(base64 -w 0 "${abspath}") echo '{ "model": "gemma3:12b", "prompt": "'"${prompt}"'", "images": ["'"${imgbase64}"'"] }' >"$payload" fi while IFS= read -r line; do echo "$line" | jq -j '.response' done < <(curl -s -X POST http://gpu.dighist.geschichte.hu-berlin.de:11434/api/generate -d @"$payload")