Repository navigation
Feature/spec generator - #117
Conversation
|
md файл переименуй в README.md и добавь пример использования пайплайн с CoolPrompt методом |
| @@ -1,7 +1,40 @@ | |||
| from pydantic import BaseModel, Field | |||
|
|
|||
| SUPPORTED_TASK_AREAS = [ | |||
There was a problem hiding this comment.
дубль с schema.py (разберись)
либо удали его тут
SUPPORTED_TASK_AREAS в кортеж
| from pathlib import Path | ||
| from pydantic import BaseModel, Field | ||
|
|
||
| TaskType = Literal[ |
There was a problem hiding this comment.
с 9 по 44 можно закинуть в utils
|
|
||
| class RequestBuilder: | ||
| def regular(self, spec: TaskSpec, task: Task, n: int) -> str: | ||
| return _REGULAR_TEMPLATES[task].format( |
There was a problem hiding this comment.
прямой индекс _REGULAR_TEMPLATES[task] / _CORNER_TEMPLATES[task] даст KeyError при неподдерживаемом Task (если использовать RequestBuilder вне текущего пайплайна).
можно сделать обработку возможной ошибки
| _DEFAULT_MAX_LEN = 4000 | ||
|
|
||
| _LEN_HINT_RE = re.compile( | ||
| r"(\d+)\s*(?:-|–|to)\s*(\d+)\s*(chars?|characters?|words?|symbols?)", |
There was a problem hiding this comment.
ругается тут на регекс посмотри
|
Будет ли работать пайплайн для генерации нового датасета (не из списка бенчмарков)? |
|
И добавь докстринги где их нет по классам и функциям |
29d6fd6 to
118bcd8
Compare
| chat_model = resolve_chat_model(self._spec_model) | ||
|
|
||
| model = ( | ||
| chat_model.with_structured_output(schema=TaskSpec, method="json_schema") |
There was a problem hiding this comment.
(применимо в случае передачи TrackedLLMWrapper) resolve_chat_model() вытаскивает из TrackedLLMWrapper внутреннюю langchain модель, поэтому этот вызов обходит TrackedLLMWrapper.invoke() и get_openai_callback(), из-за чего вызовы не попадают в телеметрию. Нужно вызывать with_structured_output() на исходной модели либо изменить resolver так, чтобы он сохранял wrapper, если тот поддерживает этот метод.
There was a problem hiding this comment.
Исправила: resolver теперь сохраняет исходную обёртку, а with_structured_output() возвращает обёрнутую модель. Поэтому structured-output вызовы проходят через TrackedLLMWrapper.invoke() и учитываются в телеметрии.
Mr-Cool-in-Git
left a comment
There was a problem hiding this comment.
-
Non-chat LangChain модели больше не работают.
model_utils.py (line 11) считает наличие with_structured_output признаком поддержки structured output. Однако метод унаследован всеми BaseLanguageModel и может выбрасывать NotImplementedError.
Воспроизведено на FakeListLLM. Старый генератор корректно уходил в обычный invoke. Нужно проверять BaseChatModel либо перехватывать NotImplementedError и использовать JSON fallback. -
Сломана обратная совместимость публичного API.
Пакет coolprompt.data_generator удалён, а API нового generator.py (line 147) имеет другую сигнатуру и возвращает GenerationResult вместо tuple.
Старый импорт теперь воспроизводимо падает:
from coolprompt.data_generator.generator import SyntheticDataGenerator
ModuleNotFoundError
Нужен compatibility shim либо major-version breaking change с migration guide.
-
corner_ratio превратился в скрытую ошибку.
Параметр удалён из PromptTuner.run, но благодаря **kwargs старый вызов всё ещё принимается и затем передаётся оптимизатору на assistant.py. Для стандартного hyper_light это заканчивается TypeError внутри MetaPromptOptimizer.
Следует сохранить deprecated-параметр и явно обработать его либо сразу выдавать понятную ошибку. -
Контракт промпта противоречит default feedback-controlled режиму.
Инструкции требуют возвращать axis_tags в snippets_templates.py но финальный и наиболее строгий Return only показывает JSON только с input и output в spec_generator_templates.py
Unstructured-модель, следующая этому контракту, возвращает примеры без тегов; default feedback pipeline их отклоняет. JSON-пример должен включать axis_tags. -
Заявленная проверка покрытия фактически доверяет самоотчёту LLM.
validate_axis_tags проверяет только существование axis/value ID. Семантическая связь тега с input/output не проверяется, после чего тег засчитывается как покрытие.
Это расходится с README, где говорится, что условие должно присутствовать в самом примере. Нужна независимая валидация либо документация должна честно называть это model-annotated coverage. -
BRAVE потерял информацию о classification labels.
В brave/run.py generate_problem_description получает task и examples, но не получает labels, хотя они доступны в ctx.dataset_split[2]. Предыдущая реализация явно извлекала классы. Для classification benchmark описание может не объяснить классы оптимизатору.
Недостаток тестов
test_generator.py проверяет генерацию только с:
use_task_distribution=False
feedback_controlled=False
Основной production-default путь остаётся без end-to-end теста. Нужен детерминированный тест распределения, axis_tags, top-up, deduplication и интеграции через PromptTuner.
No description provided.