Python اور LangGraph میں اپنا پہلا ملٹی ایجنٹ AI سسٹم کیسے بنایا جائے۔

اس ٹیوٹوریل میں، میں آپ کو دکھاؤں گا کہ آرکیسٹریشن فریم ورک کے بغیر ازگر میں ملٹی ایجنٹ AI سسٹم کیسے بنایا جائے۔ ہم اسے نوڈس، کناروں اور مشترکہ حالت کا استعمال کرتے ہوئے لینگ گراف میں بھی نافذ کریں گے۔

دونوں ورژن بنانے کا مقصد فریم ورک کے ساتھ اور اس کے بغیر کرنے کے درمیان فرق کو ظاہر کرنا ہے۔

ایک سادہ Python ورژن دکھاتا ہے کہ ملٹی ایجنٹ سسٹم بنانے کے لیے درحقیقت کتنے کم کوڈ کی ضرورت ہوتی ہے۔ لینگ گراف ورژن یہ ظاہر کرتا ہے کہ ورک فلو فریم ورک اس طرح کے نظاموں کی تعمیر کے لیے کیا ممکن بناتا ہے۔

ایجنٹ مقامی طور پر اولاما اور کیوین کے ساتھ چلتا ہے، اس لیے کوئی API لاگت نہیں ہے۔

انڈیکس

پس منظر

بڑے پیمانے پر زبان کے ماڈلز ناقابل یقین حد تک پیچیدہ کاموں کو ایک ہی اشارے سے حل کر سکتے ہیں۔ بہت سے ایپلی کیشنز کے لیے، یہ صحیح طریقہ ہے۔

لیکن جیسے جیسے آپ کا ورک فلو بڑھتا ہے، آپ کو اکثر ایک ہی اشارے کے ساتھ ایک ساتھ بہت زیادہ کرنے کی ضرورت ہوتی ہے۔ ان تمام ذمہ داریوں کو ایک پرامپٹ میں یکجا کرنے سے مسئلہ کو برقرار رکھنے، اسکیل کرنے اور اس کے بارے میں سوچنا، خاص طور پر چھوٹے، مقامی ماڈلز کے لیے مزید مشکل ہو سکتا ہے۔

ایک مشترکہ حل یہ ہے کہ تمام کاموں کو انجام دینے کے لیے ایک ایجنٹ پر انحصار کرنے کے بجائے چھوٹے چھوٹے مراحل میں کاموں کو تقسیم کرکے ایک ملٹی ایجنٹ سسٹم بنایا جائے۔

اس ٹیوٹوریل کی پیروی کرنے کے لیے، آپ کو اپنے کمپیوٹر پر اولاما انسٹال کرنے اور ایک مفت اولاما اکاؤنٹ کی ضرورت ہوگی۔ یہ ٹیوٹوریل macOS، Windows اور Linux پر کام کرتا ہے۔ میں 32GB RAM کے ساتھ MacBook Pro استعمال کر رہا ہوں، لیکن اگر آپ Ollama کے چھوٹے Qwen ماڈل کا انتخاب کرتے ہیں تو آپ اسے کم میموری سسٹم پر چلا سکتے ہیں۔

ملٹی ایجنٹ سسٹم کیا ہے؟

اس ٹیوٹوریل میں، ایک ملٹی ایجنٹ سسٹم اے آئی ایجنٹس کا مجموعہ ہے جو ایک بڑے کام کو مکمل کرنے کے لیے مل کر کام کرتے ہیں۔

ہر ایجنٹ میں شامل ہیں:

  • ذمہ داری

  • اپنے اشارے اور ہدایات

  • ورک فلو میں پوزیشن کی وضاحت کی گئی ہے۔

