No max_length on LLM-facing Pydantic fields
Не ставь max_length=N на строковые поля в Pydantic-моделях которые используются как response_format в LLM-вызовах. Особенно если N маленькое (200-500).
Why
Реальный кейс из intel-collector 2026-07-02:
class InterestScore(BaseModel): reasoning: str = Field(description="1-2 sentences why this score", max_length=300)
Мой промпт просил "1-2 sentences" → я думал 300 chars хватит. Но:
- Gemini 2.5 Flash регулярно даёт 300-500 chars объяснений, они содержательные
- Pydantic отвергает валидный ответ на validation →
score_batchтеряет 33 из 46 items (72% loss) - Bug proявился только на реальных данных, unit-тесты не поймали
Логика "модели легко следуют constraint" не работает для мягких инструкций формата "1-2 sentences". Модель следует смыслу ("brief"), не character count.
How to apply
Никогда:
max_length=Nнаstrполях в response_format Pydantic-моделяхmin_length=Nтоже — блокирует терсность
Вместо этого:
- Используй
descriptionс примером длины:"1-2 sentences, ~300 chars" - Обрезай при отображении/логировании если реально надо:
text[:300] - Если хочешь жёсткий контроль — post-process после успешного validation
Исключения когда max_length OK:
- Поле — enum-like short string (например
tier_slug: str = Field(max_length=20)) — тут это документация формата - Известная API-константа (например
country_code: str = Field(max_length=2))
Гнезда где эту ошибку легко повторить
title,summary,description,rationale,reasoning,answer,explanation— все LLM-generated- Structured Q&A extraction — где LLM пишет свободный текст
- Категоризация — где просят "brief reasoning"
Симптом в логах
1 validation error for MyModel field_name String should have at most N characters
- высокая доля
score_failed/ аналогичных warning без явной причины у LLM.
Связано
- ../algorithms/deterministic-on-llm — вообще paradigm валидации выхода LLM
- ../prompts/structured-extractor — правильный шаблон
Metadata
- title
- Не ставь max_length на Pydantic поля для LLM output
- tags
- ['skill', 'pydantic', 'llm', 'gotcha']
- created
- 2026-07-02
- context
- intel-collector 2026-07-02 debugging