PHP، cPanel، اور Gemini Flash کا استعمال کرتے ہوئے کم از کم $0 فی مہینہ میں پروڈکشن کے لیے تیار AI ایجنٹ کیسے بنایا جائے

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

مقصد ایک چمکدار ڈیمو بنانا نہیں ہے۔ مقصد یہ بتانا ہے کہ ایک AI ایجنٹ اس اسٹیک میں کیسے کام کر سکتا ہے جو بہت سے ڈویلپرز کے لیے حقیقت پسند ہے: درخواست کی کارروائی کے لیے PHP، استقامت کے لیے MySQL، اندازہ اور فنکشن کالز کے لیے Gemini Flash، اور معیاری مشترکہ ہوسٹنگ تعیناتی کے لیے cPanel۔

اس مضمون کے اختتام تک، آپ سمجھ جائیں گے:

  • ایجنٹ لوپ کو کنفیگر کرنے کا طریقہ

  • ٹول کالز دراصل کیسے کام کرتی ہیں۔

  • گفتگو کی یادوں کو کیسے محفوظ اور دوبارہ لوڈ کریں۔

  • عوامی API اینڈ پوائنٹس کے ذریعے اپنے سسٹم کو کیسے بے نقاب کریں۔

  • اپنے پروجیکٹ کو معیاری مشترکہ ہوسٹنگ پر کیسے تعینات کریں۔

انڈیکس

شرائط

شروع کرنے سے پہلے، آپ کے پاس ہونا ضروری ہے:

  • پی ایچ پی 8.1 یا اس سے زیادہ

  • MySQL رسائی

  • پی ایچ پی میں سی آر ایل کو فعال کریں۔

  • گوگل AI اسٹوڈیو میں Gemini API کلید

  • PHP arrays، JSON، اور SQL کا بنیادی علم

  • cPanel اور phpMyAdmin تک رسائی

علیحدہ ایپلیکیشن سرور کی ضرورت نہیں ہے۔ PHP فائلیں باقاعدہ مشترکہ ہوسٹنگ پر چل سکتی ہیں اگر آپ کا اکاؤنٹ PHP، cURL، MySQL، اور آؤٹ باؤنڈ HTTPS درخواستوں کو سپورٹ کرتا ہے۔

ایک عام cPanel سیٹ اپ میں، پروجیکٹس کو درج ذیل فولڈرز میں محفوظ کیا جاتا ہے۔ public_html.

فن تعمیر کا جائزہ

نظام پانچ اہم حصوں پر مشتمل ہے:

  1. عوامی اختتامی نقطہ صارف کی درخواستیں وصول کرتا ہے۔

  2. ایجنٹ لوپ گفتگو کو Gemini Flash پر بھیجتا ہے۔

  3. ٹولز رجسٹری جیمنی کو بتاتی ہے کہ کون سی خصوصیات دستیاب ہیں۔

  4. پی ایچ پی ٹولز ایسے کام کرتے ہیں جیسے نوٹ محفوظ کرنا، ویب پر تلاش کرنا، ای میلز بھیجنا وغیرہ۔

  5. MySQL گفتگو کو محفوظ کرتا ہے تاکہ ایجنٹ درخواست کے ساتھ جاری رکھ سکے۔

بہاؤ آسان ہے۔ صارف پی ایچ پی کے اختتامی نقطہ پر پیغام بھیجتا ہے۔ اختتامی نقطہ ایجنٹ کو پیغام اور سیشن ID بھیجتا ہے۔ ایجنٹ پچھلے پیغامات لوڈ کرتا ہے اور کسی بھی دستیاب ٹولز کے ساتھ بات چیت جیمنی کو بھیجتا ہے۔ جیمنی پھر فیصلہ کرتا ہے کہ کیا کرنا ہے۔

اگر آپ درخواست کا براہ راست جواب دے سکتے ہیں، تو Gemini متن واپس کر دے گا۔ جب کسی آپریشن کی ضرورت ہوتی ہے، جیمنی ٹول کے نام اور دلائل کے ساتھ فنکشن کال واپس کرتا ہے۔

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

