amduat-api/tests/ai_eval.sh

38 lines
1.2 KiB
Bash
Raw Normal View History

#!/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"