4.7 KiB
pipeline_setup_v3 это YAML-driven test harness для проверки agent pipeline на уровне сценариев, а не unit-тестов.
Как он работает:
- Берёт один YAML-файл или директорию с YAML-кейсами.
- Каждый кейс описывает:
idqueryrunnermodeinputexpected
- Если в
inputнет готовогоrag_session_id, harness сам получает его:- либо берёт из
input.rag_session_id - либо индексирует
input.repo_pathв RAG и кеширует полученную сессию для одинакового(repo_path, project_id)
- либо берёт из
Какие режимы кейсов есть:
router_onlyПроверяется только роутинг, без retrieval и без LLM.router_ragПроверяется роутинг плюс retrieval, но без полной генерации ответа.full_chainПроверяется полный pipeline: router → retrieval → downstream pipeline/LLM → final answer.
Как устроен execution flow:
- Loader читает YAML и превращает каждый кейс в
V3Case. - Runner для каждого кейса резолвит
rag_session_id. AgentRuntimeAdapterисполняет кейс в зависимости отmode.- Возвращаются два объекта:
actualdetails
- Validator сравнивает
actual/detailsсexpected. - Writer сохраняет:
- JSON с машинными результатами
- Markdown с человекочитаемой диагностикой
- итоговый
summary.mdпо всему прогону
Что обычно лежит в actual:
intentsub_intentgraph_idconversation_moderag_countanswer_modellm_answerpath_scopedoc_scopeentity_candidatessymbol_candidateslayersfilters
Что лежит в details:
router_resultretrieval_requestretrieval_resultrag_rowsdiagnosticsllm_requestpipeline_steps- иногда
validation,token_usage,runtime_trace
Что умеют expectations:
expected.routerПроверяетintent,sub_intent,graph_id,conversation_modeexpected.retrievalПроверяет:- пустой/непустой retrieval
- минимум строк
- наличие нужных слоёв
- path/doc scope
- symbol/entity candidates
- фильтры
expected.llmПроверяет:- есть ли ответ
- содержит ли ответ обязательные фразы
- не содержит ли запрещённые фразы
answer_mode
expected.pipelineПроверяет в основном итоговыйanswer_mode
Что важно при формулировке нового test case для ChatGPT:
- кейс должен описывать не “как реализовать код”, а “какой пользовательский сценарий проверяем”
- у кейса должны быть:
- понятный
query - корректный
mode - вход:
rag_session_idилиrepo_path - минимально достаточные
expected
- понятный
- не надо переописывать весь output, лучше проверять только ключевые инварианты
Хороший шаблон задания для ChatGPT:
- Укажи, для какого suite нужен кейс.
- Укажи
mode:router_only,router_ragилиfull_chain. - Дай пользовательский
query. - Опиши, что именно должно проверяться:
- роутинг
- retrieval layers/scope
- answer mode
- ключевые фразы в ответе
- Попроси вернуть YAML-фрагмент в формате
pipeline_setup_v3.
Пример формулировки для ChatGPT:
“Сформируй YAML test case для pipeline_setup_v3 в режиме full_chain. Нужно проверить, что запрос Объясни по документации как работает /health маршрутизируется в docs-intent, retrieval использует docs layers, retrieval непустой, а ответ содержит /health и не содержит фраз про отсутствие данных.”
Если хочешь, я могу сразу подготовить тебе готовый prompt для ChatGPT, который будет генерировать новые кейсы в нужном формате.