تصور کنید یک برنامهنویس هستید که میخواهد تمام جزئیات یک دنیای خیالی را بدون خطا ثبت کند، اما متوجه میشود که حتی سه مغز دیجیتال برتر جهان هم نمیتوانند روی یک تعریف ساده توافق کنند. این تجربه تلخ توسعهدهنده پروژه Scout است؛ ابزاری برای ردیابی کمپینهای بازی D&D که ثابت کرد تکرار، لزوماً به معنای حقیقت نیست. به نقل از وبسایت phpboyscout.uk در تاریخ ۱۴ اکتبر ۲۰۲۶، سازنده این ابزار توضیح داد که چرا اجرای یک عملیات استخراج داده توسط سه ارائهدهنده مختلف هوش مصنوعی، نتوانست یک «رأی اکثریت» ساده برای تشخیص صحت اطلاعات ایجاد کند.

زمینه و بستر: چالش ردیابی کمپینها
یک کمپین بازی رومیزی (Tabletop Campaign) میتواند سالها طول بکشد و جلسات آن معمولاً هر هفته برگزار شود. در طول این مدت، گروه بازیکنان با صدها شخصیت ملاقات میکنند، دهها قول و قرار میبندند و اطلاعاتی کسب میکنند که در نهایت فراموش میشوند. بخش زیادی از این جزئیات هرگز بهطور درست نوشته نمیشوند؛ دلیلش این است که مدیر بازی (DM) اغلب جزئیات — مثلاً نام یک متصدی میخانه — را در همان لحظه و بهصورت بداهه ابداع میکند. شش هفته بعد، وقتی بازیکنان به همان مکان بازمیگردند، انتظار دارند آن شخصیت هنوز وجود داشته باشد و نامش درست باشد.
Scout برای حل این مشکل طراحی شده است. این ابزار جلسات را گوش میدهد و آنها را به واقعیتهای ساختاریافته تبدیل میکند. Scout ردیابی میکند که چه کسی در اتاق حضور داشت، چه کسی چه حرفی زد، چه قولهایی داده شد و بازیکنان اکنون چه اطلاعاتی دارند که در ابتدای جلسه نمیدانستند.
چالش دانش ابداعی (Invented Knowledge)
بیشتر وظایف استخراج داده توسط هوش مصنوعی بر «دانش جهانی» تکیه دارند؛ مثلاً مدل میداند که پاریس یک شهر است. اما در یک بازی RPG رومیزی، هر اسم خاص در لحظه توسط یکی از افراد دور میز ابداع میشود. این اصطلاحات در هیچ جای دیگر جهان معنا ندارند. یک مدل نمیتواند برای اینکه بفهمد «Candlefoot» یک شخص است، یک مکان، یک بیماری یا یک انتخاب اشتباه در زندگی، به دادههای آموزشی خود تکیه کند؛ مدل باید کاملاً به متن پیادهشده (Transcript) و دقت «گوش دادن» خود تکیه کند.
این وضعیت یک محیط با ریسک بالا ایجاد میکند. توسعهدهنده بین «خواندن» (تبدیل صوت به متن یا Transcription) و «نوشتن» (استخراج داده یا Extraction) تفاوت قائل است. یک خطای تبدیل صوت، تنها یک جمله خراب است که خواننده آن را نادیده میگیرد. اما استخراج داده، در واقع یک «نوشتن» در یک مخزن مرجع (Canonical Store) است. یک واقعیت غلط در آنجا بهطور دائمی میماند و تمام تحلیلهای پاییندستی را مسموم میکند. شش ماه بعد، اگر بازیکنی بپرسد اسبهایشان را از چه کسی خریدند، Scout ممکن است پاسخی را با اطمینان کامل ارائه دهد که در واقع غلط ثبت شده است.
برای مقابله با این موضوع، توسعهدهنده پنلی متشکل از Anthropic، Gemini و OpenAI ایجاد کرد. هدف این بود که از تکرار (Redundancy) به عنوان یک بیمه ارزان در برابر ماهیت دائمی یک «نوشتار بد» در پایگاه داده استفاده شود. تئوری این بود که مدلهای مختلف، که روی دادههای متفاوتی آموزش دیدهاند، در جهتهای متفاوتی شکست میخورند و این اجازه میدهد یک رأی اکثریت، توهمات (Hallucinations) را فیلتر کند. این تلاش برای حذف توهمات یادآور راهکارهای ترکیب کدنویسی قطعی و مدلهای زبانی است که پیشتر برای ایجاد گزارشهای مستند و بدون خطا به کار گرفته شده بود.
چرا پنل بهجای پرامپت بهتر؟
اعتراض بدیهی این است که این یک مشکل «پرامپتنویسی» است و فرد باید صرفاً پرامپت بهتری بنویسد یا بهترین مدل را انتخاب کند. اما توسعهدهنده دریافت که این استدلال درست نیست، زیرا مدلها در جهتهای متفاوتی شکست میخوردند.
برای مثال، Gemini مکرراً بهجای استفاده از متن جلسه ارائه شده، به منابع داخلی خود رجوع میکرد؛ رفتاری که توسعهدهنده پیش از این در NotebookLM نیز مشاهده کرده بود. اگر سه نسخه از یک مدل با دمای (Temperature) صفر استفاده میشد، احتمالاً هر سه پاسخ یکسانی میدادند. تکرار واقعی مستلزم «شکستهای مستقل» است و به همین دلیل استفاده از ارائهدهندگان مختلف ضروری بود.
تلهی دانهبندی (The Granularity Trap)
این آزمایش نشان داد که مکانیسم رأیگیری — که تنها با چهل خط کد پیاده شد — بخش آسان کار بود. پروژه واقعی تبدیل شد به حل «مشکل دانهبندی واقعیتها» (Fact-Granularity Problem)؛ چالشی که یک آخر هفته کامل از توسعهدهنده گرفت.
رأی اکثریت فرض میکند شما میتوانید تشخیص دهید چه زمانی دو واقعیت یکی هستند، اما توسعهدهنده دریافت که این کار بسیار سختتر از آن است که به نظر برسد:
- خطاهای دستهبندی (Bundling Errors): دو مدل ممکن است سی ثانیه از بازی را که شامل سه توکن مبهم است استخراج کنند: یک مکان (kettlesteam)، یک ماده (candlefoot) و یک اتفاق (the stolen voice). در حالی که هر دو روی این سه مورد توافق دارند، یک مدل ممکن است اطلاعات مربوط به افرادی که حضور داشتند را هم در این بسته بگنجاند، در حالی که مدل دیگر هزینه آن اتفاق را اضافه کند. آنها با احتمال بالایی توافق دارند اما خروجیهایشان یکسان نیست؛ در واقع اینها سه واقعیت مجزا هستند که در یک جمله مشترک قرار گرفتهاند.
- استنتاج در برابر نامگذاری صریح: در برخی موارد، یک مدل نام چیزی را مستقیماً مینوشت (مثلاً "Jingle Jangle")، در حالی که مدل دیگر فقط به آن اشاره یا استنتاج میکرد. اگر استنتاج درست باشد، واقعیتها با هم توافق دارند، اما هیچ چیزی در متن جلسه وجود ندارد که به شمارنده رأی اجازه دهد تصمیم بگیرد آیا آن استنتاج دقیق بوده است یا خیر.
- عدم تطابق ساختاری: چون مدلها روی «اندازه» یک واقعیت توافق نداشتند، اغلب برای یک اتفاق واحد سه رأی متفاوت میدادند، صرفاً به این دلیل که اتفاقات را به شکلهای متفاوتی تکهتکه (Chop) کرده بودند.
پیادهسازی فنی و هزینهها
این سیستم با استفاده از ماژولهای چت داخلی ساخته شد تا از فراخوانیهای خام HTTP اجتناب شود. پنل از طریق ماژولهای داخلی مجموعه به ارائهدهندگان دسترسی دارد: go/chat که در زیرمجموعه خود chat-anthropic ،chat-gemini و chat-openai را دارد. این ساختار به توسعهدهنده اجازه میدهد ارائهدهندگان را تنها با یک تغییر ساده در تنظیمات و یک وابستگی (Dependency) تعویض کند، بهجای اینکه کل کد را بازنویسی کند.
این رویکرد «استفاده از محصول خود» (Dogfooding) سریعاً یک شکاف در محدودیت نرخ درخواستها (Rate-limiting) در آن ماژولها را آشکار کرد. چون توسعهدهنده از ابزارهای خودش استفاده میکرد، باگ را مستقیماً در لایههای بالایی ماژولها ثبت کرد بهجای اینکه آن را بهصورت محلی وصله (Patch) کند. این نوع اتوماسیون ابزارهای داخلی، مشابه تجربیات متخصصانی است که فرآیندهای دستی را با ابزارهای سفارشی AI جایگزین کردهاند تا بهرهوری عملیاتی را افزایش دهند.
با این حال، این معماری هزینه مالی قابل توجهی دارد. اجرای سه استنتاج (Inference) در جایی که یک خط لوله استاندارد از یک مورد استفاده میکند، هزینه واحد هر جلسه را سه برابر میکند. برای محصولی که بقای آن به هزینه واحد بستگی دارد، این یک تصمیم طراحی حیاتی است. برای نمونهسازی ارزان، توسعهدهنده از یک بکاند محلی Claude استفاده کرد تا از اشتراک پیشپرداخت شده بهره ببرد و اعتبار API مصرف نکند؛ او اشاره کرد که اشتراکی که قبلاً پرداخت شده، بهترین قیمت ممکن است. این چالش مالی دقیقاً همان نقطهای است که در بحث بودجهبندی عاملهای هوش مصنوعی سازمانی به عنوان گلوگاه اصلی تأیید خروجیها شناخته میشود.
فلسفه طراحی
توسعهدهنده استدلال میکند که لیست مدلهای انتخابی، صرفاً یک جزئیات پیادهسازی است. اینکه پنل از Anthropic، Gemini یا OpenAI استفاده کند، کمتر از ساختار مرحله «تطبیق» (Reconciliation) اهمیت دارد. لیست مدلها قابل جایگزینی است؛ اعضا میتوانند تعویض شوند یا تعداد مدلها در مواقعی که ریسک بالاست افزایش و در مواقع عادی کاهش یابد.
هدف این است که تعیین شود آیا یک پنل، «نوشتاری» قابلاعتمادتری نسبت به یک فراخوانی واحد تولید میکند و آیا اختلافات ایجاد شده، ارزش اطلاعاتی کافی برای توجیه هزینه را دارند یا خیر. این رویکرد با ارائهدهندگان هوش مصنوعی به عنوان نقشهای مصرفی برخورد میکند، نه جایگاههای دائمی. این کار تضمین میکند که سیستم حتی اگر مدلها با اعلان دو هفتهای منسوخ شوند یا قیمتها در ۱۸ ماه آینده تغییر کنند، بادوام باقی بماند.
برای این توسعهدهنده، این بررسی دو هفتهای سؤال مرکزی را تغییر داد. مشکل هرگز انتخاب مدل «درست» نبود؛ بلکه درک این بود که در دنیایی از اسمهای ابداعی و متنهای مبهم، یک «واقعیت» (Fact) دقیقاً چیست.
این یافته نشان میدهد که برای استخراج داده با دقت بالا، گلوگاه دیگر توانایی استدلال LLM نیست، بلکه منطقی است که برای تطبیق خروجیهای همپوشان و غیریکسان به منظور رسیدن به یک «منبع واحد حقیقت» (Single Source of Truth) به کار میرود.
گام بعدی شما
- اگر از سیستمهای استخراج داده استفاده میکنید، بهجای تکیه بر یک مدل قدرتمند، خروجیهای دو مدل متفاوت را با یک لایه منطقی ساده مقایسه کنید.
- برای کاهش هزینههای API در محیط توسعه، از مدلهای محلی یا اشتراکهای پیشپرداخت شده استفاده کنید.
- در تعریف «واقعیت» برای مدلهای خود، استانداردهای سختگیرانهای برای اندازه و ساختار دادهها (Granularity) تعیین کنید.
اما داستان سختافزاری این تحول حتی شگفتانگیزتر است — به تحلیل ما دربارهی تراشههای Blackwell مراجعه کنید.




گفتگو