Embabel نسخهٔ 1.0 را منتشر کرد

Embabel، چارچوبی برای تعریف و اجرای عامل‌های هوش مصنوعی در جاوا و کاتلین، اکنون به نسخهٔ 1.0 با انتشار عمومی (GA) رسیده است. این فریم‌ورک توسعه‌دهندگان را از نوشتن دستی توالی پرامپت‌ها و فراخوانی ابزارها بی‌نیاز می‌کند و به‌جای آن امکان اعلام صریح اهداف و تعریف عملیات تایپ‌شده را فراهم می‌آورد؛ سپس در زمان اجرا با برنامه‌ریزی مسیر رسیدن به هدف را تعیین می‌کند.

برنامه‌ریزی مبتنی بر هدف (GOAP)، هستهٔ معماری

Embabel از الگویی شناخته‌شده در هوش مصنوعی بازی‌ها استفاده می‌کند: Goal-Oriented Action Planning (GOAP). در این مدل هر عملیات شرایط پیش‌نیاز و اثر مشخصی دارد و یک برنامه‌ریز در زمان اجرا توالی‌ای از عملیات را می‌یابد که هدف را محقق کند. مزیت این رویکرد انعطاف‌پذیری در برابر تغییرات لحظه‌ای محیط است: اگر فراخوانی ابزار شکست بخورد یا اطلاعات جدید برسد، برنامه‌ریز می‌تواند مسیر را بازنگری و مسیر جایگزین بیابد، بدون نیاز به سیم‌کشی همهٔ شاخه‌ها از پیش.

تعامل با Spring AI و مدیریت مدل‌ها

Embabel بر لایهٔ Spring AI سوار می‌شود و آن را جایگزین نمی‌کند؛ Spring AI لایهٔ دسترسی به مدل‌ها، مدیریت امبدینگ‌ها و فراخوانی فراهم می‌کند و Embabel لایهٔ اعلام اهداف و عملیات تایپ‌شده را اضافه می‌نماید. این تقسیم مسئولیت شبیهِ تفاوت بین سروِلت‌های خام و Spring MVC است: لایهٔ بالاتر توسعه را ساده‌تر می‌کند بدون کنار گذاشتن لایهٔ زیرین.

از طریق اتصال به Spring AI، Embabel از ارائه‌دهندگان متعدد پشتیبانی می‌کند، از جمله OpenAI، Anthropic، Gemini، Amazon Bedrock و Mistral. گزینه‌های محلی و خودمیزبان با استفاده از Ollama، Docker یا نقاط پایانی سازگار با OpenAI مانند LMStudio در دسترس‌اند. توسعه‌دهنده می‌تواند هر عملیات را به یک مدل مشخص قفل کند یا نقش‌هایی (aliases) تعریف کند (مثلاً «بهترین» برای استدلال پیچیده و «اقتصادی» برای وظایف روتین) تا هر گام به مدل مناسب از نظر هزینه، توانایی یا حریم خصوصی هدایت شود.

مقایسه با ابزارها و رویکردهای موجود

تمایز اصلی Embabel در مرحلهٔ برنامه‌ریزی آن است؛ به‌جای تعریف گراف جریان‌کاری از پیش تعیین‌شده، برنامه‌ریز در زمان اجرا از میان عملیات تایپ‌شده مسیر می‌جوید و توالی‌هایی را می‌سازد که توسعه‌دهنده لزوماً صریحاً سیم‌کشی نکرده است. این رویکرد آن را از لایه‌های ارکستراسیون گرافی مانند LangGraph (محور LangChain) متمایز می‌کند، هرچند امکان ترکیب GOAP با ماشین‌های حالت صریح نیز وجود دارد تا در بخش‌هایی که نیاز به رفتار گرافی مشخص دارد، از آن استفاده شود.

ابزارهایی مانند Akka با مدل بازیگر مزایایی همچون تحمل خطا، ایزولاسیون حالت و توزیع ارائه می‌دهند؛ بنابراین جایگاه این ابزارها متفاوت است: Embabel بیشتر در سطح مدل برنامه‌نویسی و نوع‌ها تمرکز دارد، Akka زیرساخت زمان‌اجرا را تأمین می‌کند و برخی ابزارها مانند Koog ویژگی‌های زبانی کاتلین را محور قرار می‌دهند.

برای مراجعهٔ بیشتر به مقایسهٔ عملی، می‌توانید بررسی‌های مرتبط با LangChain را بخوانید: مقایسه و تجربهٔ LangChain و عامل‌های خودساخت و سایت رسمی LangChain.

مناسب برای چه تیم‌هایی است؟

  • توسعه‌دهندگان جاوا و کاتلین که می‌خواهند عامل‌هایی مبتنی بر اهداف مشخص و عملیات تایپ‌شده بسازند.
  • تیم‌هایی که باید چند مدل را براساس معیارهایی مثل هزینه، توانایی یا حریم خصوصی ترکیب کنند.
  • پروژه‌هایی که نیاز به ترکیب برنامه‌ریزی خودکار و مسیردهی صریح دارند.

جریان کاری توسعه با Embabel

روند متداول به‌صورت زیر است:

  • اعلام اهداف دامنه‌ای و تعریف عملیات تایپ‌شده به همراه پیش‌نیازها و اثرات آن‌ها.
  • پیکربندی انتخاب مدل یا نقش‌دهی مدل‌ها برای هر عملیات یا نقش مشخص.
  • استفاده از برنامه‌ریز برای یافتن مسیر اجرای عملیات در زمان اجرا و واکنش به تغییرات محیطی.
  • ترکیب بخش‌هایی از جریان با ماشین حالت صریح یا ارکستراسیون گرافی در صورت نیاز.

چشم‌انداز

نسخهٔ 1.0 Embabel یک مدل برنامه‌نویسی مبتنی بر اعلام اهداف و عملیات را برای اکوسیستم جاوا معرفی می‌کند که به‌خصوص در پروژه‌های پیچیده با تعامل میان چند مدل و نیاز به مقاومت در برابر تغییرات لحظه‌ای کاربردی است. با رشد لایه‌های زیرین مانند Spring AI و تکامل راهکارهای توزیع و تحمل خطا، ترکیب مدل برنامه‌نویسی Embabel با زیرساخت‌هایی مانند Akka یا سیستم‌های ارکستراسیون می‌تواند مسیرهایی جدید برای ساخت عامل‌های قابل‌اتکا و مقیاس‌پذیر فراهم کند.

پیوندهای مرتبط