یہ لوپ وہ ہے جو آپ کی درخواست کو بنیادی چیٹ بوٹ کے بجائے ایک ایجنٹ بناتا ہے۔

منصوبے کی ساخت

نام کا ایک فولڈر بنائیں۔ agent اندر public_html:

/public_html/agent/
├── index.php
├── agent.php
├── gemini.php
├── db.php
├── memory.php
├── tool_registry.php
├── tools/
│   ├── save_note.php
│   ├── search_web.php
│   ├── send_email.php
│   └── .htaccess
└── .htaccess

ہر فائل کی ایک اہم ذمہ داری ہوتی ہے۔

  • index.php ایک HTTP درخواست وصول کرتا ہے اور JSON واپس کرتا ہے۔

  • agent.php ایک انفرنس لوپ پر مشتمل ہے۔

  • gemini.php میں Gemini کے ساتھ بات چیت کرتا ہوں۔

  • db.php ایک MySQL کنکشن بنائیں۔

  • memory.php گفتگو کی تاریخ کو لوڈ اور محفوظ کریں۔

  • tool_registry.php دستیاب ٹولز کی وضاحت کرتا ہے۔

  • کہ tools فولڈر میں ایسے افعال ہوتے ہیں جو کام انجام دیتے ہیں۔

فائلوں کو الگ رکھنے سے آپ کے پروجیکٹ کو برقرار رکھنا آسان ہوجاتا ہے۔ آپ اپنی باقی ایپلیکیشن کو تبدیل کیے بغیر نئے ٹولز شامل کر سکتے ہیں۔

اس میں شامل کریں tools/.htaccess:

Deny from all

ٹولز فولڈر عوامی URL کے ذریعے قابل رسائی نہیں ہے۔ یہ فائلیں ڈیٹا بیس میں لکھی جا سکتی ہیں، بیرونی درخواستوں پر کی جا سکتی ہیں، یا ای میل کے ذریعے بھیجی جا سکتی ہیں۔

MySQL ڈیٹا بیس کی ترتیبات

آپ کی درخواست کو گفتگو کی سرگزشت کے لیے ایک ٹیبل اور محفوظ کیے گئے نوٹوں کے لیے ایک ٹیبل درکار ہے۔

phpMyAdmin میں درج ذیل SQL چلائیں:

CREATE DATABASE IF NOT EXISTS ai_agent;

USE ai_agent;

CREATE TABLE agent_memory (
    id INT AUTO_INCREMENT PRIMARY KEY,
    session_id VARCHAR(64) NOT NULL,
    role VARCHAR(20) NOT NULL,
    content TEXT NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    INDEX idx_session_id (session_id)
);

CREATE TABLE agent_notes (
    id INT AUTO_INCREMENT PRIMARY KEY,
    session_id VARCHAR(64) NOT NULL,
    note TEXT NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

کہ agent_memory جدول ان پیغامات کو محفوظ کرتا ہے جو ہر گفتگو کو بناتے ہیں۔ کہ session_id کالم ایک گفتگو کو دوسری گفتگو سے الگ کرتے ہیں۔ role شناخت کرتا ہے کہ آیا پیغام کسی صارف، ماڈل یا فنکشن سے آیا ہے۔

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

اگر cPanel ڈیٹا بیس کے نام میں اکاؤنٹ کا سابقہ ​​شامل کرتا ہے، db.php. مثال کے طور پر، ai_agent یہ ہو سکتا ہے۔ account_ai_agent.

پی ایچ پی کو مائی ایس کیو ایل سے مربوط کریں۔

بنانا db.php:

 PDO::ERRMODE_EXCEPTION,
                PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
            ]
        );
    }

    return $pdo;
}

