Pull to refresh
1
Pavel Terentev@Dvarvfich

User

Send message

Я бы к такой подборке ещё добавил один критерий, который становится неприятно важным, когда API подключается не для поиграться, а внутрь продукта: насколько можно доверять заявленной идентичности и возможностям модели.

OpenAI-compatible endpoint сам по себе мало что гарантирует. /chat/completions может отвечать, а потом выясняется, что structured output работает иначе, tool calls ведут себя по-другому, нужная модель временно недоступна или роутер незаметно отправил запрос куда-то ещё.

У себя сейчас как раз пришёл к тому, что провайдера приходится рассматривать не просто как URL + API key. Нужны отдельно фактический model ID, capabilities, явное поведение при fallback и правило «нет нужной возможности — запрос не отправляем», а не пытаемся тихо деградировать.

Для личного чата это, наверное, избыточно. А вот если через такой роутер гонять документы или строить поверх него воспроизводимый пайплайн, уже хочется после каждого ответа понимать: кто реально ответил, какой моделью и с какими гарантиями.

Было бы интересно во второй части увидеть тест именно этого слоя: requested model → actual model, structured output/tool calls и что происходит при недоступности выбранной модели.

У меня был почти зеркальный кейс, только не с кодом, а с генерацией чек-листа по ТЗ.

HTTP 200, JSON валиден, схема пройдена, результат сохранился — с точки зрения пайплайна всё зелёное. Открываю результат: 271 строка, где рядом с нормальными проверками модель добавила цели исследования, элементы матрицы рисков, служебные формулировки про готовность и вопросы, на которые исходное ТЗ вообще не отвечало. После этого для меня окончательно развалилось «валидный = пригодный».

Для таких артефактов нет удобного execution oracle, как у кода, поэтому пришлось переносить жёсткий гейт ближе к источнику: существенный пункт результата должен иметь связь с конкретным требованием или фрагментом исходного документа. То, что источником не подтверждается, не становится успешным результатом — максимум уходит на ручную проверку.

И есть ещё обратная проблема: модель может ничего не выдумать, но тихо пропустить половину критичных требований. Поэтому одной проверки faithfulness тоже мало, нужен ещё контроль покрытия.

По сути, у меня получилось очень похоже на ваш принцип «детерминированное раньше вероятностного», только детерминированная часть строится вокруг traceability и контракта результата, а LLM остаётся скорее детективом, чем судьёй.

Интересно, как бы вы строили такой гейт для текстового артефакта без исполнимого оракула: claim → source binding, отдельный контроль покрытия или уже human review на остатке?

Information

Rating
Does not participate
Registered
Activity

Specialization

Инженер по ручному тестированию, Инженер по обеспечению качества
Ведущий
Английский язык
Docker
REST
RabbitMQ
MySQL
Nginx
Базы данных
Apache Kafka
Kubernetes
Высоконагруженные системы