{"id":27775,"date":"2026-08-15T22:49:44","date_gmt":"2026-08-15T22:49:44","guid":{"rendered":"https:\/\/umang.pk\/2026\/08\/15\/php%d8%8c-cpanel%d8%8c-%d8%a7%d9%88%d8%b1-gemini-flash-%da%a9%d8%a7-%d8%a7%d8%b3%d8%aa%d8%b9%d9%85%d8%a7%d9%84-%da%a9%d8%b1%d8%aa%db%92-%db%81%d9%88%d8%a6%db%92-%da%a9%d9%85-%d8%a7%d8%b2-%da%a9%d9%85\/"},"modified":"2026-08-15T22:49:44","modified_gmt":"2026-08-15T22:49:44","slug":"php%d8%8c-cpanel%d8%8c-%d8%a7%d9%88%d8%b1-gemini-flash-%da%a9%d8%a7-%d8%a7%d8%b3%d8%aa%d8%b9%d9%85%d8%a7%d9%84-%da%a9%d8%b1%d8%aa%db%92-%db%81%d9%88%d8%a6%db%92-%da%a9%d9%85-%d8%a7%d8%b2-%da%a9%d9%85","status":"publish","type":"post","link":"https:\/\/umang.pk\/ur\/2026\/08\/15\/php%d8%8c-cpanel%d8%8c-%d8%a7%d9%88%d8%b1-gemini-flash-%da%a9%d8%a7-%d8%a7%d8%b3%d8%aa%d8%b9%d9%85%d8%a7%d9%84-%da%a9%d8%b1%d8%aa%db%92-%db%81%d9%88%d8%a6%db%92-%da%a9%d9%85-%d8%a7%d8%b2-%da%a9%d9%85\/","title":{"rendered":"PHP\u060c cPanel\u060c \u0627\u0648\u0631 Gemini Flash \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u0648\u0626\u06d2 \u06a9\u0645 \u0627\u0632 \u06a9\u0645 $0 \u0641\u06cc \u0645\u06c1\u06cc\u0646\u06c1 \u0645\u06cc\u06ba \u067e\u0631\u0648\u0688\u06a9\u0634\u0646 \u06a9\u06d2 \u0644\u06cc\u06d2 \u062a\u06cc\u0627\u0631 AI \u0627\u06cc\u062c\u0646\u0679 \u06a9\u06cc\u0633\u06d2 \u0628\u0646\u0627\u06cc\u0627 \u062c\u0627\u0626\u06d2"},"content":{"rendered":"\n<div id=\"\">\n<p>\u0627\u0633 \u0679\u06cc\u0648\u0679\u0648\u0631\u06cc\u0644 \u0645\u06cc\u06ba\u060c \u06c1\u0645 \u0627\u06cc\u06a9 \u0639\u0645\u0644\u06cc AI \u0627\u06cc\u062c\u0646\u0679 \u0628\u0646\u0627\u062a\u06d2 \u06c1\u06cc\u06ba \u062c\u0648 \u0635\u0627\u0631\u0641 \u06a9\u06d2 \u067e\u0631\u0627\u0645\u067e\u0679 \u06a9\u0648 \u0633\u0646 \u0633\u06a9\u062a\u0627 \u06c1\u06d2\u060c \u0641\u06cc\u0635\u0644\u06c1 \u06a9\u0631 \u0633\u06a9\u062a\u0627 \u06c1\u06d2 \u06a9\u06c1 \u0622\u06cc\u0627 \u06a9\u0648\u0626\u06cc \u0679\u0648\u0644 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u06cc\u0627 \u062c\u0627\u0646\u0627 \u0686\u0627\u06c1\u06cc\u06d2\u060c \u0627\u0633 \u0679\u0648\u0644 \u06a9\u0648 \u067e\u06cc \u0627\u06cc\u0686 \u067e\u06cc \u0645\u06cc\u06ba \u0686\u0644\u0627\u0626\u06cc\u06ba\u060c \u0628\u0627\u062a \u0686\u06cc\u062a \u06a9\u06cc \u0633\u0631\u06af\u0632\u0634\u062a \u06a9\u0648 MySQL \u0645\u06cc\u06ba \u0627\u0633\u0679\u0648\u0631 \u06a9\u0631\u06cc\u06ba\u060c \u0627\u0648\u0631 \u062d\u062a\u0645\u06cc \u062c\u0648\u0627\u0628 \u062d\u0627\u0635\u0644 \u06c1\u0648\u0646\u06d2 \u062a\u06a9 \u0627\u0633\u062a\u062f\u0644\u0627\u0644 \u062c\u0627\u0631\u06cc \u0631\u06a9\u06be\u06cc\u06ba\u06d4<\/p>\n<p>\u0645\u0642\u0635\u062f \u0627\u06cc\u06a9 \u0686\u0645\u06a9\u062f\u0627\u0631 \u0688\u06cc\u0645\u0648 \u0628\u0646\u0627\u0646\u0627 \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u06d4 \u0645\u0642\u0635\u062f \u06cc\u06c1 \u0628\u062a\u0627\u0646\u0627 \u06c1\u06d2 \u06a9\u06c1 \u0627\u06cc\u06a9 AI \u0627\u06cc\u062c\u0646\u0679 \u0627\u0633 \u0627\u0633\u0679\u06cc\u06a9 \u0645\u06cc\u06ba \u06a9\u06cc\u0633\u06d2 \u06a9\u0627\u0645 \u06a9\u0631 \u0633\u06a9\u062a\u0627 \u06c1\u06d2 \u062c\u0648 \u0628\u06c1\u062a \u0633\u06d2 \u0688\u0648\u06cc\u0644\u067e\u0631\u0632 \u06a9\u06d2 \u0644\u06cc\u06d2 \u062d\u0642\u06cc\u0642\u062a \u067e\u0633\u0646\u062f \u06c1\u06d2: \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u06a9\u06cc \u06a9\u0627\u0631\u0631\u0648\u0627\u0626\u06cc \u06a9\u06d2 \u0644\u06cc\u06d2 PHP\u060c \u0627\u0633\u062a\u0642\u0627\u0645\u062a \u06a9\u06d2 \u0644\u06cc\u06d2 MySQL\u060c \u0627\u0646\u062f\u0627\u0632\u06c1 \u0627\u0648\u0631 \u0641\u0646\u06a9\u0634\u0646 \u06a9\u0627\u0644\u0632 \u06a9\u06d2 \u0644\u06cc\u06d2 Gemini Flash\u060c \u0627\u0648\u0631 \u0645\u0639\u06cc\u0627\u0631\u06cc \u0645\u0634\u062a\u0631\u06a9\u06c1 \u06c1\u0648\u0633\u0679\u0646\u06af \u062a\u0639\u06cc\u0646\u0627\u062a\u06cc \u06a9\u06d2 \u0644\u06cc\u06d2 cPanel\u06d4<\/p>\n<p>\u0627\u0633 \u0645\u0636\u0645\u0648\u0646 \u06a9\u06d2 \u0627\u062e\u062a\u062a\u0627\u0645 \u062a\u06a9\u060c \u0622\u067e \u0633\u0645\u062c\u06be \u062c\u0627\u0626\u06cc\u06ba \u06af\u06d2:<\/p>\n<ul>\n<li>\n<p>\u0627\u06cc\u062c\u0646\u0679 \u0644\u0648\u067e \u06a9\u0648 \u06a9\u0646\u0641\u06cc\u06af\u0631 \u06a9\u0631\u0646\u06d2 \u06a9\u0627 \u0637\u0631\u06cc\u0642\u06c1<\/p>\n<\/li>\n<li>\n<p>\u0679\u0648\u0644 \u06a9\u0627\u0644\u0632 \u062f\u0631\u0627\u0635\u0644 \u06a9\u06cc\u0633\u06d2 \u06a9\u0627\u0645 \u06a9\u0631\u062a\u06cc \u06c1\u06cc\u06ba\u06d4<\/p>\n<\/li>\n<li>\n<p>\u06af\u0641\u062a\u06af\u0648 \u06a9\u06cc \u06cc\u0627\u062f\u0648\u06ba \u06a9\u0648 \u06a9\u06cc\u0633\u06d2 \u0645\u062d\u0641\u0648\u0638 \u0627\u0648\u0631 \u062f\u0648\u0628\u0627\u0631\u06c1 \u0644\u0648\u0688 \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<\/li>\n<li>\n<p>\u0639\u0648\u0627\u0645\u06cc API \u0627\u06cc\u0646\u0688 \u067e\u0648\u0627\u0626\u0646\u0679\u0633 \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06d2 \u0627\u067e\u0646\u06d2 \u0633\u0633\u0679\u0645 \u06a9\u0648 \u06a9\u06cc\u0633\u06d2 \u0628\u06d2 \u0646\u0642\u0627\u0628 \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<\/li>\n<li>\n<p>\u0627\u067e\u0646\u06d2 \u067e\u0631\u0648\u062c\u06cc\u06a9\u0679 \u06a9\u0648 \u0645\u0639\u06cc\u0627\u0631\u06cc \u0645\u0634\u062a\u0631\u06a9\u06c1 \u06c1\u0648\u0633\u0679\u0646\u06af \u067e\u0631 \u06a9\u06cc\u0633\u06d2 \u062a\u0639\u06cc\u0646\u0627\u062a \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<\/li>\n<\/ul>\n<h3 id=\"heading-table-of-contents\">\u0627\u0646\u0688\u06cc\u06a9\u0633<\/h3>\n<h3 id=\"heading-prerequisites\">\u0634\u0631\u0627\u0626\u0637<\/h3>\n<p>\u0634\u0631\u0648\u0639 \u06a9\u0631\u0646\u06d2 \u0633\u06d2 \u067e\u06c1\u0644\u06d2\u060c \u0622\u067e \u06a9\u06d2 \u067e\u0627\u0633 \u06c1\u0648\u0646\u0627 \u0636\u0631\u0648\u0631\u06cc \u06c1\u06d2:<\/p>\n<ul>\n<li>\n<p>\u067e\u06cc \u0627\u06cc\u0686 \u067e\u06cc 8.1 \u06cc\u0627 \u0627\u0633 \u0633\u06d2 \u0632\u06cc\u0627\u062f\u06c1<\/p>\n<\/li>\n<li>\n<p>MySQL \u0631\u0633\u0627\u0626\u06cc<\/p>\n<\/li>\n<li>\n<p>\u067e\u06cc \u0627\u06cc\u0686 \u067e\u06cc \u0645\u06cc\u06ba \u0633\u06cc \u0622\u0631 \u0627\u06cc\u0644 \u06a9\u0648 \u0641\u0639\u0627\u0644 \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<\/li>\n<li>\n<p>\u06af\u0648\u06af\u0644 AI \u0627\u0633\u0679\u0648\u0688\u06cc\u0648 \u0645\u06cc\u06ba Gemini API \u06a9\u0644\u06cc\u062f<\/p>\n<\/li>\n<li>\n<p>PHP arrays\u060c JSON\u060c \u0627\u0648\u0631 SQL \u06a9\u0627 \u0628\u0646\u06cc\u0627\u062f\u06cc \u0639\u0644\u0645<\/p>\n<\/li>\n<li>\n<p>cPanel \u0627\u0648\u0631 phpMyAdmin \u062a\u06a9 \u0631\u0633\u0627\u0626\u06cc<\/p>\n<\/li>\n<\/ul>\n<p>\u0639\u0644\u06cc\u062d\u062f\u06c1 \u0627\u06cc\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u0633\u0631\u0648\u0631 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u06d4 PHP \u0641\u0627\u0626\u0644\u06cc\u06ba \u0628\u0627\u0642\u0627\u0639\u062f\u06c1 \u0645\u0634\u062a\u0631\u06a9\u06c1 \u06c1\u0648\u0633\u0679\u0646\u06af \u067e\u0631 \u0686\u0644 \u0633\u06a9\u062a\u06cc \u06c1\u06cc\u06ba \u0627\u06af\u0631 \u0622\u067e \u06a9\u0627 \u0627\u06a9\u0627\u0624\u0646\u0679 PHP\u060c cURL\u060c MySQL\u060c \u0627\u0648\u0631 \u0622\u0624\u0679 \u0628\u0627\u0624\u0646\u0688 HTTPS \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u0648\u06ba \u06a9\u0648 \u0633\u067e\u0648\u0631\u0679 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u0627\u06cc\u06a9 \u0639\u0627\u0645 cPanel \u0633\u06cc\u0679 \u0627\u067e \u0645\u06cc\u06ba\u060c \u067e\u0631\u0648\u062c\u06cc\u06a9\u0679\u0633 \u06a9\u0648 \u062f\u0631\u062c \u0630\u06cc\u0644 \u0641\u0648\u0644\u0688\u0631\u0632 \u0645\u06cc\u06ba \u0645\u062d\u0641\u0648\u0638 \u06a9\u06cc\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u06d4 <code>public_html<\/code>.<\/p>\n<h3 id=\"heading-architecture-overview\">\u0641\u0646 \u062a\u0639\u0645\u06cc\u0631 \u06a9\u0627 \u062c\u0627\u0626\u0632\u06c1<\/h3>\n<p>\u0646\u0638\u0627\u0645 \u067e\u0627\u0646\u0686 \u0627\u06c1\u0645 \u062d\u0635\u0648\u06ba \u067e\u0631 \u0645\u0634\u062a\u0645\u0644 \u06c1\u06d2:<\/p>\n<ol>\n<li>\n<p>\u0639\u0648\u0627\u0645\u06cc \u0627\u062e\u062a\u062a\u0627\u0645\u06cc \u0646\u0642\u0637\u06c1 \u0635\u0627\u0631\u0641 \u06a9\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u06cc\u06ba \u0648\u0635\u0648\u0644 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<\/li>\n<li>\n<p>\u0627\u06cc\u062c\u0646\u0679 \u0644\u0648\u067e \u06af\u0641\u062a\u06af\u0648 \u06a9\u0648 Gemini Flash \u067e\u0631 \u0628\u06be\u06cc\u062c\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<\/li>\n<li>\n<p>\u0679\u0648\u0644\u0632 \u0631\u062c\u0633\u0679\u0631\u06cc \u062c\u06cc\u0645\u0646\u06cc \u06a9\u0648 \u0628\u062a\u0627\u062a\u06cc \u06c1\u06d2 \u06a9\u06c1 \u06a9\u0648\u0646 \u0633\u06cc \u062e\u0635\u0648\u0635\u06cc\u0627\u062a \u062f\u0633\u062a\u06cc\u0627\u0628 \u06c1\u06cc\u06ba\u06d4<\/p>\n<\/li>\n<li>\n<p>\u067e\u06cc \u0627\u06cc\u0686 \u067e\u06cc \u0679\u0648\u0644\u0632 \u0627\u06cc\u0633\u06d2 \u06a9\u0627\u0645 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba \u062c\u06cc\u0633\u06d2 \u0646\u0648\u0679 \u0645\u062d\u0641\u0648\u0638 \u06a9\u0631\u0646\u0627\u060c \u0648\u06cc\u0628 \u067e\u0631 \u062a\u0644\u0627\u0634 \u06a9\u0631\u0646\u0627\u060c \u0627\u06cc \u0645\u06cc\u0644\u0632 \u0628\u06be\u06cc\u062c\u0646\u0627 \u0648\u063a\u06cc\u0631\u06c1\u06d4<\/p>\n<\/li>\n<li>\n<p>MySQL \u06af\u0641\u062a\u06af\u0648 \u06a9\u0648 \u0645\u062d\u0641\u0648\u0638 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u062a\u0627\u06a9\u06c1 \u0627\u06cc\u062c\u0646\u0679 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u06a9\u06d2 \u0633\u0627\u062a\u06be \u062c\u0627\u0631\u06cc \u0631\u06a9\u06be \u0633\u06a9\u06d2\u06d4<\/p>\n<\/li>\n<\/ol>\n<p>\u0628\u06c1\u0627\u0624 \u0622\u0633\u0627\u0646 \u06c1\u06d2\u06d4 \u0635\u0627\u0631\u0641 \u067e\u06cc \u0627\u06cc\u0686 \u067e\u06cc \u06a9\u06d2 \u0627\u062e\u062a\u062a\u0627\u0645\u06cc \u0646\u0642\u0637\u06c1 \u067e\u0631 \u067e\u06cc\u063a\u0627\u0645 \u0628\u06be\u06cc\u062c\u062a\u0627 \u06c1\u06d2\u06d4 \u0627\u062e\u062a\u062a\u0627\u0645\u06cc \u0646\u0642\u0637\u06c1 \u0627\u06cc\u062c\u0646\u0679 \u06a9\u0648 \u067e\u06cc\u063a\u0627\u0645 \u0627\u0648\u0631 \u0633\u06cc\u0634\u0646 ID \u0628\u06be\u06cc\u062c\u062a\u0627 \u06c1\u06d2\u06d4 \u0627\u06cc\u062c\u0646\u0679 \u067e\u0686\u06be\u0644\u06d2 \u067e\u06cc\u063a\u0627\u0645\u0627\u062a \u0644\u0648\u0688 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u06a9\u0633\u06cc \u0628\u06be\u06cc \u062f\u0633\u062a\u06cc\u0627\u0628 \u0679\u0648\u0644\u0632 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0628\u0627\u062a \u0686\u06cc\u062a \u062c\u06cc\u0645\u0646\u06cc \u06a9\u0648 \u0628\u06be\u06cc\u062c\u062a\u0627 \u06c1\u06d2\u06d4 \u062c\u06cc\u0645\u0646\u06cc \u067e\u06be\u0631 \u0641\u06cc\u0635\u0644\u06c1 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u06a9\u06c1 \u06a9\u06cc\u0627 \u06a9\u0631\u0646\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u0627\u06af\u0631 \u0622\u067e \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u06a9\u0627 \u0628\u0631\u0627\u06c1 \u0631\u0627\u0633\u062a \u062c\u0648\u0627\u0628 \u062f\u06d2 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u062a\u0648 Gemini \u0645\u062a\u0646 \u0648\u0627\u067e\u0633 \u06a9\u0631 \u062f\u06d2 \u06af\u0627\u06d4 \u062c\u0628 \u06a9\u0633\u06cc \u0622\u067e\u0631\u06cc\u0634\u0646 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u0648\u062a\u06cc \u06c1\u06d2\u060c \u062c\u06cc\u0645\u0646\u06cc \u0679\u0648\u0644 \u06a9\u06d2 \u0646\u0627\u0645 \u0627\u0648\u0631 \u062f\u0644\u0627\u0626\u0644 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0641\u0646\u06a9\u0634\u0646 \u06a9\u0627\u0644 \u0648\u0627\u067e\u0633 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u067e\u06cc \u0627\u06cc\u0686 \u067e\u06cc \u0641\u0646\u06a9\u0634\u0646 \u06a9\u0627\u0644 \u0648\u0635\u0648\u0644 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u060c \u0645\u06cc\u0686\u0646\u06af \u0679\u0648\u0644 \u0686\u0644\u0627\u062a\u0627 \u06c1\u06d2\u060c \u0627\u0648\u0631 \u0646\u062a\u0627\u0626\u062c \u06a9\u0648 \u0688\u0627\u0626\u06cc\u0644\u0627\u06af \u0645\u06cc\u06ba \u0634\u0627\u0645\u0644 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u0646\u062a\u0627\u0626\u062c \u062c\u06cc\u0645\u0646\u06cc \u06a9\u0648 \u0648\u0627\u067e\u0633 \u0628\u06be\u06cc\u062c\u06d2 \u062c\u0627\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u062c\u0648 \u062f\u0648\u0633\u0631\u06d2 \u0679\u0648\u0644\u0632 \u06a9\u0648 \u06a9\u0627\u0644 \u06a9\u0631 \u0633\u06a9\u062a\u0627 \u06c1\u06d2 \u06cc\u0627 \u062d\u062a\u0645\u06cc \u062c\u0648\u0627\u0628 \u062f\u06d2 \u0633\u06a9\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u06cc\u06c1 \u0644\u0648\u067e \u0648\u06c1 \u06c1\u06d2 \u062c\u0648 \u0622\u067e \u06a9\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u06a9\u0648 \u0628\u0646\u06cc\u0627\u062f\u06cc \u0686\u06cc\u0679 \u0628\u0648\u0679 \u06a9\u06d2 \u0628\u062c\u0627\u0626\u06d2 \u0627\u06cc\u06a9 \u0627\u06cc\u062c\u0646\u0679 \u0628\u0646\u0627\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<h3 id=\"heading-project-structure\">\u0645\u0646\u0635\u0648\u0628\u06d2 \u06a9\u06cc \u0633\u0627\u062e\u062a<\/h3>\n<p>\u0646\u0627\u0645 \u06a9\u0627 \u0627\u06cc\u06a9 \u0641\u0648\u0644\u0688\u0631 \u0628\u0646\u0627\u0626\u06cc\u06ba\u06d4 <code>agent<\/code> \u0627\u0646\u062f\u0631 <code>public_html<\/code>:<\/p>\n<pre><code class=\"language-text\">\/public_html\/agent\/\n\u251c\u2500\u2500 index.php\n\u251c\u2500\u2500 agent.php\n\u251c\u2500\u2500 gemini.php\n\u251c\u2500\u2500 db.php\n\u251c\u2500\u2500 memory.php\n\u251c\u2500\u2500 tool_registry.php\n\u251c\u2500\u2500 tools\/\n\u2502   \u251c\u2500\u2500 save_note.php\n\u2502   \u251c\u2500\u2500 search_web.php\n\u2502   \u251c\u2500\u2500 send_email.php\n\u2502   \u2514\u2500\u2500 .htaccess\n\u2514\u2500\u2500 .htaccess\n<\/code><\/pre>\n<p>\u06c1\u0631 \u0641\u0627\u0626\u0644 \u06a9\u06cc \u0627\u06cc\u06a9 \u0627\u06c1\u0645 \u0630\u0645\u06c1 \u062f\u0627\u0631\u06cc \u06c1\u0648\u062a\u06cc \u06c1\u06d2\u06d4<\/p>\n<ul>\n<li>\n<p><code>index.php<\/code>    \u0627\u06cc\u06a9 HTTP \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0648\u0635\u0648\u0644 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 JSON \u0648\u0627\u067e\u0633 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<\/li>\n<li>\n<p><code>agent.php<\/code>    \u0627\u06cc\u06a9 \u0627\u0646\u0641\u0631\u0646\u0633 \u0644\u0648\u067e \u067e\u0631 \u0645\u0634\u062a\u0645\u0644 \u06c1\u06d2\u06d4<\/p>\n<\/li>\n<li>\n<p><code>gemini.php<\/code>    \u0645\u06cc\u06ba Gemini \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0628\u0627\u062a \u0686\u06cc\u062a \u06a9\u0631\u062a\u0627 \u06c1\u0648\u06ba\u06d4<\/p>\n<\/li>\n<li>\n<p><code>db.php<\/code>    \u0627\u06cc\u06a9 MySQL \u06a9\u0646\u06a9\u0634\u0646 \u0628\u0646\u0627\u0626\u06cc\u06ba\u06d4<\/p>\n<\/li>\n<li>\n<p><code>memory.php<\/code>    \u06af\u0641\u062a\u06af\u0648 \u06a9\u06cc \u062a\u0627\u0631\u06cc\u062e \u06a9\u0648 \u0644\u0648\u0688 \u0627\u0648\u0631 \u0645\u062d\u0641\u0648\u0638 \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<\/li>\n<li>\n<p><code>tool_registry.php<\/code>    \u062f\u0633\u062a\u06cc\u0627\u0628 \u0679\u0648\u0644\u0632 \u06a9\u06cc \u0648\u0636\u0627\u062d\u062a \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<\/li>\n<li>\n<p>\u06a9\u06c1 <code>tools<\/code> \u0641\u0648\u0644\u0688\u0631 \u0645\u06cc\u06ba \u0627\u06cc\u0633\u06d2 \u0627\u0641\u0639\u0627\u0644 \u06c1\u0648\u062a\u06d2 \u06c1\u06cc\u06ba \u062c\u0648 \u06a9\u0627\u0645 \u0627\u0646\u062c\u0627\u0645 \u062f\u06cc\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<\/li>\n<\/ul>\n<p>\u0641\u0627\u0626\u0644\u0648\u06ba \u06a9\u0648 \u0627\u0644\u06af \u0631\u06a9\u06be\u0646\u06d2 \u0633\u06d2 \u0622\u067e \u06a9\u06d2 \u067e\u0631\u0648\u062c\u06cc\u06a9\u0679 \u06a9\u0648 \u0628\u0631\u0642\u0631\u0627\u0631 \u0631\u06a9\u06be\u0646\u0627 \u0622\u0633\u0627\u0646 \u06c1\u0648\u062c\u0627\u062a\u0627 \u06c1\u06d2\u06d4 \u0622\u067e \u0627\u067e\u0646\u06cc \u0628\u0627\u0642\u06cc \u0627\u06cc\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u06a9\u0648 \u062a\u0628\u062f\u06cc\u0644 \u06a9\u06cc\u06d2 \u0628\u063a\u06cc\u0631 \u0646\u0626\u06d2 \u0679\u0648\u0644\u0632 \u0634\u0627\u0645\u0644 \u06a9\u0631 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u0627\u0633 \u0645\u06cc\u06ba \u0634\u0627\u0645\u0644 \u06a9\u0631\u06cc\u06ba <code>tools\/.htaccess<\/code>:<\/p>\n<pre><code class=\"language-apache\">Deny from all\n<\/code><\/pre>\n<p>\u0679\u0648\u0644\u0632 \u0641\u0648\u0644\u0688\u0631 \u0639\u0648\u0627\u0645\u06cc URL \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06d2 \u0642\u0627\u0628\u0644 \u0631\u0633\u0627\u0626\u06cc \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u06d4 \u06cc\u06c1 \u0641\u0627\u0626\u0644\u06cc\u06ba \u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633 \u0645\u06cc\u06ba \u0644\u06a9\u06be\u06cc \u062c\u0627 \u0633\u06a9\u062a\u06cc \u06c1\u06cc\u06ba\u060c \u0628\u06cc\u0631\u0648\u0646\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u0648\u06ba \u067e\u0631 \u06a9\u06cc \u062c\u0627 \u0633\u06a9\u062a\u06cc \u06c1\u06cc\u06ba\u060c \u06cc\u0627 \u0627\u06cc \u0645\u06cc\u0644 \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06d2 \u0628\u06be\u06cc\u062c\u06cc \u062c\u0627 \u0633\u06a9\u062a\u06cc \u06c1\u06cc\u06ba\u06d4<\/p>\n<h3 id=\"heading-set-up-the-mysql-database\">MySQL \u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633 \u06a9\u06cc \u062a\u0631\u062a\u06cc\u0628\u0627\u062a<\/h3>\n<p>\u0622\u067e \u06a9\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u06a9\u0648 \u06af\u0641\u062a\u06af\u0648 \u06a9\u06cc \u0633\u0631\u06af\u0632\u0634\u062a \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u06cc\u06a9 \u0679\u06cc\u0628\u0644 \u0627\u0648\u0631 \u0645\u062d\u0641\u0648\u0638 \u06a9\u06cc\u06d2 \u06af\u0626\u06d2 \u0646\u0648\u0679\u0648\u06ba \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u06cc\u06a9 \u0679\u06cc\u0628\u0644 \u062f\u0631\u06a9\u0627\u0631 \u06c1\u06d2\u06d4<\/p>\n<p>phpMyAdmin \u0645\u06cc\u06ba \u062f\u0631\u062c \u0630\u06cc\u0644 SQL \u0686\u0644\u0627\u0626\u06cc\u06ba:<\/p>\n<pre><code class=\"language-sql\">CREATE DATABASE IF NOT EXISTS ai_agent;\n\nUSE ai_agent;\n\nCREATE TABLE agent_memory (\n    id INT AUTO_INCREMENT PRIMARY KEY,\n    session_id VARCHAR(64) NOT NULL,\n    role VARCHAR(20) NOT NULL,\n    content TEXT NOT NULL,\n    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,\n    INDEX idx_session_id (session_id)\n);\n\nCREATE TABLE agent_notes (\n    id INT AUTO_INCREMENT PRIMARY KEY,\n    session_id VARCHAR(64) NOT NULL,\n    note TEXT NOT NULL,\n    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP\n);\n<\/code><\/pre>\n<p>\u06a9\u06c1 <code>agent_memory<\/code> \u062c\u062f\u0648\u0644 \u0627\u0646 \u067e\u06cc\u063a\u0627\u0645\u0627\u062a \u06a9\u0648 \u0645\u062d\u0641\u0648\u0638 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u062c\u0648 \u06c1\u0631 \u06af\u0641\u062a\u06af\u0648 \u06a9\u0648 \u0628\u0646\u0627\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u06a9\u06c1 <code>session_id<\/code> \u06a9\u0627\u0644\u0645 \u0627\u06cc\u06a9 \u06af\u0641\u062a\u06af\u0648 \u06a9\u0648 \u062f\u0648\u0633\u0631\u06cc \u06af\u0641\u062a\u06af\u0648 \u0633\u06d2 \u0627\u0644\u06af \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 <code>role<\/code> \u0634\u0646\u0627\u062e\u062a \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u06a9\u06c1 \u0622\u06cc\u0627 \u067e\u06cc\u063a\u0627\u0645 \u06a9\u0633\u06cc \u0635\u0627\u0631\u0641\u060c \u0645\u0627\u0688\u0644 \u06cc\u0627 \u0641\u0646\u06a9\u0634\u0646 \u0633\u06d2 \u0622\u06cc\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u06a9\u06c1 <code>agent_notes<\/code> \u0679\u06cc\u0628\u0644 \u0648\u06c1 \u0645\u0639\u0644\u0648\u0645\u0627\u062a \u0645\u062d\u0641\u0648\u0638 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u062c\u0633\u06d2 \u0635\u0627\u0631\u0641 \u062c\u0627\u0646 \u0628\u0648\u062c\u06be \u06a9\u0631 \u0627\u06cc\u062c\u0646\u0679 \u0633\u06d2 \u06cc\u0627\u062f \u0631\u06a9\u06be\u0646\u06d2 \u06a9\u0648 \u06a9\u06c1\u062a\u0627 \u06c1\u06d2\u06d4 \u0646\u0648\u0679\u0633 \u06a9\u0648 \u0627\u067e\u0646\u06cc \u06af\u0641\u062a\u06af\u0648 \u06a9\u06cc \u0633\u0631\u06af\u0632\u0634\u062a \u0633\u06d2 \u0627\u0644\u06af \u0631\u06a9\u06be\u0646\u06d2 \u0633\u06d2 \u0627\u0646\u06c1\u06cc\u06ba \u0628\u0627\u0632\u06cc\u0627\u0641\u062a \u06a9\u0631\u0646\u0627 \u0627\u0648\u0631 \u0627\u06cc\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u0688\u06cc\u0679\u0627 \u06a9\u06d2 \u0637\u0648\u0631 \u067e\u0631 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u0646\u0627 \u0622\u0633\u0627\u0646 \u06c1\u0648 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u0627\u06af\u0631 cPanel \u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633 \u06a9\u06d2 \u0646\u0627\u0645 \u0645\u06cc\u06ba \u0627\u06a9\u0627\u0624\u0646\u0679 \u06a9\u0627 \u0633\u0627\u0628\u0642\u06c1 \u200b\u200b\u0634\u0627\u0645\u0644 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u060c <code>db.php<\/code>. \u0645\u062b\u0627\u0644 \u06a9\u06d2 \u0637\u0648\u0631 \u067e\u0631\u060c <code>ai_agent<\/code> \u06cc\u06c1 \u06c1\u0648 \u0633\u06a9\u062a\u0627 \u06c1\u06d2\u06d4 <code>account_ai_agent<\/code>.<\/p>\n<h3 id=\"heading-connect-php-to-mysql\">\u067e\u06cc \u0627\u06cc\u0686 \u067e\u06cc \u06a9\u0648 \u0645\u0627\u0626\u06cc \u0627\u06cc\u0633 \u06a9\u06cc\u0648 \u0627\u06cc\u0644 \u0633\u06d2 \u0645\u0631\u0628\u0648\u0637 \u06a9\u0631\u06cc\u06ba\u06d4<\/h3>\n<p>\u0628\u0646\u0627\u0646\u0627 <code>db.php<\/code>:<\/p>\n<pre><code class=\"language-php\"><?php function db(): PDO\n{\n    static $pdo = null;\n\n    if ($pdo === null) {\n        $pdo = new PDO(\n            \"mysql:host=localhost;dbname=ai_agent;charset=utf8mb4\",\n            \"db_user\",\n            \"db_password\",\n            [\n                PDO::ATTR_ERRMODE =?> PDO::ERRMODE_EXCEPTION,\n                PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,\n            ]\n        );\n    }\n\n    return $pdo;\n}\n<\/code><\/pre>\n<p>\u06cc\u06c1 \u0641\u0646\u06a9\u0634\u0646 PDO \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u0648\u0626\u06d2 MySQL \u0633\u06d2 \u062c\u0691\u062a\u0627 \u06c1\u06d2\u06d4 \u062c\u0627\u0645\u062f \u0645\u062a\u063a\u06cc\u0631\u0627\u062a \u0627\u0633 \u0628\u0627\u062a \u06a9\u0648 \u06cc\u0642\u06cc\u0646\u06cc \u0628\u0646\u0627\u062a\u06d2 \u06c1\u06cc\u06ba \u06a9\u06c1 \u062c\u0628 \u0628\u06be\u06cc \u0627\u06cc\u062c\u0646\u0679 \u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633 \u062a\u06a9 \u0631\u0633\u0627\u0626\u06cc \u062d\u0627\u0635\u0644 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u062a\u0648 \u0646\u06cc\u0627 \u06a9\u0646\u06a9\u0634\u0646 \u06a9\u06be\u0648\u0644\u0646\u06d2 \u06a9\u06d2 \u0628\u062c\u0627\u0626\u06d2 \u0627\u06cc\u06a9 \u06c1\u06cc \u06a9\u0646\u06a9\u0634\u0646 \u06a9\u0648 \u0628\u0639\u062f \u06a9\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u0648\u06ba \u06a9\u06d2 \u0644\u06cc\u06d2 \u062f\u0648\u0628\u0627\u0631\u06c1 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u06cc\u0627 \u062c\u0627\u0626\u06d2\u06d4<\/p>\n<p><code>PDO::ATTR_ERRMODE<\/code>    \u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633 \u06a9\u06cc \u062e\u0631\u0627\u0628\u06cc \u0627\u06cc\u06a9 \u0627\u0633\u062a\u062b\u0646\u0627 \u06a9\u0627 \u0633\u0628\u0628 \u0628\u0646\u062a\u06cc \u06c1\u06d2\u06d4 \u0627\u0633 \u0633\u06d2 \u063a\u0644\u0637\u06cc\u0648\u06ba \u06a9\u0627 \u067e\u062a\u06c1 \u0644\u06af\u0627\u0646\u0627 \u0627\u0648\u0631 \u06c1\u06cc\u0646\u0688\u0644 \u06a9\u0631\u0646\u0627 \u0622\u0633\u0627\u0646 \u06c1\u0648 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u062a\u0628\u062f\u06cc\u0644\u06cc <code>ai_agent<\/code>, <code>db_user<\/code>\u0627\u0648\u0631 <code>db_password<\/code> \u06cc\u06c1 cPanel \u0633\u06d2 \u0627\u0635\u0644 \u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633 \u06a9\u06cc \u062a\u0641\u0635\u06cc\u0644\u0627\u062a \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u06a9\u06c1 <code>utf8mb4<\/code> \u06a9\u0631\u06cc\u06a9\u0679\u0631 \u0633\u06cc\u0679 \u0622\u067e \u06a9\u06d2 \u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633 \u06a9\u0648 \u0627\u06cc\u0645\u0648\u062c\u06cc\u0632 \u0627\u0648\u0631 \u063a\u06cc\u0631 \u0627\u0646\u06af\u0631\u06cc\u0632\u06cc \u0645\u062a\u0646 \u0633\u0645\u06cc\u062a \u0645\u062a\u0639\u062f\u062f \u062d\u0631\u0648\u0641 \u06a9\u0648 \u0630\u062e\u06cc\u0631\u06c1 \u06a9\u0631\u0646\u06d2 \u06a9\u06cc \u0627\u062c\u0627\u0632\u062a \u062f\u06cc\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<h3 id=\"heading-call-gemini-flash-from-php\">\u067e\u06cc \u0627\u06cc\u0686 \u067e\u06cc \u0633\u06d2 \u062c\u06cc\u0645\u0646\u06cc \u0641\u0644\u06cc\u0634 \u06a9\u0648 \u06a9\u0627\u0644 \u06a9\u0631\u0646\u0627<\/h3>\n<p>Gemini \u0641\u0646\u06a9\u0634\u0646 \u06a9\u0627\u0644\u0632 \u06a9\u0648 \u0633\u067e\u0648\u0631\u0679 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u06cc\u06c1 \u0627\u0633 \u0628\u0627\u062a \u06a9\u0627 \u062a\u0639\u06cc\u0646 \u06a9\u0631 \u0633\u06a9\u062a\u0627 \u06c1\u06d2 \u06a9\u06c1 \u0679\u0648\u0644 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u06d2 \u0627\u0648\u0631 \u0679\u0648\u0644 \u06a9\u0627 \u0646\u0627\u0645 \u0627\u0648\u0631 \u062f\u0644\u0627\u0626\u0644 \u0648\u0627\u067e\u0633 \u06a9\u0631 \u062f\u06cc\u06ba\u06d4 \u06cc\u06c1 \u062e\u0648\u062f \u067e\u06cc \u0627\u06cc\u0686 \u067e\u06cc \u0641\u0646\u06a9\u0634\u0646 \u06a9\u0648 \u0646\u06c1\u06cc\u06ba \u0686\u0644\u0627\u062a\u0627\u06d4 \u0627\u06cc\u067e\u0644\u06cc \u06a9\u06cc\u0634\u0646 \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u0648\u06ba \u06a9\u06cc \u062a\u0648\u062b\u06cc\u0642 \u06a9\u0631\u0646\u06d2 \u0627\u0648\u0631 \u0679\u0648\u0644\u0632 \u067e\u0631 \u0639\u0645\u0644 \u062f\u0631\u0622\u0645\u062f \u06a9\u06d2 \u0644\u06cc\u06d2 \u0630\u0645\u06c1 \u062f\u0627\u0631 \u06c1\u06d2\u06d4<\/p>\n<p>\u0645\u062b\u0627\u0644 \u06a9\u06d2 \u0637\u0648\u0631 \u067e\u0631\u060c Gemini \u0648\u0627\u067e\u0633 \u0622 \u0633\u06a9\u062a\u0627 \u06c1\u06d2:<\/p>\n<pre><code class=\"language-json\">{\n  \"note\": \"Our launch is on 1 September 2026\"\n}\n<\/code><\/pre>\n<p>\u0628\u0646\u0627\u0646\u0627 <code>gemini.php<\/code>:<\/p>\n<pre><code class=\"language-php\"><?php function gemini_request(array $contents, array $tools = []): array\n{\n    $apiKey = \"YOUR_GEMINI_API_KEY\";\n\n    $url =\n        \"https:\/\/generativelanguage.googleapis.com\/v1beta\/models\/\" .\n        \"gemini-1.5-flash:generateContent?key=\" . $apiKey;\n\n    $payload = [\n        \"contents\" =?> $contents\n    ];\n\n    if (!empty($tools)) {\n        $payload[\"tools\"] = [\n            [\n                \"functionDeclarations\" => $tools\n            ]\n        ];\n    }\n\n    $ch = curl_init($url);\n\n    curl_setopt_array($ch, [\n        CURLOPT_RETURNTRANSFER => true,\n        CURLOPT_POST => true,\n        CURLOPT_HTTPHEADER => [\n            \"Content-Type: application\/json\"\n        ],\n        CURLOPT_POSTFIELDS => json_encode($payload),\n        CURLOPT_TIMEOUT => 30\n    ]);\n\n    $response = curl_exec($ch);\n    $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);\n\n    if ($response === false) {\n        $error = curl_error($ch);\n        curl_close($ch);\n        throw new RuntimeException(\"Gemini request failed: \" . $error);\n    }\n\n    curl_close($ch);\n\n    if ($httpCode !== 200) {\n        throw new RuntimeException(\"Gemini API error: \" . $response);\n    }\n\n    $decoded = json_decode($response, true);\n\n    if (!is_array($decoded)) {\n        throw new RuntimeException(\"Gemini returned invalid JSON.\");\n    }\n\n    return $decoded;\n}\n\nfunction parse_gemini_response(array $response): array\n{\n    $part = $response[\"candidates\"][0][\"content\"][\"parts\"][0] ?? [];\n\n    if (isset($part[\"functionCall\"])) {\n        return [\n            \"type\" => \"function_call\",\n            \"name\" => $part[\"functionCall\"][\"name\"],\n            \"args\" => $part[\"functionCall\"][\"args\"] ?? []\n        ];\n    }\n\n    return [\n        \"type\" => \"text\",\n        \"text\" => $part[\"text\"] ?? \"\"\n    ];\n}\n<\/code><\/pre>\n<p>\u06a9\u06c1 <code>gemini_request<\/code> \u0641\u0646\u06a9\u0634\u0646 \u0688\u0627\u0626\u06cc\u0644\u0627\u06af \u0627\u0648\u0631 \u0679\u0648\u0644 \u06a9\u06cc \u062a\u0639\u0631\u06cc\u0641\u06cc\u06ba \u062c\u06cc\u0645\u0646\u06cc \u06a9\u0648 \u0628\u06be\u06cc\u062c\u062a\u0627 \u06c1\u06d2\u06d4 \u062a\u062c\u0632\u06cc\u06c1 \u06a9\u0627\u0631 \u062c\u06cc\u0645\u0646\u06cc \u06a9\u06d2 \u062c\u0648\u0627\u0628 \u06a9\u0648 \u0679\u06cc\u06a9\u0633\u0679 \u0631\u06cc\u0633\u067e\u0627\u0646\u0633 \u06cc\u0627 \u0641\u0646\u06a9\u0634\u0646 \u06a9\u0627\u0644 \u0645\u06cc\u06ba \u062a\u0628\u062f\u06cc\u0644 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u0627\u06cc\u062c\u0646\u0679 \u0644\u0648\u067e \u067e\u06be\u0631 \u0622\u0633\u0627\u0646 \u0641\u06cc\u0635\u0644\u06d2 \u06a9\u0631 \u0633\u06a9\u062a\u0627 \u06c1\u06d2 \u062c\u06cc\u0633\u06d2:<\/p>\n<ul>\n<li>\n<p>\u0627\u06af\u0631 \u0642\u0633\u0645 \u06c1\u06d2: <code>function_call<\/code>\u0645\u0637\u0644\u0648\u0628\u06c1 \u0679\u0648\u0644 \u0686\u0644\u0627\u0626\u06cc\u06ba\u06d4<\/p>\n<\/li>\n<li>\n<p>\u0627\u06af\u0631 \u0642\u0633\u0645 \u06c1\u06d2: <code>text<\/code>\u0635\u0627\u0631\u0641 \u06a9\u0648 \u062c\u0648\u0627\u0628 \u0644\u0648\u0679\u0627\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<\/li>\n<\/ul>\n<p>\u0627\u0635\u0644 \u062a\u0639\u06cc\u0646\u0627\u062a\u06cc\u0648\u06ba \u06a9\u06d2 \u0644\u06cc\u06d2\u060c \u0627\u06af\u0631 \u0645\u0645\u06a9\u0646 \u06c1\u0648 \u062a\u0648 \u0639\u0648\u0627\u0645\u06cc \u0648\u06cc\u0628 \u0688\u0627\u0626\u0631\u06a9\u0679\u0631\u06cc \u06a9\u06d2 \u0628\u0627\u06c1\u0631 API \u06a9\u06cc\u0632 \u06a9\u0648 \u0627\u0633\u0679\u0648\u0631 \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<h3 id=\"heading-define-the-tool-registry\">\u0679\u0648\u0644 \u0631\u062c\u0633\u0679\u0631\u06cc \u06a9\u06cc \u062a\u0639\u0631\u06cc\u0641\u06cc\u06ba<\/h3>\n<p>\u0679\u0648\u0644\u0632 \u06a9\u06cc \u0631\u062c\u0633\u0679\u0631\u06cc \u062c\u06cc\u0645\u0646\u06cc \u06a9\u0648 \u0628\u062a\u0627\u062a\u06cc \u06c1\u06d2 \u06a9\u06c1 \u06a9\u0648\u0646 \u0633\u06d2 \u0679\u0648\u0644\u0632 \u0645\u0648\u062c\u0648\u062f \u06c1\u06cc\u06ba \u0627\u0648\u0631 \u0627\u0646\u06c1\u06cc\u06ba \u06a9\u0646 \u062f\u0644\u0627\u0626\u0644 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u06d2\u06d4<\/p>\n<p>\u0628\u0646\u0627\u0646\u0627 <code>tool_registry.php<\/code>:<\/p>\n<pre><code class=\"language-php\"><?php function tool_definitions(): array\n{\n    return [\n        [\n            \"name\" =?> \"save_note\",\n            \"description\" => \"Save an important note to the database.\",\n            \"parameters\" => [\n                \"type\" => \"object\",\n                \"properties\" => [\n                    \"note\" => [\n                        \"type\" => \"string\"\n                    ]\n                ],\n                \"required\" => [\"note\"]\n            ]\n        ],\n        [\n            \"name\" => \"search_web\",\n            \"description\" => \"Search the web for current information.\",\n            \"parameters\" => [\n                \"type\" => \"object\",\n                \"properties\" => [\n                    \"query\" => [\n                        \"type\" => \"string\"\n                    ]\n                ],\n                \"required\" => [\"query\"]\n            ]\n        ],\n        [\n            \"name\" => \"send_email\",\n            \"description\" => \"Send an email when the user explicitly asks.\",\n            \"parameters\" => [\n                \"type\" => \"object\",\n                \"properties\" => [\n                    \"to\" => [\n                        \"type\" => \"string\"\n                    ],\n                    \"subject\" => [\n                        \"type\" => \"string\"\n                    ],\n                    \"body\" => [\n                        \"type\" => \"string\"\n                    ]\n                ],\n                \"required\" => [\"to\", \"subject\", \"body\"]\n            ]\n        ]\n    ];\n}\n<\/code><\/pre>\n<p>\u062a\u0641\u0635\u06cc\u0644 \u062c\u06cc\u0645\u0646\u06cc \u06a9\u0648 \u06cc\u06c1 \u0641\u06cc\u0635\u0644\u06c1 \u06a9\u0631\u0646\u06d2 \u0645\u06cc\u06ba \u0645\u062f\u062f \u06a9\u0631\u062a\u06cc \u06c1\u06d2 \u06a9\u06c1 \u0679\u0648\u0644 \u06a9\u0628 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u0646\u0627 \u06c1\u06d2\u06d4 \u0627\u06cc\u06a9 \u067e\u06cc\u0631\u0627\u0645\u06cc\u0679\u0631 \u0627\u06cc\u06a9 \u0642\u062f\u0631 \u06a9\u06cc \u0648\u0636\u0627\u062d\u062a \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u062c\u0648 \u062c\u06cc\u0645\u0646\u06cc \u06a9\u0648 \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0631\u0646\u0627 \u0636\u0631\u0648\u0631\u06cc \u06c1\u06d2\u06d4<\/p>\n<p>\u0631\u062c\u0633\u0679\u0631\u06cc \u0633\u0631\u0648\u0631 \u0633\u0627\u0626\u06cc\u0688 \u06a9\u06cc \u062a\u0648\u062b\u06cc\u0642 \u06a9\u0648 \u062a\u0628\u062f\u06cc\u0644 \u0646\u06c1\u06cc\u06ba \u06a9\u0631\u062a\u06cc \u06c1\u06d2\u06d4 \u06c1\u0631 \u067e\u06cc \u0627\u06cc\u0686 \u067e\u06cc \u0679\u0648\u0644 \u06a9\u0648 \u06a9\u0648\u0626\u06cc \u0628\u06be\u06cc \u0622\u067e\u0631\u06cc\u0634\u0646 \u06a9\u0631\u0646\u06d2 \u0633\u06d2 \u067e\u06c1\u0644\u06d2 \u0627\u067e\u0646\u06d2 \u062f\u0644\u0627\u0626\u0644 \u06a9\u06cc \u062c\u0627\u0646\u0686 \u06a9\u0631\u0646\u06cc \u0686\u0627\u06c1\u06cc\u06d2\u06d4<\/p>\n<h3 id=\"heading-build-the-tools\">\u0639\u0645\u0627\u0631\u062a \u06a9\u06d2 \u0627\u0648\u0632\u0627\u0631<\/h3>\n<p>\u06c1\u0631 \u0622\u0644\u06d2 \u06a9\u0648 \u0644\u0627\u0632\u0645\u06cc \u06c1\u06d2:<\/p>\n<ol>\n<li>\n<p>\u062c\u06cc\u0645\u0646\u06cc \u06a9\u06cc \u062f\u0644\u06cc\u0644 \u067e\u0691\u06be\u06cc\u06ba\u06d4<\/p>\n<\/li>\n<li>\n<p>\u0627\u0646 \u067e\u0679 \u06a9\u06cc \u062a\u0648\u062b\u06cc\u0642 \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<\/li>\n<li>\n<p>\u06a9\u0627\u0645 \u06a9\u0631\u0648\u06d4<\/p>\n<\/li>\n<li>\n<p>JSON \u0646\u062a\u0627\u0626\u062c \u0644\u0648\u0679\u0627\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<\/li>\n<\/ol>\n<h4 id=\"heading-save-note-tool\">\u0646\u0648\u0679 \u0679\u0648\u0644 \u06a9\u0648 \u0645\u062d\u0641\u0648\u0638 \u06a9\u0631\u06cc\u06ba\u06d4<\/h4>\n<p>\u0628\u0646\u0627\u0646\u0627 <code>tools\/save_note.php<\/code>:<\/p>\n<pre><code class=\"language-php\"><?php require_once __DIR__ . \"\/..\/db.php\";\n\nfunction save_note_tool(array $args, string $sessionId): string\n{\n    $note = trim($args[\"note\"] ?? \"\");\n\n    if ($note === \"\") {\n        return json_encode([\n            \"success\" =?> false,\n            \"message\" => \"Empty note\"\n        ]);\n    }\n\n    $stmt = db()->prepare(\n        \"INSERT INTO agent_notes (session_id, note)\n         VALUES (:session_id, :note)\"\n    );\n\n    $stmt->execute([\n        \":session_id\" => $sessionId,\n        \":note\" => $note\n    ]);\n\n    return json_encode([\n        \"success\" => true,\n        \"message\" => \"Note saved\"\n    ]);\n}\n<\/code><\/pre>\n<p>\u0645\u062d\u0641\u0648\u0638 \u06a9\u06cc\u06d2 \u062c\u0627\u0646\u06d2 \u0633\u06d2 \u067e\u06c1\u0644\u06d2 \u0646\u0648\u0679\u0633 \u06a9\u0648 \u06a9\u0627\u0679 \u062f\u06cc\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u0627\u0646 \u06a9\u06cc \u062a\u0635\u062f\u06cc\u0642 \u06a9\u06cc \u062c\u0627\u062a\u06cc \u06c1\u06d2\u06d4 \u062a\u06cc\u0627\u0631 \u06a9\u0631\u062f\u06c1 \u0628\u06cc\u0627\u0646\u0627\u062a SQL \u0627\u0646\u062c\u06cc\u06a9\u0634\u0646 \u06a9\u0648 \u0631\u0648\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba \u0627\u0648\u0631 \u0627\u0646 \u067e\u0679 \u06a9\u0648 \u0645\u062d\u0641\u0648\u0638 \u0637\u0631\u06cc\u0642\u06d2 \u0633\u06d2 \u06c1\u06cc\u0646\u0688\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<h4 id=\"heading-search-web-tool\">\u0648\u06cc\u0628 \u0679\u0648\u0644\u0632 \u062a\u0644\u0627\u0634 \u06a9\u0631\u06cc\u06ba\u06d4<\/h4>\n<p>\u0628\u0646\u0627\u0646\u0627 <code>tools\/search_web.php<\/code>:<\/p>\n<pre><code class=\"language-php\"><?php function search_web_tool(array $args): string\n{\n    $query = trim($args[\"query\"] ?? \"\");\n\n    if ($query === \"\") {\n        return json_encode([\n            \"success\" =?> false,\n            \"message\" => \"Search query is empty\"\n        ]);\n    }\n\n    $url = \"https:\/\/api.example.com\/search?q=\" . urlencode($query);\n\n    $ch = curl_init($url);\n\n    curl_setopt_array($ch, [\n        CURLOPT_RETURNTRANSFER => true,\n        CURLOPT_TIMEOUT => 15\n    ]);\n\n    $response = curl_exec($ch);\n\n    if ($response === false) {\n        $error = curl_error($ch);\n        curl_close($ch);\n\n        return json_encode([\n            \"success\" => false,\n            \"message\" => \"Search failed\",\n            \"error\" => $error\n        ]);\n    }\n\n    curl_close($ch);\n\n    return $response;\n}\n<\/code><\/pre>\n<p>URLs \u067e\u0644\u06cc\u0633 \u06c1\u0648\u0644\u0688\u0631\u0632 \u06c1\u06cc\u06ba\u06d4 \u0627\u067e\u0646\u06cc \u067e\u0633\u0646\u062f \u06a9\u06d2 \u0633\u0631\u0686 \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0646\u0646\u062f\u06c1 \u0633\u06d2 \u062a\u0628\u062f\u06cc\u0644 \u06a9\u0631\u06cc\u06ba \u0627\u0648\u0631 \u06a9\u0648\u0626\u06cc \u0628\u06be\u06cc \u0645\u0637\u0644\u0648\u0628\u06c1 API \u06a9\u0644\u06cc\u062f\u06cc\u06ba \u06cc\u0627 \u062a\u0635\u062f\u06cc\u0642\u06cc \u06c1\u06cc\u0688\u0631 \u0634\u0627\u0645\u0644 \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<p>\u0679\u0627\u0626\u0645 \u0622\u0624\u0679 \u0633\u0633\u062a \u0628\u06cc\u0631\u0648\u0646\u06cc \u062e\u062f\u0645\u0627\u062a \u06a9\u0648 \u067e\u06cc \u0627\u06cc\u0686 \u067e\u06cc \u06a9\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u0648\u06ba \u06a9\u0648 \u063a\u06cc\u0631 \u0645\u0639\u06cc\u0646\u06c1 \u0645\u062f\u062a \u062a\u06a9 \u06a9\u06be\u0644\u0627 \u0686\u06be\u0648\u0691\u0646\u06d2 \u0633\u06d2 \u0631\u0648\u06a9\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<h4 id=\"heading-send-email-tool\">\u0627\u06cc \u0645\u06cc\u0644 \u0628\u06be\u06cc\u062c\u0646\u06d2 \u06a9\u0627 \u0622\u0644\u06c1<\/h4>\n<p>\u0628\u0646\u0627\u0646\u0627 <code>tools\/send_email.php<\/code>:<\/p>\n<pre><code class=\"language-php\"><?php function send_email_tool(array $args): string\n{\n    $to = filter_var(\n        $args[\"to\"] ?? \"\",\n        FILTER_VALIDATE_EMAIL\n    );\n\n    $subject = trim($args[\"subject\"] ?? \"\");\n    $body = trim($args[\"body\"] ?? \"\");\n\n    if (!$to) {\n        return json_encode([\n            \"success\" =?> false,\n            \"message\" => \"Invalid email address\"\n        ]);\n    }\n\n    if ($subject === \"\" || $body === \"\") {\n        return json_encode([\n            \"success\" => false,\n            \"message\" => \"Email subject and body are required\"\n        ]);\n    }\n\n    $headers = \"From: agent@yourdomain.com\\r\\n\";\n    $headers .= \"Content-Type: text\/plain; charset=UTF-8\\r\\n\";\n\n    $sent = mail($to, $subject, $body, $headers);\n\n    return json_encode([\n        \"success\" => $sent,\n        \"message\" => $sent ? \"Email sent\" : \"Email failed\"\n    ]);\n}\n<\/code><\/pre>\n<p>\u0628\u06be\u06cc\u062c\u0646\u06d2 \u0633\u06d2 \u067e\u06c1\u0644\u06d2 \u0648\u0635\u0648\u0644 \u06a9\u0646\u0646\u062f\u06c1 \u06a9\u0627 \u067e\u062a\u06c1\u060c \u0639\u0646\u0648\u0627\u0646 \u0627\u0648\u0631 \u0628\u0627\u0688\u06cc \u0686\u06cc\u06a9 \u06a9\u0631\u06cc\u06ba\u06d4 \u0634\u0641\u0679 <code>From<\/code> \u0627\u06cc\u0633\u0627 \u067e\u062a\u06c1 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u06cc\u06ba \u062c\u0648 \u0622\u067e \u06a9\u06d2 \u0688\u0648\u0645\u06cc\u0646 \u0633\u06d2 \u062a\u0639\u0644\u0642 \u0631\u06a9\u06be\u062a\u0627 \u06c1\u0648\u06d4<\/p>\n<p>\u06a9\u06c1 <code>mail()<\/code> \u06cc\u06c1 \u062e\u0635\u0648\u0635\u06cc\u062a \u0645\u0634\u062a\u0631\u06a9\u06c1 \u06c1\u0648\u0633\u0679\u0646\u06af \u067e\u0631 \u062f\u0633\u062a\u06cc\u0627\u0628 \u06c1\u06d2\u060c \u0644\u06cc\u06a9\u0646 \u0627\u06cc\u06a9 \u0645\u0635\u062f\u0642\u06c1 \u0627\u06cc \u0645\u06cc\u0644 \u0633\u0631\u0648\u0633 \u06cc\u0627 SMTP \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0646\u0646\u062f\u06c1 \u0639\u0627\u0645 \u0637\u0648\u0631 \u067e\u0631 \u067e\u0631\u0648\u0688\u06a9\u0634\u0646 \u0627\u06cc\u067e\u0644\u06cc \u06a9\u06cc\u0634\u0646\u0632 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0632\u06cc\u0627\u062f\u06c1 \u0642\u0627\u0628\u0644 \u0627\u0639\u062a\u0645\u0627\u062f \u06c1\u0648\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<h3 id=\"heading-add-mysql-conversation-memory\">MySQL \u06af\u0641\u062a\u06af\u0648 \u0645\u06cc\u0645\u0648\u0631\u06cc \u0634\u0627\u0645\u0644 \u06a9\u0631\u06cc\u06ba\u06d4<\/h3>\n<p>Gemini \u067e\u0686\u06be\u0644\u06cc API \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u0648\u06ba \u06a9\u0648 \u062e\u0648\u062f \u0628\u062e\u0648\u062f \u06cc\u0627\u062f \u0646\u06c1\u06cc\u06ba \u0631\u06a9\u06be\u062a\u0627 \u06c1\u06d2\u06d4 \u0627\u06cc\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u06a9\u0648 \u06c1\u0631 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0633\u06d2 \u067e\u06c1\u0644\u06d2 MySQL \u0633\u06d2 \u06af\u0641\u062a\u06af\u0648 \u06a9\u0648 \u0644\u0648\u0688 \u06a9\u0631\u0646\u0627 \u0686\u0627\u06c1\u06cc\u06d2 \u0627\u0648\u0631 \u0628\u0639\u062f \u0645\u06cc\u06ba \u0627\u067e \u0688\u06cc\u0679 \u06a9\u0631\u062f\u06c1 \u062a\u0627\u0631\u06cc\u062e \u06a9\u0648 \u0645\u062d\u0641\u0648\u0638 \u06a9\u0631\u0646\u0627 \u0686\u0627\u06c1\u06cc\u06d2\u06d4<\/p>\n<p>\u0628\u0646\u0627\u0646\u0627 <code>memory.php<\/code>:<\/p>\n<pre><code class=\"language-php\"><?php require_once __DIR__ . \"\/db.php\";\n\nfunction load_memory(string $sessionId): array\n{\n    $stmt = db()-?>prepare(\n        \"SELECT role, content\n         FROM agent_memory\n         WHERE session_id = :session_id\n         ORDER BY id ASC\"\n    );\n\n    $stmt->execute([\n        \":session_id\" => $sessionId\n    ]);\n\n    $history = [];\n\n    foreach ($stmt->fetchAll() as $row) {\n        $history[] = [\n            \"role\" => $row[\"role\"],\n            \"parts\" => [\n                [\n                    \"text\" => $row[\"content\"]\n                ]\n            ]\n        ];\n    }\n\n    return $history;\n}\n\nfunction save_memory(string $sessionId, array $history): void\n{\n    $pdo = db();\n\n    $delete = $pdo->prepare(\n        \"DELETE FROM agent_memory\n         WHERE session_id = :session_id\"\n    );\n\n    $delete->execute([\n        \":session_id\" => $sessionId\n    ]);\n\n    $insert = $pdo->prepare(\n        \"INSERT INTO agent_memory\n         (session_id, role, content)\n         VALUES (:session_id, :role, :content)\"\n    );\n\n    foreach ($history as $turn) {\n        $part = $turn[\"parts\"][0] ?? [];\n\n        $text = isset($part[\"text\"])\n            ? $part[\"text\"]\n            : json_encode($part);\n\n        $insert->execute([\n            \":session_id\" => $sessionId,\n            \":role\" => $turn[\"role\"],\n            \":content\" => $text\n        ]);\n    }\n}\n<\/code><\/pre>\n<p><code>load_memory<\/code>    \u0645\u0648\u062c\u0648\u062f\u06c1 \u0633\u06cc\u0634\u0646 \u06a9\u06d2 \u0644\u06cc\u06d2 \u067e\u06cc\u063a\u0627\u0645\u0627\u062a \u0628\u0627\u0632\u06cc\u0627\u0641\u062a \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u0627\u0646\u06c1\u06cc\u06ba \u062c\u06cc\u0645\u0646\u06cc \u06a9\u06cc \u062a\u0648\u0642\u0639 \u06a9\u06cc \u0634\u06a9\u0644 \u0645\u06cc\u06ba \u0648\u0627\u067e\u0633 \u0644\u06a9\u06be\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p><code>save_memory<\/code>    \u0645\u062d\u0641\u0648\u0638 \u06a9\u0631\u062f\u06c1 \u0631\u06cc\u06a9\u0627\u0631\u0688 \u06a9\u0648 \u0645\u0648\u062c\u0648\u062f\u06c1 \u0631\u06cc\u06a9\u0627\u0631\u0688 \u0633\u06d2 \u0628\u062f\u0644 \u062f\u06cc\u062a\u0627 \u06c1\u06d2\u06d4 \u06cc\u06c1 \u0633\u0627\u062f\u06c1 \u0627\u0648\u0631 \u0686\u06be\u0648\u0679\u06d2 \u0679\u06cc\u0648\u0679\u0648\u0631\u06cc\u0644 \u0627\u06cc\u067e\u0644\u06cc \u06a9\u06cc\u0634\u0646\u0632 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0645\u0648\u0632\u0648\u06ba \u06c1\u06d2\u06d4 \u0628\u0691\u06d2 \u0633\u0633\u0679\u0645\u0632 \u0645\u06cc\u06ba\u060c \u0622\u067e \u0635\u0631\u0641 \u0646\u0626\u06d2 \u067e\u06cc\u063a\u0627\u0645\u0627\u062a \u0634\u0627\u0645\u0644 \u06a9\u0631\u06a9\u06d2\u060c JSON \u06a9\u0627\u0644\u0645 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u06a9\u06d2\u060c \u06cc\u0627 \u067e\u0686\u06be\u0644\u06cc \u0628\u0627\u062a \u0686\u06cc\u062a \u06a9\u0627 \u062e\u0644\u0627\u0635\u06c1 \u06a9\u0631\u06a9\u06d2 \u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633 \u0627\u0648\u0631 API \u06a9\u06d2 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0648 \u06a9\u0645 \u06a9\u0631\u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<h3 id=\"heading-create-the-agent-loop\">\u0627\u06cc\u062c\u0646\u0679 \u0644\u0648\u067e \u0628\u0646\u0627\u0626\u06cc\u06ba<\/h3>\n<p>\u0627\u06cc\u062c\u0646\u0679 \u0644\u0648\u067e \u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633\u060c \u062c\u06cc\u0645\u0646\u06cc\u060c \u0645\u06cc\u0645\u0648\u0631\u06cc \u0627\u0648\u0631 \u0679\u0648\u0644\u0632 \u06a9\u0648 \u062c\u0648\u0691\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u0628\u0646\u0627\u0646\u0627 <code>agent.php<\/code>:<\/p>\n<pre><code class=\"language-php\"><?php require_once __DIR__ . \"\/gemini.php\";\nrequire_once __DIR__ . \"\/memory.php\";\nrequire_once __DIR__ . \"\/tool_registry.php\";\nrequire_once __DIR__ . \"\/tools\/save_note.php\";\nrequire_once __DIR__ . \"\/tools\/search_web.php\";\nrequire_once __DIR__ . \"\/tools\/send_email.php\";\n\nfunction run_tool(\n    string $name,\n    array $args,\n    string $sessionId\n): string {\n    return match ($name) {\n        \"save_note\" =?> save_note_tool($args, $sessionId),\n        \"search_web\" => search_web_tool($args),\n        \"send_email\" => send_email_tool($args),\n        default => json_encode([\n            \"success\" => false,\n            \"message\" => \"Unknown tool\"\n        ])\n    };\n}\n\nfunction run_agent(\n    string $message,\n    string $sessionId\n): string {\n    $history = load_memory($sessionId);\n\n    $history[] = [\n        \"role\" => \"user\",\n        \"parts\" => [\n            [\n                \"text\" => $message\n            ]\n        ]\n    ];\n\n    $tools = tool_definitions();\n    $limit = 5;\n    $step = 0;\n\n    while ($step < $limit) {\n        $step++;\n\n        $response = gemini_request($history, $tools);\n        $parsed = parse_gemini_response($response);\n\n        if ($parsed[\"type\"] === \"text\") {\n            $history[] = [\n                \"role\" => \"model\",\n                \"parts\" => [\n                    [\n                        \"text\" => $parsed[\"text\"]\n                    ]\n                ]\n            ];\n\n            save_memory($sessionId, $history);\n\n            return $parsed[\"text\"];\n        }\n\n        if ($parsed[\"type\"] === \"function_call\") {\n            $toolName = $parsed[\"name\"];\n            $toolArgs = $parsed[\"args\"];\n            $result = run_tool($toolName, $toolArgs, $sessionId);\n\n            $history[] = [\n                \"role\" => \"model\",\n                \"parts\" => [\n                    [\n                        \"functionCall\" => [\n                            \"name\" => $toolName,\n                            \"args\" => $toolArgs\n                        ]\n                    ]\n                ]\n            ];\n\n            $history[] = [\n                \"role\" => \"function\",\n                \"parts\" => [\n                    [\n                        \"functionResponse\" => [\n                            \"name\" => $toolName,\n                            \"response\" => [\n                                \"content\" => $result\n                            ]\n                        ]\n                    ]\n                ]\n            ];\n        }\n    }\n\n    save_memory($sessionId, $history);\n\n    return \"I could not complete the task within the allowed number of steps.\";\n}\n<\/code><\/pre>\n<p>\u06a9\u06c1 <code>run_tool<\/code> \u0641\u0646\u06a9\u0634\u0646 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u06a9\u0631\u062f\u06c1 \u0679\u0648\u0644 \u06a9\u0648 \u062f\u0631\u0633\u062a \u067e\u06cc \u0627\u06cc\u0686 \u067e\u06cc \u0641\u0646\u06a9\u0634\u0646 \u06a9\u06cc \u0637\u0631\u0641 \u0644\u06d2 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u06d4 \u0688\u06cc\u0641\u0627\u0644\u0679 \u06a9\u06cc\u0633 \u063a\u06cc\u0631 \u0645\u062a\u0648\u0642\u0639 \u0679\u0648\u0644 \u06a9\u06d2 \u0646\u0627\u0645\u0648\u06ba \u06a9\u0648 \u0645\u062d\u0641\u0648\u0638 \u0637\u0631\u06cc\u0642\u06d2 \u0633\u06d2 \u06c1\u06cc\u0646\u0688\u0644 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u06a9\u06c1 <code>run_agent<\/code> \u0641\u0646\u06a9\u0634\u0646 \u067e\u06c1\u0644\u06d2 \u0645\u0648\u062c\u0648\u062f\u06c1 \u0631\u06cc\u06a9\u0627\u0631\u0688\u0632 \u06a9\u0648 \u0644\u0648\u0688 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u0646\u0626\u06d2 \u0635\u0627\u0631\u0641 \u06a9\u06d2 \u067e\u06cc\u063a\u0627\u0645\u0627\u062a \u0634\u0627\u0645\u0644 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u067e\u06be\u0631 \u06af\u0641\u062a\u06af\u0648 \u062c\u06cc\u0645\u0646\u06cc \u06a9\u0648 \u0628\u06be\u06cc\u062c\u06cc\u06ba\u06d4<\/p>\n<p>\u062c\u0628 \u062c\u06cc\u0645\u0646\u06cc \u0679\u06cc\u06a9\u0633\u0679 \u0648\u0627\u067e\u0633 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u062a\u0648 \u062c\u0648\u0627\u0628 \u0645\u062d\u0641\u0648\u0638 \u06c1\u0648 \u062c\u0627\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u0635\u0627\u0631\u0641 \u06a9\u0648 \u0648\u0627\u067e\u0633 \u06a9\u0631 \u062f\u06cc\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u062c\u0628 \u062c\u06cc\u0645\u0646\u06cc \u0627\u06cc\u06a9 \u0641\u0646\u06a9\u0634\u0646 \u06a9\u0627\u0644 \u0648\u0627\u067e\u0633 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u060c \u062a\u0648 \u067e\u06cc \u0627\u06cc\u0686 \u067e\u06cc \u0679\u0648\u0644 \u0686\u0644\u0627\u062a\u0627 \u06c1\u06d2\u06d4 \u0641\u0646\u06a9\u0634\u0646 \u06a9\u0627\u0644\u0632 \u0627\u0648\u0631 \u0627\u0646 \u06a9\u06d2 \u0646\u062a\u0627\u0626\u062c \u0627\u06af\u0644\u06cc \u0644\u0648\u067e \u062a\u06a9\u0631\u0627\u0631 \u0633\u06d2 \u067e\u06c1\u0644\u06d2 \u062a\u0627\u0631\u06cc\u062e \u0645\u06cc\u06ba \u0634\u0627\u0645\u0644 \u06a9\u0631 \u062f\u06cc\u06d2 \u062c\u0627\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u067e\u0627\u0646\u0686 \u0645\u0631\u0627\u062d\u0644 \u06a9\u06cc \u062d\u062f \u0645\u0627\u0688\u0644 \u06a9\u0648 \u0679\u0648\u0644 \u06a9\u0648 \u062d\u062a\u0645\u06cc \u0634\u06a9\u0644 \u062f\u06cc\u0626\u06d2 \u0628\u063a\u06cc\u0631 \u0628\u0627\u0631 \u0628\u0627\u0631 \u06a9\u0627\u0644 \u06a9\u0631\u0646\u06d2 \u0633\u06d2 \u0631\u0648\u06a9\u062a\u06cc \u06c1\u06d2\u06d4 \u0622\u067e \u0627\u067e\u0646\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u06a9\u06cc \u0636\u0631\u0648\u0631\u06cc\u0627\u062a \u06a9\u06cc \u0628\u0646\u06cc\u0627\u062f \u067e\u0631 \u062d\u062f\u0648\u062f \u06a9\u0648 \u0627\u06cc\u0688\u062c\u0633\u0679 \u06a9\u0631 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<h3 id=\"heading-expose-the-public-api-endpoint\">\u0639\u0648\u0627\u0645\u06cc API \u06a9\u06d2 \u0627\u062e\u062a\u062a\u0627\u0645\u06cc \u0645\u0642\u0627\u0645\u0627\u062a \u06a9\u0648 \u0628\u06d2 \u0646\u0642\u0627\u0628 \u06a9\u0631\u0646\u0627<\/h3>\n<p>\u0628\u0646\u0627\u0646\u0627 <code>index.php<\/code>:<\/p>\n<pre><code class=\"language-php\"><?php require_once __DIR__ . \"\/agent.php\";\n\nheader(\"Content-Type: application\/json\");\n\n$input = json_decode(\n    file_get_contents(\"php:\/\/input\"),\n    true\n);\n\nif (!is_array($input)) {\n    http_response_code(400);\n\n    echo json_encode([\n        \"error\" =?> \"Invalid JSON body\"\n    ]);\n\n    exit;\n}\n\n$message = trim($input[\"message\"] ?? \"\");\n$sessionId = trim($input[\"session_id\"] ?? \"\");\n\nif ($message === \"\" || $sessionId === \"\") {\n    http_response_code(400);\n\n    echo json_encode([\n        \"error\" => \"message and session_id are required\"\n    ]);\n\n    exit;\n}\n\ntry {\n    $reply = run_agent($message, $sessionId);\n\n    echo json_encode([\n        \"reply\" => $reply,\n        \"session_id\" => $sessionId\n    ]);\n} catch (Throwable $e) {\n    http_response_code(500);\n\n    echo json_encode([\n        \"error\" => $e->getMessage()\n    ]);\n}\n<\/code><\/pre>\n<p>\u0627\u062e\u062a\u062a\u0627\u0645\u06cc \u0646\u0642\u0637\u06c1 \u067e\u06cc\u063a\u0627\u0645 \u0627\u0648\u0631 \u0633\u06cc\u0634\u0646 ID \u067e\u0631 \u0645\u0634\u062a\u0645\u0644 JSON \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u06a9\u06cc \u062a\u0648\u0642\u0639 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<pre><code class=\"language-json\">{\n  \"message\": \"Save a note that our launch is on 1 September 2026\",\n  \"session_id\": \"demo123\"\n}\n<\/code><\/pre>\n<p>\u0641\u0631\u0646\u0679 \u0627\u06cc\u0646\u0688 \u06a9\u0648 \u0627\u06cc\u06a9 \u06c1\u06cc \u06af\u0641\u062a\u06af\u0648 \u0645\u06cc\u06ba \u067e\u06cc\u063a\u0627\u0645\u0627\u062a \u06a9\u06d2 \u0644\u06cc\u06d2 \u0648\u06c1\u06cc \u0633\u06cc\u0634\u0646 ID \u062f\u0648\u0628\u0627\u0631\u06c1 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u0646\u0627 \u0686\u0627\u06c1\u06cc\u06d2\u06d4 \u0646\u06cc\u0627 \u0633\u06cc\u0634\u0646 ID \u0627\u06cc\u06a9 \u0627\u0644\u06af \u06af\u0641\u062a\u06af\u0648 \u062a\u062e\u0644\u06cc\u0642 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u0688\u06cc\u0648\u0644\u067e\u0645\u0646\u0679 \u06a9\u06d2 \u062f\u0648\u0631\u0627\u0646 \u0627\u0633\u062a\u062b\u0646\u0627\u0626\u06cc \u067e\u06cc\u063a\u0627\u0645\u0627\u062a \u0648\u0627\u067e\u0633 \u06a9\u0631\u0646\u0627 \u0688\u06cc\u0628\u06af\u0646\u06af \u0645\u06cc\u06ba \u0645\u062f\u062f\u06af\u0627\u0631 \u062b\u0627\u0628\u062a \u06c1\u0648 \u0633\u06a9\u062a\u0627 \u06c1\u06d2\u06d4 \u067e\u0631\u0648\u0688\u06a9\u0634\u0646 \u0645\u06cc\u06ba\u060c \u062a\u0641\u0635\u06cc\u0644\u06cc \u063a\u0644\u0637\u06cc\u0648\u06ba \u06a9\u0648 \u0646\u062c\u06cc \u0637\u0648\u0631 \u067e\u0631 \u0644\u0627\u06af \u0627\u0646 \u06a9\u0631\u06cc\u06ba \u0627\u0648\u0631 \u0635\u0627\u0631\u0641 \u06a9\u0648 \u0627\u06cc\u06a9 \u0639\u0645\u0648\u0645\u06cc \u063a\u0644\u0637\u06cc \u06a9\u0627 \u067e\u06cc\u063a\u0627\u0645 \u0648\u0627\u067e\u0633 \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<h3 id=\"heading-deploy-on-cpanel\">cPanel \u067e\u0631 \u062a\u0639\u06cc\u0646\u0627\u062a \u06a9\u0631\u06cc\u06ba\u06d4<\/h3>\n<p>\u0628\u0631\u0627\u06c1 \u06a9\u0631\u0645 \u0627\u0646 \u0627\u0642\u062f\u0627\u0645\u0627\u062a \u067e\u0631 \u0639\u0645\u0644 \u06a9\u0631\u06cc\u06ba:<\/p>\n<ol>\n<li>\n<p>\u0627\u067e\u0646\u0627 \u067e\u0631\u0648\u062c\u06cc\u06a9\u0679 \u0627\u067e \u0644\u0648\u0688 \u06a9\u0631\u06cc\u06ba\u06d4 <code>\/public_html\/agent\/<\/code>.<\/p>\n<\/li>\n<li>\n<p>cPanel \u0645\u06cc\u06ba \u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633 \u0627\u0648\u0631 \u0635\u0627\u0631\u0641\u06cc\u0646 \u0628\u0646\u0627\u0626\u06cc\u06ba\u06d4<\/p>\n<\/li>\n<li>\n<p>\u0635\u0627\u0631\u0641\u06cc\u0646 \u06a9\u0648 \u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633 \u062a\u06a9 \u0631\u0633\u0627\u0626\u06cc \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<\/li>\n<li>\n<p>phpMyAdmin \u0633\u06d2 SQL \u0686\u0644\u0627\u0626\u06cc\u06ba\u06d4<\/p>\n<\/li>\n<li>\n<p>\u0628\u0631\u0627\u06c1 \u06a9\u0631\u0645 \u0627\u067e\u0646\u06cc \u0627\u0633\u0646\u0627\u062f \u06a9\u0648 \u0627\u067e \u0688\u06cc\u0679 \u06a9\u0631\u06cc\u06ba\u06d4 <code>db.php<\/code>.<\/p>\n<\/li>\n<li>\n<p>\u0627\u067e\u0646\u06cc Gemini API \u06a9\u0644\u06cc\u062f \u0634\u0627\u0645\u0644 \u06a9\u0631\u06cc\u06ba\u06d4 <code>gemini.php<\/code>.<\/p>\n<\/li>\n<li>\n<p>\u0628\u0631\u0627\u06c1 \u06a9\u0631\u0645 PHP 8.1 \u06cc\u0627 \u0627\u0633 \u0633\u06d2 \u0632\u06cc\u0627\u062f\u06c1 \u0645\u0646\u062a\u062e\u0628 \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<\/li>\n<li>\n<p>cURL \u0627\u06cc\u06a9\u0633\u0679\u06cc\u0646\u0634\u0646 \u06a9\u0648 \u0641\u0639\u0627\u0644 \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<\/li>\n<li>\n<p>\u0627\u0636\u0627\u0641\u06c1 <code>.htaccess<\/code> \u0641\u0627\u0626\u0644 <code>tools<\/code> \u0641\u0648\u0644\u0688\u0631<\/p>\n<\/li>\n<\/ol>\n<p>\u0627\u062e\u062a\u062a\u0627\u0645\u06cc \u0646\u0642\u0637\u06c1 \u0627\u0633 \u06a9\u06d2 \u0628\u0639\u062f \u062f\u0631\u062c \u0630\u06cc\u0644 \u0645\u0642\u0627\u0645\u0627\u062a \u067e\u0631 \u062f\u0633\u062a\u06cc\u0627\u0628 \u06c1\u0648\u06af\u0627:<\/p>\n<pre><code class=\"language-text\">https:\/\/yourdomain.com\/agent\/index.php\n<\/code><\/pre>\n<h3 id=\"heading-test-the-agent\">\u0627\u06cc\u062c\u0646\u0679 \u0679\u06cc\u0633\u0679<\/h3>\n<p>\u0646\u0648\u0679 \u0645\u062d\u0641\u0648\u0638 \u06a9\u0631\u06cc\u06ba:<\/p>\n<pre><code class=\"language-bash\">curl -X POST https:\/\/yourdomain.com\/agent\/index.php \\\n  -H \"Content-Type: application\/json\" \\\n  -d '{\"message\":\"Save a note that our launch is on 1 September 2026\",\"session_id\":\"demo123\"}'\n<\/code><\/pre>\n<p>\u0627\u06cc\u062c\u0646\u0679 \u06a9\u0648 \u06a9\u0627\u0644 \u06a9\u0631\u0646\u0627 \u0636\u0631\u0648\u0631\u06cc \u06c1\u06d2\u06d4 <code>save_note<\/code>\u0646\u0648\u0679 \u06a9\u0648 MySQL \u0645\u06cc\u06ba \u0645\u062d\u0641\u0648\u0638 \u06a9\u0631\u06cc\u06ba \u0627\u0648\u0631 OK \u0648\u0627\u067e\u0633 \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<p>\u0622\u067e \u0627\u0633\u06cc \u0633\u06cc\u0634\u0646 ID \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0627\u06cc\u06a9 \u0627\u0648\u0631 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0628\u06be\u06cc\u062c \u06a9\u0631 \u0645\u06cc\u0645\u0648\u0631\u06cc \u06a9\u06cc \u062c\u0627\u0646\u0686 \u06a9\u0631 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-bash\">curl -X POST https:\/\/yourdomain.com\/agent\/index.php \\\n  -H \"Content-Type: application\/json\" \\\n  -d '{\"message\":\"What note did I save earlier?\",\"session_id\":\"demo123\"}'\n<\/code><\/pre>\n<p>\u0627\u06cc\u062c\u0646\u0679\u0648\u06ba \u06a9\u0648 \u067e\u0686\u06be\u0644\u06cc \u06af\u0641\u062a\u06af\u0648 \u0627\u0633 \u0633\u06d2 \u0644\u0648\u0688 \u06a9\u0631\u0646\u06cc \u0686\u0627\u06c1\u06cc\u06d2: <code>agent_memory<\/code> \u0627\u0648\u0631 \u062c\u0648\u0627\u0628 \u062f\u06cc\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<p>\u0627\u06af\u0631 \u0622\u067e \u06a9\u0648 \u0645\u0633\u0627\u0626\u0644 \u062f\u0631\u067e\u06cc\u0634 \u06c1\u06cc\u06ba\u060c \u062a\u0648 \u0627\u067e\u0646\u06d2 \u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633 \u06a9\u06cc \u0627\u0633\u0646\u0627\u062f\u060c \u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633 \u0679\u06cc\u0628\u0644\u0632\u060c \u062c\u06cc\u0645\u0646\u06cc API \u06a9\u0644\u06cc\u062f\u060c \u067e\u06cc \u0627\u06cc\u0686 \u067e\u06cc \u0648\u0631\u0698\u0646\u060c \u0633\u06cc \u0622\u0631 \u0627\u06cc\u0644 \u0627\u06cc\u06a9\u0633\u0679\u06cc\u0646\u0634\u0646\u060c \u0627\u0648\u0631 \u0633\u0631\u0648\u0631 \u06a9\u06cc \u062e\u0631\u0627\u0628\u06cc \u06a9\u0627 \u0644\u0627\u06af \u0686\u06cc\u06a9 \u06a9\u0631\u06cc\u06ba\u06d4 \u06cc\u06c1 \u0628\u06be\u06cc \u06cc\u0642\u06cc\u0646\u06cc \u0628\u0646\u0627\u0626\u06cc\u06ba \u06a9\u06c1 \u0622\u067e \u06a9\u0627 \u0633\u0631\u0686 \u0679\u0648\u0644 \u0627\u0628 \u0628\u06be\u06cc \u067e\u0644\u06cc\u0633 \u06c1\u0648\u0644\u0688\u0631 API URL \u06a9\u06cc \u0637\u0631\u0641 \u0627\u0634\u0627\u0631\u06c1 \u0646\u06c1\u06cc\u06ba \u06a9\u0631 \u0631\u06c1\u0627 \u06c1\u06d2\u06d4<\/p>\n<h3 id=\"heading-production-hardening-ideas\">\u067e\u06cc\u062f\u0627\u0648\u0627\u0631 \u0628\u0691\u06be\u0627\u0646\u06d2 \u06a9\u06d2 \u062e\u06cc\u0627\u0644\u0627\u062a<\/h3>\n<p>\u062d\u0642\u06cc\u0642\u06cc \u0635\u0627\u0631\u0641\u06cc\u0646 \u06a9\u0648 \u0622\u067e \u06a9\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u062a\u06a9 \u0631\u0633\u0627\u0626\u06cc \u06a9\u06cc \u0627\u062c\u0627\u0632\u062a \u062f\u06cc\u0646\u06d2 \u0633\u06d2 \u067e\u06c1\u0644\u06d2\u060c \u06c1\u0645 \u0645\u0646\u062f\u0631\u062c\u06c1 \u0630\u06cc\u0644 \u0634\u0627\u0645\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u06cc \u062a\u062c\u0648\u06cc\u0632 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba:<\/p>\n<h4 id=\"heading-authentication\">\u062b\u0628\u0648\u062a<\/h4>\n<p>API \u0679\u0648\u06a9\u0646 \u06cc\u0627 \u062f\u06cc\u06af\u0631 \u062a\u0635\u062f\u06cc\u0642\u06cc \u0637\u0631\u06cc\u0642\u06c1 \u062f\u0631\u06a9\u0627\u0631 \u06c1\u06d2\u06d4 \u0628\u0635\u0648\u0631\u062a \u062f\u06cc\u06af\u0631\u060c \u062c\u0648 \u06a9\u0648\u0626\u06cc \u0628\u06be\u06cc \u0622\u067e \u06a9\u0627 \u0627\u062e\u062a\u062a\u0627\u0645\u06cc \u0646\u0642\u0637\u06c1 \u062f\u0631\u06cc\u0627\u0641\u062a \u06a9\u0631\u06d2 \u06af\u0627 \u0648\u06c1 \u0622\u067e \u06a9\u06d2 \u0679\u0648\u0644\u0632 \u0627\u0648\u0631 \u0622\u067e \u06a9\u0627 \u062c\u06cc\u0645\u0646\u06cc \u0627\u06a9\u0627\u0624\u0646\u0679 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631 \u0633\u06a9\u06d2 \u06af\u0627\u06d4<\/p>\n<h4 id=\"heading-rate-limiting\">\u0634\u0631\u062d \u06a9\u06cc \u062d\u062f<\/h4>\n<p>\u063a\u0644\u0637 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u0627\u0648\u0631 \u063a\u06cc\u0631 \u0645\u062a\u0648\u0642\u0639 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0648 \u0631\u0648\u06a9\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2\u060c \u0633\u06cc\u0634\u0646 ID\u060c IP \u0627\u06cc\u0688\u0631\u06cc\u0633\u060c \u06cc\u0627 \u062a\u0635\u062f\u06cc\u0642 \u0634\u062f\u06c1 \u0635\u0627\u0631\u0641 \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06d2 \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u0648\u06ba \u06a9\u0648 \u0645\u062d\u062f\u0648\u062f \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<h4 id=\"heading-tool-logging\">\u0679\u0648\u0644 \u0644\u0627\u06af\u0646\u06af<\/h4>\n<p>\u0633\u06cc\u0634\u0646 ID\u060c \u0679\u0648\u0644 \u06a9\u0627 \u0646\u0627\u0645\u060c \u062f\u0644\u0627\u0626\u0644\u060c \u0646\u062a\u0627\u0626\u062c\u060c \u0627\u0648\u0631 \u0639\u0645\u0644\u062f\u0631\u0622\u0645\u062f \u06a9\u0627 \u0648\u0642\u062a \u0627\u0633\u0679\u0648\u0631 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u0627\u0633 \u0633\u06d2 \u0622\u067e \u06a9\u0648 \u063a\u06cc\u0631 \u0645\u062a\u0648\u0642\u0639 \u0631\u0648\u06cc\u06d2 \u06a9\u06cc \u0686\u06be\u0627\u0646 \u0628\u06cc\u0646 \u0645\u06cc\u06ba \u0645\u062f\u062f \u0645\u0644\u062a\u06cc \u06c1\u06d2\u06d4<\/p>\n<h4 id=\"heading-stronger-validation\">\u0632\u06cc\u0627\u062f\u06c1 \u0637\u0627\u0642\u062a\u0648\u0631 \u062a\u0635\u062f\u06cc\u0642<\/h4>\n<p>\u0679\u0648\u0644 \u06a9\u06d2 \u062a\u0645\u0627\u0645 \u062f\u0644\u0627\u0626\u0644 \u06a9\u06cc \u062a\u0648\u062b\u06cc\u0642 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u0627\u06cc \u0645\u06cc\u0644 \u067e\u062a\u0648\u06ba \u06a9\u06cc \u062a\u0648\u062b\u06cc\u0642 \u06a9\u0631\u06cc\u06ba\u060c \u062e\u0627\u0644\u06cc \u0627\u0642\u062f\u0627\u0631 \u06a9\u0648 \u0645\u0633\u062a\u0631\u062f \u06a9\u0631\u06cc\u06ba\u060c \u0633\u0679\u0631\u0646\u06af \u06a9\u06cc \u0644\u0645\u0628\u0627\u0626\u06cc \u06a9\u0648 \u0645\u062d\u062f\u0648\u062f \u06a9\u0631\u06cc\u06ba\u060c \u0627\u0648\u0631 \u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633 \u0634\u0646\u0627\u062e\u062a \u06a9\u0646\u0646\u062f\u06af\u0627\u0646 \u06a9\u06cc \u062a\u0648\u062b\u06cc\u0642 \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<h4 id=\"heading-better-memory-management\">\u0645\u06cc\u0645\u0648\u0631\u06cc \u06a9\u0627 \u0628\u06c1\u062a\u0631 \u0627\u0646\u062a\u0638\u0627\u0645<\/h4>\n<p>\u0637\u0648\u06cc\u0644 \u06af\u0641\u062a\u06af\u0648 \u06a9\u06d2 \u0646\u062a\u06cc\u062c\u06d2 \u0645\u06cc\u06ba API \u06a9\u06cc \u0628\u0691\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u06cc\u06ba \u0627\u0648\u0631 \u06a9\u0645 \u06a9\u0627\u0631\u06a9\u0631\u062f\u06af\u06cc \u06c1\u0648 \u0633\u06a9\u062a\u06cc \u06c1\u06d2\u06d4 \u062d\u0627\u0644\u06cc\u06c1 \u067e\u06cc\u063a\u0627\u0645\u0627\u062a \u06a9\u0648 \u0622\u0631\u06a9\u0627\u0626\u06cc\u0648 \u06a9\u0631\u0646\u06d2\u060c \u067e\u0631\u0627\u0646\u06d2 \u067e\u06cc\u063a\u0627\u0645\u0627\u062a \u06a9\u0627 \u062e\u0644\u0627\u0635\u06c1 \u06a9\u0631\u0646\u06d2\u060c \u06cc\u0627 \u0633\u0679\u0631\u06a9\u0686\u0631\u0688 \u0679\u0648\u0644 \u06a9\u0627\u0644\u0632 \u06a9\u0648 \u0627\u0644\u06af \u0633\u06d2 \u0627\u0633\u0679\u0648\u0631 \u06a9\u0631\u0646\u06d2 \u067e\u0631 \u063a\u0648\u0631 \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<h4 id=\"heading-confirmation-for-sensitive-actions\">\u062d\u0633\u0627\u0633 \u06a9\u0627\u0645\u0648\u06ba \u06a9\u06cc \u062a\u0635\u062f\u06cc\u0642<\/h4>\n<p>\u0627\u06cc \u0645\u06cc\u0644 \u0628\u06be\u06cc\u062c\u0646\u06d2 \u062c\u06cc\u0633\u06d2 \u06a9\u0627\u0645\u0648\u06ba \u06a9\u06d2 \u0644\u06cc\u06d2\u060c \u0679\u0648\u0644 \u0686\u0644\u0627\u0646\u06d2 \u0633\u06d2 \u067e\u06c1\u0644\u06d2 \u0635\u0627\u0631\u0641 \u0633\u06d2 \u062a\u0635\u062f\u06cc\u0642 \u0637\u0644\u0628 \u06a9\u0631\u06cc\u06ba\u06d4 \u0627\u0634\u0627\u0631\u06c1 \u06a9\u0631\u062f\u06c1 \u06c1\u062f\u0627\u06cc\u0627\u062a \u0645\u062f\u062f\u06af\u0627\u0631 \u06c1\u06cc\u06ba\u060c \u0644\u06cc\u06a9\u0646 \u0622\u067e \u06a9\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u06a9\u06cc \u062a\u0635\u062f\u06cc\u0642\u0627\u062a \u06a9\u0648 \u0628\u06be\u06cc \u0633\u0646\u0628\u06be\u0627\u0644\u0646\u0627 \u0686\u0627\u06c1\u06cc\u06d2\u06d4<\/p>\n<h4 id=\"heading-credential-protection\">\u0627\u0633\u0646\u0627\u062f \u06a9\u0627 \u062a\u062d\u0641\u0638<\/h4>\n<p>\u0627\u067e\u0646\u06cc API \u06a9\u06cc\u0632 \u0627\u0648\u0631 \u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633 \u06a9\u06d2 \u067e\u0627\u0633 \u0648\u0631\u0688\u0632 \u06a9\u0648 \u067e\u0628\u0644\u06a9 \u0627\u0633\u0679\u0648\u0631\u06cc\u062c \u0645\u06cc\u06ba \u0645\u062d\u0641\u0648\u0638 \u0646\u06c1 \u06a9\u0631\u06cc\u06ba\u06d4 \u0627\u06af\u0631 \u0645\u0645\u06a9\u0646 \u06c1\u0648 \u062a\u0648\u060c \u062d\u0633\u0627\u0633 \u06a9\u0646\u0641\u06cc\u06af\u0631\u06cc\u0634\u0646 \u06a9\u0648 \u0639\u0648\u0627\u0645\u06cc \u0648\u06cc\u0628 \u0688\u0627\u0626\u0631\u06cc\u06a9\u0679\u0631\u06cc\u0648\u06ba \u0633\u06d2 \u0628\u0627\u06c1\u0631 \u0631\u06a9\u06be\u06cc\u06ba\u06d4<\/p>\n<h3 id=\"heading-conclusion\">\u0646\u062a\u06cc\u062c\u06c1<\/h3>\n<p>\u0645\u0641\u06cc\u062f AI \u0627\u06cc\u062c\u0646\u0679\u0633 \u0628\u0646\u0627\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0622\u067e \u06a9\u0648 \u067e\u06cc\u0686\u06cc\u062f\u06c1 \u06a9\u0644\u0627\u0624\u0688 \u0627\u0633\u0679\u06cc\u06a9 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u06d4<\/p>\n<p>PHP\u060c MySQL\u060c Gemini Flash\u060c \u0627\u0648\u0631 cPanel \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u0648\u0626\u06d2\u060c \u0628\u06c1\u062a \u0633\u06d2 \u0688\u0648\u06cc\u0644\u067e\u0631\u0632 \u0627\u06cc\u0633\u06d2 \u0633\u0633\u0679\u0645 \u0628\u0646\u0627 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba \u062c\u0633 \u06a9\u06cc \u0648\u062c\u06c1 \u0633\u06d2\u060c \u0679\u0648\u0644\u0632 \u06a9\u0648 \u06a9\u0627\u0644 \u06a9\u0631 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u0645\u06cc\u0645\u0648\u0631\u06cc \u06a9\u0648 \u0627\u0633\u0679\u0648\u0631 \u06a9\u0631 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u0627\u0648\u0631 \u0627\u06cc\u0633\u06d2 \u0627\u0646\u0641\u0631\u0627\u0633\u0679\u0631\u06a9\u0686\u0631 \u067e\u0631 \u0686\u0644 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba \u062c\u0633\u06d2 \u0648\u06c1 \u067e\u06c1\u0644\u06d2 \u0633\u06d2 \u0633\u0645\u062c\u06be\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u0641\u0646 \u062a\u0639\u0645\u06cc\u0631 \u0633\u0627\u062f\u06c1 \u0639\u0645\u0644 \u06a9\u06d2 \u0627\u0631\u062f \u06af\u0631\u062f \u0628\u0646\u0627\u06cc\u0627 \u06af\u06cc\u0627 \u06c1\u06d2.<\/p>\n<ol>\n<li>\n<p>\u0627\u062e\u062a\u062a\u0627\u0645\u06cc \u0646\u0642\u0637\u06c1 \u0635\u0627\u0631\u0641 \u06a9\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0648\u0635\u0648\u0644 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<\/li>\n<li>\n<p>MySQL \u067e\u0686\u06be\u0644\u0627 \u0645\u06a9\u0627\u0644\u0645\u06c1 \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<\/li>\n<li>\n<p>Gemini \u0641\u06cc\u0635\u0644\u06c1 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u06a9\u06c1 \u0622\u06cc\u0627 \u06a9\u0633\u06cc \u0622\u0644\u06d2 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u06d2 \u06cc\u0627 \u0646\u06c1\u06cc\u06ba\u06d4<\/p>\n<\/li>\n<li>\n<p>\u067e\u06cc \u0627\u06cc\u0686 \u067e\u06cc \u0679\u0648\u0644 \u0686\u0644\u0627\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<\/li>\n<li>\n<p>\u0646\u062a\u0627\u0626\u062c \u062c\u06cc\u0645\u0646\u06cc \u06a9\u0648 \u0648\u0627\u067e\u0633 \u0628\u06be\u06cc\u062c\u06d2 \u062c\u0627\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<\/li>\n<li>\n<p>\u062c\u06cc\u0645\u0646\u06cc \u062d\u062a\u0645\u06cc \u062c\u0648\u0627\u0628 \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<\/li>\n<li>\n<p>\u0622\u067e \u06a9\u06cc \u062a\u0627\u0632\u06c1 \u062a\u0631\u06cc\u0646 \u06af\u0641\u062a\u06af\u0648 \u0645\u062d\u0641\u0648\u0638 \u06c1\u0648 \u062c\u0627\u0626\u06d2 \u06af\u06cc\u06d4<\/p>\n<\/li>\n<\/ol>\n<p>\u06cc\u06c1 \u0645\u0639\u06cc\u0627\u0631\u06cc \u0645\u0634\u062a\u0631\u06a9\u06c1 \u06c1\u0648\u0633\u0679\u0646\u06af \u067e\u0631 \u0627\u06cc\u062c\u0646\u0679 \u067e\u0631 \u0645\u0628\u0646\u06cc \u0627\u06cc\u067e\u0644\u06cc \u06a9\u06cc\u0634\u0646\u0632 \u0628\u0646\u0627\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u06cc\u06a9 \u0639\u0645\u0644\u06cc \u0628\u0646\u06cc\u0627\u062f \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<\/p><\/div>\n","protected":false},"excerpt":{"rendered":"<p>\u0627\u0633 \u0679\u06cc\u0648\u0679\u0648\u0631\u06cc\u0644 \u0645\u06cc\u06ba\u060c \u06c1\u0645 \u0627\u06cc\u06a9 \u0639\u0645\u0644\u06cc AI \u0627\u06cc\u062c\u0646\u0679 \u0628\u0646\u0627\u062a\u06d2 \u06c1\u06cc\u06ba \u062c\u0648 \u0635\u0627\u0631\u0641 \u06a9\u06d2 \u067e\u0631\u0627\u0645\u067e\u0679 \u06a9\u0648 \u0633\u0646 \u0633\u06a9\u062a\u0627 \u06c1\u06d2\u060c \u0641\u06cc\u0635\u0644\u06c1 \u06a9\u0631 \u0633\u06a9\u062a\u0627 \u06c1\u06d2 \u06a9\u06c1 \u0622\u06cc\u0627 \u06a9\u0648\u0626\u06cc \u0679\u0648\u0644 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u06cc\u0627 \u062c\u0627\u0646\u0627 \u0686\u0627\u06c1\u06cc\u06d2\u060c \u0627\u0633 \u0679\u0648\u0644 \u06a9\u0648 \u067e\u06cc \u0627\u06cc\u0686 \u067e\u06cc \u0645\u06cc\u06ba \u0686\u0644\u0627\u0626\u06cc\u06ba\u060c \u0628\u0627\u062a \u0686\u06cc\u062a \u06a9\u06cc \u0633\u0631\u06af\u0632\u0634\u062a \u06a9\u0648 MySQL \u0645\u06cc\u06ba \u0627\u0633\u0679\u0648\u0631 \u06a9\u0631\u06cc\u06ba\u060c \u0627\u0648\u0631 \u062d\u062a\u0645\u06cc \u062c\u0648\u0627\u0628 \u062d\u0627\u0635\u0644 \u06c1\u0648\u0646\u06d2 \u062a\u06a9 \u0627\u0633\u062a\u062f\u0644\u0627\u0644 \u062c\u0627\u0631\u06cc [&hellip;]<\/p>\n","protected":false},"author":7,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[1],"tags":[],"class_list":["post-27775","post","type-post","status-publish","format-standard","hentry","category-blog"],"_links":{"self":[{"href":"https:\/\/umang.pk\/ur\/wp-json\/wp\/v2\/posts\/27775","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/umang.pk\/ur\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/umang.pk\/ur\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/umang.pk\/ur\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/umang.pk\/ur\/wp-json\/wp\/v2\/comments?post=27775"}],"version-history":[{"count":0,"href":"https:\/\/umang.pk\/ur\/wp-json\/wp\/v2\/posts\/27775\/revisions"}],"wp:attachment":[{"href":"https:\/\/umang.pk\/ur\/wp-json\/wp\/v2\/media?parent=27775"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/umang.pk\/ur\/wp-json\/wp\/v2\/categories?post=27775"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/umang.pk\/ur\/wp-json\/wp\/v2\/tags?post=27775"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}