تحلیل سهام با هوش مصنوعی: گردش کار n8n و گزارش‌های SEC

تحلیل سهام با هوش مصنوعی: گردش کار n8n و گزارش‌های SEC

10 دقیقه مطالعه · منتشر شده ۱۴۰۵/۴/۱۸

دانلود workflow

فایل JSON آماده import در n8n — credentialها باید در n8n شما تنظیم شوند.

  1. فایل JSON را دانلود کنید.
  2. در n8n: Workflows → Import from File.
  3. Credentialهای هر node را متصل کنید.
  4. workflow را فعال کنید.

شناسه workflow: 2183 · منبع: کاتالوگ Axeto

اتوماسیون تحلیل بنیادی سهام با گردش کار پرسش و پاسخ هوش مصنوعی

این گردش کار شما را قادر می‌سازد تا تحلیل بنیادی سهام را با ایجاد یک موتور پرسش و پاسخ قدرتمند که از گزارش‌های فصلی و سالانه SEC (فرم 10-K) استفاده می‌کند، خودکار کنید. این گردش کار به عنوان بک‌اندی برای یک سیستم بزرگتر طراحی شده است و می‌تواند با ابزارهای فرانت‌اند مانند عوامل CrewAI یا سایر گردش کارهای n8n برای تولید خودکار سوالات هوشمندانه ادغام شود.

عملکرد اصلی شامل دریافت گزارش‌های سالانه شرکت (فایل‌های PDF) از Google Drive، تبدیل آن‌ها به بردارهای جاسازی (vector embeddings) قابل جستجو، ذخیره این بردارهای جاسازی در یک پایگاه داده برداری Qdrant، و سپس پاسخ به سوالات کاربر با بازیابی و تحلیل بخش‌های مرتبط سند است.

این گردش کار به دو بلوک اصلی و به هم پیوسته تقسیم شده است:

1. دریافت و نمایه‌سازی PDF: این بلوک مسئولیت راه‌اندازی اولیه را بر عهده دارد. گزارش سالانه یک شرکت را از Google Drive دانلود می‌کند، محتوا را به بخش‌های قابل مدیریت تقسیم می‌کند، بردارهای جاسازی را برای هر بخش تولید می‌کند و آن‌ها را در یک فروشگاه برداری Qdrant ذخیره می‌کند. این فرآیند یک نمایه‌ی قابل جستجو از سند ایجاد می‌کند.

2. موتور پرسش و پاسخ: این بلوک به عنوان جزء تعاملی عمل می‌کند. از طریق یک وب‌هوک (webhook) به سوالات ورودی گوش می‌دهد، فروشگاه برداری Qdrant را برای یافتن مرتبط‌ترین اطلاعات جستجو می‌کند و سپس از یک زنجیره تولید مبتنی بر بازیابی (Retrieval-Augmented Generation - RAG) با استفاده از OpenAI برای تدوین پاسخ‌های دقیق استفاده می‌کند. سپس این پاسخ‌ها به عنوان پاسخ وب‌هوک برگردانده می‌شوند.

---

تشریح تفصیلی گردش کار

بلوک ۱: دریافت و نمایه‌سازی PDF

این بخش بر آماده‌سازی داده‌های شما تمرکز دارد. این شامل دریافت یک گزارش PDF، تقسیم آن به بخش‌های قابل فهم، ایجاد نمایش‌های برداری (embedding) از آن متن، و ذخیره این embeddingها در یک پایگاه داده برداری Qdrant برای جستجوی معنایی کارآمد است.

گره‌های (Nodes) درگیر:

  • Manual Trigger
  • Google Drive
  • Default Data Loader
  • Recursive Character Text Splitter
  • Embeddings OpenAI
  • Qdrant Vector Store
  • Sticky Note (مستندسازی)

توضیحات گره‌ها:

  • Manual Trigger

* Type: n8n-nodes-base.manualTrigger

* نقش: فرآیند دریافت و نمایه‌سازی PDF را به صورت دستی آغاز می‌کند. ایده‌آل برای تست یا پردازش دسته‌ای.

* پیکربندی: پارامتر خاصی لازم نیست.

