ایک کام کرنے والا AI ایجنٹ بنائیں: ایک عملی لغت
ایک AI ایجنٹ اصل میں کیا ہے، یہ چیٹ بات کرنے والے سے کیسے مختلف ہے، اور اس کو بنانے کے لیے آپ کو کون سے اجزاء درکار ہیں۔
ایک AI ایجنٹ ایک پروگرام ہے جو ایک مقصد لیتا ہے، کارروائیوں کی ترتیب طے کرتا ہے، اور ان کارروائیوں کو ٹولز کا استعمال کرتے ہوئے انجام دیتا ہے جب تک مقصد پورا نہ ہو یا یہ ہار نہ مان دے۔ یہ چیٹ بات کرنے والے سے مختلف ہے، جو صرف پیغاموں کا جواب دیتا ہے۔ ایک ایجنٹ منصوبہ بناتا ہے، فنکشنز کو کال کرتا ہے، نتائج کی جانچ کرتا ہے، اور ایڈجسٹ کرتا ہے۔ اگر آپ نے صرف براؤزر کے ذریعے ChatGPT استعمال کیا ہے، تو اپنا پہلا ایجنٹ بنانا وہ جگہ ہے جہاں ماڈل ایک ٹیکسٹ جنریٹر ہونا بند کر دیتا ہے اور ایک بڑے سسٹم کا حصہ بن جاتا ہے۔
بنیادی لوپ
ہر ایجنٹ، چاہے اسے کیسے بھی بیچا جائے، ایک جیسے لوپ کا کوئی ورژن چلاتا ہے: مشاہدہ کریں، سوچیں، عمل کریں، دہرائیں۔ تفصیل سے:
- ایجنٹ کو ایک کام ملتا ہے ("اگلے مہینے لسبن کی سب سے سستی پرواز تلاش کریں اور ایک ای میل کا خلاصہ تیار کریں")۔
- یہ LLM کو کام کے ساتھ ساتھ دستیاب ٹولز کی تفصیل کے ساتھ کال کرتا ہے۔
- ماڈل ایک حتمی جواب یا ایک ٹول کال واپس کرتا ہے، جیسے
search_flights(destination="Lisbon", month="2025-06")۔ - آپ کا کوڈ اس فنکشن کو چلاتا ہے، ایک حقیقی نتیجہ حاصل کرتا ہے، اور اسے ماڈل کے context میں واپس ڈالتا ہے۔
- ماڈل فیصلہ کرتا ہے کہ اگلا کیا کریں: دوسرا ٹول کال کریں، وضاحت مانگیں، یا ختم کریں۔
یہ نمونہ اکثر ReAct لوپ کہا جاتا ہے (وجہ اور عمل)، اور یہ LangChain کے ایجنٹ executors، LlamaIndex ایجنٹس، اور OpenAI کے function-calling API جیسے frameworks کی بنیاد ہے۔ آپ Python میں صرف 100 لائنوں سے کم میں یہ سب کچھ اپنے آپ implement کر سکتے ہیں، بس ایک LLM API اور ایک while لوپ کے ساتھ — frameworks سہولت شامل کرتے ہیں، جادو نہیں۔
ٹولز وہ ہیں جو اسے ایجنٹ بناتے ہیں
ایک ماڈل جس کے پاس کوئی ٹول نہیں ہے صرف بات کر سکتا ہے۔ اسے فنکشنز دیں اور یہ عمل کر سکتا ہے۔ ٹولز عام طور پر عام Python فنکشنز ہیں جو ایک schema کے ساتھ لپیٹے ہوتے ہیں جو ان کا نام، پیرامیٹرز، اور مقصد بیان کرتے ہیں، تاکہ ماڈل جانے کہ کب اور کیسے انہیں کال کریں۔ مثال:
def get_weather(city: str) -> str:
"""Return current weather for a given city."""
resp = requests.get(f"https://api.weather.example/v1/{city}")
return resp.json()["summary"]
OpenAI کے function-calling کے ساتھ، آپ اس فنکشن کے ساتھ ایک JSON schema پاس کرتے ہیں، اور ماڈل آزاد متن کی بجائے {"name": "get_weather", "arguments": {"city": "Lisbon"}} جیسی ایک منظم کال نکالتا ہے۔ آپ کا کوڈ اسے parse کرتا ہے، حقیقی فنکشن چلاتا ہے، اور نتیجہ کو conversation میں ایک نیا پیغام بناتے ہوئے واپس کرتا ہے۔ اس وقت تک دہرائیں جب تک ماڈل کے پاس جواب دینے کے لیے کافی معلومات ہوں۔
میموری اور حالت
ایک واحد API کال کے پاس اپنے context window سے آگے کوئی میموری نہیں ہے۔ ایجنٹس کو واضح حالت درکار ہے: پیغاموں کی ایک چلتی ہوئی فہرست (conversation کی تاریخ)، اور اکثر طویل مدتی حقائق کے لیے ایک الگ store۔ مختصر کاموں کے لیے، conversation کی نمائندگی کرنے والے dicts کی ایک Python list کافی ہے۔ ایجنٹس کے لیے جو سیشنز میں چیزیں یاد رکھنے کی ضرورت ہے، آپ ایک vector database (Chroma, Pinecone, Qdrant) استعمال کریں گے تاکہ embeddings کے ذریعے متعلقہ ماضی کی معلومات کو store اور retrieve کریں۔
شروع میں اس کو over-engineer نہ کریں۔ ایک حیرت انگیز تعداد میں "ایجنٹ" پروجیکٹس ناکام ہوتے ہیں نہ کہ اس لیے کہ LLM کمزور ہے بلکہ اس لیے کہ state management غلط ہے: duplicate پیغام، غیر محدود context کی ترقی، یا یہ ٹریک کرنا کہ کون سی ٹول کال کس نتیجے سے متعلق ہے۔
ایک کم سے کم کام کرنے والی مثال
یہاں OpenAI کے API استعمال کرتے ہوئے ایک بہت سادہ ایجنٹ کی شکل ہے، کوئی framework نہیں:
messages = [{"role": "user", "content": "What's the weather in Lisbon?"}]
while True:
response = client.chat.completions.create(
model="gpt-4o",
messages=messages,
tools=[weather_tool_schema],
)
msg = response.choices[0].message
if msg.tool_calls:
for call in msg.tool_calls:
result = get_weather(**json.loads(call.function.arguments))
messages.append(msg)
messages.append({
"role": "tool",
"tool_call_id": call.id,
"content": result,
})
else:
print(msg.content)
break
یہ ایک حقیقی، کام کرنے والا ایجنٹ ہے۔ باقی سب کچھ — منصوبہ بندی کی حکمت عملی، multi-agent coordination، retrieval pipelines — اس لوپ پر بنایا جاتا ہے۔
جہاں یہ ٹوٹتا ہے
ایجنٹس قابل پیش گوئی طریقوں سے ناکام ہوتے ہیں: infinite tool-call loops جب ماڈل یہ نہیں بتا سکتا کہ اس میں کامیاب ہوا، hallucinated فنکشن arguments، اور مہنگے ٹولز کو دوبارہ کال کرنے سے بھاگتی ہوئی لاگتیں۔ loops کے خلاف ایک hard iteration cap (کہیں، 10 اقدامات) اور development کے دوران ہر ٹول کال کو log کریں۔ کسی بھی چیز کو execute کرنے سے پہلے arguments کی تصدیق کریں جو ایک حقیقی نظام کو چھوتی ہے — ایک ایجنٹ جو ای میلز بھیج سکتا ہے یا shell کمانڈز چلا سکتا ہے کو صارف کے سامنے کوڈ پر لاگو کریں، کیونکہ LLM موثر طور پر ایک غیر قابل اعتماد صارف ہے جو یہ input تیار کر رہا ہے۔
اگلا کہاں جائیں
ایک بار لوپ کام کر جائے تو، دلچسپ مسائل شروع ہوتے ہیں: single-agent اور multi-agent ڈیزائنوں میں سے انتخاب کرنا، یہ فیصلہ کرنا کہ کتنی خودمختاری دینی ہے، اور ایجنٹس کو قابل اعتماد طریقے سے ٹیسٹ کرنا جب ان کا output deterministic نہیں ہے۔ Korra Studio کی AI اور Python tracks اگر آپ یہاں سے بناتے رہنا چاہتے ہیں تو retrieval-augmented generation، prompt design، اور tool-calling patterns کو مزید تفصیل سے سمجھاتے ہیں۔
AI کی مدد سے لکھا گیا، Michal Pilch (CISSP)، Korra Studio کے ذریعے جائزہ لیا گیا اور شائع کیا گیا۔
یہ Korra Studio کے علم کے ذخیرے کا ایک نوٹ ہے — یہ پلیٹ فارم ہر موضوع کو ایک سے ایک رہنمائی کے ساتھ جوڑتا ہے۔
مفت شروع کریںarrow_forward