تصویر برجسته از ارائه Solomon Hykes.
تصویر برجسته از ارائه Solomon Hykes.

ابزارهای توسعه هوش مصنوعی: چگونه عوامل هوش مصنوعی را با استفاده از Dagger کانتینریزه کنیم

ما باید فرآیند ساخت عوامل هوش مصنوعی را استاندارد کنیم، پس چرا از اکوسیستم کانتینر الهام نگیریم؟

این نتیجه‌گیری از سخنرانی سازنده Docker و مدیرعامل Dagger، Solomon Hykes بود، که در نشست شب ابزارهای هوش مصنوعی Sourcegraph، که هفته گذشته در دفتر مرکزی Cloudflare در سانفرانسیسکو برگزار شد، صحبت کرد.

Hykes گفت: "باید یک اکوسیستم نرم‌افزاری وجود داشته باشد که بتوانیم از چیزهای یکدیگر استفاده مجدد کنیم." "ما Dagger را به عنوان یک اکوسیستم پیشنهاد می‌کنیم."

Dagger یک موتور زمان اجرای متن‌باز برای ساخت نرم‌افزار است. مهندسان DevOps مشارکت‌کننده هزاران ماژول یا dags برای فرایندهای ساخت کانتینر خود ایجاد کرده‌اند.

Hykes استدلال کرد که Dagger یک کانتینر تغییرناپذیر پر از منطق تخصصی می‌سازد و این طراحی را می‌توان به راحتی برای ساخت عوامل مبتنی بر مدل زبان بزرگ اعمال کرد.

او گفت: "همه این استارت‌آپ‌ها که زیرساخت‌های فانتزی به شما می‌فروشند... خب، اساساً، این الان متن‌باز است."

و برای نشان دادن اینکه چگونه کانتینرها کارها را به راحتی پیش می‌برند، Hykes یک عامل هوش مصنوعی ساده ساخت و به نوبه خود، یک شبیه‌ساز cURL را فقط با استفاده از سه فراخوانی تابع ساخت.

این فیلم را قبلاً دیده‌ایم

Hykes یادآوری کرد که کانتینر Docker موفق بود، نه به این دلیل که پیچیدگی به سرعت در حال رشد ساخت برنامه‌های وب را رام کرد. برنامه را به اجزای قابل استفاده مجدد تقسیم کنید و آنها را برای تکثیر آسان کانتینریزه کنید. Docker قابلیت استفاده مجدد و مقیاس‌پذیری را به ارمغان آورد.

Hykes پیشنهاد کرد: "من پیشنهاد می‌کنم همین کار را برای عوامل انجام دهیم." "آن مغزها را در یک شیشه بگذارید، سپس مقداری کنترل بر آنچه به آن متصل می‌شوند، داشته باشید."

افزودن توانایی فراخوانی سیستم خارجی به LLMها یک پیشرفت بزرگ بوده است و به سرعت به یک عنصر اساسی برای ساخت یک عامل هوش مصنوعی تبدیل شده است. آنها پروتکل را برای یک LLM فراهم می‌کنند تا در صورت نیاز برای تکمیل یک کار، یک تابع اضافی را فراخوانی کند.

با تکثیر تعداد عوامل و پیچیده‌تر شدن وظایفی که انجام می‌دهند، مدیریت این عوامل به زودی غیرقابل کنترل خواهد شد.

Dags تا انتها

Hykes مشاهده کرد که LLMها دقیقاً مانند یک سیستم ساخت نرم‌افزار تغییرناپذیر خوب کار می‌کنند. آنها به یک حالت تغییرناپذیر محدود هستند. شما داده‌ها را به پنجره زمینه اضافه می‌کنید و یک تابع اجرا می‌شود.

Dagger یک گزاره جدید به نام LLM دارد که اساساً یک حالت خالی با GPT-4o بارگذاری شده است (اگرچه می‌تواند از مدل‌های دیگر استفاده کند).

با استفاده از شل Dagger یا به صورت برنامه‌نویسی، می‌توانید چندین عملیات را به هم زنجیر کنید. اولین مورد می‌تواند، به عنوان مثال، یک اعلان اولیه باشد.