یہ فنکشن PDO کا استعمال کرتے ہوئے MySQL سے جڑتا ہے۔ جامد متغیرات اس بات کو یقینی بناتے ہیں کہ جب بھی ایجنٹ ڈیٹا بیس تک رسائی حاصل کرتا ہے تو نیا کنکشن کھولنے کے بجائے ایک ہی کنکشن کو بعد کی درخواستوں کے لیے دوبارہ استعمال کیا جائے۔

PDO::ATTR_ERRMODE ڈیٹا بیس کی خرابی ایک استثنا کا سبب بنتی ہے۔ اس سے غلطیوں کا پتہ لگانا اور ہینڈل کرنا آسان ہو جاتا ہے۔

تبدیلی ai_agent, db_userاور db_password یہ cPanel سے اصل ڈیٹا بیس کی تفصیلات استعمال کرتا ہے۔ کہ utf8mb4 کریکٹر سیٹ آپ کے ڈیٹا بیس کو ایموجیز اور غیر انگریزی متن سمیت متعدد حروف کو ذخیرہ کرنے کی اجازت دیتے ہیں۔

پی ایچ پی سے جیمنی فلیش کو کال کرنا

Gemini فنکشن کالز کو سپورٹ کرتا ہے۔ یہ اس بات کا تعین کر سکتا ہے کہ ٹول کی ضرورت ہے اور ٹول کا نام اور دلائل واپس کر دیں۔ یہ خود پی ایچ پی فنکشن کو نہیں چلاتا۔ ایپلی کیشن درخواستوں کی توثیق کرنے اور ٹولز پر عمل درآمد کے لیے ذمہ دار ہے۔

مثال کے طور پر، Gemini واپس آ سکتا ہے:

{
  "note": "Our launch is on 1 September 2026"
}

بنانا gemini.php:

 $contents
    ];

    if (!empty($tools)) {
        $payload["tools"] = [
            [
                "functionDeclarations" => $tools
            ]
        ];
    }

    $ch = curl_init($url);

    curl_setopt_array($ch, [
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_POST => true,
        CURLOPT_HTTPHEADER => [
            "Content-Type: application/json"
        ],
        CURLOPT_POSTFIELDS => json_encode($payload),
        CURLOPT_TIMEOUT => 30
    ]);

    $response = curl_exec($ch);
    $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);

    if ($response === false) {
        $error = curl_error($ch);
        curl_close($ch);
        throw new RuntimeException("Gemini request failed: " . $error);
    }

    curl_close($ch);

    if ($httpCode !== 200) {
        throw new RuntimeException("Gemini API error: " . $response);
    }

    $decoded = json_decode($response, true);

    if (!is_array($decoded)) {
        throw new RuntimeException("Gemini returned invalid JSON.");
    }

    return $decoded;
}

function parse_gemini_response(array $response): array
{
    $part = $response["candidates"][0]["content"]["parts"][0] ?? [];

    if (isset($part["functionCall"])) {
        return [
            "type" => "function_call",
            "name" => $part["functionCall"]["name"],
            "args" => $part["functionCall"]["args"] ?? []
        ];
    }

    return [
        "type" => "text",
        "text" => $part["text"] ?? ""
    ];
}

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

ایجنٹ لوپ پھر آسان فیصلے کر سکتا ہے جیسے:

  • اگر قسم ہے: function_callمطلوبہ ٹول چلائیں۔

  • اگر قسم ہے: textصارف کو جواب لوٹاتا ہے۔

اصل تعیناتیوں کے لیے، اگر ممکن ہو تو عوامی ویب ڈائرکٹری کے باہر API کیز کو اسٹور کریں۔

ٹول رجسٹری کی تعریفیں

ٹولز کی رجسٹری جیمنی کو بتاتی ہے کہ کون سے ٹولز موجود ہیں اور انہیں کن دلائل کی ضرورت ہے۔

