38 lines
1.2 KiB
Bash
Executable file
38 lines
1.2 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
|
# shellcheck source=/dev/null
|
|
source "${ROOT_DIR}/src/app_v2.sh"
|
|
|
|
require_jq() {
|
|
if ! command -v jq >/dev/null 2>&1; then
|
|
echo "ai_eval.sh: jq is required" >&2
|
|
exit 2
|
|
fi
|
|
}
|
|
|
|
fail() {
|
|
echo "ai_eval.sh: FAIL: $1" >&2
|
|
exit 1
|
|
}
|
|
|
|
app_init
|
|
require_jq
|
|
|
|
tags_out="$(app_ai_check)" || fail "ai-check failed"
|
|
printf '%s' "${tags_out}" | jq -e '.models | type == "array"' >/dev/null || fail "tags response missing models array"
|
|
printf '%s' "${tags_out}" | jq -e --arg model "${OLLAMA_MODEL}" '.models[] | select(.name == $model)' >/dev/null \
|
|
|| fail "configured model not present: ${OLLAMA_MODEL}"
|
|
|
|
prompt="Return one short sentence describing graph retrieval testing."
|
|
gen_out="$(app_ai_generate "${prompt}")" || fail "ai-generate failed"
|
|
|
|
printf '%s' "${gen_out}" | jq -e '.response | type == "string"' >/dev/null || fail "generate response missing text"
|
|
printf '%s' "${gen_out}" | jq -e '.model | type == "string"' >/dev/null || fail "generate response missing model"
|
|
|
|
response_text="$(printf '%s' "${gen_out}" | jq -r '.response')"
|
|
[[ -n "${response_text//[[:space:]]/}" ]] || fail "generate response text is empty"
|
|
|
|
echo "ai_eval.sh: PASS"
|