* ورودی: ندارد.

* خروجی: گره Google Drive را فعال می‌کند.

* مشکلات احتمالی: اگر تریگر غیرفعال باشد، اجرای گردش کار ممکن است مسدود شود.

  • Google Drive

* Type: n8n-nodes-base.googleDrive

* نقش: فایل PDF گزارش سالانه مشخص شده را از Google Drive دانلود می‌کند.

* پیکربندی: عملیات روی "download" تنظیم شده است. fileId باید به PDF خاصی که می‌خواهید پردازش کنید (مثلاً crowdstrike.pdf) کدگذاری شود.

* ورودی: توسط گره Manual Trigger فعال می‌شود.

* خروجی: داده‌های باینری فایل PDF.

* اعتبارنامه‌ها: نیاز به یک حساب Google Drive OAuth2 پیکربندی شده دارد.

* مشکلات احتمالی: خطاهای احراز هویت، فایل یافت نشد، یا مشکلات عدم دسترسی.

  • Default Data Loader

* Type: @n8n/n8n-nodes-langchain.documentDefaultDataLoader

* نقش: داده‌های باینری PDF را بارگیری کرده و برای تقسیم متن آماده می‌کند.

* پیکربندی: اطمینان حاصل کنید که splitPages برای پردازش صفحه به صفحه سند فعال است.

* ورودی: داده‌های باینری PDF از گره Google Drive.

* خروجی: اشیاء سند آماده برای قطعه‌بندی.

* مشکلات احتمالی: خطاهای مربوط به فرمت‌های فایل پشتیبانی نشده یا مشکلات تجزیه PDF.

  • Recursive Character Text Splitter

* Type: @n8n/n8n-nodes-langchain.textSplitter

* نقش: سند بارگیری شده را به قطعات متنی کوچک‌تر و قابل مدیریت تقسیم می‌کند. این برای embedding و بازیابی مؤثر حیاتی است.

* پیکربندی:

* chunkSize: روی 3000 کاراکتر تنظیم شده است.

* chunkOverlap: روی 200 کاراکتر تنظیم شده است تا زمینه بین قطعات حفظ شود.

* ورودی: داده‌های سند از Default Data Loader.

* خروجی: قطعات متنی مجزا.

* ملاحظات: اسناد بسیار بزرگ منجر به تعداد قابل توجهی قطعه می‌شوند. محدودیت‌های توکن احتمالی در مراحل بعدی را در نظر داشته باشید.

  • Embeddings OpenAI

* Type: @n8n/n8n-nodes-langchain.embeddingsOpenAi

* نقش: با استفاده از API OpenAI، بردارهای جاسازی (vector embeddings) را برای هر قطعه متن ایجاد می‌کند. این embeddingها معنای معنایی متن را نشان می‌دهند.

* پیکربندی: از تنظیمات پیش‌فرض استفاده می‌کند و به کلید API OpenAI شما نیاز دارد.

* ورودی: قطعات متن از Recursive Character Text Splitter.

* خروجی: بردارهای جاسازی برای هر قطعه.

* اعتبارنامه‌ها: به کلید API OpenAI شما نیاز دارد.

* مشکلات احتمالی: محدودیت‌های نرخ API OpenAI یا خطاهای احراز هویت.

  • Qdrant Vector Store

* Type: @n8n/n8n-nodes-langchain.vectorStoreQdrant

* نقش: embeddingهای تولید شده و قطعات متنی متناظر آن‌ها را در یک پایگاه داده برداری Qdrant درج می‌کند.

* پیکربندی:

* Mode: روی "Insert" تنظیم شده است.

* collectionId: به "crowd" کدگذاری شده است. در صورت نیاز می‌توانید این را تغییر دهید.

* ورودی: embeddingها از "Embeddings OpenAI" و قطعات متن از "Default Data Loader".

* خروجی: تأیید درج موفقیت‌آمیز در Qdrant.

* اعتبارنامه‌ها: به اعتبارنامه‌های API Qdrant شما نیاز دارد.