بنانا tool_registry.php:

 "save_note",
            "description" => "Save an important note to the database.",
            "parameters" => [
                "type" => "object",
                "properties" => [
                    "note" => [
                        "type" => "string"
                    ]
                ],
                "required" => ["note"]
            ]
        ],
        [
            "name" => "search_web",
            "description" => "Search the web for current information.",
            "parameters" => [
                "type" => "object",
                "properties" => [
                    "query" => [
                        "type" => "string"
                    ]
                ],
                "required" => ["query"]
            ]
        ],
        [
            "name" => "send_email",
            "description" => "Send an email when the user explicitly asks.",
            "parameters" => [
                "type" => "object",
                "properties" => [
                    "to" => [
                        "type" => "string"
                    ],
                    "subject" => [
                        "type" => "string"
                    ],
                    "body" => [
                        "type" => "string"
                    ]
                ],
                "required" => ["to", "subject", "body"]
            ]
        ]
    ];
}

تفصیل جیمنی کو یہ فیصلہ کرنے میں مدد کرتی ہے کہ ٹول کب استعمال کرنا ہے۔ ایک پیرامیٹر ایک قدر کی وضاحت کرتا ہے جو جیمنی کو فراہم کرنا ضروری ہے۔

رجسٹری سرور سائیڈ کی توثیق کو تبدیل نہیں کرتی ہے۔ ہر پی ایچ پی ٹول کو کوئی بھی آپریشن کرنے سے پہلے اپنے دلائل کی جانچ کرنی چاہیے۔

عمارت کے اوزار

ہر آلے کو لازمی ہے:

  1. جیمنی کی دلیل پڑھیں۔

  2. ان پٹ کی توثیق کریں۔

  3. کام کرو۔

  4. JSON نتائج لوٹاتا ہے۔

نوٹ ٹول کو محفوظ کریں۔

بنانا tools/save_note.php:

 false,
            "message" => "Empty note"
        ]);
    }

    $stmt = db()->prepare(
        "INSERT INTO agent_notes (session_id, note)
         VALUES (:session_id, :note)"
    );

    $stmt->execute([
        ":session_id" => $sessionId,
        ":note" => $note
    ]);

    return json_encode([
        "success" => true,
        "message" => "Note saved"
    ]);
}

محفوظ کیے جانے سے پہلے نوٹس کو کاٹ دیا جاتا ہے اور ان کی تصدیق کی جاتی ہے۔ تیار کردہ بیانات SQL انجیکشن کو روکتے ہیں اور ان پٹ کو محفوظ طریقے سے ہینڈل کرتے ہیں۔

ویب ٹولز تلاش کریں۔

بنانا tools/search_web.php:

 false,
            "message" => "Search query is empty"
        ]);
    }

    $url = "https://api.example.com/search?q=" . urlencode($query);

    $ch = curl_init($url);

    curl_setopt_array($ch, [
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_TIMEOUT => 15
    ]);

    $response = curl_exec($ch);

    if ($response === false) {
        $error = curl_error($ch);
        curl_close($ch);

        return json_encode([
            "success" => false,
            "message" => "Search failed",
            "error" => $error
        ]);
    }

    curl_close($ch);

    return $response;
}

URLs پلیس ہولڈرز ہیں۔ اپنی پسند کے سرچ فراہم کنندہ سے تبدیل کریں اور کوئی بھی مطلوبہ API کلیدیں یا تصدیقی ہیڈر شامل کریں۔

ٹائم آؤٹ سست بیرونی خدمات کو پی ایچ پی کی درخواستوں کو غیر معینہ مدت تک کھلا چھوڑنے سے روکتا ہے۔

ای میل بھیجنے کا آلہ

بنانا tools/send_email.php:

 false,
            "message" => "Invalid email address"
        ]);
    }

    if ($subject === "" || $body === "") {
        return json_encode([
            "success" => false,
            "message" => "Email subject and body are required"
        ]);
    }

    $headers = "From: agent@yourdomain.com\r\n";
    $headers .= "Content-Type: text/plain; charset=UTF-8\r\n";

    $sent = mail($to, $subject, $body, $headers);

    return json_encode([
        "success" => $sent,
        "message" => $sent ? "Email sent" : "Email failed"
    ]);
}

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

