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

smolagents با الگوی ReAct خطاهای پنهان در تبدیل متن به SQL را می‌گیرد

·۱۴ تیر ۱۴۰۵۴ دقیقه مطالعه
راهنما
عوامل خوداصلاح‌گر: تبدیل متن به SQL با smolagents (هاگینگ‌فیس)
عوامل خوداصلاح‌گر: تبدیل متن به SQL با smolagents (هاگینگ‌فیس)
اشتراک‌گذاری
واقعاً چه چیز جدید است؟

تغییر پارادایم از «تولید تک‌مرحله‌ای SQL» به «حلقه استدلال و اقدام (ReAct)» که در آن مدل اجازه دارد نتایج کوئری خود را ببیند و در صورت اشتباه، کد را بازنویسی کند.

یک نویسه اشتباه در یک کوئری SQL ممکن است در ظاهر معتبر باشد، اما اغلب تنها همین یک مورد کافی است تا گزارش‌های داده‌ای شما کاملاً غلط شوند. برای مقابله با این مشکل، Hugging Face چارچوبی به نام smolagents معرفی کرده است که در یک راهنمای فنی اخیر با جزئیات شرح داده شده است. این چارچوب به عامل‌ها (Agents) اجازه می‌دهد در حین تعامل با پایگاه‌داده، استدلال کنند، اقدام نمایند و اشتباهات خود را به‌صورت خودکار اصلاح کنند.

مشکل سنتی تبدیل متن به SQL

بسیاری از خط لوله‌های سنتی تبدیل متن به SQL (text-to-SQL) به‌صورت کورکورانه عمل می‌کنند: کاربر سوالی می‌پرسد، مدل یک کوئری تولید می‌کند و سیستم بلافاصله آن را اجرا می‌کند. این الگوی عملیاتی اساساً شکننده است. طبق مستندات فنی این پروژه، اگر مدل یک کوئری نادرست تولید کند، ممکن است باز هم بدون فعال کردن هیچ خطای سیستمی قابل مشاهده‌ای اجرا شود. در این حالت، سیستمی پاسخی را برمی‌گرداند که در ظاهر معتبر به نظر می‌رسد اما از نظر واقعی غلط است. در چنین مواردی، کاربر هرگز متوجه نمی‌شود که پاسخ نادرست است، زیرا هیچ شکست سیستمی برای علامت‌گذاری این اشتباه رخ نداده است.

همان‌طور که در تحلیل‌های قبلی ما درباره نحوه بهینه‌سازی پشته‌های ماژولار توسط Hugging Face و Cerebras برای کاهش تأخیر اشاره کردیم، رویکرد جدید این شرکت دقت را بر سرعت اجرای تک‌مرحله‌ای ترجیح می‌دهد. این متد، تعامل با پایگاه‌داده را نه یک задачу ساده ترجمه، بلکه یک فرآیند تکرارشونده از آزمون و تأیید می‌بیند.

چارچوب ReAct

قلب این سیستم CodeAgent است که الگوی ری‌اکت (ReAct یا Reasoning + Acting) را پیاده می‌کند. در این الگو، عامل به جای اینکه صرفاً یک خروجی SQL تولید کند، کدهای پایتون می‌نویسد و آن‌ها را اجرا می‌کند تا با پایگاه‌داده تعامل یابد. سپس عامل نتیجه را مشاهده می‌کند و بر اساس آن تصمیم می‌گیرد که آیا وظیفه به پایان رسیده است یا خیر. این رویکرد، یک ترجمه کورکورانه را به یک حلقه تبدیل می‌کند که در آن عامل می‌تواند نتایج کوئری‌های خود را بازبینی کرده و تصمیم بگیرد که آیا اصلاحی لازم است یا خیر.

به گزارش Hugging Face، این سازوکار از «شکست‌های خاموش» جلوگیری می‌کند؛ یعنی شرایطی که در آن یک کوئری بدون خطا اجرا می‌شود اما داده‌های غلط برمی‌گرداند. پیاده‌سازی این سیستم بر سه مؤلفه اصلی متکی است:

  • smolagents: چارچوب سبک عامل‌محور Hugging Face که در آدرس github.com/huggingface/smolagents میزبانی می‌شود.
  • SQLAlchemy: ابزاری که برای ایجاد و مدیریت پایگاه‌داده‌های SQLite در حافظه (in-memory) و اجرای کوئری‌ها به کار می‌رود.
  • InferenceClientModel: پلی برای اتصال به APIهای استنتاج سرورلس یا اختصاصی Hugging Face؛ لحظه‌ای که مدل واقعاً جواب تولید می‌کند.

جزئیات پیاده‌سازی فنی

برای اینکه عامل نسبت به پایگاه‌داده آگاه شود، توسعه‌دهندگان از پرامپت‌های استاندارد و باز استفاده نمی‌کنند. در عوض، طرحواره (Schema) جداول مستقیماً در docstring یک ابزار که با دکوراتور @tool علامت‌گذاری شده، جای می‌گیرد.

  • تعریف ابزار: تابعی به نام sql_engine برای انجام کوئری‌های SQL ایجاد می‌شود.
  • جای‌گذاری طرحواره: در docstring تابع sql_engine به‌طور صریح نام جدول (receipts) و ستون‌های آن لیست شده است: receipt_id (از نوع INTEGER)، customer_name (از نوع VARCHAR(16))، price (از نوع FLOAT) و tip (از نوع FLOAT).
  • منطق عامل: CodeAgent این docstring را می‌خواند تا طرحواره موجود و نحوه فرمت‌بندی کوئری‌ها را درک کند. برای مثال، درخواستی مانند «می‌توانی نام مشتری‌ای که گران‌ترین رسید را داشته است به من بگویی؟» توسط عامل پردازش شده، کوئری SQL تولید می‌شود و سپس از طریق ابزار sql_engine اجرا می‌گردد.

