تصور کنید یک دستیار دیجیتال دارید که بهجای اجرای دستورات تکراری، خودش تصمیم میگیرد برای پاسخ به شما ابتدا کجا را چک کند و سپس چه ابزاری را به کار بگیرد. این یعنی عبور از دوران برنامهنویسی خطی و ورود به عصر عاملهای تصمیمگیر. در حالی که اکثر پیادهسازیهای هوش مصنوعی بر اساس اسکریپتهای از پیش تعریف شده عمل میکنند، اکنون یک تکعامل میتواند بهطور مستقل چندین ابزار تخصصی را برای حل درخواستهای پیچیده و چندمرحلهای به هم زنجیر کند.
طبق گزارش منتشرشده در ۲۷ سپتامبر ۲۰۲۶، راهنمای فنی NanoAgent نشان میدهد که یک عامل (Agent) — شبیه به یک مدیر پروژه که ابزارهای مختلف را در اختیار دارد و میداند هر کدام را در چه زمانی استفاده کند — میتواند در محیط PHP، ترتیب اجرای ابزارها را صرفاً بر اساس توصیفات آنها و هدف کاربر تعیین کند.
بسیاری از توسعهدهندگان در حال حاضر از زنجیرههای صلب استفاده میکنند که در آن ترتیب اتفاقات از پیش تعیین شده است. این ساختار در مواجهه با کارهای باز، مثل یک دستیار شخصی که باید ابتدا مکان کاربر را بیابد و سپس آبوهوا یا رویدادهای محلی را چک کند، به یک گلوگاه تبدیل میشود. با انتقال مدیریت این فرآیند به مدل، سیستم از حالت قطعی (Deterministic) به حالت پویا تغییر میکند.
زمینه: مسئله ارکستراسیون (مدیریت اجرا)
استدلال درباره یک ابزار واحد ساده است. اما چالش واقعی زمانی رخ میدهد که یک عامل چندین ابزار تخصصی در اختیار دارد و باید بفهمد کدام را فراخوانی کند، ترتیب درست عملیات چیست و چگونه نتایج پراکنده را در یک پاسخ منسجم ترکیب کند.
در نمونهی NanoAgent، کاربر درخواستی چندبخشی ارسال میکند: «ببین من کجام، آبوهوای اونجا رو بگیر و ببین امشب کنسرت جاز هست یا نه». این درخواست مستلزم ساخت یک خط لوله (Pipeline) در لحظه است، بهطوری که خروجی ابزار اول، ورودی مورد نیاز برای دو ابزار بعدی باشد. به نقل از گزارش dev.to، پیادهسازی NanoAgent از سه شیء FunctionTool مجزا برای مدیریت این درخواست پیچیده استفاده میکند.
معماری مجموعه ابزارها
این سیستم از ابزارهای زیر تشکیل شده است:
- detect_user_location: ابزاری بدون پارامتر که شهر و کشور کاربر را گزارش میدهد. در محیط شبیهسازی، این ابزار خروجی
['city' => 'Paris', 'country' => 'France']را برمیگرداند. - get_current_weather: ابزاری که به یک رشته متنی برای «شهر» نیاز دارد تا پیشبینیهای زنده را دریافت کند. این ابزار از یک آرایه مشاهده (Observation Array) استفاده میکند که حاوی دادههایی برای پاریس (ابری، ۱۴ درجه)، لندن (بارانی، ۱۱ درجه) و نیویورک (آفتابی، ۲۲ درجه) است.
- search_local_events: ابزاری که با دریافت نام شهر، رویدادهای فرهنگی را مییابد. برای شهر پاریس، این ابزار نتایج خاصی مانند «جشنواره جاز در Le Caveau» در ساعت ۲۰:۰۰ و «نمایش آثار مونه در Grand Palais» از ساعت ۱۰:۰۰ تا ۱۸:۰۰ را برمیگرداند.
عامل این وابستگی را بهطور ضمنی مدیریت میکند؛ ابتدا ابزار مکان را فراخوانی میکند، کلمه «پاریس» را از نتیجه استخراج کرده و سپس آن مقدار خاص را به ابزارهای آبوهوا و رویداد میفرستد.
جزئیات پیادهسازی فنی
از نظر فنی، برای مدیریت ابزارهایی که پارامتر ورودی ندارند در زبان PHP، توسعهدهنده از شیء stdClass() استفاده میکند. این یک جزئیات حیاتی است؛ زیرا در JSON Schema، شیئی بدون ویژگی باید به صورت {'type':'object','properties':{}} باشد. استفاده از یک آرایه خالی [] در PHP باعث تبدیل آن به یک آرایه JSON میشود و در نتیجه فراخوانی ابزار با شکست مواجه میگردد.
این سازوکار بر دو عامل کلیدی استوار است:
اول، توصیفات دقیق (Narrow Descriptions)؛ فیلد description همان چیزی است که مدل برای انتخاب ابزار میخواند. توصیفی دقیق مثل «تعیین شهر و کشور فعلی کاربر» به مدل سیگنال میدهد که این اولین قدم ضروری است. توصیفات مبهم منجر به انتخاب اشتباه ابزار میشوند.
دوم، شکلدهی به خروجی (Output Shaping)؛ پرامپت سیستمی شکل پاسخ نهایی را تعیین میکند، نه ترتیب فراخوانی ابزارها. با دستور «ابتدا مکان و آبوهوا را توصیف کن و سپس رویدادها را لیست کن»، توسعهدهنده ترکیب نهایی را هدایت میکند اما مدیریت زنجیره (Orchestration) را به مدل میسپارد.
برای توسعهدهندگان، این یک تغییر در نحوه ساخت خط لولههای هوش مصنوعی است. اگر یک جریان کاری (Workflow) ثابت باشد، زنجیرههای قطعی همچنان برتر هستند. اما برای دستیارهایی که مسیر پاسخ به ورودی کاربر بستگی دارد، دادن ابزارهای متعدد به یک تکعامل، الگوی مقیاسپذیرتری است.
این رویکرد حجم کدهای تکراری (Boilerplate) برای مدیریت منطقهای شرطی را کاهش میدهد. بهجای نوشتن دستورات پیچیده if-else برای مسیریابی دادهها بین توابع، توسعهدهنده قطعات و هدف را ارائه میدهد و اجازه میدهد مدل زبانی بزرگ (LLM) — مثل کتابخانهداری که میلیاردها صفحه را خوانده و حالا با همان لحن کتابها جواب میدهد — خط لوله را در لحظه بسازد.
برای پیادهسازی این مدل، توسعهدهندگان باید بر دقت فیلد description در تعریف ابزارهای خود تمرکز کنند، زیرا این اصلیترین سیگنالی است که مدل برای سازماندهی توالی عملیات از آن استفاده میکند. توسعهدهندگان علاقهمند میتوانند مجموعه مثالهای کامل NanoAgent را برای مشاهده الگوهای ارکستراسیون پیچیدهتر و دموهای زنده بررسی کنند.
گام بعدی شما
- در تعریف ابزارهای خود، روی دقت فیلد
descriptionتمرکز کنید تا سیگنالهای قویتری به مدل برای توالیبندی ارسال کنید. - برای ابزارهای بدون ورودی در PHP، حتماً از
stdClass()استفاده کنید تا خطای تبدیل JSON رخ ندهد. - مدلهای خود را با درخواستهای چندمرحلهای تست کنید تا نقاط ضعف در استخراج دادههای میانی را شناسایی کنید.
اما داستان سختافزاری این تحول حتی شگفتانگیزتر است — به تحلیل ما دربارهی تراشههای Blackwell مراجعه کنید.




گفتگو