کہ mail() یہ خصوصیت مشترکہ ہوسٹنگ پر دستیاب ہے، لیکن ایک مصدقہ ای میل سروس یا SMTP فراہم کنندہ عام طور پر پروڈکشن ایپلی کیشنز کے لیے زیادہ قابل اعتماد ہوتا ہے۔

MySQL گفتگو میموری شامل کریں۔

Gemini پچھلی API درخواستوں کو خود بخود یاد نہیں رکھتا ہے۔ ایپلیکیشن کو ہر درخواست سے پہلے MySQL سے گفتگو کو لوڈ کرنا چاہیے اور بعد میں اپ ڈیٹ کردہ تاریخ کو محفوظ کرنا چاہیے۔

بنانا memory.php:

prepare(
        "SELECT role, content
         FROM agent_memory
         WHERE session_id = :session_id
         ORDER BY id ASC"
    );

    $stmt->execute([
        ":session_id" => $sessionId
    ]);

    $history = [];

    foreach ($stmt->fetchAll() as $row) {
        $history[] = [
            "role" => $row["role"],
            "parts" => [
                [
                    "text" => $row["content"]
                ]
            ]
        ];
    }

    return $history;
}

function save_memory(string $sessionId, array $history): void
{
    $pdo = db();

    $delete = $pdo->prepare(
        "DELETE FROM agent_memory
         WHERE session_id = :session_id"
    );

    $delete->execute([
        ":session_id" => $sessionId
    ]);

    $insert = $pdo->prepare(
        "INSERT INTO agent_memory
         (session_id, role, content)
         VALUES (:session_id, :role, :content)"
    );

    foreach ($history as $turn) {
        $part = $turn["parts"][0] ?? [];

        $text = isset($part["text"])
            ? $part["text"]
            : json_encode($part);

        $insert->execute([
            ":session_id" => $sessionId,
            ":role" => $turn["role"],
            ":content" => $text
        ]);
    }
}

load_memory موجودہ سیشن کے لیے پیغامات بازیافت کرتا ہے اور انہیں جیمنی کی توقع کی شکل میں واپس لکھتا ہے۔

save_memory محفوظ کردہ ریکارڈ کو موجودہ ریکارڈ سے بدل دیتا ہے۔ یہ سادہ اور چھوٹے ٹیوٹوریل ایپلی کیشنز کے لیے موزوں ہے۔ بڑے سسٹمز میں، آپ صرف نئے پیغامات شامل کرکے، JSON کالم استعمال کرکے، یا پچھلی بات چیت کا خلاصہ کرکے ڈیٹا بیس اور API کے استعمال کو کم کرسکتے ہیں۔

ایجنٹ لوپ بنائیں

ایجنٹ لوپ ڈیٹا بیس، جیمنی، میموری اور ٹولز کو جوڑتا ہے۔

بنانا agent.php:

 save_note_tool($args, $sessionId),
        "search_web" => search_web_tool($args),
        "send_email" => send_email_tool($args),
        default => json_encode([
            "success" => false,
            "message" => "Unknown tool"
        ])
    };
}

function run_agent(
    string $message,
    string $sessionId
): string {
    $history = load_memory($sessionId);

    $history[] = [
        "role" => "user",
        "parts" => [
            [
                "text" => $message
            ]
        ]
    ];

    $tools = tool_definitions();
    $limit = 5;
    $step = 0;

    while ($step < $limit) {
        $step++;

        $response = gemini_request($history, $tools);
        $parsed = parse_gemini_response($response);

        if ($parsed["type"] === "text") {
            $history[] = [
                "role" => "model",
                "parts" => [
                    [
                        "text" => $parsed["text"]
                    ]
                ]
            ];

            save_memory($sessionId, $history);

            return $parsed["text"];
        }

        if ($parsed["type"] === "function_call") {
            $toolName = $parsed["name"];
            $toolArgs = $parsed["args"];
            $result = run_tool($toolName, $toolArgs, $sessionId);

            $history[] = [
                "role" => "model",
                "parts" => [
                    [
                        "functionCall" => [
                            "name" => $toolName,
                            "args" => $toolArgs
                        ]
                    ]
                ]
            ];

            $history[] = [
                "role" => "function",
                "parts" => [
                    [
                        "functionResponse" => [
                            "name" => $toolName,
                            "response" => [
                                "content" => $result
                            ]
                        ]
                    ]
                ]
            ];
        }
    }

    save_memory($sessionId, $history);

    return "I could not complete the task within the allowed number of steps.";
}

