Веб-майданчики чудово підходять для демонстрацій. Ви вставляєте блок тексту, спостерігаєте, як модель створює акуратний підсумок, і закриваєте вкладку. Але це не інженерія. Робота в продакшені — це API, обробка помилок і код, який працює, поки ви спите. Якщо вам потрібно обробляти протоколи зустрічей, запити в службу підтримки або наукові статті за розкладом, вам потрібен конвеєр (pipeline).

Цей посібник допоможе вам побудувати саме такий легкий автоматизований скрипт для підбиття підсумків документів за допомогою Python, AWS SDK for Python (boto3) та Amazon Bedrock. Ми використаємо Claude 3 Haiku від Anthropic — модель, яка є оптимальною за швидкістю та вартістю для завдань із підбиття підсумків тексту.

Чому Bedrock та Claude 3 Haiku?

Amazon Bedrock — це керований сервіс, який надає доступ до базових моделей через єдиний набір AWS API. Замість того, щоб збирати докупи зовнішні кінцеві точки (endpoints) і боротися з окремими моделями виставлення рахунків та безпеки, ви викликаєте endpoint AWS за допомогою стандартного керування IAM. Ваші дані залишаються у вашому середовищі AWS.

Claude 3 Haiku — це найлегша модель у сімействі Claude 3 від Anthropic. Вона створена для швидкої відповіді та низької вартості, що робить її ідеальною для великих обсягів підбиття підсумків, коли вам потрібен передбачуваний результат без переплат за потужність більших моделей для простих завдань читання.

Що вам знадобиться

Перед написанням коду переконайтеся, що у вас готове наступне:

  • Активний обліковий запис AWS.
  • Встановлений локально Python 3.9 або вище.
  • Налаштований AWS CLI з обліковими даними, які мають дозвіл на виклик моделей Bedrock. Якщо ви ще не запускали aws configure, зробіть це зараз. Якщо пізніше виникнуть помилки доступу, вам, ймовірно, доведеться надати відповідні дозволи на виклик Bedrock вашому IAM-користувачу або ролі.
  • Доступ до моделі активовано саме для Anthropic Claude 3 Haiku в консолі AWS Bedrock. AWS вимагає явного підтвердження для кожного постачальника моделей, перш ніж ви зможете викликати його.

Крок 1: Увімкніть доступ до моделі

Bedrock не дозволяє викликати моделі одразу після підключення. Спочатку потрібно змінити налаштування в консолі.

  1. Увійдіть в AWS Management Console.
  2. Використовуйте рядок пошуку, щоб знайти Amazon Bedrock.
  3. У панелі навігації ліворуч виберіть Model access.
  4. Натисніть Modify model access.
  5. Поставте галочку біля Anthropic (Claude 3 Haiku) та надішліть запит.

Як тільки статус зміниться на "Access granted", ви зможете викликати модель із коду.

Крок 2: Налаштуйте середовище

Чисте середовище Python дозволяє ізолювати залежності та забезпечує відтворюваність. Відкрийте термінал і виконайте ці команди:

mkdir bedrock-summarizer && cd bedrock-summarizer
python3 -m venv venv
source venv/bin/activate
pip install boto3

Користувачам Windows слід замінити команду активації на venv\Scripts\activate. Після завершення pip install boto3 у вас буде все необхідне для взаємодії з AWS API.

Крок 3: Напишіть скрипт

Створіть файл із назвою summarize.py. Мета полягає в тому, щоб прочитати документ з диска, передати його в Bedrock Converse API та вивести стислий підсумок.

Нижче наведено повну робочу реалізацію. Ми використовуємо Converse API, оскільки він абстрагує сире форматування JSON, яке очікують різні постачальники моделей. Ви просто передаєте список повідомлень та налаштування виведення (inference settings).

import boto3