کل API Dagger مجموعه‌ای از اشیاء است که هر کدام مجموعه فراخوانی توابع، طرحواره و حالت خاص خود را دارند. بنابراین، در داخل شل Dagger، می‌توانید یک شی کانتینر ایجاد کنید:

LLM | with-container (Container | from alpine | with-new-file yay.txt 'my favorite language is PHP')

Hykes با اجرای مثال بالا از ایجاد یک شی کانتینر، یک فایل به نام yay.txt اضافه کرد تا صحت نمایش زنده خود را ثابت کند.

او خاطرنشان کرد که این دستور علاوه بر ایجاد کانتینر، آن را به خود LLM نیز متصل می‌کند.

از آنجا، می‌توانید چندین شی را به هم زنجیر کنید.

هنگامی که "ساخت" اجرا می‌شود، یک ابزار OpenTelemetry می‌تواند تمام مراحلی را که برداشته است، از جمله نحوه بازیابی LLM از تمام خطاهای مختلف (مانند فراخوانی بسته نصب نادرست) را فهرست کند که LLM برای تکمیل اهداف خود باید از آنها عبور کند (که برای پاسخگویی نیز عالی است).

Hykes همچنین نشان داد که چگونه، در اولین گذر، دستور ایجاد کانتینر PHP را در خود کانتینر نصب کرده بود، بنابراین برای استفاده بعدی در دسترس خواهد بود.

هیجان انگیز!

شبیه‌ساز cURL در سه تابع

Hykes توصیه کرد که حداقل حداقل برای یک فضای کاری LLM، حداقل یک کانتینر و یک حالت، توابعی برای خواندن و نوشتن فایل‌ها و یک تابع ساخت (به طور ایده‌آل بدون هیچ آرگومانی) باشد.

Hykes یک dag با تمام این چیزها نوشت، به نام toy-workspace.

در نسخه نمایشی، او toy-workspace را در یک کانتینر LLM نصب کرد. او یک اعلان ابتدایی برای LLM اضافه کرد:

  1. شما یک برنامه نویس متخصص Go هستید.
  2. شما به یک فضای کاری دسترسی دارید.
  3. از ابزارهای خواندن، نوشتن و ساخت برای تکمیل تکالیف زیر استفاده کنید:

دستور کاربر به یک متغیر @assignment اختصاص داده شده است.

او سپس دستورالعمل‌های نهایی را داشت:

  • از ابزار کانتینر استفاده نکنید.
  • تا زمانی که کد شما ساخته نشود، ساخت نکنید.
  • تابع حلقه‌دار است.

Hykes با نشان دادن مهارت‌های نمایشی خود، سپس این برنامه را اجرا کرد و فقط دستورالعمل "یک شبیه‌ساز cURL برای من بنویس" را اضافه کرد. یک دقیقه بعد، او یک شبیه‌ساز cURL در حال اجرا داشت.

Hykes گفت: "این جادوی توسعه عامل است."

اشکال زدایی عامل

YK Sugi، مدافع ارشد توسعه دهنده هوش مصنوعی Sourcegraph که این نشست را سازماندهی کرد، از رویکرد Dagger، به ویژه برای اشکال زدایی، قدردانی کرد.

او در یک پیام LinkedIn نوشت: "من به عنوان کسی که خود عوامل را ساخته‌ام، می‌دانم که ساخت عوامل هوش مصنوعی می‌تواند یک چالش باشد."

او نوشت: "خطاهای شما می‌تواند ناشی از API LLM باشد که از آن استفاده می‌کنید یا هر تنظیماتی که برای LLM خود دارید." آنها می‌توانند مسائل مربوط به محدودیت نرخ یا نحو مطابقت نداشتن با نسخه فعلی موجود باشند. یافتن منبع مشکل می‌تواند دردسرساز باشد.

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

توانایی Dagger برای بررسی تمام گزارش‌ها، نه فقط گزارش‌های LLM، بلکه گزارش‌های سرویس‌های پشتیبان، می‌تواند کمک بزرگی در این زمینه باشد.

او نوشت: "به نظر می‌رسد نه تنها اشکال‌زدایی را ساده‌تر می‌کند، بلکه توسعه را نیز به طور کلی، به طوری که توسعه یک سیستم قابل اعتمادتر آسان‌تر باشد."