کہ run_tool فنکشن درخواست کردہ ٹول کو درست پی ایچ پی فنکشن کی طرف لے جاتا ہے۔ ڈیفالٹ کیس غیر متوقع ٹول کے ناموں کو محفوظ طریقے سے ہینڈل کرتا ہے۔

کہ run_agent فنکشن پہلے موجودہ ریکارڈز کو لوڈ کرتا ہے اور نئے صارف کے پیغامات شامل کرتا ہے۔ پھر گفتگو جیمنی کو بھیجیں۔

جب جیمنی ٹیکسٹ واپس کرتا ہے تو جواب محفوظ ہو جاتا ہے اور صارف کو واپس کر دیا جاتا ہے۔

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

پانچ مراحل کی حد ماڈل کو ٹول کو حتمی شکل دیئے بغیر بار بار کال کرنے سے روکتی ہے۔ آپ اپنی درخواست کی ضروریات کی بنیاد پر حدود کو ایڈجسٹ کر سکتے ہیں۔

عوامی API کے اختتامی مقامات کو بے نقاب کرنا

بنانا index.php:

 "Invalid JSON body"
    ]);

    exit;
}

$message = trim($input["message"] ?? "");
$sessionId = trim($input["session_id"] ?? "");

if ($message === "" || $sessionId === "") {
    http_response_code(400);

    echo json_encode([
        "error" => "message and session_id are required"
    ]);

    exit;
}

try {
    $reply = run_agent($message, $sessionId);

    echo json_encode([
        "reply" => $reply,
        "session_id" => $sessionId
    ]);
} catch (Throwable $e) {
    http_response_code(500);

    echo json_encode([
        "error" => $e->getMessage()
    ]);
}

اختتامی نقطہ پیغام اور سیشن ID پر مشتمل JSON درخواست کی توقع کرتا ہے۔

{
  "message": "Save a note that our launch is on 1 September 2026",
  "session_id": "demo123"
}

فرنٹ اینڈ کو ایک ہی گفتگو میں پیغامات کے لیے وہی سیشن ID دوبارہ استعمال کرنا چاہیے۔ نیا سیشن ID ایک الگ گفتگو تخلیق کرتا ہے۔

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

cPanel پر تعینات کریں۔

براہ کرم ان اقدامات پر عمل کریں:

  1. اپنا پروجیکٹ اپ لوڈ کریں۔ /public_html/agent/.

  2. cPanel میں ڈیٹا بیس اور صارفین بنائیں۔

  3. صارفین کو ڈیٹا بیس تک رسائی فراہم کریں۔

  4. phpMyAdmin سے SQL چلائیں۔

  5. براہ کرم اپنی اسناد کو اپ ڈیٹ کریں۔ db.php.

  6. اپنی Gemini API کلید شامل کریں۔ gemini.php.

  7. براہ کرم PHP 8.1 یا اس سے زیادہ منتخب کریں۔

  8. cURL ایکسٹینشن کو فعال کریں۔

  9. اضافہ .htaccess فائل tools فولڈر

اختتامی نقطہ اس کے بعد درج ذیل مقامات پر دستیاب ہوگا:

https://yourdomain.com/agent/index.php

ایجنٹ ٹیسٹ

نوٹ محفوظ کریں:

