fix anth-glm-5.3-5

This commit is contained in:
Виталий Никитенко
2026-10-16 17:01:17 +07:00
parent ef187a1b48
commit f4a8c23af3
2 changed files with 96 additions and 25 deletions

View File

@@ -1731,6 +1731,28 @@ _eltex_check_key() {
_handle_openai_api_response "Eltex LLM" "$_CLAUDE_TEST_CODE" "$_CLAUDE_TEST_BODY" "Лимит team-подписки исчерпан - обратись к админам"
}
# _eltex_pick_default_model: модель по умолчанию из _CLAUDE_TEST_BODY (последний ответ
# /v1/models). Печатает имя модели в stdout. Список не распарсился (429/сетевая ошибка/
# 5xx) - anth-glm-5.3-5 наугад, как раньше. Распарсился, но anth-glm-5.3-5 в нём нет -
# ошибка в stderr и возврат 1: ключу недоступна модель, дефолтный запуск невозможен.
_eltex_pick_default_model() {
local avail
if ! avail=$(echo "$_CLAUDE_TEST_BODY" | python3 -c '
import sys, json
print(" ".join(m["id"] for m in json.load(sys.stdin)["data"]))' 2>/dev/null); then
echo "anth-glm-5.3-5"
return 0
fi
case " $avail " in
*" anth-glm-5.3-5 "*) echo "anth-glm-5.3-5" ;;
*)
echo -e "\033[0;31m[МОДЕЛЬ]\033[0m Ключу недоступна модель anth-glm-5.3-5. Прокси отдаёт: ${avail:-(пусто)}" >&2
echo " Напиши админам про доступ к anth-glm-5.3-5 или задай модель явно: ELTEX_MODEL=<имя> ai-eltex" >&2
return 1
;;
esac
}
if [ -n "$api_key" ]; then
echo -n "Проверка сохранённого Eltex ключа... "
_eltex_check_key "$api_key"
@@ -1744,6 +1766,13 @@ if [ -n "$api_key" ]; then
read -r _ans; case "${_ans:-N}" in [Yy]*) ;; *) exit 1 ;; esac
elif [ $ret -ne 0 ]; then
exit 1
elif [ -z "${ELTEX_MODEL:-}" ] && ! model=$(_eltex_pick_default_model); then
# Ключ валиден, но anth-glm-5.3-5 недоступна (не та группа доступа) - авто-логаут,
# как при 401: такой ключ не годится для дефолтного запуска, сразу просим новый.
echo " Сохранённый ключ удалён (авто-логаут)."
rm -f "$key_file"
api_key=""
reauth=1
fi
fi
@@ -1761,6 +1790,10 @@ if [ -z "$api_key" ]; then
_eltex_check_key "$api_key"
ret=$_API_RET
if [ $ret -eq 0 ] || [ $ret -eq 429 ]; then
if [ -z "${ELTEX_MODEL:-}" ] && ! model=$(_eltex_pick_default_model); then
echo "Ключ НЕ сохранён."
exit 1
fi
mkdir -p "$(dirname "$key_file")"
echo "$api_key" > "$key_file"
chmod 600 "$key_file"
@@ -1775,29 +1808,14 @@ if [ -z "$api_key" ]; then
fi
fi
# Модель: ELTEX_MODEL, иначе anth-glm-5.3 - деплойменты на Anthropic-эндпоинте Z.ai:
# Модель: ELTEX_MODEL, иначе anth-glm-5.3-5 - деплойменты на Anthropic-эндпоинте Z.ai:
# всегда настоящая glm-5.3 и картинки через серверный analyze_image.
# Первую модель из /v1/models НЕ берём: там бывают не те модели (zai-glm-5.3 с автороутером
# во flash) и имена групп доступа (ZAI-Test-Group), которые не запустить. Если у ключа
# нет anth-glm-5.3 - выходим с понятной ошибкой вместо 400/403 внутри Claude Code.
model="${ELTEX_MODEL:-}"
if [ -z "$model" ]; then
if avail=$(echo "$_CLAUDE_TEST_BODY" | python3 -c '
import sys, json
print(" ".join(m["id"] for m in json.load(sys.stdin)["data"]))' 2>/dev/null); then
case " $avail " in
*" anth-glm-5.3 "*) model="anth-glm-5.3" ;;
*)
echo -e "\033[0;31m[МОДЕЛЬ]\033[0m Ключу недоступна модель anth-glm-5.3. Прокси отдаёт: ${avail:-(пусто)}"
echo " Напиши админам про доступ к anth-glm-5.3 или задай модель явно: ELTEX_MODEL=<имя> ai-eltex"
exit 1
;;
esac
else
# Список моделей не получили (ошибка сервера) - пробуем модель по умолчанию
model="anth-glm-5.3"
fi
fi
# нет anth-glm-5.3-5 - авто-логаут выше (свежевведённый такой ключ не сохраняется),
# вместо 400/403 внутри Claude Code. ${model:-anth-glm-5.3-5} - 429/сетевая ошибка, когда список
# моделей не получили.
model="${ELTEX_MODEL:-${model:-anth-glm-5.3-5}}"
echo "Модель: $model"
_PROMPT_FILE=$(mktemp /tmp/ai-sys-prompt.XXXXXX)
@@ -1809,7 +1827,7 @@ export CLAUDE_CONFIG_DIR="$HOME/.config/ai-setup/cfg/eltex"
# незаданный слот показал бы чужой Claude.
# Effort как у ai-glm: старт на max через CLI --effort (перебивает effortLevel из
# settings.json; AI_EFFORT=max в settings Claude Code не принимает и шлёт high), /effort
# в сессии работает. С 09.10 прокси пропускает output_config.effort для anth-glm-5.3:
# в сессии работает. С 09.10 прокси пропускает output_config.effort для anth-glm-5.3-5:
# low/medium/high/max = 68/83/~4-6K/~4-5K выходных токенов (Z.ai: low,medium->low;
# high,xhigh->high; max). CLAUDE_CODE_ALWAYS_ENABLE_EFFORT - страховка, как в ai-glm.
# Имена-алиасы claude-* на прокси НЕ используем: claude-3-5-sonnet Claude Code считает