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

سلب مسئولیت: این گزارشی است که با ابزار من تولید شده است: 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