Web playgrounds ڈیمو کے لیے بہترین ہیں۔ آپ متن کا ایک بلاک پیسٹ کرتے ہیں، ماڈل کو ایک صاف ستھرا خلاصہ بناتے ہوئے دیکھتے ہیں، اور ٹیب بند کر دیتے ہیں۔ لیکن یہ انجینئرنگ نہیں ہے۔ پروڈکشن کا کام APIs، ایرر ہینڈلنگ، اور ایسے کوڈ سے متعلق ہے جو آپ کے سوتے وقت بھی چلتا رہے۔ اگر آپ کو ایک شیڈول کے تحت میٹنگ ٹرانسکرپٹس، سپورٹ ٹکٹس، یا تحقیقی مقالوں کو پراسیس کرنے کی ضرورت ہے، تو آپ کو ایک پائپ لائن کی ضرورت ہے۔
یہ گائیڈ بالکل یہی بنانے کے عمل کی وضاحت کرتی ہے: Python، AWS SDK for Python (boto3)، اور Amazon Bedrock کا استعمال کرتے ہوئے ایک ہلکا پھلکا، خودکار دستاویز خلاصہ کرنے والا اسکرپٹ۔ ہم Anthropic کے Claude 3 Haiku کا استعمال کریں گے، جو متن کے خلاصے کے کاموں کے لیے رفتار اور لاگت کا بہترین توازن رکھتا ہے۔
Bedrock اور Claude 3 Haiku کیوں؟
Amazon Bedrock ایک مینیجڈ سروس ہے جو AWS APIs کے ایک ہی سیٹ کے ذریعے فاؤنڈیشن ماڈلز فراہم کرتی ہے۔ بیرونی اینڈ پوائنٹس کو جوڑنے اور الگ الگ بلنگ اور سیکیورٹی ماڈلز کے ساتھ جدوجہد کرنے کے بجائے، آپ اسٹینڈرڈ IAM کنٹرولز کے ساتھ ایک AWS اینڈ پوائنٹ کو کال کرتے ہیں۔ آپ کا ڈیٹا آپ کے AWS ماحول کے اندر ہی رہتا ہے۔
Claude 3 Haiku، Anthropic کے Claude 3 فیملی کا سب سے ہلکا پھلکا ماڈل ہے۔ یہ تیزی اور کم لاگت کے لیے بنایا گیا ہے، جو اسے ہائی والیوم خلاصہ کاری (summarization) کے لیے مثالی بناتا ہے جہاں آپ سادہ پڑھنے کے کاموں کے لیے بڑے ماڈلز کی طاقت کے لیے ادائیگی کیے بغیر قابلِ پیش گوئی آؤٹ پٹ چاہتے ہیں۔
آپ کو کس چیز کی ضرورت ہے
کوئی بھی کوڈ لکھنے سے پہلے، یقینی بنائیں کہ آپ کے پاس درج ذیل چیزیں تیار ہیں:
- ایک فعال AWS اکاؤنٹ۔
- مقامی طور پر انسٹال شدہ Python 3.9 یا اس سے اوپر کا ورژن۔
- AWS CLI جو ان کریڈنشلز کے ساتھ کنفیگر ہو جن کے پاس Bedrock ماڈلز کو کال کرنے کی اجازت ہو۔ اگر آپ نے ابھی تک
aws configureنہیں چلایا ہے، تو ابھی کر لیں۔ اگر بعد میں آپ کو پرمیشن ایررز کا سامنا کرنا پڑے، تو غالباً آپ کو اپنے IAM صارف یا رول کے ساتھ مناسب Bedrock invocation پرمیشنز منسلک کرنے کی ضرورت ہوگی۔ - AWS Bedrock کنسول کے اندر خاص طور پر Anthropic Claude 3 Haiku کے لیے ماڈل ایکسیس (Model access) فعال ہو۔ AWS کے لیے ضروری ہے کہ آپ کسی بھی ماڈل فراہم کنندہ کو کال کرنے سے پہلے ہر ایک کے لیے واضح طور پر رضامندی (opt in) ظاہر کریں۔
مرحلہ 1: ماڈل ایکسیس فعال کریں
Bedrock آپ کو براہ راست ماڈلز کال کرنے کی اجازت نہیں دیتا۔ آپ کو پہلے کنسول میں سوئچ آن کرنا ہوگا۔
- AWS Management Console میں لاگ ان کریں۔
- سرچ بار کا استعمال کرتے ہوئے Amazon Bedrock تلاش کریں۔
- بائیں نیویگیشن پینل میں، Model access منتخب کریں۔
- Modify model access پر کلک کریں۔
- 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 APIs سے بات کرنے کے لیے ہر وہ چیز موجود ہوگی جس کی آپ کو ضرورت ہے۔
مرحلہ 3: اسکرپٹ لکھیں
نام summarize.py والی ایک فائل بنائیں۔ مقصد ڈسک سے ایک دستاویز پڑھنا، اسے Bedrock Converse API کو دینا، اور ایک جامع خلاصہ پرنٹ کرنا ہے۔
نیچے ایک مکمل اور کام کرنے والا امپلیمنٹیشن ہے۔ ہم Converse API کا استعمال کرتے ہیں کیونکہ یہ اس خام JSON فارمیٹنگ کو چھپا دیتا ہے جس کی مختلف ماڈل فراہم کنندگان توقع کرتے ہیں۔ آپ صرف پیغامات (messages) کی ایک فہرست اور انفرنس سیٹنگز پاس کرتے ہیں۔
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") اس رن ٹائم اینڈ پوائنٹ کو ٹارگٹ کرتا ہے جو انفرنس کو ہینڈل کرتا ہے۔ یقینی بنائیں کہ
~/.aws/configمیں آپ کا AWS ریجن Bedrock کو سپورٹ کرتا ہے اور آپ نے اسی ریجن میں Haiku کو فعال کیا ہے۔ - Model ID
anthropic.claude-3-haiku-20240307-v1:0وہ درست شناختیہ (identifier) ہے جس کی Bedrock توقع کرتا ہے۔ اسے بالکل درست طریقے سے کاپی کریں۔ - Temperature کو 0.3 پر سیٹ کرنا آؤٹ پٹ کو حقیقت پسندانہ رکھتا ہے۔ خلاصہ کاری کے لیے، آپ کو مستند اور اصل متن کے مطابق نتائج چاہیے ہوتے ہیں، نہ کہ تخلیقی بناوٹ۔ اگر آپ ٹمپریچر کو 1.0 کی طرف بڑھاتے ہیں، تو ماڈل الفاظ کے چناؤ میں آزادی لینے لگتا ہے اور کبھی کبھار تفصیلات خود سے ایجاد کرنے لگتا ہے۔
- پرامپٹ (prompt) خود بہت مخصوص ہے۔ ماڈل کو محض ایک مبہم "summarize this" کے ساتھ خام متن دینے کے بجائے، ہم واضح طور پر اہم نکات مانگتے ہیں اور اسے غیر ضروری تفصیلات چھوڑنے کی ہدایت دیتے ہیں۔ اس طرح کی وضاحت ناقابلِ استعمال آؤٹ پٹ اور ایسی چیز کے درمیان فرق کرتی ہے جسے آپ واقعی استعمال کر سکیں۔
جس ٹیکسٹ فائل کا آپ خلاصہ کرنا چاہتے ہیں اسے اسی ڈائریکٹری میں رکھیں اور اس کا نام document.txt رکھیں۔
مرحلہ 4: اسے چلائیں
اپنے ورچوئل انوائرمنٹ کو فعال رکھتے ہوئے، اسے چلائیں:
python summarize.py
اگر آپ کے کریڈنشلز اور ماڈل ایکسیس درست ہیں، تو آپ کو چند سیکنڈ کے اندر اپنے ٹرمینل پر ایک صاف ستھرا خلاصہ پرنٹ ہوتا ہوا نظر آنا چاہیے۔ اگر آپ کو ایکسیس ایرر ملتا ہے، تو اپنے IAM پرمیشنز کو دوبارہ چیک کریں اور تصدیق کریں کہ آپ نے کنسول میں Claude 3 Haiku کو فعال کیا ہے۔
اسکرپٹ سے آگے بڑھنا
یہ پائپ لائن جان بوجھ کر سادہ رکھی گئی ہے، لیکن یہ حقیقی آٹومیشن کی بنیاد ہے۔ یہاں بتایا گیا ہے کہ آپ اسے اضافی پیچیدگیوں کے بغیر کیسے وسعت دے سکتے ہیں۔
Batch processing. ایک فائل پڑھنے کے عمل کو ڈائریکٹری پر لوپ (loop) سے بدل دیں۔ ان پٹ فولڈر میں پچاس PDF یا ٹیکسٹ فائلیں ڈالیں، ان پر عمل کریں (iterate)، اور خلاصے (summaries) کو آؤٹ پٹ فولڈر میں لکھ دیں۔ اگر آپ براہ راست PDF فائلیں استعمال کرنا چاہتے ہیں، تو آپ کو Bedrock تک پہنچنے سے پہلے خام متن (raw text) نکالنے کے لیے PyPDF2 یا pdfplumber جیسی لائبریری کے ساتھ ایک پری پروسیسنگ مرحلے کی ضرورت ہوگی۔
Chunking strategy. بہت طویل دستاویزات ماڈل کی کنٹیکسٹ لمٹ (context limit) سے تجاوز کر سکتی ہیں۔ جب ایسا ہو، تو متن کو پیراگراف یا سیکشن کے لحاظ سے منطقی حصوں (chunks) میں تقسیم کریں، ہر حصے کا انفرادی طور پر خلاصہ کریں، اور پھر حتمی نتائج کے لیے ان درمیانی خلاصوں کو دوبارہ ماڈل کے ذریعے گزاریں۔ یہ دو مرحلہ وار طریقہ کار آپ کو ٹوکن کی حد کے اندر رکھتا ہے اور ساتھ ہی پوری دستاویز کا احاطہ بھی برقرار رکھتا ہے۔
Error handling. پروڈکشن کوڈ کو خاص طور پر boto3.exceptions.ClientError کو پکڑنا (catch) چاہیے۔ اگر آپ بہت زیادہ تیزی سے API کو کال کرتے ہیں تو AWS آپ کی درخواستوں کو محدود (throttle) کر سکتا ہے۔ اپنی converse کال کو 'exponential backoff' کے ساتھ ری ٹرائی لوپ (retry loop) میں رکھیں، یا ریٹ لمٹس (rate limits) کو بہتر طریقے سے سنبھالنے کے لیے tenacity جیسی لائبریری استعمال کریں۔
Prompt engineering. ایک اوسط درجے کے خلاصے اور ایک مفید خلاصے کے درمیان فرق اکثر پرامپٹ (prompt) پر منحصر ہوتا ہے۔ اگر آپ کو پڑھنے میں آسانی چاہیے تو بلٹ پوائنٹس (bullet points) کا مطالبہ کریں۔ اگر سامعین اعلیٰ قیادت ہیں تو ایک پیراگراف پر مشتمل ایگزیکٹو سمری (executive summary) مانگیں۔ آپ فارمیٹنگ کی پابندیاں بھی دے سکتے ہیں، جیسے کہ "خلاصے کو تین جملوں تک محدود رکھیں" یا "آؤٹ پٹ کو JSON کے طور پر واپس کریں جس میں topic، key_points، اور action_items کے لیے کیز (keys) ہوں"۔
اصل نچوڑ
چیٹ پلے گراؤنڈ سے ایک ورکنگ اسکرپٹ کی طرف بڑھنا وہ موڑ ہے جہاں AI انفراسٹرکچر بن جاتا ہے۔ ایک بار جب یہ پائپ لائن مقامی طور پر (locally) چلنے لگے، تو آپ اسے S3 اپ لوڈز کے ذریعے ٹرگر ہونے والے AWS Lambda فنکشن میں منتقل کر سکتے ہیں، اسے ECS Fargate پر شیڈول کر سکتے ہیں، یا اسے موجودہ ڈیٹا ورک فلو کے ساتھ جوڑ سکتے ہیں۔ API کال کرنا آسان حصہ ہے۔ اصل انجینئرنگ ویلیو اس کال کو ایسی لاجک میں لپیٹنے سے آتی ہے جو فائلوں، غلطیوں اور فارمیٹنگ کو سنبھالتی ہے تاکہ آپ کو دوبارہ کبھی براؤزر میں ٹیکسٹ کاپی اور پیسٹ نہ کرنا پڑے۔
اس سیٹ اپ کے بارے میں مزید سیاق و سباق اور مختلف طریقوں کے لیے، Dev.to پر اصل واک تھرو (walkthrough) دیکھیں۔ اگر آپ بلڈرز کی کمیونٹی کے ساتھ AWS آرکیٹیکچرز، LLM پائپ لائنز، یا پرامپٹ انجینئرنگ پر بحث کرنا چاہتے ہیں، تو GyaanSetu AI on Telegram پر گفتگو میں شامل ہوں۔