پورے مسئلے کو حل کرنے کے لیے ایک ماڈل سے پوچھنے کے بجائے، کام کے بوجھ کو چھوٹے، زیادہ توجہ مرکوز کرنے والے کاموں میں تقسیم کریں۔ چونکہ ہر ایجنٹ کا ہدف تنگ ہوتا ہے، اس لیے اس کے اشارے عام طور پر ماڈل کے لیے مستقل طور پر پیروی کرنا آسان اور آسان ہوتے ہیں۔

یہ ٹیوٹوریل جان بوجھ کر سسٹم کو سادہ رکھتا ہے۔ کوئی میموری، ٹول کالز یا پیچیدہ پیٹرن نہیں۔ اس کے بجائے، ہم سادہ استعمال کے معاملات پر توجہ مرکوز کرتے ہیں جو ملٹی ایجنٹ AI سسٹم کے اجزاء کو ظاہر کرتے ہیں۔

ملٹی ایجنٹ سسٹم کب استعمال کریں۔

ملٹی ایجنٹ سسٹم اس وقت مثالی ہوتے ہیں جب کاموں کو قدرتی طور پر الگ الگ مراحل یا کرداروں میں تقسیم کیا جاتا ہے، جیسے کہ منصوبہ بندی، تخلیق، جائزہ، یا ورک فلو کے مختلف حصوں کے لیے مختلف خصوصی اشارے استعمال کرنا۔ اگر کوئی ایک ایجنٹ واضح اشارے کے ساتھ کسی کام کو اچھی طرح سے سنبھال سکتا ہے اور قابل اعتماد طریقے سے آؤٹ پٹ تیار کر سکتا ہے، تو مزید ایجنٹوں کو شامل کرنے سے اضافی پیچیدگی، تاخیر اور اوور ہیڈ متعارف کرایا جا سکتا ہے۔

عام طور پر، جب ذمہ داریوں کی علیحدگی واضح طور پر نتائج کو بہتر بناتی ہے تو متعدد ایجنٹوں کا استعمال کریں، اور جب کام اب بھی ایک مستقل تعامل کے ساتھ قابل انتظام ہو تو ایک ایجنٹ کا استعمال کریں۔

حوصلہ افزائی اور فن تعمیر

اس ٹیوٹوریل میں، ہم ایک چھوٹے Qwen مقامی LLM اور Ollama کا استعمال کرتے ہوئے ایک سادہ AI پر مبنی اسٹڈی گائیڈ جنریٹر بنائیں گے۔ پرامپٹ میں ایک موضوع کو دیکھتے ہوئے، نظام ایک خاکہ، نوٹس، اور جائزہ سوالات کے ساتھ ایک منظم مطالعہ گائیڈ بناتا ہے۔ ایک واحد ایجنٹ کا اشارہ ہے:

Create a beginner-friendly study guide for this topic: {topic}

The output should have exactly these sections:

1. Outline
- Break the topic into 3 short study sections

2. Notes
- Write short, clear study notes for each section
- Keep the explanations concise and easy to understand

3. Review Questions
- Write 3 short review questions based on the notes

Return the result in clean Markdown.

مندرجہ بالا اشارے کی بنیاد پر ایک اسٹڈی گائیڈ تیار کرنے کے لیے ایک ایجنٹ کو ایک ساتھ متعدد کام انجام دینے چاہئیں۔ ایک وقت میں چھوٹے مقامی ماڈلز پر کرنے کے لیے بہت کچھ ہے، اور آؤٹ پٹ کوالٹی ممکنہ طور پر بہترین نہیں ہے۔

ملٹی ایجنٹ سسٹم ایک بڑے پرامپٹ کو تین خصوصی ایجنٹوں میں تقسیم کرکے مدد کرتے ہیں۔ ایک چھوٹا ماڈل کام کو سنبھالنا آسان بناتا ہے۔ ورک فلو میں ایجنٹ ہیں:

  • منصوبہ ساز: موضوعات کو منطقی حصوں میں تقسیم کریں۔

  • ٹیچر: ہر سیکشن کے لیے جامع مطالعاتی نوٹ لکھیں۔

  • کوئز تخلیق کار: مواد کو تقویت دینے کے لیے جائزہ سوالات تخلیق کریں۔