curl -X POST https://yourdomain.com/agent/index.php \
  -H "Content-Type: application/json" \
  -d '{"message":"Save a note that our launch is on 1 September 2026","session_id":"demo123"}'

ایجنٹ کو کال کرنا ضروری ہے۔ save_noteنوٹ کو MySQL میں محفوظ کریں اور OK واپس کریں۔

آپ اسی سیشن ID کے ساتھ ایک اور درخواست بھیج کر میموری کی جانچ کر سکتے ہیں۔

curl -X POST https://yourdomain.com/agent/index.php \
  -H "Content-Type: application/json" \
  -d '{"message":"What note did I save earlier?","session_id":"demo123"}'

ایجنٹوں کو پچھلی گفتگو اس سے لوڈ کرنی چاہیے: agent_memory اور جواب دینے کے لیے استعمال کریں۔

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

پیداوار بڑھانے کے خیالات

حقیقی صارفین کو آپ کی درخواست تک رسائی کی اجازت دینے سے پہلے، ہم مندرجہ ذیل شامل کرنے کی تجویز کرتے ہیں:

ثبوت

API ٹوکن یا دیگر تصدیقی طریقہ درکار ہے۔ بصورت دیگر، جو کوئی بھی آپ کا اختتامی نقطہ دریافت کرے گا وہ آپ کے ٹولز اور آپ کا جیمنی اکاؤنٹ استعمال کر سکے گا۔

شرح کی حد

غلط استعمال اور غیر متوقع استعمال کو روکنے کے لیے، سیشن ID، IP ایڈریس، یا تصدیق شدہ صارف کے ذریعے درخواستوں کو محدود کریں۔

ٹول لاگنگ

سیشن ID، ٹول کا نام، دلائل، نتائج، اور عملدرآمد کا وقت اسٹور کرتا ہے۔ اس سے آپ کو غیر متوقع رویے کی چھان بین میں مدد ملتی ہے۔

زیادہ طاقتور تصدیق

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

میموری کا بہتر انتظام

طویل گفتگو کے نتیجے میں API کی بڑی درخواستیں اور کم کارکردگی ہو سکتی ہے۔ حالیہ پیغامات کو آرکائیو کرنے، پرانے پیغامات کا خلاصہ کرنے، یا سٹرکچرڈ ٹول کالز کو الگ سے اسٹور کرنے پر غور کریں۔

حساس کاموں کی تصدیق

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

اسناد کا تحفظ

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

نتیجہ

مفید AI ایجنٹس بنانے کے لیے آپ کو پیچیدہ کلاؤڈ اسٹیک کی ضرورت نہیں ہے۔

PHP، MySQL، Gemini Flash، اور cPanel کا استعمال کرتے ہوئے، بہت سے ڈویلپرز ایسے سسٹم بنا سکتے ہیں جس کی وجہ سے، ٹولز کو کال کر سکتے ہیں، میموری کو اسٹور کر سکتے ہیں، اور ایسے انفراسٹرکچر پر چل سکتے ہیں جسے وہ پہلے سے سمجھتے ہیں۔

فن تعمیر سادہ عمل کے ارد گرد بنایا گیا ہے.

  1. اختتامی نقطہ صارف کی درخواست وصول کرتا ہے۔

  2. MySQL پچھلا مکالمہ فراہم کرتا ہے۔

  3. Gemini فیصلہ کرتا ہے کہ آیا کسی آلے کی ضرورت ہے یا نہیں۔

  4. پی ایچ پی ٹول چلاتا ہے۔

  5. نتائج جیمنی کو واپس بھیجے جاتے ہیں۔

  6. جیمنی حتمی جواب فراہم کرتا ہے۔

  7. آپ کی تازہ ترین گفتگو محفوظ ہو جائے گی۔

یہ معیاری مشترکہ ہوسٹنگ پر ایجنٹ پر مبنی ایپلی کیشنز بنانے کے لیے ایک عملی بنیاد فراہم کرتا ہے۔

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