* مشکلات احتمالی: مشکلات اتصال با Qdrant، خرابی احراز هویت، یا عدم وجود مجموعه مشخص شده.

  • Sticky Note (توضیح مرحله ۱)

* Type: n8n-nodes-base.stickyNote

* محتوا: "این بلوک PDF را دریافت می‌کند، آن را به قطعات تقسیم می‌کند و در فروشگاه برداری Qdrant درج می‌کند."

* نقش: توضیحی سریع از هدف بلوک ارائه می‌دهد.

---

بلوک ۲: موتور پرسش و پاسخ

این بخش قابلیت پرسش و پاسخ تعاملی را فعال می‌کند. این به سوالات ورودی گوش می‌دهد، اطلاعات مرتبط را از اسناد نمایه‌شده شما بازیابی می‌کند و از هوش مصنوعی برای تولید پاسخ‌های دقیق از نظر زمینه استفاده می‌کند.

گره‌های (Nodes) درگیر:

  • Webhook
  • Embeddings OpenAI (برای پرس‌وجو)
  • Qdrant Vector Store (حالت بازیابی)
  • Vector Store Retriever
  • Retrieval QA Chain
  • OpenAI Chat Model
  • Respond to Webhook
  • Sticky Note (مستندسازی)

توضیحات گره‌ها:

  • Webhook

* Type: n8n-nodes-base.webhook

* نقش: به عنوان نقطه ورود برای دریافت سوالات کاربر از طریق درخواست‌های HTTP POST عمل می‌کند.

* پیکربندی:

* یک مسیر منحصر به فرد برای وب‌هوک خود تنظیم کنید.

* responseMode: روی "Respond from node" تنظیم شده است تا به گردش کار اجازه دهد پاسخی را برگرداند.

* ورودی: درخواست‌های HTTP POST ورودی، که معمولاً حاوی یک بار داده JSON با سوال کاربر هستند (مثلاً {"body": {"input": "What is the company's revenue?"}}).

* خروجی: گره "Embeddings OpenAI (برای پرس‌وجو)" را فعال می‌کند.

* موارد لبه‌ای: مدیریت JSON نامعتبر، ساختارهای بار داده غیرمنتظره، و اطمینان از امنیت وب‌هوک.

  • Embeddings OpenAI (برای پرس‌وجو)

* Type: @n8n/n8n-nodes-langchain.embeddingsOpenAi

* نقش: بردارهای جاسازی (vector embeddings) را برای سوال ورودی کاربر تولید می‌کند. این برای یافتن قطعات سند مشابه معنایی در فروشگاه برداری ضروری است.

* پیکربندی: از تنظیمات پیش‌فرض استفاده می‌کند.

* ورودی: متن سوال کاربر، که معمولاً از بدنه JSON وب‌هوک استخراج می‌شود.

* خروجی: بردارهای جاسازی پرس‌وجو.

* اعتبارنامه‌ها: به کلید API OpenAI شما نیاز دارد.

* مشکلات احتمالی: محدودیت‌های نرخ API OpenAI یا خطاهای احراز هویت.

  • Qdrant Vector Store (حالت بازیابی)

* Type: @n8n/n8n-nodes-langchain.vectorStoreQdrant

* نقش: به نمونه Qdrant شما متصل می‌شود تا بردارها را بر اساس embeddingهای پرس‌وجو بازیابی کند.

* پیکربندی:

* Mode: روی "Retrieve" تنظیم شده است.

* collectionId: این باید به طور پویا با شرکت یا گزارشی که پرس‌وجو می‌کنید مطابقت داشته باشد. می‌توانید این را با استفاده از یک عبارت بر اساس داده‌های وب‌هوک ورودی تنظیم کنید (مثلاً $json.body.company).

* ورودی: بردارهای جاسازی پرس‌وجو از "Embeddings OpenAI (برای پرس‌وجو)".

* خروجی: بردارهای بازیابی شده از Qdrant، که به Vector Store Retriever ارسال می‌شوند.

* اعتبارنامه‌ها: به اعتبارنامه‌های API Qdrant شما نیاز دارد.

* موارد لبه‌ای: پارامتر شرکت گمشده یا نامعتبر در درخواست وب‌هوک، یا عدم وجود مجموعه مشخص شده در Qdrant.

  • Vector Store Retriever

