برنامه نویسی

توضیح کد: “طوفان: سنتز موضوع از طریق بازیابی و سؤال چند ساله پرسیدن”

سلب مسئولیت: این گزارشی است که با ابزار من تولید شده است: https://github.com/dteam-top/tsw-cli. آن را به عنوان یک آزمایش مشاهده کنید نه یک تحقیق رسمی ،

توجه: این توضیح فقط پوشش می دهد knowledge_storm در طوفان طوفان زیرا با منافع من هماهنگ است.


خلاصه

این مخزن اجرای خط لوله Wiki و نسخه مشترک آن ، Co-Storm ، اجرای طوفان (آزمایش سیستماتیک مدل های عقیده و قوی) را فراهم می کند. Storm با هدف خودکار سازی فرایند دانش دانش ، به ویژه برای تولید مقالات شبیه ویکی پدیا. این مدل های بزرگ زبان (LLMS) را برای کارهای مختلفی مانند جستجوی اطلاعات ، تولید طرح ریزی ، نوشتن مقاله و پولیش اعمال می کند. این مخزن همچنین اسکریپت های نمونه ای را برای سفارشی سازی ارائه می دهد ، و به کاربران این امکان را می دهد تا سیستم را با مدل های زبان و منابع داده مورد نظر خود تطبیق دهند.

ماژول

  • knowledge_storm.storm_wiki: خط لوله اصلی ویکی طوفان را برای تولید خودکار دانش و تولید مقاله اجرا می کند.
  • knowledge_storm.collaborative_storm: خط لوله همبستگی را اجرا می کند ، که چارچوب اصلی طوفان را با جستجوی اطلاعات مشترک افزایش می دهد.
  • knowledge_storm.lm: رابط ها و پیاده سازی ها را برای مدل های مختلف زبان بزرگ (LLM) مورد استفاده در خط لوله طوفان تعریف می کند.
  • knowledge_storm.rm: رابط ها و پیاده سازی ها را برای ماژول های مختلف بازیابی (RMS) که برای دریافت اطلاعات از منابع خارجی استفاده می شود ، تعریف می کند.
  • knowledge_storm.utils: توابع ابزار را برای پرونده I/O ، پردازش متن و سایر کارهای مشترک فراهم می کند.
  • knowledge_storm.dataclass: کلاسهای داده مورد استفاده در طول خط لوله طوفان را برای نمایندگی مقالات ، قطعه های اطلاعاتی و سایر داده های ساختاری تعریف می کند.

ساخت رمز

بخش 1: خط لوله طوفان ویکی (knowledge_storm/storm_wiki)

در این بخش شامل اجرای اصلی خط لوله طوفان ویکی است که تولید مقالات شبیه ویکی پدیا است.

  • engine.py: نقطه ارکستراسیون مرکزی برای خط لوله ویکی طوفان. تعریف می کند STORMWikiRunner کلاس ، مسئول اجرای مراحل مختلف خط لوله:

    • دانش دانش: از یک نماینده مکالمه برای جمع آوری اطلاعات در مورد یک موضوع از اینترنت استفاده می کند.
    • طرح کلی: براساس اطلاعات جمع آوری شده ، یک طرح ساختاری برای مقاله ایجاد می کند.
    • تولید مقاله: محتوای مقاله را با گسترش در طرح کلی با شواهد ذکر شده تولید می کند.
    • پرداخت مقاله: مقاله تولید شده را تصفیه می کند ، خلاصه و حذف نسخه های تکراری را اضافه می کند.

    در STORMWikiLMConfigs کلاس تنظیمات مربوط به LLM های مختلف مورد استفاده در هر مرحله را محاصره می کند و امکان سفارشی سازی و بهینه سازی را فراهم می کند. Runner از الگوی استراتژی استفاده می کند تا از موتورهای مختلف جستجو استفاده شود.

  • modules فهرست راهنما: شامل اجرای هر مرحله در خط لوله طوفان ویکی به عنوان ماژول های جداگانه است:

    • knowledge_curation.py: مرحله درمان دانش را با استفاده از StormKnowledgeCurationModuleبشر
    • outline_generation.py: مرحله تولید طرح کلی را با استفاده از StormOutlineGenerationModuleبشر
    • article_generation.py: مرحله تولید مقاله را با استفاده از StormArticleGenerationModuleبشر
    • article_polish.py: مرحله پولیش مقاله را با استفاده از StormArticlePolishingModuleبشر
    • persona_generator.py: نسل شخصیت را با استفاده از آن پیاده سازی می کند StormPersonaGeneratorبشر
    • storm_dataclass.py: کلاسهای داده را تعریف می کند (StormInformationTableبا StormArticleبا DialogueTurn) برای نشان دادن داده های مورد استفاده در خط لوله ویکی طوفان.
    • callback.py: یک کلاس پایه را برای دستگیرندگان پاسخ به تماس تعریف می کند و به کاربران امکان می دهد منطق سفارشی را در مراحل مختلف خط لوله تزریق کنند.

