ایده روی کاغذ فوقالعادهست: ترکیب Reinforcement Learning با ابزارهای واقعی (Tools) برای اینکه مدل یاد بگیره کِی و چطور کوئری بزنه. اما در عمل؟ این نوتبوک یه فاجعه آموزشیه که فقط ظاهرش قشنگه.
چرا این پیادهسازی کار نمیکنه؟
توابع پایتونی که برای سرچ دیتابیس نوشته شده (مثل
search_hotels) اصلا خروجی رو برمیگردونن (Return None)؛ یعنی مدل عملاً کور هست و هیچ دیتایی نمیینه. بدتر از اون، تابع Reward که قلب تپنده GRPO هست، باگ داره و امتیازی برمیگردونه! کل پروسه آموزش روی ۴ تا دونه داده انجام میشه که برای RL شوخیه. عملاً مدل داره روی هوا یاد میگیره که "ادای" ابزار صدا زدن رو دربیاره، بدون اینکه واقعاً بفهمه چی کار میکنه.به نظر من، مسیر واقعی برای ساخت ایجنت دیتابیس اینه:
اگه تو شرکتتون میخواید مدلی بسازید که با دیتابیس تعامل کنه، خودتون رو درگیر پیچیدگیهای RL نکنید، مگر اینکه مرحله SFT رو رد کرده باشید. نقشه راه عملیاتی برای مدلهای کوچیک به این صورته:
۱. استراتژی پرامپتینگ (No-Code/Low-Code):
برای ۹۰٪ یوزکیسها، اصلاً نیاز به فاینتیون ندارید. اسکیمای دیتابیس (Schema) رو تمیز کنید و به عنوان Context به مدل بدید. از فریمورکهایی مثل LangChain یا LlamaIndex استفاده کنید که مکانیزم Tool Calling رو هندل میکنن.
۲. فاینتیون نظارتشده (SFT - The Sweet Spot):
اگه مدل باید فرمت خاصی از JSON برگردونه یا SQLهای پیچیده بنویسه که با پرامپت درنمیاد، برید سراغ SFT.
دیتاست شما باید شامل جفتهای (سوال کاربر -> کوئری SQL صحیح) یا (سوال کاربر -> فراخوانی ابزار) باشه. با ابزارهایی مثل Unsloth (که برای سرعت عالیه) روی یه مدل کوچیک فاینتیون بزنید. این روش پایداری خیلی بالاتری نسبت به RL داره.
۳. مرحله پیشرفته (RL & GRPO):
کی بریم سراغ GRPO؟ زمانی که "درستی" جواب قابل سنجش (Verifiable) باشه. مثلاً در Text-to-SQL، اگر کوئری تولید شده اجرا بشه و نتیجه درست بده، Reward مثبت میدیم. اینجا مدل یاد میگیره که "منطق" کوئری زدن رو بهبود بده، نه فقط تقلید از دیتاست. ولی یادتون باشه، برای این کار نیاز به هزاران نمونه و یه محیط ایزوله (Sandbox) دیتابیس دارید، نه ۴ تا سطر داده!
نکته فنی و امنیتی:
هیچوقت، تاکید میکنم هیچوقت به LLM دسترسی مستقیم
UPDATE یا DELETE روی پروداکشن ندید. ایجنت باید کوئری SELECT بسازه یا پیشنهاد بده، و یه لایه میانی (Application Layer) اون رو Validate و اجرا کنه.اگه میخواید با TRL و GRPO کار کنید، داکیومنت اصلی رو بخونید، نه کدهای ناقص:
📃 داکیومنت TRL برای GRPO
📙 نوتبوک کولب ذکر شده
🛠 Join @LLMEngineers Community