CD llm-endpoint-switching
Руководство по устранению неполадок при переключении LLM в скрипте с одной совместимой с OpenAI конечной точки/модели на другую. Основное внимание уделяется трем типам неизбежных проблем: **Cloudflare блокирует стандартный UA urllib, вызывая 403** (ошибочно принимается за недействительный ключ, даже с правильным ключом все равно 403), **пустая строка является ловушкой истинности при переключении на конечную точку без ключа** (`configure()` с `if api_key:` приведет к использованию старого платного ключа → обязательно 401), а также подход **предварительной проверки с помощью --ping перед пакетной обработкой**. Используйте, когда пользователь говорит «переключить на модель XX», «добавить модель», «этот API возвращает 403 / 400 / 404», «вызов ИИ не удался», «ключ правильный, но говорит, что недействителен», «как переключить модель», «переключить на модель без ключа», «после переключения 401».
машинный переводПоказать оригиналСкрыть оригинал«把脚本里的 LLM 从一个 OpenAI 兼容端点/模型换到另一个时的排查手册。 重点覆盖三类必踩的坑:**Cloudflare 拦 url…»
把脚本里的 LLM 从一个 OpenAI 兼容端点/模型换到另一个时的排查手册。 重点覆盖三类必踩的坑:**Cloudflare 拦 urllib 默认 UA 导致 403 「error code: 1010」**(会被误判成 key 无效,换真 key 也照样403)、 **切到免 key 端点时空串是真值陷阱**(`configure()` 用 `if api_key:` 会让旧付费 key 沿用 → 必 401),以及**先 --ping 预检再跑批量**的做法。 当用户说「换成 XX 模型」「加个模型」「这个 API 报 403 / 400 / 404」 「AI 调用失败」「key 明明是对的却说无效」「怎么切模型」 「换成免 key 的模型」「切过去之后 401」时使用。
Руководство по устранению неполадок при переключении LLM в скрипте с одной совместимой с OpenAI конечной точки/модели на другую.
Как процесс D 41/100 · Процесс не доведён — Скилл ссылается на файлы, которых нет в архиве: scripts/test_ai_verify.py
Как улучшить
- Скажите в description, КОГДА применять скилл («используй, когда…», примеры запросов): это главный сигнал для агента.
- В тексте есть ссылки на отсутствующие файлы: добавьте файлы или уберите ссылки.
- Свои кейсы (evals/evals.json, 4–6 реальных запросов с ожидаемыми ответами): тогда полная проверка прогонит именно их, а не черновик от модели.
- spec.yaml с триггерными фразами и утверждениями — контракт поведения для CI; `skilltest init` создаст шаблон.
Находки guard · 0
✓ Критических и высоких находок нет
Просканировано файлов: 2. Улики замаскированы. Пометки в серых чипах объясняют, почему серьёзность понижена.
По спецификации Agent Skills
- предупреждение
description-no-whendescription не говорит, КОГДА применять скилл (нет "use when / используй когда") - предупреждение
missing-refссылка на отсутствующий файл: scripts/test_ai_verify.py - заметка
frontmatter-keyнеизвестное поле фронтматтера "slug" - заметка
frontmatter-keyнеизвестное поле фронтматтера "displayName" - заметка
frontmatter-keyнеизвестное поле фронтматтера "agent_created"
Процессный рейтинг: все десять параметров 41/100
- 0Инструменты и файлы. Не хватает 1 файла(ов): scripts/test_ai_verify.py
- 0Результат и критерий готовности. Не сказано, что считать результатом
- 0Входы и предусловия. Не сказано, что нужно иметь на входе
- 0Отчётность по ходу. Скилл ничего не сообщает по ходу работы
- 20Когда включается. Не сказано, при каком запросе скилл включается
- 55Ошибки и развилки. Развилок: 1
- 100Шаги. Шагов: 11
- 100Согласованность. Имя и обязательные поля на месте
- 100Стоимость исполнения. Тело инструкции 1746 токенов
- 100Повторный запуск. Изменяющих операций нет
- low Разделов верхнего уровня: 10. Похоже на несколько доменов в одном скилле
Всё перечисленное измерено по тексту скилла, а не оценено моделью: цифры проверяемы. Вес параметра тем больше, чем чаще из-за него процесс встаёт.
Сигналы качества
- +5В description нет примеров фраз, по которым скилл должен срабатывать
- +4Описание не говорит, когда скилл НЕ применять (ложные срабатывания)
- +3Формат ответа не описан: модель каждый раз решает сама
- -226 эмодзи в инструкциях: шум для модели
- +1Лицензия не указана
- +2Инструкции на одном языке
- +3Длина description 345 символов: достаточно сигнала, не съедает бюджет
- +4Структура: 17 заголовков
- +3Пошаговые инструкции: 11 пунктов
- +4Есть примеры (7 блоков кода)
База качества 70; замечания lint вычитаются, сигналы прибавляют до 100. Итог: 61.