اس ورک فلو کو دو طریقوں سے لاگو کیا جا سکتا ہے: Python کے سادہ ورژن میں، Python کوڈ ایجنٹ کال کے مراحل کو مربوط کرتا ہے۔

LangGraph ورژن نوڈس، کناروں، اور مشترکہ ریاستوں کے طور پر ایک ہی بہاؤ کی نمائندگی کرتا ہے. ایجنٹ اب بھی وہی ہیں، اور لینگ گراف ورک فلو کو گراف کے طور پر ماڈل کرتا ہے۔ ہر نوڈ ایک کام انجام دیتا ہے، اپنی مشترکہ حالت کو اپ ڈیٹ کرتا ہے، اور حتمی آؤٹ پٹ حاصل کرنے کے لیے اس ریاست کو اگلے نوڈ تک پہنچاتا ہے۔

مرحلہ 1: اولاما اور اس کے انحصار کو انسٹال کریں۔

اولاما انسٹال کریں اور اپنا ماڈل درآمد کریں۔

ollama pull qwen3.5:4b

اپنا Python ماحول ترتیب دیں۔

python3 -m venv venv
source venv/bin/activate
pip install langchain-ollama langgraph

مرحلہ 2: سادہ ازگر کا ورژن

سادہ Python ورژن تین فوکسڈ LLM کالز یا ایجنٹس (منصوبہ ساز، استاد، اور کوئز تخلیق کار) کا استعمال کرتا ہے جو سادہ Python کوڈ کے مطابق ہوتا ہے۔

Ask() فنکشن ماڈل کو سسٹم پرامپٹس اور صارف کا ان پٹ بھیجتا ہے اور جوابی متن واپس کرتا ہے۔ run_agent() فنکشن اس کال کو لپیٹتا ہے اور پرنٹ کرتا ہے کہ ہر قدم میں کتنا وقت لگتا ہے۔

کوڈ پھر تین چھوٹے ایجنٹوں کو ان کے اپنے مخصوص اشارے کے ساتھ متعین کرتا ہے۔

  • planner_agent() ایک موضوع کا تین حصوں کا جائزہ بناتا ہے۔

  • Teacher_agent() اس خاکہ کو مختصر، ابتدائی دوستانہ نوٹس میں بدل دیتا ہے۔

  • quit_agent() آپ کے نوٹس سے تین جائزہ سوالات تیار کرتا ہے۔

build_study_guide() فنکشن تینوں ایجنٹوں کو ترتیب سے چلاتا ہے، ہر آؤٹ پٹ کو اگلے مرحلے تک پہنچاتا ہے۔

اس کو بطور محفوظ کریں۔ Study_guide_v1.py.

import time
from langchain_ollama import ChatOllama

# Local Ollama model used by all three agents.
MODEL = ChatOllama(model="qwen3.5:4b", temperature=0)


def ask(system: str, user: str) -> str:
    """Run one LLM call with a system prompt and user input."""
    response = MODEL.invoke([
        {"role": "system", "content": system},
        {"role": "user", "content": user},
    ])
    return response.content


def run_agent(name: str, system: str, user: str) -> str:
    """Helper that logs how long each agent takes."""
    print(f"Calling agent {name}...")
    start = time.time()
    result = ask(system, user)
    print(f"Finished {name} in {time.time() - start:.1f}s")
    return result


# Agent 1: create a short outline
def planner_agent(topic: str) -> str:
    return run_agent(
        "planner_agent",
        "Break this topic into 3 short study sections.",
        topic,
    )


# Agent 2: turn the outline into notes
def teacher_agent(topic: str, outline: str) -> str:
    return run_agent(
        "teacher_agent",
        "Write short beginner-friendly notes using the outline. Keep it concise.",
        f"Topic: {topic}nnOutline:n{outline}",
    )


