پرش به محتوای اصلی
پرش به محتوای مقاله

Imp برنامه‌نویسی خودبهینه‌ساز مدل‌های زبانی را به اکوسیستم Elixir آورد

·۵ مهر ۱۴۰۵۴ دقیقه مطالعه
لوگوی GitHub و نام پروژه imp: برنامه‌های اعلانی خودبهبود زبان‌مدل برای Elixir
لوگوی GitHub و نام پروژه imp: برنامه‌های اعلانی خودبهبود زبان‌مدل برای Elixir
اشتراک‌گذاری
واقعاً چه چیز جدید است؟

نخستین پورت کامل فریم‌ورک DSPy به زبان Elixir که به جای مهندسی دستی پرامپت، از بهینه‌سازهای خودکار برای ارتقای عملکرد مدل‌ها بر اساس داده‌های برچسب‌دار استفاده می‌کند.

اگر هنوز ساعت‌ها وقت خود را صرف تغییر دادن کلمات یک پرامپت برای رسیدن به جواب درست می‌کنید، باید بدانید که عصر «حدس و خطا» در تعامل با مدل‌ها رو به پایان است. Imp که در ۲۷ سپتامبر ۲۰۲۶ منتشر شد، فراخوانی مدل‌های زبانی را به توابع توصیفی و تایپ‌شده تبدیل می‌کند که می‌توان آن‌ها را به‌طور خودکار بهینه کرد.

برای سال‌ها، توسعه‌دهندگان با شکنندگی مهندسی پرامپت (Prompt Engineering) — که شبیه تلاش برای پیدا کردن یک کلید خاص در میان هزاران قفل است — دست‌وپنجه نرم کرده‌اند. در حالی که فریم‌ورک‌هایی مثل DSPy این بهینه‌سازی برنامه‌محور را به پایتون آوردند، اکوسیستم Elixir فاقد معادلی بود که از قدرت BEAM استفاده کند. همان‌طور که در تحلیل‌های پیشین ما درباره‌ی معماری‌های عامل‌محور اشاره کردیم، ترکیب پایداری سیستم‌های توزیع‌شده با انعطاف مدل‌های زبانی، کلید ساخت برنامه‌های صنعتی است. Imp با پورت کامل DSPy به BEAM، این شکاف را پر کرده و جریان‌های کاری خودبهبودبخش را به زبانی می‌آورد که برای هم‌روندی (Concurrency) عظیم ساخته شده است.

در هسته این ابزار، شما یک «امضا» (Signature) تعریف می‌کنید؛ توصیفی دقیق از اینکه مدل چه ورودی می‌گیرد و چه خروجی باید بدهد. طبق مستندات Imp، شما هرگز پرامپت خام یا تجزیه‌کننده (Parser) دستی نمی‌نویسید. در عوض، Imp پرامپت را از روی امضا می‌سازد و پاسخ را اعتبارسنجی می‌کند تا مثلاً فیلد «دسته‌بندی» حتماً یکی از مقادیر پیش‌تعریف‌شده باشد، در غیر این صورت خطا صادر می‌کند.

لوگوی GitHub و نام مخزن imp: برنامه‌های اعلانی خودبهبودیافته مدل زبانی برای Elixir

قابلیت‌های فنی و بهینه‌سازها

به نقل از توسعه‌دهندگان این پروژه، 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 بسپارید.

اما قدرت واقعی این رویکرد در مقیاس صنعتی زمانی مشخص می‌شود که مدل‌های کوچک‌تر را جایگزین مدل‌های غول‌پیکر کنیم — به تحلیل ما درباره بهینه‌سازی هزینه استنتاج مراجعه کنید.

چرا این موضوع مهم است؟

این ابزار با تکیه بر اعتبار معماری BEAM، پایداری و مقیاس‌پذیری عامل‌های هوش مصنوعی را به سطح استانداردهای نرم‌افزاری می‌برد. توسعه‌دهندگان اکنون می‌توانند بدون وابستگی به پایتون، سیستم‌های خودبهبودبخش را در محیط‌های تولیدی (Production) مستقر کنند.

تأثیر برای ایران

برای توسعه‌دهندگان Elixir در ایران که در پروژه‌های مقیاس‌پذیر فعالیت می‌کنند، این ابزار مسیری برای ساخت عامل‌های AI پایدار بدون نیاز به زیرساخت‌های پیچیده پایتون فراهم می‌کند.

·نگاه ما
تحریریه دات‌هوش

انتقال فلسفه DSPy به Elixir نشان می‌دهد که صنعت در حال عبور از لایه «هنرِ پرامپت‌نویسی» به لایه «مهندسی سیستم‌های زبانی» است. تبدیل پرامپت به یک متغیر بهینه‌شدنی (Optimizable) به این معناست که در آینده، کد منبع برنامه‌های AI شامل دستورالعمل‌های متنی نخواهد بود، بلکه شامل مجموعه‌ای از امضاها و داده‌های مرجع است که توسط کامپایلرهای هوشمند به بهینه‌ترین پرامپت تبدیل می‌شوند.

منابع

این گزارش با خط‌لولهٔ خودکار دات‌هوش از منابع معتبر جهانی تدوین و زیر نظر تحریریه منتشر شده است. روش کار ما

گفتگو

پنج‌شنبه‌های هوش‌محور

بسته‌ی هفتگی دات‌هوش

۵ خبر، ۲ ابزار، ۱ پرامپت در هر شماره. به‌زودی راه‌اندازی می‌شود — هر پنج‌شنبه صبح.

خبر کلیدی
ابزار کاربردی
پرامپت حرفه‌ای
تحلیل پژوهش
به‌زودی
زاویه‌ی ایرانی
به‌زودی
تمرین این هفته
به‌زودی

راهنماهای دات‌هوش

راهنماهای کاربردیِ دات‌هوش برای کار با هوش مصنوعی — از همین‌جا شروع کنید:

دات‌هوش

راهنمای فارسی هوش مصنوعی — با نگاه به ایران

اخبار روزانه، معرفی ابزارها و مدل‌ها، و آموزشِ کار با هوش مصنوعی؛ همیشه با این پرسش که از ایران چه چیزی کار می‌کند و چه چیزی نه.