اگر هنوز ساعتها وقت خود را صرف تغییر دادن کلمات یک پرامپت برای رسیدن به جواب درست میکنید، باید بدانید که عصر «حدس و خطا» در تعامل با مدلها رو به پایان است. Imp که در ۲۷ سپتامبر ۲۰۲۶ منتشر شد، فراخوانی مدلهای زبانی را به توابع توصیفی و تایپشده تبدیل میکند که میتوان آنها را بهطور خودکار بهینه کرد.
برای سالها، توسعهدهندگان با شکنندگی مهندسی پرامپت (Prompt Engineering) — که شبیه تلاش برای پیدا کردن یک کلید خاص در میان هزاران قفل است — دستوپنجه نرم کردهاند. در حالی که فریمورکهایی مثل DSPy این بهینهسازی برنامهمحور را به پایتون آوردند، اکوسیستم Elixir فاقد معادلی بود که از قدرت BEAM استفاده کند. همانطور که در تحلیلهای پیشین ما دربارهی معماریهای عاملمحور اشاره کردیم، ترکیب پایداری سیستمهای توزیعشده با انعطاف مدلهای زبانی، کلید ساخت برنامههای صنعتی است. Imp با پورت کامل DSPy به BEAM، این شکاف را پر کرده و جریانهای کاری خودبهبودبخش را به زبانی میآورد که برای همروندی (Concurrency) عظیم ساخته شده است.
در هسته این ابزار، شما یک «امضا» (Signature) تعریف میکنید؛ توصیفی دقیق از اینکه مدل چه ورودی میگیرد و چه خروجی باید بدهد. طبق مستندات Imp، شما هرگز پرامپت خام یا تجزیهکننده (Parser) دستی نمینویسید. در عوض، Imp پرامپت را از روی امضا میسازد و پاسخ را اعتبارسنجی میکند تا مثلاً فیلد «دستهبندی» حتماً یکی از مقادیر پیشتعریفشده باشد، در غیر این صورت خطا صادر میکند.

