LLM Engineers
Photo
فرمت Harmony که OpenAI با مدلهای gpt-oss معرفی کرده، یه پروتکل ساختاریافته برای تعامل با مدلهای ایجنتمحوره.
چند تا از کلیدیترین ویژگیهای این فرمت:
کانالهای مجزا (Channels): این نوآورانهترین بخش فرمته. به جای اینکه کل جواب مدل یه تیکه تکست باشه، به کانالهای مختلف تقسیم میشه:
کانال analysis: اینجا جاییه که Chain-of-Thought (CoT) یا همون فرآیند فکری مدل قرار میگیره. این همون بخشیه که فیلتر نشده و نباید مستقیم به کاربر نشون داده بشه.
کانال commentary: برای فراخوانی ابزارها (tool calls) استفاده میشه. مدل توی این کانال، پارامترهای فانکشن مورد نظرش رو به صورت ساختاریافته برمیگردونه.
کانال final: این کانال حاوی جواب تمیز و نهاییه که برای نمایش به کاربر در نظر گرفته شده.
نقش Developer و سلسلهمراتب: علاوه بر نقش System و User، یه نقش جدید به اسم Developer اضافه شده. این نقش برای تعریف ابزارها و دادن دستورالعملهای سطح بالا به مدل استفاده میشه. نکته حیاتی، سلسلهمراتب دستوریه: System > Developer > User. این یعنی دستورات System به Developer و دستورات Developer به User ارجحیت دارن و این به دولوپر کنترل دقیقی روی رفتار مدل میده.
تنظیم سطح استدلال (Reasoning Effort): داخل System پراپمت میتونید مشخص کنید که مدل چقدر برای رسیدن به جواب تلاش کنه. سه سطح low، medium و high وجود داره که به شما اجازه میده بین سرعت و دقت، یه تریدآف هوشمندانه برقرار کنید.
کتابخانه رسمی: برای اینکه درگیر پیچیدگیهای رندر و پارس کردن این فرمت رشتهای نشید، OpenAI یه کتابخونه رسمی به اسم openai-harmony منتشر کرده. این کتابخونه که هستهش با Rust برای پرفورمنس بالا نوشته شده و با pyo3 به پایتون متصل شده، به شما اجازه میده با آبجکتهای پایتونی مثل Conversation و Message کار کنید و خود کتابخونه زحمت تبدیلش به توکنهای مورد نیاز مدل رو میکشه.
به نظر من، فرمت Harmony یه شمشیر دولبهست. از یه طرف، با جدا کردن CoT از جواب نهایی، شفافیت و کنترل بینظیری به دولوپر میده و راه رو برای ساخت ایجنتهای پیچیده باز میکنه. از طرف دیگه، پیچیدگی پیادهسازی رو به شدت بالا میبره و مسئولیت مدیریت این فرمت کاملاً روی دوش دولوپره. در واقع OpenAI داره یه استاندارد جدید رو به کامیونیتی تحمیل میکنه که برای استفاده از مدلهاش باید ازش پیروی کنید.
💻 اطلاعات بیشتر و کتابخانه Harmony
🛠 Join @LLMEngineers Community
چند تا از کلیدیترین ویژگیهای این فرمت:
کانالهای مجزا (Channels): این نوآورانهترین بخش فرمته. به جای اینکه کل جواب مدل یه تیکه تکست باشه، به کانالهای مختلف تقسیم میشه:
کانال analysis: اینجا جاییه که Chain-of-Thought (CoT) یا همون فرآیند فکری مدل قرار میگیره. این همون بخشیه که فیلتر نشده و نباید مستقیم به کاربر نشون داده بشه.
کانال commentary: برای فراخوانی ابزارها (tool calls) استفاده میشه. مدل توی این کانال، پارامترهای فانکشن مورد نظرش رو به صورت ساختاریافته برمیگردونه.
کانال final: این کانال حاوی جواب تمیز و نهاییه که برای نمایش به کاربر در نظر گرفته شده.
نقش Developer و سلسلهمراتب: علاوه بر نقش System و User، یه نقش جدید به اسم Developer اضافه شده. این نقش برای تعریف ابزارها و دادن دستورالعملهای سطح بالا به مدل استفاده میشه. نکته حیاتی، سلسلهمراتب دستوریه: System > Developer > User. این یعنی دستورات System به Developer و دستورات Developer به User ارجحیت دارن و این به دولوپر کنترل دقیقی روی رفتار مدل میده.
تنظیم سطح استدلال (Reasoning Effort): داخل System پراپمت میتونید مشخص کنید که مدل چقدر برای رسیدن به جواب تلاش کنه. سه سطح low، medium و high وجود داره که به شما اجازه میده بین سرعت و دقت، یه تریدآف هوشمندانه برقرار کنید.
کتابخانه رسمی: برای اینکه درگیر پیچیدگیهای رندر و پارس کردن این فرمت رشتهای نشید، OpenAI یه کتابخونه رسمی به اسم openai-harmony منتشر کرده. این کتابخونه که هستهش با Rust برای پرفورمنس بالا نوشته شده و با pyo3 به پایتون متصل شده، به شما اجازه میده با آبجکتهای پایتونی مثل Conversation و Message کار کنید و خود کتابخونه زحمت تبدیلش به توکنهای مورد نیاز مدل رو میکشه.
به نظر من، فرمت Harmony یه شمشیر دولبهست. از یه طرف، با جدا کردن CoT از جواب نهایی، شفافیت و کنترل بینظیری به دولوپر میده و راه رو برای ساخت ایجنتهای پیچیده باز میکنه. از طرف دیگه، پیچیدگی پیادهسازی رو به شدت بالا میبره و مسئولیت مدیریت این فرمت کاملاً روی دوش دولوپره. در واقع OpenAI داره یه استاندارد جدید رو به کامیونیتی تحمیل میکنه که برای استفاده از مدلهاش باید ازش پیروی کنید.
💻 اطلاعات بیشتر و کتابخانه Harmony
🛠 Join @LLMEngineers Community
GitHub
GitHub - openai/harmony: Renderer for the harmony response format to be used with gpt-oss
Renderer for the harmony response format to be used with gpt-oss - openai/harmony
این جدول ارزیابی Hallucination مدلهای gpt-oss خیلی چیزها رو روشن میکنه.
نتایج فاجعهباره. مدل gpt-oss-20b روی بنچمارک SimpleQA نرخ توهم یا همون hallucination rate حدود ۹۱٪ داره. یعنی از هر ۱۰ تا جواب، ۹ تاش اشتباه یا ساختگیه. دقتش هم طبیعتاً خیلی پایینه، فقط حدود ۷٪.
نسخه بزرگتر یعنی gpt-oss-120b یکم بهتره ولی هنوز نرخ توهم ۷۸٪ داره که اصلاً قابل قبول نیست. در مقایسه، مدل OpenAI o4-mini با اینکه خودش هم بینقص نیست، نرخ توهم و دقت به مراتب بهتری رو ثبت کرده.
🛠 Join @LLMEngineers Community
نتایج فاجعهباره. مدل gpt-oss-20b روی بنچمارک SimpleQA نرخ توهم یا همون hallucination rate حدود ۹۱٪ داره. یعنی از هر ۱۰ تا جواب، ۹ تاش اشتباه یا ساختگیه. دقتش هم طبیعتاً خیلی پایینه، فقط حدود ۷٪.
نسخه بزرگتر یعنی gpt-oss-120b یکم بهتره ولی هنوز نرخ توهم ۷۸٪ داره که اصلاً قابل قبول نیست. در مقایسه، مدل OpenAI o4-mini با اینکه خودش هم بینقص نیست، نرخ توهم و دقت به مراتب بهتری رو ثبت کرده.
🛠 Join @LLMEngineers Community
نتایج بنچمارکهای EQ-Bench و نویسندگی خلاقانه برای مدلهای gpt-oss منتشر شده و خب، ناامیدکنندهست. این مدلها در زمینههایی که نیاز به هوش هیجانی و خلاقیت داره، عملکرد ضعیفی از خودشون نشون دادن.
این ضعف احتمالاً به خاطر معماری MoE و تعداد پایین پارامترهای فعال (active parameters) در هر لحظهست. با اینکه مدل کلی مثلاً ۱۲۰ میلیارد پارامتر داره، اما برای پردازش هر توکن فقط بخش کوچکی از این پارامترها فعال میشن. این موضوع میتونه روی غنای زبانی و خلاقیت خروجی تأثیر منفی بذاره. البته عملکرد بالای این مدلها در بنچمارکهای دیگه نشون میده که اولویتهای OpenAI جای دیگهای بوده؛ احتمالاً روی کدنویسی، استدلال منطقی و tool use
🛠 Join @LLMEngineers Community
این ضعف احتمالاً به خاطر معماری MoE و تعداد پایین پارامترهای فعال (active parameters) در هر لحظهست. با اینکه مدل کلی مثلاً ۱۲۰ میلیارد پارامتر داره، اما برای پردازش هر توکن فقط بخش کوچکی از این پارامترها فعال میشن. این موضوع میتونه روی غنای زبانی و خلاقیت خروجی تأثیر منفی بذاره. البته عملکرد بالای این مدلها در بنچمارکهای دیگه نشون میده که اولویتهای OpenAI جای دیگهای بوده؛ احتمالاً روی کدنویسی، استدلال منطقی و tool use
🛠 Join @LLMEngineers Community
بزودی خودم یسری بنچمارک روی عملکرد مدل روی دانش زبان فارسی و ایرانی اجرا میکنم و مدل های مختلف رو تست میزنم از جمله مدل های gpt-oss
ملکرد مدلهای gpt-oss که OpenAI منتشر کرده روی بنچمارک ترکیبی Artificial Analysis Intelligence Index قابل قبوله، ولی بهترین نیست. این مدلها بیشتر از اینکه یکهتاز باشن، یه بیسلاین قدرتمند برای جامعه اپنسورس محسوب میشن.
در نهایت، این مدلها بیشتر برای تحقیق و توسعه و ساختن مدلهای فاینتیون شده روی یک معماری قوی کاربرد دارن تا اینکه مستقیماً در پروداکشن، بهترین نتیجه رو بدن. رقابت در فضای اپنسورس خیلی جدیه.
🛠 Join @LLMEngineers Community
در نهایت، این مدلها بیشتر برای تحقیق و توسعه و ساختن مدلهای فاینتیون شده روی یک معماری قوی کاربرد دارن تا اینکه مستقیماً در پروداکشن، بهترین نتیجه رو بدن. رقابت در فضای اپنسورس خیلی جدیه.
🛠 Join @LLMEngineers Community
LLM Engineers
بزودی خودم یسری بنچمارک روی عملکرد مدل روی دانش زبان فارسی و ایرانی اجرا میکنم و مدل های مختلف رو تست میزنم از جمله مدل های gpt-oss
یه بنچمارک برای ارزیابی مدلهای زبان بزرگ روی زبان فارسی ساختم به اسم ParsiEval. هدفم این بود که یه ابزار عملی و استاندارد بسازم تا بتونیم عملکرد واقعی مدلها رو بدون هایپ و تبلیغات، روی زبان فارسی بسنجیم.
این پروژه شامل ۳۶۴ سوال چهارگزینهای تو حوزههای مختلف مثل علم، تاریخ و دانش عمومیه. سعی کردم سوالات جوری باشه که فهم و استدلال مدلها رو به زبان فارسی به چالش بکشه.
نتایجی که از ارزیابی مدلهای مختلف گرفتم خیلی جالبه. همونطور که انتظار میرفت، gpt-4o با حدود ۷۹٪ دقت، بهترین عملکرد رو داشت. اما نکته مهمتر برای من، عملکرد خوب مدلهای اپنسورس مثل kimi-k2 با دقت 77٪ بود.
به نظر من، یکی از کلیدیترین یافتههای این پروژه، افت عملکرد شدید بعضی مدلها مثل سری Qwen موقع فعال کردن حالت thinking یا همون reasoning بود. برای مثال، مدل ۲۳۵ میلیارد پارامتری Qwen وقتی این قابلیت روشنه، دقتش از ۷۰٪ به زیر ۳۰٪ سقوط میکنه. این یعنی این قابلیتها هنوز برای تسکهای فارسی بهینه نشدن و گاهی نتیجه عکس میدن.
این نسخه اول پروژه هست. دارم روی نسخه دوم کار میکنم که دیتاست ارزیابی خیلی بزرگتری خواهد داشت و مدلهای جدیدتر رو هم پوشش میده تا بتونیم تصویر دقیقتری از وضعیت مدلهای فارسی داشته باشیم.
کل پروژه، دیتاست و نتایج روی گیتهاب موجوده. اگه براتون مفید بود یا از این حرکت حمایت میکنید، یه استار ⭐️ تو گیتهاب خیلی کمککنندهست و بهم انگیزه میده که پروژه رو با قدرت بیشتری ادامه بدم.
🧑💻 پروژه ParsiEval در گیتهاب
🛠 Join @LLMEngineers Community
این پروژه شامل ۳۶۴ سوال چهارگزینهای تو حوزههای مختلف مثل علم، تاریخ و دانش عمومیه. سعی کردم سوالات جوری باشه که فهم و استدلال مدلها رو به زبان فارسی به چالش بکشه.
نتایجی که از ارزیابی مدلهای مختلف گرفتم خیلی جالبه. همونطور که انتظار میرفت، gpt-4o با حدود ۷۹٪ دقت، بهترین عملکرد رو داشت. اما نکته مهمتر برای من، عملکرد خوب مدلهای اپنسورس مثل kimi-k2 با دقت 77٪ بود.
به نظر من، یکی از کلیدیترین یافتههای این پروژه، افت عملکرد شدید بعضی مدلها مثل سری Qwen موقع فعال کردن حالت thinking یا همون reasoning بود. برای مثال، مدل ۲۳۵ میلیارد پارامتری Qwen وقتی این قابلیت روشنه، دقتش از ۷۰٪ به زیر ۳۰٪ سقوط میکنه. این یعنی این قابلیتها هنوز برای تسکهای فارسی بهینه نشدن و گاهی نتیجه عکس میدن.
این نسخه اول پروژه هست. دارم روی نسخه دوم کار میکنم که دیتاست ارزیابی خیلی بزرگتری خواهد داشت و مدلهای جدیدتر رو هم پوشش میده تا بتونیم تصویر دقیقتری از وضعیت مدلهای فارسی داشته باشیم.
کل پروژه، دیتاست و نتایج روی گیتهاب موجوده. اگه براتون مفید بود یا از این حرکت حمایت میکنید، یه استار ⭐️ تو گیتهاب خیلی کمککنندهست و بهم انگیزه میده که پروژه رو با قدرت بیشتری ادامه بدم.
🧑💻 پروژه ParsiEval در گیتهاب
🛠 Join @LLMEngineers Community
اینم از نتایج دقت مدلها روی بنچمارک ParsiEval که ساختم.
مدل gpt-4o با ۷۹٪ دقت در صدره بعدشم horizon-beta (احتمالا gpt-5-mini) ولی مدلهای اوپن سورس kimi و llama-4 هم خیلی نزدیک دنبالش میکنن. مدلهای جدید اپنسورس OpenAI یعنی gpt-oss هم عملکرد نسبتا خوبی داشتن و نسخه ۱۲۰ میلیارد پارامتریش به دقت ۷۰٪ رسیده.
🛠 Join @LLMEngineers Community
مدل gpt-4o با ۷۹٪ دقت در صدره بعدشم horizon-beta (احتمالا gpt-5-mini) ولی مدلهای اوپن سورس kimi و llama-4 هم خیلی نزدیک دنبالش میکنن. مدلهای جدید اپنسورس OpenAI یعنی gpt-oss هم عملکرد نسبتا خوبی داشتن و نسخه ۱۲۰ میلیارد پارامتریش به دقت ۷۰٪ رسیده.
🛠 Join @LLMEngineers Community
تو تستای خودم و به نظر شخصی خودم مدلای gpt-oss مزخرف هستن !!
همچنان kimi و qwen رو ترجیح میدم
همچنان kimi و qwen رو ترجیح میدم
تیم Qwen دو مدل جدید ۴ میلیاردی از سری Qwen3 منتشر کرده که برای سیستمهای شخصی یا حتی موبایل ها گزینههای خیلی خوبی به حساب میان.
این سری جدید شامل دو نسخه تخصصی میشه:
نسخه Instruct: بدون reasoning : برای تسکهای عمومی، پشتیبانی چندزبانه و کار با متنهای طولانی (long-context) بهینهسازی شده.
نسخه Thinking: با (reasoning) : برای استدلال در حوزههای منطق، ریاضی، علوم و کدنویسی طراحی شده.
🤗 مدل Instruct در Hugging Face
🤗 مدل Thinking در Hugging Face
🛠 Join @LLMEngineers Community
این سری جدید شامل دو نسخه تخصصی میشه:
نسخه Instruct: بدون reasoning : برای تسکهای عمومی، پشتیبانی چندزبانه و کار با متنهای طولانی (long-context) بهینهسازی شده.
نسخه Thinking: با (reasoning) : برای استدلال در حوزههای منطق، ریاضی، علوم و کدنویسی طراحی شده.
🤗 مدل Instruct در Hugging Face
🤗 مدل Thinking در Hugging Face
🛠 Join @LLMEngineers Community
LLM Engineers
تیم Qwen دو مدل جدید ۴ میلیاردی از سری Qwen3 منتشر کرده که برای سیستمهای شخصی یا حتی موبایل ها گزینههای خیلی خوبی به حساب میان. این سری جدید شامل دو نسخه تخصصی میشه: نسخه Instruct: بدون reasoning : برای تسکهای عمومی، پشتیبانی چندزبانه و کار با متنهای…
این مدل با ۴ میلیارد پارامتر به صورت نیتیو از طول محتوای ۲۵۶ هزار توکن پشتیبانی میکنه. این یعنی برای کار با اسناد خیلی طولانی روی سیستمهای با منابع محدود، گزینهی مناسبیه.
نکته جالب اینجاست که این مدل ۴ میلیاردی توی بعضی بنچمارکهای استدلال و دانش، از نسخه 30B-A3B هم بهتر عمل کرده. مثلا در بنچمارک استدلال منطقی ZebraLogic امتیاز ۸۰.۲ رو گرفته در حالی که نسخه ۳۰ میلیاردی امتیاز ۳۳.۲ داره. یا در بنچمارک ریاضی AIME25 امتیاز ۴۷.۴ رو در مقابل ۲۱.۶ کسب کرده. این جهش عملکردی توی تسکهای پیچیده برای یه مدل با این سایز خیلی قابل توجهه.
همچنین در بنچمارک Arena-Hard v2 که همسویی مدل با ترجیحات انسانی رو میسنجه، امتیاز ۴۳.۴ رو گرفته که نسبت به امتیاز ۹.۵ نسخه قبلی، یک بهبود چشمگیر محسوب میشه و نشون میده که مدل در پاسخ به سوالات باز و تولید متن باکیفیت، خیلی بهتر شده.
به نظر من، این نتایج نشون میده که با post-training هدفمند و دیتاستهای باکیفیت، میشه مدلهای کوچک رو به سطح عملکردی مدلهای خیلی بزرگتر رسوند، مخصوصا در حوزههای تخصصی.
برای استفاده عملی، این مدل به راحتی با ابزارهایی مثل vLLM و sglang برای دیپلوی و با Ollama و llama.cpp برای اجرا روی سیستمهای لوکال سازگاره. قابلیت tool-calling قوی هم داره که برای Agent ها به قابل استفادهست.
🛠 Join @LLMEngineers Community
نکته جالب اینجاست که این مدل ۴ میلیاردی توی بعضی بنچمارکهای استدلال و دانش، از نسخه 30B-A3B هم بهتر عمل کرده. مثلا در بنچمارک استدلال منطقی ZebraLogic امتیاز ۸۰.۲ رو گرفته در حالی که نسخه ۳۰ میلیاردی امتیاز ۳۳.۲ داره. یا در بنچمارک ریاضی AIME25 امتیاز ۴۷.۴ رو در مقابل ۲۱.۶ کسب کرده. این جهش عملکردی توی تسکهای پیچیده برای یه مدل با این سایز خیلی قابل توجهه.
همچنین در بنچمارک Arena-Hard v2 که همسویی مدل با ترجیحات انسانی رو میسنجه، امتیاز ۴۳.۴ رو گرفته که نسبت به امتیاز ۹.۵ نسخه قبلی، یک بهبود چشمگیر محسوب میشه و نشون میده که مدل در پاسخ به سوالات باز و تولید متن باکیفیت، خیلی بهتر شده.
به نظر من، این نتایج نشون میده که با post-training هدفمند و دیتاستهای باکیفیت، میشه مدلهای کوچک رو به سطح عملکردی مدلهای خیلی بزرگتر رسوند، مخصوصا در حوزههای تخصصی.
برای استفاده عملی، این مدل به راحتی با ابزارهایی مثل vLLM و sglang برای دیپلوی و با Ollama و llama.cpp برای اجرا روی سیستمهای لوکال سازگاره. قابلیت tool-calling قوی هم داره که برای Agent ها به قابل استفادهست.
🛠 Join @LLMEngineers Community
یه نفر تو توییتر چندتا نکتهی عملی بعد از ور رفتن و فاینتیون کردن مدل Dots.OCR روی دیتاستهای مختلف گفته که قابل توجهه:
این مدل یه VLMـه که همزمان layout parsing و OCR/HTR انجام میده.
۱. مدل خیلی سریع استایلهای جدید annotation رو یاد میگیره. این یکی از اولین چیزاییه که توش خوب میشه. پس اگه میخواید فقط برای layout parsing ازش استفاده کنید، با تعداد نمونهی کم هم میتونید بهش یاد بدید که خروجی رو طبق ساختار دلخواه شما تولید کنه.
۲. بهبود عملکردش روی زبانهایی که از قبل پشتیبانی میکنه خیلی راحتتر از حد انتظار بود. روی اسناد تایپی و دستنویس به صورت out-of-the-box کار میکنه و میتونه نویز زیاد رو هم مدیریت کنه.
۳. روی زبانهای غیرمنتظرهای مثل یونانی باستان (تایپی) و لاتین (هم تایپی و هم بعضی دستنویسها) هم بدون هیچ تغییری کار میکنه. البته با دستنویسهای لاتین قرون وسطایی به چالش خورده.
۴. یاد دادن یه زبان کاملاً جدید و unsupported به مدل، کار خیلی سختیه. با ۲۳۰۰ صفحه دیتا از یه زبان اسلاوی کلیسایی قدیمی، مدل شروع به یادگیری بعضی کاراکترهای جدید کرده، ولی توی درک syntax زبان به مشکل خورده. دلیلش اینه که language model پایهی اون، هیچ درکی از این زبان نداشته.
۵. در مورد catastrophic forgetting یا فراموشی مدل بعد از فاینتیون: گاهی این اتفاق خوبه. مثلاً برای layout parsing، شما میخواید که مدل روش قبلی خودش رو فراموش کنه و با فرمت جدید شما هماهنگ بشه. البته تکنیکهایی برای جلوگیری از فراموشی وجود داره، ولی کاملاً به مدل و کاربرد نهایی بستگی داره.
به نظر من، این مدل SOTA نیست، ولی با توجه به اندازهی ۱.۷ میلیارد پارامترش، احتمالاً یکی از بهترینها تو کلاس خودشه. اینکه دو تا کار پیچیدهی layout parsing و OCR/HTR رو همزمان انجام میده، خیلی با ارزشه. چالش یادگیری یه زبان جدید هم طبیعیه و نشون میده که کیفیت base model چقدر اهمیت داره.
یه فورک هم از ریپازیتوری Dots.OCR منتشر کرذه که اسکریپتهای لازم برای full fine-tune کردن مدل رو اضافه کرده. این برای کسایی که میخوان مدل رو روی دیتای خودشون ترین کنن خوبه.
اسکریپت اصلی برای ترین، train_simple.py هست که هنوز جای کار داره، ولی روی یه GPU مدل H200 تست شده و کار میکنه. مدلهای اولیهی ترینشده هم روی هاگینگ فیس در دسترسه.
📃 ریپازیتوری فورک شدهDots.OCR
🛠 Join @LLMEngineers Community
این مدل یه VLMـه که همزمان layout parsing و OCR/HTR انجام میده.
۱. مدل خیلی سریع استایلهای جدید annotation رو یاد میگیره. این یکی از اولین چیزاییه که توش خوب میشه. پس اگه میخواید فقط برای layout parsing ازش استفاده کنید، با تعداد نمونهی کم هم میتونید بهش یاد بدید که خروجی رو طبق ساختار دلخواه شما تولید کنه.
۲. بهبود عملکردش روی زبانهایی که از قبل پشتیبانی میکنه خیلی راحتتر از حد انتظار بود. روی اسناد تایپی و دستنویس به صورت out-of-the-box کار میکنه و میتونه نویز زیاد رو هم مدیریت کنه.
۳. روی زبانهای غیرمنتظرهای مثل یونانی باستان (تایپی) و لاتین (هم تایپی و هم بعضی دستنویسها) هم بدون هیچ تغییری کار میکنه. البته با دستنویسهای لاتین قرون وسطایی به چالش خورده.
۴. یاد دادن یه زبان کاملاً جدید و unsupported به مدل، کار خیلی سختیه. با ۲۳۰۰ صفحه دیتا از یه زبان اسلاوی کلیسایی قدیمی، مدل شروع به یادگیری بعضی کاراکترهای جدید کرده، ولی توی درک syntax زبان به مشکل خورده. دلیلش اینه که language model پایهی اون، هیچ درکی از این زبان نداشته.
۵. در مورد catastrophic forgetting یا فراموشی مدل بعد از فاینتیون: گاهی این اتفاق خوبه. مثلاً برای layout parsing، شما میخواید که مدل روش قبلی خودش رو فراموش کنه و با فرمت جدید شما هماهنگ بشه. البته تکنیکهایی برای جلوگیری از فراموشی وجود داره، ولی کاملاً به مدل و کاربرد نهایی بستگی داره.
به نظر من، این مدل SOTA نیست، ولی با توجه به اندازهی ۱.۷ میلیارد پارامترش، احتمالاً یکی از بهترینها تو کلاس خودشه. اینکه دو تا کار پیچیدهی layout parsing و OCR/HTR رو همزمان انجام میده، خیلی با ارزشه. چالش یادگیری یه زبان جدید هم طبیعیه و نشون میده که کیفیت base model چقدر اهمیت داره.
یه فورک هم از ریپازیتوری Dots.OCR منتشر کرذه که اسکریپتهای لازم برای full fine-tune کردن مدل رو اضافه کرده. این برای کسایی که میخوان مدل رو روی دیتای خودشون ترین کنن خوبه.
اسکریپت اصلی برای ترین، train_simple.py هست که هنوز جای کار داره، ولی روی یه GPU مدل H200 تست شده و کار میکنه. مدلهای اولیهی ترینشده هم روی هاگینگ فیس در دسترسه.
📃 ریپازیتوری فورک شدهDots.OCR
🛠 Join @LLMEngineers Community
LLM Engineers
https://www.youtube.com/watch?v=0Uu_VJeVVfo
امروز OpenAI یه ایونت برای معرفی GPT-5 برگزار کرد. خلاصهی فنی و بیتعارفش رو اینجا میگم. تمرکز اصلی روی بهتر کردن مدل برای کار واقعی بود، نه فقط بنچمارکهای آکادمیک.
کاربرد اصلی GPT-5، تبدیل شدن به یک ابزار تخصصیتر و قابل اعتمادتره. دیگه قرار نیست بین یه مدل سریع و یه مدل کند ولی هوشمند انتخاب کنیم. این مدل به صورت خودکار تشخیص میده که یک پرامپت به "تفکر" عمیقتری نیاز داره یا نه و منابع محاسباتی رو بر همون اساس تخصیص میده. به این قابلیت میگن dynamic reasoning یا تفکر پویا. هدف اینه که مدل برای تسکهای ساده سریع باشه و برای مسائل پیچیده، خودش زمان بیشتری برای تحلیل بذاره.
از نظر فنی، چندتا آپدیت مهم برای دولوپرها وجود داره:
سه مدل جدید توی API عرضه شده: GPT-5 (مدل اصلی)، GPT-5 mini و GPT-5 nano که هر کدوم برای کاربردهای مختلف با trade-off بین هزینه و سرعت طراحی شدن.
قابلیت Custom Tools اضافه شده که به مدل اجازه میده خروجی رو به صورت plaintext بده، نه فقط JSON. این برای وقتی که آرگومانهای طولانی مثل یک اسکریپت کد داریم خیلی کاربردیه و دردسر escaping کاراکترها توی JSON رو حذف میکنه.
با Structured Outputs میتونیم خروجی مدل رو با استفاده از regular expression یا context-free grammar محدود کنیم تا همیشه فرمت دلخواه ما رو داشته باشه.
یک پارامتر جدید برای verbosity (پرحرفی) و reasoning effort (میزان تلاش برای استدلال) اضافه شده که کنترل بیشتری روی رفتار مدل به ما میده.
کانتکست هم به 400K توکن افزایش پیدا کرده.
بخش بزرگی از ارائه روی قابلیتهای کدنویسی متمرکز بود. دموهایی از ساخت اپلیکیشنهای وب تعاملی، داشبوردهای مالی و حتی بازیهای ساده 3D با یک پرامپت نشون داده شد. به نظر من، این دموها چشمگیر بودن ولی هنوز توی محیط ایزوله اجرا میشن. چالش اصلی وقتیه که این مدل بخواد روی یک codebase واقعی و پیچیده کار کنه، باگی رو پیدا کنه و بدون اینکه چیز دیگهای رو خراب کنه، اون رو رفع کنه. دمو رفع باگ توی Cursor قدم مثبتی بود، ولی باید دید در عمل چقدر قابل اتکاست.
یه نکتهی مهم دیگه، بحث آموزش مدل با دادههای سینتتیک بود. گفته شد که از نسلهای قبلی مدلها (o3) برای تولید "برنامه درسی" (curriculum) باکیفیت برای آموزش GPT-5 استفاده شده. این یعنی یک حلقهی بهبود بازگشتی (recursive improvement loop) که در اون مدلها به آموزش نسل بعدی خودشون کمک میکنن. این ایده جدید نیست ولی اجرای موفقش میتونه جهش بزرگی در کیفیت مدلها ایجاد کنه.
در مورد ایمنی، سیستم جدیدی به اسم Safe Completion معرفی شد. به جای رد کردن کامل پرامپتهای حساس (dual-use)، مدل سعی میکنه در چارچوب ایمنی، حداکثر کمک رو ارائه بده. مثلاً به جای اینکه دستور ساخت مواد منفجره رو بده، در مورد پروتکلهای ایمنی و راهنمای سازنده صحبت میکنه. این رویکرد روی کاغذ خوبه، ولی ممکنه در عمل به جوابهای محافظهکارانه و غیرکاربردی منجر بشه.
به نظر من، GPT-5 یک پیشرفت تدریجی ولی مهم نسبت به GPT-4o هست. تمرکز روی reliability و agentic behavior توی کدنویسی، دقیقاً همون چیزیه که جامعه دولوپرها نیاز داشت. اشباع شدن بنچمارکها (مثل کسب امتیاز ۹۹٪ در یک تست) نشون میده که دیگه این معیارها به تنهایی برای سنجش توانایی مدل کافی نیستن و باید روی کاربردهای واقعی تمرکز کرد. GPT-5 قدم درستی در این مسیره، ولی هایپ "متخصص سطح PhD" رو باید نادیده گرفت. این یک ابزار بهتره، نه یک ایجنت مستقل.
در ادامه پست های بیشتری راجب جزئیاتش قرار میدم
🛠 Join @LLMEngineers Community
کاربرد اصلی GPT-5، تبدیل شدن به یک ابزار تخصصیتر و قابل اعتمادتره. دیگه قرار نیست بین یه مدل سریع و یه مدل کند ولی هوشمند انتخاب کنیم. این مدل به صورت خودکار تشخیص میده که یک پرامپت به "تفکر" عمیقتری نیاز داره یا نه و منابع محاسباتی رو بر همون اساس تخصیص میده. به این قابلیت میگن dynamic reasoning یا تفکر پویا. هدف اینه که مدل برای تسکهای ساده سریع باشه و برای مسائل پیچیده، خودش زمان بیشتری برای تحلیل بذاره.
از نظر فنی، چندتا آپدیت مهم برای دولوپرها وجود داره:
سه مدل جدید توی API عرضه شده: GPT-5 (مدل اصلی)، GPT-5 mini و GPT-5 nano که هر کدوم برای کاربردهای مختلف با trade-off بین هزینه و سرعت طراحی شدن.
قابلیت Custom Tools اضافه شده که به مدل اجازه میده خروجی رو به صورت plaintext بده، نه فقط JSON. این برای وقتی که آرگومانهای طولانی مثل یک اسکریپت کد داریم خیلی کاربردیه و دردسر escaping کاراکترها توی JSON رو حذف میکنه.
با Structured Outputs میتونیم خروجی مدل رو با استفاده از regular expression یا context-free grammar محدود کنیم تا همیشه فرمت دلخواه ما رو داشته باشه.
یک پارامتر جدید برای verbosity (پرحرفی) و reasoning effort (میزان تلاش برای استدلال) اضافه شده که کنترل بیشتری روی رفتار مدل به ما میده.
کانتکست هم به 400K توکن افزایش پیدا کرده.
بخش بزرگی از ارائه روی قابلیتهای کدنویسی متمرکز بود. دموهایی از ساخت اپلیکیشنهای وب تعاملی، داشبوردهای مالی و حتی بازیهای ساده 3D با یک پرامپت نشون داده شد. به نظر من، این دموها چشمگیر بودن ولی هنوز توی محیط ایزوله اجرا میشن. چالش اصلی وقتیه که این مدل بخواد روی یک codebase واقعی و پیچیده کار کنه، باگی رو پیدا کنه و بدون اینکه چیز دیگهای رو خراب کنه، اون رو رفع کنه. دمو رفع باگ توی Cursor قدم مثبتی بود، ولی باید دید در عمل چقدر قابل اتکاست.
یه نکتهی مهم دیگه، بحث آموزش مدل با دادههای سینتتیک بود. گفته شد که از نسلهای قبلی مدلها (o3) برای تولید "برنامه درسی" (curriculum) باکیفیت برای آموزش GPT-5 استفاده شده. این یعنی یک حلقهی بهبود بازگشتی (recursive improvement loop) که در اون مدلها به آموزش نسل بعدی خودشون کمک میکنن. این ایده جدید نیست ولی اجرای موفقش میتونه جهش بزرگی در کیفیت مدلها ایجاد کنه.
در مورد ایمنی، سیستم جدیدی به اسم Safe Completion معرفی شد. به جای رد کردن کامل پرامپتهای حساس (dual-use)، مدل سعی میکنه در چارچوب ایمنی، حداکثر کمک رو ارائه بده. مثلاً به جای اینکه دستور ساخت مواد منفجره رو بده، در مورد پروتکلهای ایمنی و راهنمای سازنده صحبت میکنه. این رویکرد روی کاغذ خوبه، ولی ممکنه در عمل به جوابهای محافظهکارانه و غیرکاربردی منجر بشه.
به نظر من، GPT-5 یک پیشرفت تدریجی ولی مهم نسبت به GPT-4o هست. تمرکز روی reliability و agentic behavior توی کدنویسی، دقیقاً همون چیزیه که جامعه دولوپرها نیاز داشت. اشباع شدن بنچمارکها (مثل کسب امتیاز ۹۹٪ در یک تست) نشون میده که دیگه این معیارها به تنهایی برای سنجش توانایی مدل کافی نیستن و باید روی کاربردهای واقعی تمرکز کرد. GPT-5 قدم درستی در این مسیره، ولی هایپ "متخصص سطح PhD" رو باید نادیده گرفت. این یک ابزار بهتره، نه یک ایجنت مستقل.
در ادامه پست های بیشتری راجب جزئیاتش قرار میدم
🛠 Join @LLMEngineers Community
یه چارت جدید از بنچمارک SWE-bench ساختم که وضعیت فعلی مدلهای کدنویسی رو به خوبی نشون میده. این بنچمارک توانایی مدلها در حل کردن issue های واقعی از پروژههای گیتهاب رو میسنجه.
رقابت در صدر جدول خیلی نزدیکه. مدل Grok 4 Heavy با ۷۵٪ اوله، ولی GPT-5 با ۷۴.۹٪ و Opus 4.1 با ۷۴.۵٪ تقریباً همسطح هستن. این اختلافهای ناچیز در عمل تفاوتی ایجاد نمیکنه و نشون میده که بهترین مدلها به یک سطح از توانایی رسیدن.
به نظر من، دیگه تفاوتهای ۱-۲ درصدی در این بنچمارکها معیار اصلی نیست. الان فاکتورهایی مثل کیفیت API، قیمت و قابلیتهای agentic برای کار طولانیمدت روی یک پروژه، اهمیت بیشتری پیدا کرده. تمرکز از روی صرفاً «حل مسئله» به سمت «یکپارچهسازی در workflow توسعه» شیفت پیدا کرده.
🛠 Join @LLMEngineers Community
رقابت در صدر جدول خیلی نزدیکه. مدل Grok 4 Heavy با ۷۵٪ اوله، ولی GPT-5 با ۷۴.۹٪ و Opus 4.1 با ۷۴.۵٪ تقریباً همسطح هستن. این اختلافهای ناچیز در عمل تفاوتی ایجاد نمیکنه و نشون میده که بهترین مدلها به یک سطح از توانایی رسیدن.
به نظر من، دیگه تفاوتهای ۱-۲ درصدی در این بنچمارکها معیار اصلی نیست. الان فاکتورهایی مثل کیفیت API، قیمت و قابلیتهای agentic برای کار طولانیمدت روی یک پروژه، اهمیت بیشتری پیدا کرده. تمرکز از روی صرفاً «حل مسئله» به سمت «یکپارچهسازی در workflow توسعه» شیفت پیدا کرده.
🛠 Join @LLMEngineers Community
🎯 100 Days of Reading ML / LLM Papers Challenge
Day 5: Learning representations by back-propagating errors
🔗 https://gwern.net/doc/ai/nn/1986-rumelhart-2.pdf
🛠 @LLMEngineers
Day 5: Learning representations by back-propagating errors
🔗 https://gwern.net/doc/ai/nn/1986-rumelhart-2.pdf
Additional Resources:
⦁ 📄 Principles of training multi-layer neural network using backpropagation
⦁ 🎥 CS231n Winter 2016: Lecture 4: Backpropagation, Neural Networks 1
⦁ 📄 Yet Another Derivation of Backpropagation in Matrix Form
⦁ 🎥 Backpropagation, intuitively | Deep Learning Chapter 3
🛠 @LLMEngineers
LLM Engineers
🎯 100 Days of Reading ML / LLM Papers Challenge Day 5: Learning representations by back-propagating errors 🔗 https://gwern.net/doc/ai/nn/1986-rumelhart-2.pdf Additional Resources: ⦁ 📄 Principles of training multi-layer neural network using backpropagation…
این مقاله یکی از سنگبناهای دیپ لرنینگه که الگوریتم back-propagation رو به شکل امروزی به دنیا معرفی کرد. با اینکه مال سال ۱۹۸۶ هست، ولی فهمیدنش برای هر مهندس هوش مصنوعی واجبه چون اساس کار اکثر شبکههای عصبی روی همین ایده بنا شده.
کاربرد عملی این الگوریتم، فراهم کردن یک روش کارآمد برای آموزش شبکههای عصبی چندلایه بود. قبل از این، آموزش شبکههایی که لایههای مخفی (hidden layers) داشتن، یک چالش بزرگ بود. پرسپترونهای ساده فقط میتونستن مسائل خطی رو حل کنن و توانایی یادگیری ویژگیهای پیچیده رو نداشتن.
ایده اصلی back-propagation اینه:
۱. Forward Pass:
یک ورودی به شبکه داده میشه و خروجی محاسبه میشه.
۲. محاسبه خطا:
خروجی شبکه با خروجی مطلوب مقایسه و میزان خطا (مثلاً با Mean Squared Error) اندازهگیری میشه.
۳. Backward Pass:
اینجا بخش کلیدی ماجراست. خطا از لایه خروجی به سمت لایههای ورودی پسفرستاده میشه. با استفاده از قاعده زنجیرهای (chain rule) در مشتقگیری، سهم هر وزن (weight) در خطای نهایی محاسبه میشه (∂E/∂w). به عبارت سادهتر، مشخص میشه هر "پیچ" یا وزن، چقدر در اشتباه بودن جواب نهایی مقصر بوده.
۴. آپدیت وزنها:
وزنها در جهتی آپدیت میشن که خطا رو کاهش بده (خلاف جهت گرادیان).
نکته انقلابی این مقاله این بود که نشون داد لایههای مخفی، به صورت خودکار یاد میگیرن که ویژگیهای مهم و معناداری از داده رو استخراج کنن. این همون representation learning هست. در مثال معروف family trees که تو مقاله اومده، واحدهای مخفی یاد گرفته بودن مفاهیمی مثل generation (اینکه فرد متعلق به کدام نسل است) یا branch of the family (کدام شاخه از خانواده) رو کدگذاری کنن، بدون اینکه کسی این مفاهیم رو بهشون یاد داده باشه.
چند تا نکته فنی مهم که تو همین مقاله بهش اشاره شده و هنوزم کاربرد داره:
Momentum:
برای بهبود سرعت همگرایی و فرار از local minima های ضعیف، یک ترم momentum به آپدیت وزنها اضافه کردن. این ایده پایهی بسیاری از بهینهسازهای مدرن مثل Adam هست.
Random Initialization:
برای شکستن تقارن و جلوگیری از اینکه همه نورونهای یک لایه چیز یکسانی یاد بگیرن، وزنها رو با مقادیر تصادفی کوچک مقداردهی اولیه کردن.
Generalization to RNNs:
در انتهای مقاله، نشون دادن که چطور میشه با باز کردن (unfold) یک شبکه بازگشتی در زمان، از همین الگوریتم برای آموزش اونها استفاده کرد. این ایده، اساس Backpropagation Through Time یا BPTT هست.
به نظر من، این مقاله فقط یک الگوریتم رو معرفی نکرد، بلکه یک پارادایم فکری رو پایهگذاری کرد: اینکه به جای مهندسی ویژگی دستی، میشه به یک مدل یاد داد که خودش ویژگیهای لازم رو کشف کنه. با اینکه نویسندهها متواضعانه گفتن این مدل "شباهت زیادی به یادگیری در مغز نداره"، ولی قدرت محاسباتیش مسیر کل حوزه هوش مصنوعی رو برای همیشه تغییر داد.
🛠 Join @LLMEngineers Community
کاربرد عملی این الگوریتم، فراهم کردن یک روش کارآمد برای آموزش شبکههای عصبی چندلایه بود. قبل از این، آموزش شبکههایی که لایههای مخفی (hidden layers) داشتن، یک چالش بزرگ بود. پرسپترونهای ساده فقط میتونستن مسائل خطی رو حل کنن و توانایی یادگیری ویژگیهای پیچیده رو نداشتن.
ایده اصلی back-propagation اینه:
۱. Forward Pass:
یک ورودی به شبکه داده میشه و خروجی محاسبه میشه.
۲. محاسبه خطا:
خروجی شبکه با خروجی مطلوب مقایسه و میزان خطا (مثلاً با Mean Squared Error) اندازهگیری میشه.
۳. Backward Pass:
اینجا بخش کلیدی ماجراست. خطا از لایه خروجی به سمت لایههای ورودی پسفرستاده میشه. با استفاده از قاعده زنجیرهای (chain rule) در مشتقگیری، سهم هر وزن (weight) در خطای نهایی محاسبه میشه (∂E/∂w). به عبارت سادهتر، مشخص میشه هر "پیچ" یا وزن، چقدر در اشتباه بودن جواب نهایی مقصر بوده.
۴. آپدیت وزنها:
وزنها در جهتی آپدیت میشن که خطا رو کاهش بده (خلاف جهت گرادیان).
نکته انقلابی این مقاله این بود که نشون داد لایههای مخفی، به صورت خودکار یاد میگیرن که ویژگیهای مهم و معناداری از داده رو استخراج کنن. این همون representation learning هست. در مثال معروف family trees که تو مقاله اومده، واحدهای مخفی یاد گرفته بودن مفاهیمی مثل generation (اینکه فرد متعلق به کدام نسل است) یا branch of the family (کدام شاخه از خانواده) رو کدگذاری کنن، بدون اینکه کسی این مفاهیم رو بهشون یاد داده باشه.
چند تا نکته فنی مهم که تو همین مقاله بهش اشاره شده و هنوزم کاربرد داره:
Momentum:
برای بهبود سرعت همگرایی و فرار از local minima های ضعیف، یک ترم momentum به آپدیت وزنها اضافه کردن. این ایده پایهی بسیاری از بهینهسازهای مدرن مثل Adam هست.
Random Initialization:
برای شکستن تقارن و جلوگیری از اینکه همه نورونهای یک لایه چیز یکسانی یاد بگیرن، وزنها رو با مقادیر تصادفی کوچک مقداردهی اولیه کردن.
Generalization to RNNs:
در انتهای مقاله، نشون دادن که چطور میشه با باز کردن (unfold) یک شبکه بازگشتی در زمان، از همین الگوریتم برای آموزش اونها استفاده کرد. این ایده، اساس Backpropagation Through Time یا BPTT هست.
به نظر من، این مقاله فقط یک الگوریتم رو معرفی نکرد، بلکه یک پارادایم فکری رو پایهگذاری کرد: اینکه به جای مهندسی ویژگی دستی، میشه به یک مدل یاد داد که خودش ویژگیهای لازم رو کشف کنه. با اینکه نویسندهها متواضعانه گفتن این مدل "شباهت زیادی به یادگیری در مغز نداره"، ولی قدرت محاسباتیش مسیر کل حوزه هوش مصنوعی رو برای همیشه تغییر داد.
🛠 Join @LLMEngineers Community
LLM Engineers
Photo
مقاله ReAct یه الگوی ساده ولی خیلی قدرتمند رو برای مدلهای زبانی بزرگ (LLM) معرفی میکنه که بهشون اجازه میده همزمان هم استدلال (Reasoning) کنن و هم عمل (Acting). کاربرد اصلیش ساختن ایجنتهای هوشمندیه که بتونن با ابزارهای خارجی (مثل API یا محیطهای تعاملی) کار کنن و تسکهای پیچیده رو حل کنن، بدون اینکه دچار توهم (hallucination) بشن.
ایدهی اصلی اینه که مدلها CoT فقط در ذهن خودشون استدلال میکنن و به دنیای خارج دسترسی ندارن. این باعث میشه خیلی وقتها اطلاعات غلط یا تاریخ مصرف گذشته رو به عنوان فکت ارائه بدن. از طرف دیگه، مدلهای Act-only فقط میتونن یه سری اکشن رو پشت سر هم تولید کنن، ولی توانایی برنامهریزی سطح بالا، ردیابی وضعیت، یا اصلاح برنامه در صورت بروز خطا رو ندارن.
معماری ReAct این دو تا رو با هم ترکیب میکنه و یک حلقه Thought -> Action -> Observation به وجود میاره:
۱. فکر (Thought): مدل اول یه استدلال درونی تولید میکنه. مثلاً "برای حل این مسئله، باید اول فلان اطلاعات رو از ویکیپدیا پیدا کنم." این thought به مدل کمک میکنه تسک رو به مراحل کوچیکتر بشکنه و استراتژی بچینه.
۲. عمل (Action): بر اساس اون فکر، مدل یه اکشن قابل اجرا تولید میکنه. مثلاً search['some entity'].
۳. مشاهده (Observation): این اکشن در یک محیط خارجی (مثلاً API ویکیپدیا) اجرا میشه و نتیجهش به عنوان یه مشاهده به مدل برمیگرده.
این حلقه تکرار میشه تا مدل به جواب نهایی برسه. اینطوری، استدلال مدل همیشه به اطلاعات واقعی و بهروز از دنیای خارج متصل (grounded) باقی میمونه.
نتایج مقاله روی چندتا بنچمارک:
روی تسکهای دانشمحور مثل HotpotQA (پرسش و پاسخ چند مرحلهای)، ReAct به شکل قابل توجهی از CoT قابل اعتمادتره. تحلیل خطاها نشون میده که ۵۶٪ از شکستهای CoT به خاطر توهم اطلاعاته، در حالی که ReAct با دسترسی به اطلاعات خارجی، این مشکل رو تا حد زیادی نداره.
روی تسکهای تصمیمگیری تعاملی مثل ALFWorld (یه بازی متنی) و WebShop (شبیهساز خرید آنلاین)، ReAct با اختلاف زیاد، مدلهای مبتنی بر Imitation Learning و Reinforcement Learning رو شکست میده. مثلا روی ALFWorld نرخ موفقیت رو تا ۳۴٪ و روی WebShop تا ۱۰٪ بالا میبره، اونم در حالی که فقط با یکی دو تا مثال (few-shot) پرامپت شده. این نشون میده که توانایی استدلال پویا، یک مهارت بسیار عمومیتر و کارآمدتر از تقلید صرف از روی هزاران نمونهی انسانیه.
به نظر من، ReAct فقط یه تکنیک پرامپتینگ نیست؛ یه الگوی معماری (architectural pattern) برای ساخت ایجنتهای خودمختاره. تمام فریمورکهای مدرن مثل LangChain یا LlamaIndex که بحث Tool-use رو پیادهسازی میکنن، در هستهی خودشون از همین ایده الهام گرفتن. این مقاله، پشتوانهی علمی و تجربی این معماریه.
البته این روش بینقص هم نیست. بزرگترین چالش اینه که اگه ابزار خارجی اطلاعات نامفید یا خطا برگردونه، مدل ممکنه گیج بشه و تو یه حلقه تکراری گیر کنه. توانایی بازیابی از خطاهای ابزار هنوز جای کار داره. مقاله هم اشاره میکنه که برای تسکهای پیچیده، fine-tuning روی دادههایی با فرمت ReAct میتونه عملکرد رو به شکل چشمگیری بهتر از پرامپتینگ صرف کنه.
در نهایت، ReAct به ما نشون میده که ترکیب استدلال درونی با تعامل با دنیای بیرون، کلید ساختن سیستمهای هوش مصنوعی قدرتمندتر، قابل اعتمادتر و البته قابل تفسیرتره. چون میتونیم قدم به قدم ببینیم مدل به چی فکر کرده و چرا یه تصمیم خاص رو گرفته.
📃 ReAct: Synergizing Reasoning and Acting in Language Models
🛠 Join @LLMEngineers Community
ایدهی اصلی اینه که مدلها CoT فقط در ذهن خودشون استدلال میکنن و به دنیای خارج دسترسی ندارن. این باعث میشه خیلی وقتها اطلاعات غلط یا تاریخ مصرف گذشته رو به عنوان فکت ارائه بدن. از طرف دیگه، مدلهای Act-only فقط میتونن یه سری اکشن رو پشت سر هم تولید کنن، ولی توانایی برنامهریزی سطح بالا، ردیابی وضعیت، یا اصلاح برنامه در صورت بروز خطا رو ندارن.
معماری ReAct این دو تا رو با هم ترکیب میکنه و یک حلقه Thought -> Action -> Observation به وجود میاره:
۱. فکر (Thought): مدل اول یه استدلال درونی تولید میکنه. مثلاً "برای حل این مسئله، باید اول فلان اطلاعات رو از ویکیپدیا پیدا کنم." این thought به مدل کمک میکنه تسک رو به مراحل کوچیکتر بشکنه و استراتژی بچینه.
۲. عمل (Action): بر اساس اون فکر، مدل یه اکشن قابل اجرا تولید میکنه. مثلاً search['some entity'].
۳. مشاهده (Observation): این اکشن در یک محیط خارجی (مثلاً API ویکیپدیا) اجرا میشه و نتیجهش به عنوان یه مشاهده به مدل برمیگرده.
این حلقه تکرار میشه تا مدل به جواب نهایی برسه. اینطوری، استدلال مدل همیشه به اطلاعات واقعی و بهروز از دنیای خارج متصل (grounded) باقی میمونه.
نتایج مقاله روی چندتا بنچمارک:
روی تسکهای دانشمحور مثل HotpotQA (پرسش و پاسخ چند مرحلهای)، ReAct به شکل قابل توجهی از CoT قابل اعتمادتره. تحلیل خطاها نشون میده که ۵۶٪ از شکستهای CoT به خاطر توهم اطلاعاته، در حالی که ReAct با دسترسی به اطلاعات خارجی، این مشکل رو تا حد زیادی نداره.
روی تسکهای تصمیمگیری تعاملی مثل ALFWorld (یه بازی متنی) و WebShop (شبیهساز خرید آنلاین)، ReAct با اختلاف زیاد، مدلهای مبتنی بر Imitation Learning و Reinforcement Learning رو شکست میده. مثلا روی ALFWorld نرخ موفقیت رو تا ۳۴٪ و روی WebShop تا ۱۰٪ بالا میبره، اونم در حالی که فقط با یکی دو تا مثال (few-shot) پرامپت شده. این نشون میده که توانایی استدلال پویا، یک مهارت بسیار عمومیتر و کارآمدتر از تقلید صرف از روی هزاران نمونهی انسانیه.
به نظر من، ReAct فقط یه تکنیک پرامپتینگ نیست؛ یه الگوی معماری (architectural pattern) برای ساخت ایجنتهای خودمختاره. تمام فریمورکهای مدرن مثل LangChain یا LlamaIndex که بحث Tool-use رو پیادهسازی میکنن، در هستهی خودشون از همین ایده الهام گرفتن. این مقاله، پشتوانهی علمی و تجربی این معماریه.
البته این روش بینقص هم نیست. بزرگترین چالش اینه که اگه ابزار خارجی اطلاعات نامفید یا خطا برگردونه، مدل ممکنه گیج بشه و تو یه حلقه تکراری گیر کنه. توانایی بازیابی از خطاهای ابزار هنوز جای کار داره. مقاله هم اشاره میکنه که برای تسکهای پیچیده، fine-tuning روی دادههایی با فرمت ReAct میتونه عملکرد رو به شکل چشمگیری بهتر از پرامپتینگ صرف کنه.
در نهایت، ReAct به ما نشون میده که ترکیب استدلال درونی با تعامل با دنیای بیرون، کلید ساختن سیستمهای هوش مصنوعی قدرتمندتر، قابل اعتمادتر و البته قابل تفسیرتره. چون میتونیم قدم به قدم ببینیم مدل به چی فکر کرده و چرا یه تصمیم خاص رو گرفته.
📃 ReAct: Synergizing Reasoning and Acting in Language Models
🛠 Join @LLMEngineers Community
ایدهی اصلی ایجنتها خیلی سادهتر از چیزیه که به نظر میاد: یه LLM، یه حلقه تکرار و چندتا ابزار. کل داستان همینه. بیشتر پیچیدگیهایی که میبینیم، مربوط به هندل کردن خطاها و موارد خاصه، نه منطق اصلی.
این دیاگرام، چرخهی اصلی یه ایجنت رو نشون میده. یه لوپ ساده بین مدل، محیط و ابزارها که تا رسیدن به جواب نهایی یا یه شرط توقف، ادامه پیدا میکنه.
🛠 Join @LLMEngineers Community
این دیاگرام، چرخهی اصلی یه ایجنت رو نشون میده. یه لوپ ساده بین مدل، محیط و ابزارها که تا رسیدن به جواب نهایی یا یه شرط توقف، ادامه پیدا میکنه.
🛠 Join @LLMEngineers Community