* Type: @n8n/n8n-nodes-langchain.retrieverVectorStore

* نقش: به عنوان یک رابط برای بازیابی مرتبط‌ترین قطعات سند از فروشگاه برداری Qdrant بر اساس جستجوی شباهت عمل می‌کند.

* پیکربندی:

* topK: روی 5 تنظیم شده است تا ۵ قطعه سند مرتبط‌تر را بازیابی کند. در صورت نیاز تنظیم کنید.

* ورودی: بردارهای بازیابی شده از "Qdrant Vector Store (حالت بازیابی)".

* خروجی: محتوای متنی واقعی قطعات سند مرتبط، که به Retrieval QA Chain ارسال می‌شوند.

* موارد لبه‌ای: هیچ قطعه مرتبطی یافت نشد (نتایج بازیابی خالی) یا مشکل در اتصال به Qdrant.

  • Retrieval QA Chain

* Type: @n8n/n8n-nodes-langchain.chainRetrievalQa

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

* پیکربندی:

* promptType: روی "define" تنظیم شده است تا از یک prompt سفارشی یا prompt استاندارد استفاده کند.

* ورودی: سوال کاربر (از وب‌هوک) و زمینه سند بازیابی شده (از Vector Store Retriever).

* خروجی: متن پاسخ تولید شده، که به گره "Respond to Webhook" ارسال می‌شود.

* موارد لبه‌ای: سوال ورودی گمشده، خرابی بازیابی، یا خطاهای API OpenAI.

  • OpenAI Chat Model

* Type: @n8n/n8n-nodes-langchain.lmChatOpenAi

* نقش: این گره اغلب به طور ضمنی توسط گره chainRetrievalQa استفاده می‌شود، اما می‌تواند به طور جداگانه پیکربندی شود. این مدل زبان است که پاسخ نهایی زبان طبیعی را بر اساس زمینه و سوال ارائه شده تولید می‌کند.

* پیکربندی:

* model: توصیه می‌شود از مدل‌های مقرون به صرفه اما توانمند مانند "gpt-4o-mini" استفاده کنید.

* ورودی: زمینه و سوال از Retrieval QA Chain.

* خروجی: متن پاسخ نهایی.

* اعتبارنامه‌ها: به کلید API OpenAI شما نیاز دارد.

* مشکلات احتمالی: خطاهای API OpenAI، مهلت زمانی، یا تجاوز از محدودیت‌های توکن.

  • Respond to Webhook

* Type: n8n-nodes-base.respondToWebhook

* نقش: پاسخ تولید شده را به عنوان یک پاسخ HTTP به فراخواننده اصلی ارسال می‌کند.

* پیکربندی:

* Response Body: روی فیلد خروجی حاوی پاسخ تنظیم شده است، معمولاً $json.response.text از Retrieval QA Chain.

* ورودی: متن پاسخ از Retrieval QA Chain.

* خروجی: یک پاسخ HTTP به کلاینتی که وب‌هوک را فعال کرده است.

* موارد لبه‌ای: خطاهای قالب‌بندی پاسخ.

  • Sticky Note (توضیح مرحله ۲)

* Type: n8n-nodes-base.stickyNote

* محتوا: "پیام‌های ورودی در فروشگاه برداری Qdrant پرس‌وجو می‌شوند و پاسخ‌ها از طریق وب‌هوک برگردانده می‌شوند."

* نقش: توضیحی سریع از عملکرد این بلوک ارائه می‌دهد.

---

جدول خلاصه