بخش 2: خط لوله طوفان مشارکتی (knowledge_storm/collaborative_storm)

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

  • engine.py: مشابه خط لوله ویکی طوفان ، این پرونده مشخص می کند CoStormRunner کلاس ، که مراحل مختلف خط لوله همبستگی را هماهنگ می کند.

    • مفاهیمی مانند:
    • عوامل متخصص: متخصصان شبیه سازی شده با دیدگاه های مختلف که در فرایند جستجوی اطلاعات شرکت می کنند.
    • تعدیل کننده: نماینده ای که مکالمه را راهنمایی می کند و دیدگاه های جدید را تزریق می کند.
    • پایگاه دانش: یک ساختار سلسله مراتبی برای سازماندهی اطلاعات جمع آوری شده.

    در CollaborativeStormLMConfigs کلاس پیکربندی های LLM را برای عوامل و ماژول های مختلف مورد استفاده در خط لوله همبستگی تعریف می کند.

  • modules فهرست راهنما: شامل اجرای ماژول های مختلف مورد استفاده در خط لوله همبستگی است:

    • grounded_question_answering.py: ماژول پاسخ سوال را با استفاده از AnswerQuestionModuleبشر
    • grounded_question_generation.py: ماژول تولید سوال را برای مجری پیاده سازی می کند.
    • expert_generation.py: ماژول نسل خبره را برای ایجاد عوامل متخصص شبیه سازی شده پیاده سازی می کند.
    • collaborative_storm_utils.py: توابع ابزار خاص را برای خط لوله همبستگی ارائه می دهد.
    • simulate_user.py: عامل کاربر شبیه سازی شده را پیاده سازی می کند.
    • warmstart_hierarchical_chat.py: ماژول شروع گرم را برای اولیه سازی مکالمه با اطلاعات پس زمینه پیاده سازی می کند.
    • knowledge_base_summary.py: برای تهیه خلاصه پایه دانش برای هر نوبت استفاده می شود.
    • costorm_expert_utterance_generator.py: ابزاری برای تولید سخنان خبره همبستگی.
    • co_storm_agents.py: انواع عامل های مختلف مورد استفاده در طوفان را اجرا می کند ، مانند CoStormExpertبا SimulatedUserوت Moderatorبشر
    • information_insertion_module.py: برای درج اطلاعات مربوطه در پایگاه دانش استفاده می شود.
    • callback.py: یک کلاس پایه را برای دستگیرندگان پاسخ به تماس تعریف می کند و به کاربران امکان می دهد منطق سفارشی را در مراحل مختلف خط لوله تزریق کنند.

بخش 3: مدل زبان و ماژول های بازیابی (knowledge_storm/lmبا knowledge_storm/rm)

در این بخش رابط ها و پیاده سازی ها برای LLM های مختلف و ماژول های بازیابی مورد استفاده در خط لوله طوفان تعریف شده است.

  • knowledge_storm/lm: شامل اجرای LLM های مختلف ، مانند OpenAIModelبا AzureOpenAIModelبا GoogleModelبا ClaudeModelبا DeepSeekModelبا GroqModelبا OllamaClientوت LitellmModelبشر این کلاس ها یک رابط سازگار برای تعامل با LLM های مختلف فراهم می کنند و این امکان را می دهد که خط لوله طوفان به راحتی با مدلهای مختلف سازگار شود. استفاده مشترک از این مدل ها را می توان با بررسی ردیابی کرد LMConfigsبشر

  • knowledge_storm/rm: شامل اجرای ماژول های مختلف بازیابی ، مانند YouRMبا BingSearchبا BraveRMبا SerperRMبا DuckDuckGoSearchRMبا TavilySearchRMبا SearXNGبا VectorRMبا AzureAISearch وت GoogleSearchبشر این کلاس ها یک رابط کاربری مداوم برای واکشی اطلاعات از منابع مختلف خارجی فراهم می کنند و این امکان را می دهد که خط لوله طوفان بر روی منابع مختلف داده باشد.

    • کلاس های ماژول بازیابی dspy.Retrieve رابط ، به آنها اجازه می دهد تا یکپارچه در خط لوله طوفان ادغام شوند.

بخش 4: توابع ابزار و کلاسهای داده (knowledge_storm/utilsبا knowledge_storm/dataclass)