قابلیتهای فنی و بهینهسازها
به نقل از توسعهدهندگان این پروژه، Imp مکانیزمهای متعددی برای عبور از پیشبینیهای ساده ارائه میدهد:
- استدلال و ابزارها: توسعهدهندگان میتوانند از
Imp.chain_of_thought/2برای زنجیره تفکر (Chain-of-Thought) — شبیه وقتی شاگرد ریاضی پای تخته بلند بلند فکر میکند تا به جواب برسد — یا ازImp.react/3برای ساخت عامل (Agent)هایی که توابع Elixir را بهعنوان ابزار فراخوانی میکنند، استفاده کنند. برای مثال، یک ابزار میتواند تابعی ساده باشد که با استفاده از کتابخانهReqصفحات وب را بهعنوان متن میخواند. - بهینهسازی خودکار: با استفاده از بهینهساز GEPA، Imp شکستهای برنامه را شناسایی کرده و دستورالعملها را برای رفع آنها بازنویسی میکند. این رویکرد بهینهسازی در راستای کاهش خطاهای مدل است، مشابه آنچه در مدلهای LLM-JEPA برای کاهش نرخ توهم مشاهده کردیم. این فرآیند از یک مدل قدرتمندتر (
strong_lm) برای تحلیل خطاها استفاده میکند. برای اجرای این فرآیند، به سه مجموعه داده برچسبدار نیاز است: یک مجموعه آموزشی (trainset) برای یادگیری، یک مجموعه اعتبارسنجی (valset) برای انتخاب بهترین نسخه و یک مجموعه آزمون (testset) برای امتیازدهی نهایی. - بهینهسازهای جایگزین: این کتابخانه از LabeledFewShot و BootstrapFewShot برای انتخاب نمونههای موفق (worked examples) پشتیبانی میکند. همچنین MIPROv2 ترکیبی از دستورالعملها و مثالها را جستوجو میکند و SIMBA قوانین را از تلاشهای بهتر و بدترِ خودِ برنامه میآموزد. علاوه بر این، Imp از آموزش مستقیم وزنها از طریق Fine-tuning یا روش GRPO پشتیبانی میکند.
- ساختارهای پیشرفته: Imp از RLM برای ورودیهایی که از پنجره متنی (Context Window) — شبیه میز کاری که فقط جای چند ورق دارد — فراتر میروند، پشتیبانی میکند. همچنین قابلیتهای CodeAct و «برنامه تفکر» (program of thought) را برای انجام محاسبات با استفاده از عبارتهای کوچک در محیطهای ایزوله (sandboxed) فراهم کرده است.
ادغام با BEAM
از آنجا که Imp روی BEAM اجرا میشود، هر عامل مانند یک فرآیند استاندارد Erlang مدیریت میشود. این یعنی عاملها وضعیت (State) خود را حفظ میکنند، پیام میگیرند و تحت نظارت یک Supervisor در کنار بقیه برنامه اجرا میشوند.
توسعهدهندگان میتوانند با Imp.start_run/3 یک عامل را بهعنوان یک فرآیند تحت نظارت اجرا کنند. این ساختار اجازه میدهد تا فراخوانی ابزارها بهصورت لحظهای نظارت و تأیید شوند؛ برای مثال میتوان دسترسی یک وبفچر را فقط به دامنههای خاص و مورد اعتماد محدود کرد. این مکانیسم تضمین میکند فراخوانیهایی که احتمالاً اثر گذاشتهاند، بهجای تلاش مجدد بیدلیل، بهعنوان «ناشناخته» گزارش شوند.
همچنین Imp با پروتکل زمینه مدل (MCP) برای وارد کردن ابزارهای خارجی و پروتکل زمینه عامل (ACP) برای ارائه برنامهها به کلاینتهایی مثل ادیتور Zed ادغام شده است. برای اتصال به مدلها از ReqLLM استفاده میکند که سازگاری با تمامی ارائهدهندگان پشتیبانیشده توسط این کتابخانه را تضمین میکند. برای اطمینان از پایداری، درخواستهای مدل با یک ضربالاجل (deadline) تعریفشده توسط کاربر محدود میشوند. این تمرکز بر پایداری و سرعت، یادآور تلاشهای اخیر برای کاهش تأخیر تصمیمگیری در مدلهای هوش مصنوعی است تا پاسخدهی سیستمها به سطح میلیثانیه برسد.
این تغییر، توسعه هوش مصنوعی را از «پرامپتنویسی» به «برنامهنویسی» منتقل میکند. با تبدیل مدل زبانی به مؤلفهای که از طریق معیارهایی مثل Imp.exact_match (تطابق دقیق) اندازهگیری و بهینه میشود، قابلیت اطمینان AI به یک مسئله مهندسی نرمافزار تبدیل میشود، نه یک چالش زبانی. نتیجه این بهینهسازی، برنامهای است که دستورالعملها و مثالهای آن را میتوان بهصورت JSON ذخیره و مانند یک Diff کد، بازبینی کرد. این رویکرد مهندسیشده در واقع پاسخی به موانع ساختاری معماریهای فعلی AI است که در آنها تولید متن بهجای تصمیمگیری سریع، باعث کندی سیستم شده است.
برای شروع، این پروژه نوتبوکهای Livebook برای آموزشهای آفلاین و یک برگه تقلب (Cheatsheet) جامع ارائه داده است. با توجه به اینکه نسخه ۰.۵ آزمایشی است، احتمال تغییر در API وجود دارد زیرا تیم در حال انجام بنچمارکهای مقیاسبزرگ است. گزارش باگها و Pull Requestها مورد استقبال قرار میگیرند.
برای نصب، به Elixir ۱.۱۹ یا بالاتر و یک کامپایلر C/C++ برای وابستگیهای بومی jaxon و erlexec نیاز دارید. توجه داشته باشید که اولین کامپایل به دسترسی شبکه نیاز دارد، زیرا erlexec در حین ساخت، پلاگینهای rebar3 را دریافت میکند. Imp تحت لایسنس MIT منتشر شده است.
گام بعدی شما
- اگر از Elixir استفاده میکنید، کتابخانه Imp را نصب کرده و اولین «امضا»ی خود را برای جایگزینی پرامپتهای سختافزاری تعریف کنید.
- نوتبوکهای Livebook پروژه را برای درک تفاوت بین بهینهسازهای GEPA و SIMBA بررسی کنید.
- ساختار Agent-First را در برنامههای خود پیاده کنید تا مدیریت وضعیت مدلها را به BEAM بسپارید.
اما قدرت واقعی این رویکرد در مقیاس صنعتی زمانی مشخص میشود که مدلهای کوچکتر را جایگزین مدلهای غولپیکر کنیم — به تحلیل ما درباره بهینهسازی هزینه استنتاج مراجعه کنید.




گفتگو