# Agent 3: write review questions from the notes
def quiz_agent(topic: str, notes: str) -> str:
    return run_agent(
        "quiz_agent",
        "Write 3 short review questions based on the notes.",
        f"Topic: {topic}nnNotes:n{notes}",
    )


def build_study_guide(topic: str) -> str:
    """Run all three agents in sequence and combine their output."""
    outline = planner_agent(topic)
    notes = teacher_agent(topic, outline)
    quiz = quiz_agent(topic, notes)

    return (
        f"# Study Guide: {topic}nn"
        f"## Outlinen{outline}nn"
        f"## Notesn{notes}nn"
        f"## Review Questionsn{quiz}n"
    )


if __name__ == "__main__":
    print("Warming up model...")
    MODEL.invoke("Say ready.")
    print("Model ready.n")

    topic = input("Enter a study topic: ").strip()
    print("n" + build_study_guide(topic))

چلائیں:

python study_guide_v1.py

یہ ایک ملٹی ایجنٹ سسٹم ہے جو پہلے سے کام کر رہا ہے۔ ہر ایجنٹ صرف ایک توجہ مرکوز ایل ایل ایم کال ہے۔ ازگر بہاؤ کو آرکیسٹریٹ کرتا ہے، لہذا آپ کو فریم ورک کی ضرورت نہیں ہے۔ اس طرح کے فکسڈ آرڈر ورک فلو کے لیے، سادہ Python اکثر شروع کرنے کے لیے بہترین جگہ ہوتی ہے۔

مرحلہ 3: نوڈس اور کناروں کے ساتھ لینگ گراف ورژن

اب لینگ گراف کا استعمال کرتے ہوئے وہی اسٹڈی نوٹ جنریٹر بنائیں۔ کردار وہی رہتے ہیں، لیکن لینگ گراف آرکیسٹریشن فراہم کرتا ہے۔

  • ہر ماہر لفظ

  • مشترکہ لغت یہ ہے: گراف کی حیثیت

  • پھانسی کا حکم درج ذیل ہے: کنارے

کنٹرولر کے افعال کے بجائے دستی طور پر ایجنٹوں کو ترتیب میں کال کرتے ہیں، بہاؤ کو گراف کے طور پر بیان کیا جاتا ہے۔ START -> planner -> teacher -> quiz -> END.

ہر نوڈ ریاست سے پڑھتا ہے اور صرف اپ ڈیٹ کردہ فیلڈز واپس کرتا ہے۔

اس کو بطور محفوظ کریں۔ study_guide_v2.py:

from typing import TypedDict
import time

from langchain_ollama import ChatOllama
from langgraph.graph import StateGraph, START, END

# Local Ollama model used by all nodes.
MODEL = ChatOllama(model="qwen3.5:4b", temperature=0)


# Shared state passed between nodes.
class StudyState(TypedDict):
    topic: str
    outline: str
    notes: str
    quiz: str


def ask(system: str, user: str) -> str:
    response = MODEL.invoke([
        {"role": "system", "content": system},
        {"role": "user", "content": user},
    ])
    return response.content


def run_node(name: str, system: str, user: str) -> str:
    print(f"Calling node {name}...")
    start = time.time()
    result = ask(system, user)
    print(f"Finished {name} in {time.time() - start:.1f}s")
    return result


# Node 1: create the outline
def planner(state: StudyState) -> dict:
    return {
        "outline": run_node(
            "planner",
            "Break this topic into 3 short study sections.",
            state["topic"],
        )
    }


# Node 2: write notes from the outline
def teacher(state: StudyState) -> dict:
    return {
        "notes": run_node(
            "teacher",
            "Write short beginner-friendly notes using the outline. Keep it concise.",
            f"Topic: {state['topic']}nnOutline:n{state['outline']}",
        )
    }