مدیریت سناریوهای پیچیده

با افزایش پیچیدگی، این چارچوب اجازه مقیاس‌پذیری پویا را می‌دهد. در یک «آزمون فشار» برای این عامل، جدول دومی به نام waiters اضافه شد. این جدول هر receipt_id را به نام گارسونی که به مشتری سرویس داده مرتبط می‌کند. این تغییر، عامل را مجبور می‌کند تا برای پاسخ به سوالاتی مانند «کدام گارسون مجموعاً انعام بیشتری دریافت کرده است؟»، روی مفهوم JOIN (اتصال بین دو جدول) استدلال کند.

در طول این انتقال، دو تنظیم کلیدی صورت می‌گیرد:

  • توصیفات پویا: شرح sql_engine.description به‌طور پویا به‌روزرسانی می‌شود تا ستون‌های هر دو جدول را شامل شود. این یعنی عامل درک خود از محیط را بدون نیاز به هیچ‌گونه بازآموزی یا بازنویسی منطق، به‌روز می‌کند.
  • مقیاس‌بندی مدل: برای مدیریت دشواری افزایش یافته در استدلال روی JOINها، مدل از Llama-3.1-8B-Instruct به مدل قدرتمندتر Qwen3-Next-80B-A3B-Thinking تغییر می‌یابد. مستندات تأیید می‌کنند که این ارتقای مدل، نتایج را برای کوئری‌های پیچیده به‌طور قابل‌توجهی بهبود می‌بخشد.

مزایای تطبیقی

این چرخش معماری، فرض بنیادی تحلیل داده‌های مبتنی بر AI را تغییر می‌دهد. یک خط لوله مستقیم Text-to-SQL صلب است؛ یعنی در یک مرحله تولید و اجرا می‌کند، خطاها را نادیده می‌گیرد و به طرحواره‌های سخت‌کد شده (hard-coded) نیاز دارد.

در مقابل، رویکرد ReAct در smolagents مزایای زیر را ارائه می‌دهد:

  • اصلاح تکرارشونده: توانایی تشخیص نتایج مشکوک یا خالی و تلاش مجدد به‌صورت خودکار.
  • طرحواره‌های قابل تعویض سریع (Hot-Swappable): طرحواره در توصیف ابزار قرار دارد و می‌تواند در لحظه به‌روزرسانی شود.
  • انعطاف‌پذیری: با تنظیم ساده مدل یا ابزار، در مواجهه با JOINهای پیچیده، زیرکوئری‌ها (subqueries) و فیلترهای تودرتو بهتر مقیاس می‌گیرد.

در نهایت، جهش کیفیت از این می‌آید که به مدل «علیت» یا agency داده شود تا مشاهده و اصلاح کند. وقتی مدل می‌بیند که یک کوئری به‌طور غیرمنتظره‌ای صفر ردیف برگردانده است، می‌تواند فرضیه بزند که چرا اتصال جداول شکست خورده و عبارت SQL را در لحظه بازنویسی کند.

توسعه‌دهندگان اکنون می‌توانند این الگو را با استفاده از مخزن smolagents پیاده کنند و نمونه «Self-correcting Text-to-SQL» آماده اجرا در Google Colab و SageMaker Studio Lab است.

گام بعدی شما

  • مخزن smolagents در گیت‌هاب را بررسی کنید و نمونه «Self-correcting Text-to-SQL» را در Google Colab اجرا نمایید.
  • اگر از سیستم‌های Text-to-SQL سنتی استفاده می‌کنید، مدل خود را از حالت «تولید مستقیم» به حالت «تولید-مشاهده-اصلاح» تغییر دهید.
  • برای کوئری‌های پیچیده، مدل‌های استدلالی (Reasoning Models) با پارامترهای بالاتر را جایگزین مدل‌های کوچک کنید.

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

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

این رویکرد ریسک «خطاهای خاموش» در تحلیل‌های تجاری را به شدت کاهش می‌دهد و اعتبار داده‌های استخراج شده توسط AI را تضمین می‌کند. تخصص Hugging Face در ساخت ابزارهای سبک، استقرار این سیستم‌های خود‌اصلاح‌گر را برای توسعه‌دهندگان مستقل ممکن کرده است.

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

توسعه‌دهندگان ایرانی می‌توانند با استفاده از کتابخانه متن‌باز smolagents و مدل‌های Llama-3.1، سامانه‌های تحلیل داده‌ای دقیق را بدون نیاز به هزینه‌های بالای APIهای بسته پیاده کنند.

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

جایگزینی ترجمه مستقیم با یک حلقه بازخوردی (Feedback Loop)، پایان عصر اعتماد کورکورانه به خروجی LLMها در کارهای دقیق است. نکته کلیدی اینجاست که smolagents با انتقال Schema به لایه ابزار (Tool)، پنجره متنی را پاکسازی کرده و مدل را مجبور به «مشاهده» واقعیت می‌کند. این یعنی حرکت از Prompt Engineering به سمت Agentic Workflow.

منابع

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

گفتگو

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

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

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

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

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

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

دات‌هوش

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

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