Structured extractor — generic паттерн / home / prompts / structured-extractor
promptstructured-outputgeneric

Structured extractor

Generic шаблон для извлечения структурированных данных через with_structured_output(YourSchema).

Принципы которые работают

  1. Pydantic-схема описывает что хотим — не нужно повторять в промпте поля, модель видит schema
  2. System prompt — про роль и принципы: "Ты экстрактор Х из Y. Не выдумывай. Если поле не найдено — оставляй null"
  3. User prompt — данные
  4. Field descriptions в Pydantic — критичны: LLM их видит и понимает что класть

Шаблон system prompt

Ты экстрактор {entity_type} из {source_type}.

Правила:
- Извлекай ТОЛЬКО то что явно присутствует в тексте
- Если поле не найдено  оставляй null (не выдумывай)
- Если в тексте есть противоречие  выбирай самое позднее упоминание
- Не нормализуй и не "улучшай" данные  отдавай как есть

Возвращай результат строго по схеме.

Шаблон Pydantic schema

from pydantic import BaseModel, Field
from typing import Optional

class ExtractedItem(BaseModel):
    """Что-то конкретное что извлекаем."""
    
    id: Optional[str] = Field(
        None,
        description="ID если упомянут в формате FOO-123 или подобном; null если нет"
    )
    title: str = Field(
        description="Заголовок / название как он есть в тексте"
    )
    confidence: float = Field(
        ge=0, le=1,
        description="Насколько уверен в извлечении: 0=не уверен, 1=явно сказано"
    )

Шаблон LangChain / LangGraph использования

from langchain_anthropic import ChatAnthropic  # или другой через LiteLLM

llm = ChatAnthropic(model="claude-sonnet-4-6")
structured_llm = llm.with_structured_output(ExtractedItem)

result = structured_llm.invoke([
    ("system", system_prompt),
    ("user", text_to_extract_from)
])
# result — instance of ExtractedItem

Что часто работает плохо

Связано

Metadata
title
Structured extractor — generic паттерн
model
any-with-tool-calling
task
extract structured data from unstructured text
tags
['prompt', 'structured-output', 'generic']
created
2026-06-30
note
Это паттерн, не конкретный промпт. Подставлять под задачу.