Web playgrounds sangat bagus untuk demo. Anda menempelkan blok teks, melihat model menghasilkan ringkasan yang rapi, lalu menutup tab tersebut. Namun, itu bukanlah engineering. Pekerjaan produksi berarti API, penanganan kesalahan, dan kode yang berjalan saat Anda sedang tidur. Jika Anda perlu memproses transkrip rapat, tiket dukungan, atau makalah penelitian secara terjadwal, Anda memerlukan sebuah pipeline.
Panduan ini akan memandu Anda membangun hal tersebut: sebuah skrip peringkasan dokumen otomatis yang ringan menggunakan Python, AWS SDK for Python (boto3), dan Amazon Bedrock. Kita akan menggunakan Anthropic’s Claude 3 Haiku, sebuah model yang menawarkan titik keseimbangan ideal antara kecepatan dan biaya untuk tugas-tugas peringkasan teks.
Mengapa Bedrock dan Claude 3 Haiku?
Amazon Bedrock adalah layanan terkelola yang menyediakan model fondasi melalui satu set API AWS. Alih-alih menyatukan berbagai endpoint eksternal dan berkutat dengan model penagihan serta keamanan yang terpisah, Anda cukup memanggil endpoint AWS dengan kontrol IAM standar. Data Anda tetap berada di dalam lingkungan AWS Anda.
Claude 3 Haiku adalah model paling ramping dalam keluarga Claude 3 milik Anthropic. Model ini dibangun untuk responsivitas dan biaya rendah, menjadikannya ideal untuk peringkasan bervolume tinggi di mana Anda menginginkan output yang dapat diprediksi tanpa harus membayar kapasitas besar dari model yang lebih besar untuk tugas membaca yang sederhana.
Apa yang Anda Butuhkan
Sebelum menulis kode apa pun, pastikan Anda telah menyiapkan hal-hal berikut:
- Akun AWS yang aktif.
- Python 3.9 atau versi yang lebih tinggi yang terinstal secara lokal.
- AWS CLI yang telah dikonfigurasi dengan kredensial yang memiliki izin untuk memanggil model Bedrock. Jika Anda belum menjalankan
aws configure, lakukan sekarang. Jika Anda menemui kesalahan izin (permission errors) nanti, Anda kemungkinan perlu melampirkan izin pemanggilan Bedrock yang sesuai ke pengguna atau peran IAM Anda. - Akses model yang telah diaktifkan khusus untuk Anthropic Claude 3 Haiku di dalam konsol AWS Bedrock. AWS mengharuskan Anda untuk secara eksplisit memilih (opt in) setiap penyedia model sebelum Anda dapat memanggilnya.
Langkah 1: Aktifkan Akses Model
Bedrock tidak mengizinkan Anda memanggil model secara langsung begitu saja. Anda harus mengaktifkannya di konsol terlebih dahulu.
- Login ke AWS Management Console.
- Gunakan bilah pencarian untuk menemukan Amazon Bedrock.
- Di panel navigasi kiri, pilih Model access.
- Klik Modify model access.
- Centang kotak untuk Anthropic (Claude 3 Haiku) dan kirimkan permintaan Anda.
Setelah status berubah menjadi "Access granted," Anda dapat mulai memanggil model tersebut melalui kode.
Langkah 2: Siapkan Lingkungan Anda
Lingkungan Python yang bersih menjaga dependensi tetap terisolasi dan dapat direproduksi. Buka terminal Anda dan jalankan perintah berikut:
mkdir bedrock-summarizer && cd bedrock-summarizer
python3 -m venv venv
source venv/bin/activate
pip install boto3
Pengguna Windows harus mengganti perintah aktivasi dengan venv\Scripts\activate. Setelah pip install boto3 selesai, Anda telah memiliki semua yang dibutuhkan untuk berkomunikasi dengan API AWS.
Langkah 3: Tulis Skripnya
Buat file bernama summarize.py. Tujuannya adalah membaca dokumen dari disk, menyerahkannya ke Bedrock Converse API, dan mencetak ringkasan yang ringkas.
Berikut adalah implementasi lengkap yang dapat dijalankan. Kami menggunakan Converse API karena API ini mengabstraksi pemformatan JSON mentah yang diharapkan oleh berbagai penyedia model yang berbeda. Anda cukup mengirimkan daftar pesan dan pengaturan inferensi.
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)
Beberapa detail praktis yang perlu disoroti di sini:
- boto3.client("bedrock-runtime") menargetkan endpoint runtime yang menangani inferensi. Pastikan region AWS Anda di
~/.aws/configmendukung Bedrock dan Anda telah mengaktifkan Haiku di region yang sama. - Model ID
anthropic.claude-3-haiku-20240307-v1:0adalah pengidentifikasi tepat yang diharapkan oleh Bedrock. Salinlah dengan presisi. - Temperature diatur ke 0.3 untuk menjaga output tetap akurat dan sesuai fakta. Untuk peringkasan, Anda menginginkan konsistensi dan kesetiaan pada teks sumber, bukan hiasan kreatif. Jika Anda menaikkan temperature mendekati 1.0, model akan mulai bereksperimen dengan pilihan kata dan sesekali mengarang detail.
- Prompt itu sendiri bersifat spesifik. Alih-alih melemparkan teks mentah ke model dengan instruksi samar "ringkas ini," kita secara eksplisit meminta poin-poin utama dan menginstruksikannya untuk mengabaikan informasi yang tidak penting. Kejelasan semacam itu membedakan output yang tidak berguna dengan sesuatu yang benar-benar dapat Anda gunakan.
Letakkan file teks apa pun yang ingin Anda ringkas di direktori yang sama dan beri nama document.txt.
Langkah 4: Jalankan
Dengan lingkungan virtual yang aktif, jalankan:
python summarize.py
Jika kredensial dan akses model Anda sudah benar, Anda akan melihat ringkasan rapi tercetak di terminal Anda dalam beberapa detik. Jika Anda mendapatkan kesalahan akses, periksa kembali izin IAM Anda dan pastikan Anda telah mengaktifkan Claude 3 Haiku di konsol.
Melangkah Lebih Jauh dari Sekadar Skrip
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
