Вот тот самый тайный первый промпт, который отвечает за самую сложную часть анализа документов в завершенном проекте (см выше). Там текста - кот наплакал, а вся логика зашита в response format (схему на полей 60-70). А дальше constrained decoding движок будет мучать модель, чтобы ответ был оформлен строго по плану анализа. Причем анализ структурно простой - там даже нет раутинга, только каскады и пара циклов (см SGR patterns) Второй промпт (генерация кода инструментов на базе результатов этого анализа) будет чуть побольше - нужно дать вводные: (1) Ты извлекаешь данные такого типа из этого документа (2) Напиши код, который сделает работу (3) Результат предварительного анализа документа - вот этот JSON (4) Сигнатура функции должна быть такая (включая описание схемы данных) (5) смотри у меня, чтобы не ломаться на таких кейсах (список ошибок из прошлой итерации, если есть) Зато response схема тут фактически с одним полем: ``` class PythonFunction(BaseModel): function_body: str ``` Ну а качество работы такой связки вы уже видели в картах ошибок Ваш, @llm_under_hood 🤗 PS: Я еще упускаю часть пайплайна, которая делает всю тяжелую работу по поиску документов и их извлечению. В результате ее работы у нас задача сводится к аккуратному списку PDF-ок, из которых нужно извлечь данные. Там уже разные промпты под источник.