# Node 3: write review questions from the notes
def quiz_writer(state: StudyState) -> dict:
    return {
        "quiz": run_node(
            "quiz_writer",
            "Write 3 short review questions based on the notes.",
            f"Topic: {state['topic']}nnNotes:n{state['notes']}",
        )
    }


def build_graph():
    graph = StateGraph(StudyState)

    # Add the nodes
    graph.add_node("planner", planner)
    graph.add_node("teacher", teacher)
    graph.add_node("quiz_writer", quiz_writer)

    # Define the order of execution
    graph.add_edge(START, "planner")
    graph.add_edge("planner", "teacher")
    graph.add_edge("teacher", "quiz_writer")
    graph.add_edge("quiz_writer", END)

    return graph.compile()


if __name__ == "__main__":
    print("Warming up model...")
    MODEL.invoke("Say ready.")
    print("Model ready.n")

    app = build_graph()
    topic = input("Enter a study topic: ").strip()

    result = app.invoke({
        "topic": topic,
        "outline": "",
        "notes": "",
        "quiz": "",
    })

    print(
        f"n# Study Guide: {topic}nn"
        f"## Outlinen{result['outline']}nn"
        f"## Notesn{result['notes']}nn"
        f"## Review Questionsn{result['quiz']}n"
    )

چلائیں:

python study_guide_v2.py

کوڈ کا سادہ Python ورژن اور LangGraph ورژن دونوں ایک ہی بنیادی کام کو پورا کرتے ہیں۔ یعنی، ایک بڑے کام کو حل کرنے کے لیے متعدد LLM پر مبنی اقدامات کا رابطہ۔

Python کا سادہ ورژن ہلکے پھلکے آرکیسٹریشن کے لیے موزوں ہے۔ اگر آپ کا ورک فلو سادہ اور لکیری ہے، تو سادہ Python اکثر سب سے زیادہ عملی انتخاب ہوتا ہے۔

اگر آپ کے ورک فلو کو مشترکہ حالت، شاخوں، لوپس، یا زیادہ پیچیدہ ایجنٹ کوآرڈینیشن کی ضرورت ہے، تو LangGraph ایک بہتر فٹ ہے۔

نمونہ پیداوار

اس ان پٹ کے لیے:

Enter a study topic: Newton's laws of motion

دونوں ورژن ایک ہی قسم کا آؤٹ پٹ تیار کرتے ہیں: سیکشنز، نوٹس، اور جائزہ سوالات کے ساتھ ایک مختصر مطالعہ گائیڈ۔

عام نتائج درج ذیل ہیں:

$python study_guide_v2.py 

Warming up model...
Model ready.

Enter a study topic: Newton's laws of motion
Calling node planner...
Finished planner in 30.2s
Calling node teacher...
Finished teacher in 33.0s
Calling node quiz_writer...
Finished quiz_writer in 40.0s

# Study Guide: Newton's laws of motion

## Outline
**Section 1: The Law of Inertia**
*   **Definition:** An object at rest stays at rest, and an object in motion stays in motion with the same speed and direction unless acted upon by an unbalanced force.
*   **Key Concept:** Inertia is the tendency of an object to resist changes in its state of motion.

**Section 2: The Law of Acceleration**
*   **Definition:** The acceleration of an object is directly proportional to the net force acting on it and inversely proportional to its mass.
*   **Formula:** $F = ma$ (Force = mass × acceleration).

**Section 3: The Law of Action and Reaction**
*   **Definition:** For every action, there is an equal and opposite reaction.
*   **Key Concept:** Forces always occur in pairs; if Object A exerts a force on Object B, Object B exerts an equal force in the opposite direction on Object A.

## Notes
**Section 1: The Law of Inertia**
*   **Definition:** Objects keep doing what they are doing. If it is still, it stays still. If it is moving, it keeps moving at the same speed and direction.
*   **Key Concept:** **Inertia** is the tendency of an object to resist changes in its motion.