نام نود (Node Name)نوع نود (Node Type)نقش عملکردی (Functional Role)نود(های) ورودی (Input Node(s))نود(های) خروجی (Output Node(s))محتوای یادداشت چسبان (Sticky Note Content)
Manual Triggern8n-nodes-base.manualTriggerشروع فرآیند دریافت PDF-Google Drive
Google Driven8n-nodes-base.googleDriveدانلود فایل PDF گزارش سالانهManual TriggerDefault Data Loader
Default Data Loader@n8n/n8n-nodes-langchain.documentDefaultDataLoaderبارگذاری و تجزیه PDF به اسنادGoogle DriveRecursive Character Text Splitter
Recursive Character Text Splitter@n8n/n8n-nodes-langchain.textSplitterتقسیم سند به قطعات (chunks)Default Data LoaderEmbeddings OpenAI
Embeddings OpenAI@n8n/n8n-nodes-langchain.embeddingsOpenAiتولید بردارهای جاسازی (embeddings) برای قطعات متنRecursive Character Text SplitterQdrant Vector Store
Qdrant Vector Store@n8n/n8n-nodes-langchain.vectorStoreQdrantدرج جاسازی‌ها در پایگاه داده برداری QdrantEmbeddings OpenAI, Default Data Loader-مرحله ۱: دریافت فایل، تقسیم به قطعات و درج در فروشگاه برداری Qdrant.
Webhookn8n-nodes-base.webhookدریافت درخواست‌های پرسش و پاسخ کاربر-Embeddings OpenAI (for query)
Embeddings OpenAI (for query)@n8n/n8n-nodes-langchain.embeddingsOpenAiتولید جاسازی‌های پرس‌وجو برای پرسش و پاسخWebhookQdrant Vector Store (retrieval mode)
Qdrant Vector Store (retrieval)@n8n/n8n-nodes-langchain.vectorStoreQdrantبازیابی بردارها از فهرست شرکتEmbeddings OpenAI (for query)Vector Store Retriever
Vector Store Retriever@n8n/n8n-nodes-langchain.retrieverVectorStoreبازیابی قطعات سند مرتبطQdrant Vector Store (retrieval mode)Retrieval QA Chain
Retrieval QA Chain@n8n/n8n-nodes-langchain.chainRetrievalQaپردازش پرسش و تولید پاسخWebhook, Vector Store Retriever, OpenAI Chat ModelRespond to Webhookمرحله ۲: پیام ورودی از فروشگاه برداری پرس‌وجو شده و پاسخ از طریق Webhook برگردانده می‌شود.
Respond to Webhookn8n-nodes-base.respondToWebhookارسال پاسخ تولید شده به فراخوانندهRetrieval QA Chain-

Nodeهای استفاده‌شده

سوالات متداول

این گردش کار n8n چه کاری انجام می‌دهد؟

این گردش کار n8n به شما امکان می‌دهد تحلیل بنیادی سهام را با ساخت یک موتور پرسش و پاسخ هوش مصنوعی که از گزارش‌های 10-K کمیسیون بورس و اوراق بهادار (SEC) استفاده می‌کند، خودکار کنید. این گردش کار فایل‌های PDF را پردازش کرده، بردارهای جاسازی قابل جستجو ایجاد می‌کند و با استفاده از تکنیک Retrieval-Augmented Generation (RAG) به سوالات پاسخ می‌دهد.

چه ابزارهایی در این گردش کار استفاده شده‌اند؟

این گردش کار از گره‌های n8n مانند Google Drive برای دریافت فایل‌ها، گره‌های Langchain برای پردازش متن (Text Splitter)، تولید بردارهای جاسازی (Embeddings OpenAI) و ذخیره‌سازی در پایگاه داده برداری (Qdrant Vector Store) استفاده می‌کند. همچنین از OpenAI برای تولید پاسخ‌ها و وب‌هوک‌ها برای تعامل استفاده می‌شود.

چگونه این گردش کار به سوالات پاسخ می‌دهد؟

پس از پردازش و نمایه‌سازی گزارش‌های 10-K، گردش کار به سوالات ورودی از طریق یک وب‌هوک گوش می‌دهد. سپس پایگاه داده برداری Qdrant را برای یافتن مرتبط‌ترین اطلاعات جستجو کرده و از یک مدل زبانی بزرگ (مانند OpenAI) با استفاده از تکنیک RAG برای تدوین پاسخ‌های دقیق بر اساس اطلاعات بازیابی شده استفاده می‌کند.

workflowهای مرتبط

این workflow در کاتالوگ Axeto.ai بایگانی شده است. لایسنس اصلی متعلق به سازنده workflow است.