def summarize_document(text: str) -> str:
    client = boto3.client("bedrock-runtime")
    
    model_id = "anthropic.claude-3-haiku-20240307-v1:0"
    
    messages = [
        {
            "role": "user",
            "content": [
                {
                    "text": (
                        "Provide a concise summary of the following document. "
                        "Focus on the main points and avoid unnecessary detail:\n\n"
                        f"{text}"
                    )
                }
            ]
        }
    ]
    
    response = client.converse(
        modelId=model_id,
        messages=messages,
        inferenceConfig={
            "temperature": 0.3,
            "maxTokens": 512
        }
    )
    
    summary = response["output"]["message"]["content"][0]["text"]
    return summary.strip()


if __name__ == "__main__":
    with open("document.txt", "r", encoding="utf-8") as f:
        document_text = f.read()
    
    result = summarize_document(document_text)
    print("\n--- Summary ---\n")
    print(result)

Ось кілька практичних деталей, на які варто звернути увагу:

  • boto3.client("bedrock-runtime") звертається до runtime-ендпоінту, який обробляє виведення (inference). Переконайтеся, що ваш AWS region у ~/.aws/config підтримує Bedrock і що ви увімкнули Haiku саме в цьому регіоні.
  • Model ID anthropic.claude-3-haiku-20240307-v1:0 — це саме той ідентифікатор, який очікує Bedrock. Копіюйте його точно.
  • Temperature, встановлена на 0.3, робить результат більш обґрунтованим. Для підбиття підсумків вам потрібна послідовність і відповідність вихідному тексту, а не творчі прикрашання. Якщо ви піднімете температуру ближче до 1.0, модель почне виявляти свободу у формулюваннях і іноді вигадувати деталі.
  • Сам промпт (підказка) є специфічним. Замість того, щоб просто кидати сирий текст моделі з розпливчастим "summarize this", ми чітко просимо виділити основні тези та вказуємо пропускати зайве. Така чіткість відрізняє непридатний результат від того, що ви дійсно можете використовувати в роботі.

Помістіть будь-який текстовий файл, який ви хочете підсумувати, у ту саму директорію та назвіть його document.txt.

Крок 4: Запустіть його

З активним віртуальним середовищем виконайте:

python summarize.py

Якщо ваші облікові дані та доступ до моделі правильні, ви побачите охайний підсумок у своєму терміналі протягом кількох секунд. Якщо ви отримаєте помилку доступу, перевірте свої IAM-дозволи та підтвердьте, що ви увімкнули Claude 3 Haiku в консолі.

Вихід за межі скрипта

This pipeline is intentionally simple, but it is the foundation for real automation. Here is how you can extend it without adding bloat.

Batch processing. Swap the single file read for a loop over a directory. Drop fifty PDFs or text files into an input folder, iterate through them, and write the summaries to an output folder. If you want to ingest PDFs directly, you will need a preprocessing step with a library like PyPDF2 or pdfplumber to extract raw text before it hits Bedrock.

Chunking strategy. Very long documents may exceed the model’s context limit. When that happens, split the text into logical chunks by paragraph or section, summarize each chunk individually, and then pass the intermediate summaries back through the model for a final synthesis. This two-stage approach keeps you under token limits while preserving coverage of the full document.

Error handling. Production code should catch boto3.exceptions.ClientError specifically. AWS may throttle your requests if you call the API too aggressively. Wrap your converse call in a retry loop with exponential backoff, or use a library like tenacity to handle rate limits gracefully.

Prompt engineering. The difference between a mediocre summary and a useful one often comes down to the prompt. Ask for bullet points if you need scanability. Ask for a one-paragraph executive summary if the audience is senior leadership. You can even pass formatting constraints, such as "Limit the summary to three sentences" or "Return the output as JSON with keys for topic, key_points, and action_items."

The Real Takeaway

Moving from a chat playground to a working script is the inflection point where AI becomes infrastructure. Once this pipeline runs locally, you can lift it into an AWS Lambda function triggered by S3 uploads, schedule it on ECS Fargate, or hook it into an existing data workflow. The API call is the easy part. The engineering value comes from wrapping that call in logic that handles files, errors, and formatting so you never have to copy and paste text into a browser again.

For additional context and variations on this setup, see the original walkthrough on Dev.to. If you want to discuss AWS architectures, LLM pipelines, or prompt engineering with a community of builders, join the conversation over at [GyaanSetu AI on Telegram](https://t.me/GyaanSet