**Section 2: The Law of Acceleration**
*   **Definition:** Force causes acceleration. The harder you push, the faster it speeds up. The heavier the object, the harder it is to move.
*   **Formula:** $F = ma$ (Force = mass × acceleration).

**Section 3: The Law of Action and Reaction**
*   **Definition:** Forces always come in pairs. When one object pushes another, the second object pushes back.
*   **Key Concept:** For every action, there is an equal and opposite reaction.

## Review Questions
1. What is the tendency of an object to resist changes in its motion called?
2. What is the formula for the Law of Acceleration?
3. According to the Law of Action and Reaction, how do action and reaction forces compare?

دونوں فن تعمیر ایک ہی مسئلہ کو حل کرتے ہیں، لیکن ایک کو سادہ ازگر کوڈ اور دوسرے کو واضح گراف کے ساتھ پیمانہ کیا جاتا ہے۔

عام ملٹی ایجنٹ پیٹرن

اس ٹیوٹوریل کی ایک مثال ہے۔ ترتیب وار پائپ لائن. ایک ماہر مقررہ ترتیب میں کام اگلے ماہر کو دیتا ہے۔ یہ شروع کرنے کے لیے سب سے آسان ملٹی ایجنٹ پیٹرن ہے، لیکن یہ واحد پیٹرن نہیں ہے۔

کچھ نمونے جو جاننا اچھے ہیں وہ ہیں:

  • متوازی ماہر: ایک سے زیادہ ایجنٹ ایک ہی ان پٹ پر آزادانہ طور پر کام کرتے ہیں اور ان کے آؤٹ پٹس کو ضم کر دیا جاتا ہے۔

  • آرکیسٹریٹر-سبجینٹ: اعلیٰ سطح کے ایجنٹ کاموں کو تقسیم کرتے ہیں، کاموں کو تفویض کرتے ہیں، اور نتائج کو یکجا کرتے ہیں۔

  • سپروائزر/راؤٹر: روٹنگ ایجنٹ تعین کرتا ہے کہ کون سا ماہر درخواست کو سنبھالے گا۔

  • انسانی شرکت: ایجنٹ کام کا مسودہ تیار کرتا ہے، لیکن ایک انسان جاری رکھنے سے پہلے اس کا جائزہ لیتا ہے یا اس کی منظوری دیتا ہے۔

  • جائزہ/ بہتری کا لوپ: ایک ایجنٹ آؤٹ پٹ تیار کرتا ہے اور دوسرا ایجنٹ اس کی تصدیق یا بہتری کرتا ہے۔

ذیل میں ایک انفوگرافک ہے جو ان نمونوں میں سے ہر ایک کی بصری نمائندگی فراہم کرتا ہے۔

نتیجہ

اس ٹیوٹوریل میں، ہم نے لینگ گراف فریم ورک کے ساتھ اور اس کے بغیر پائتھون کا استعمال کرتے ہوئے ایک سادہ ملٹی ایجنٹ AI سسٹم بنایا ہے۔

مثال کو یہاں پھیلائیں۔ ایک چوتھا نوڈ شامل کریں جو نوٹ کو آسان زبان میں دوبارہ لکھتا ہے۔ اس بات کی توثیق کرنے کے لیے ایک جائزہ مرحلہ شامل کریں کہ کوئز دراصل آپ کے نوٹس سے میل کھاتا ہے۔ یا گراف کو برانچ کریں تاکہ ابتدائی عنوانات کو جدید عنوانات کے مقابلے میں آسان وضاحت ملے۔ مبارک ہو ٹنکرنگ!

اگر آپ کو یہ سبق پسند آیا ہے، تو آپ میرے بلاگ پر میری مزید تحریریں (حالیہ پوسٹس میں سسٹمز ڈیزائن پیپرز سیریز شامل ہیں)، میری ذاتی ویب سائٹ پر میرا کام، اور LinkedIn پر اپ ڈیٹس حاصل کر سکتے ہیں۔

اوپر تک سکرول کریں۔