Репост из: LLM под капотом
Anthropic Sonnet 3.5 1022 - это очень классная модель
(1) Она поддерживает хорошо работу с PDF
(2) У этой модели есть кэширование промптов
(3) делать structured data extraction с checklist и custom chain of thought на ней одно удовольствие.
Хотя Anthropic пока и не завел structured outputs на базе constrained decoding (как это сделали в OpenAI), но их модели понимают JSON схему без каких-то нареканий. А выход у них пока без ошибок (если не перегружать контекст и соблюдать signal-noise ratio).
Что я делаю для извлечения данных из сложных PDF недорого:
(1) загружаю системный промпт со схемой в первое сообщение. Помечаю для кэширования через "cache_control": {"type": "ephemeral"},. Схему конвертирую в строку вот так:
json.dumps(Model.model_json_schema(), indent=2, ensure_ascii=False)
(2) загружаю PDF во второе сообщение. Также помечаю для кэширования.
(3) помещаю задачу из чеклиста в третье сообщение, уже не кэширую.
(4) в последнее сообщение добавляю
{
"role": "assistant",
"content": "Here is the JSON requested:\n{"
}
(5) к ответу модели добавляю { и валидирую загрузкой в исходную pydantic model
Такой процесс в итоге работает точнее и проще, чем комбайн из openAI GPT-4o со structured outputs и предобработкой PDF в отдельных специализированных моделях.
Ваш, @llm_under_hood 🤗
PS: Бенчмарк модели будет попозже
(1) Она поддерживает хорошо работу с PDF
(2) У этой модели есть кэширование промптов
(3) делать structured data extraction с checklist и custom chain of thought на ней одно удовольствие.
Хотя Anthropic пока и не завел structured outputs на базе constrained decoding (как это сделали в OpenAI), но их модели понимают JSON схему без каких-то нареканий. А выход у них пока без ошибок (если не перегружать контекст и соблюдать signal-noise ratio).
Что я делаю для извлечения данных из сложных PDF недорого:
(1) загружаю системный промпт со схемой в первое сообщение. Помечаю для кэширования через "cache_control": {"type": "ephemeral"},. Схему конвертирую в строку вот так:
json.dumps(Model.model_json_schema(), indent=2, ensure_ascii=False)
(2) загружаю PDF во второе сообщение. Также помечаю для кэширования.
(3) помещаю задачу из чеклиста в третье сообщение, уже не кэширую.
(4) в последнее сообщение добавляю
{
"role": "assistant",
"content": "Here is the JSON requested:\n{"
}
(5) к ответу модели добавляю { и валидирую загрузкой в исходную pydantic model
Такой процесс в итоге работает точнее и проще, чем комбайн из openAI GPT-4o со structured outputs и предобработкой PDF в отдельных специализированных моделях.
Ваш, @llm_under_hood 🤗
PS: Бенчмарк модели будет попозже