در این بخش توابع ابزار و کلاسهای داده مورد استفاده در خط لوله طوفان ارائه شده است.

  • knowledge_storm/utils: شامل توابع ابزار برای پرونده I/O ، پردازش متن و سایر کارهای مشترک است.

    • ArticleTextProcessing: توابع ابزار مانند limit_word_count_preserve_newlineبا remove_citationsبا update_citation_indexوت parse_article_into_dict در چندین مکان برای پردازش متن مقاله استفاده می شود.
    • WebPageHelper: این کلاس شامل عملکردی برای بارگیری صفحات وب برای سایر موتورهای جستجو برای تولید قطعه است.
    • QdrantVectorStoreManager: کلاس یاور برای عملکرد بردار.
  • knowledge_storm/dataclass: کلاسهای داده مورد استفاده در طول خط لوله طوفان را برای نمایندگی مقالات ، قطعه های اطلاعاتی و سایر داده های ساختاری تعریف می کند.

    • DialogueTurn: نشان دهنده یک چرخش واحد در مکالمه بین عوامل است.
    • StormInformationTable: مجموعه ای از قطعه های اطلاعاتی را که در مرحله درمان دانش جمع شده است ، نشان می دهد.
    • StormArticle: مقاله ای با بخش ها و بخش ها و منابع را نشان می دهد.
    • KnowledgeNode: DataClass که ساختار mindmap را برای آن پیاده سازی می کند Co-Stormبشر
    • KnowledgeBase: یک کلاس که MindMap را اجرا می کند.
    • ConversationTurn: DataClass که جزئیات مربوط به چرخش مکالمه را پیاده سازی می کند.

تماس های API خارجی

  • API های موتور جستجو: خط لوله Storm از API های مختلف موتور جستجو (شما ، جستجوی بینگ ، جستجوی شجاع ، serper.dev ، duckduckgosearch ، tavilysearch ، azureaisearch ، googlesearch ، searxng) برای واکشی اطلاعات از اینترنت استفاده می کند. این API ها به کلیدهای API نیاز دارند.
  • API های LLM: خط لوله طوفان از API های مختلف LLM (Openai ، Azure Openai ، Google Gemini ، Claude Anthropic ، Deepseek ، Groq ، Ollama ، Boexai) استفاده می کند تا متن هایی مانند سؤالات ، پاسخ ها ، طرح ها و مقالات را تولید کند. این API ها همچنین به کلیدهای API نیاز دارند.
  • API Qdrant: خط لوله طوفان از Qdrant به عنوان پایگاه داده بردار خود استفاده می کند.

بینش

  • خط لوله Wiki Storm با استفاده از LLM ها ، دانش را به صورت خودکار انجام می دهد و یک راه حل قابل تنظیم برای تولید مقالات مانند ویکی پدیا ارائه می دهد.
  • خط لوله همبستگی یک رویکرد مشترک به دنبال اطلاعات را معرفی می کند و نمایندگان متخصص را برای ارتقاء کیفیت و تنوع محتوای تولید شده شبیه سازی می کند.
  • این مخزن یک طراحی مدولار را فراهم می کند و به کاربران امکان می دهد سیستم را به راحتی با LLM ها و منابع داده های مختلف تطبیق دهند.
  • استفاده از کلاس های داده و توابع ابزار باعث افزایش قابلیت استفاده مجدد و قابلیت حفظ کد می شود.
  • گنجاندن اسکریپت ها و مستندات به عنوان مثال باعث می شود کاربران با خط لوله طوفان شروع کنند و آن را به نیازهای خاص خود سفارشی کنند.

تجربیات طراحی پایگاه کد:

  • مدولار: کد بسیار مدولار است و هر مرحله از خط لوله به عنوان یک ماژول جداگانه اجرا می شود. این امر درک ، حفظ و گسترش کد را آسان تر می کند.
  • انتزاع: استفاده از کلاس ها و رابط های پایه انتزاعی باعث ایجاد انتزاع می شود و این امکان را می دهد که سیستم به راحتی با LLM ها و منابع داده مختلف سازگار شود.
  • پیکربندی: استفاده از کلاسهای پیکربندی به کاربران امکان می دهد رفتار سیستم را بدون تغییر کد تنظیم کنند.

خلاقیت در پایگاه کد:

  • استفاده از LLMS برای درمان دانش خودکار یک رویکرد خلاق برای حل مشکل تولید مقالات با کیفیت بالا است.
  • معرفی یک رویکرد مشترک به دنبال اطلاعات در طوفان ، روشی جدید برای تقویت کیفیت و تنوع محتوای تولید شده است.
  • استفاده از نقشه ذهن به عنوان یک پایگاه دانش در Co-Storm روشی خلاقانه برای سازماندهی و ساختار اطلاعات جمع آوری شده است.

گزارش تهیه شده توسط TSW-X
بخش سیستم های تحقیقاتی پیشرفته
تاریخ: 2025-03-06 11:59:57

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا