گردش کار n8n: تحقیقات هوش مصنوعی با Bright Data و OpenAI

گردش کار n8n: تحقیقات هوش مصنوعی با Bright Data و OpenAI

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

دانلود workflow

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

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

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

تحقیقات پیشرفته هوش مصنوعی چند منبعی با Bright Data، OpenAI و Redis

این گردش کار یک سیستم تحقیقاتی پیشرفته مبتنی بر هوش مصنوعی را سازماندهی می‌کند. این سیستم پرس‌وجوهای زبان طبیعی را می‌پذیرد، از طریق Bright Data به خراش‌دهی وب از چندین منبع می‌پردازد، اطلاعات را با OpenAI استخراج و سنتز می‌کند و از Redis برای کشینگ استفاده می‌کند. این سیستم برای وظایف تحقیقاتی پیچیده که نیاز به تجزیه پرس‌وجو، جمع‌آوری داده موازی، تجزیه و تحلیل مبتنی بر هوش مصنوعی، اعتبارسنجی منبع و اعلان‌های چند کاناله دارند، طراحی شده است.

این گردش کار و موارد دیگر را در کاتالوگ هوش مصنوعی Axeto کاوش کنید.

نمای کلی گردش کار

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

1. مدیریت ورودی و کشینگ: درخواست‌های ورودی را مدیریت می‌کند، پارامترهای عملیاتی را تنظیم می‌کند و نتایج موجود را در کش Redis برای بهینه‌سازی عملکرد بررسی می‌کند.

2. تجزیه و بهینه‌سازی پرس‌وجو: پیچیدگی پرس‌وجو را تجزیه و تحلیل می‌کند، پرس‌وجوهای پیچیده را به زیرپرس‌وجوهای قابل مدیریت تقسیم می‌کند و هر زیرپرس‌وجو را برای افزایش ارتباط جستجو، اصلاح می‌کند.

3. جستجوی چند منبعی و خراش‌دهی موازی: منابع معتبر وب را با استفاده از هوش مصنوعی و Bright Data شناسایی می‌کند، سپس محتوا را به صورت موازی از این منابع خراش می‌دهد.

4. استخراج، اعتبارسنجی و سنتز داده‌ها: داده‌های ساختاریافته را از محتوای خراش‌داده‌شده استخراج می‌کند، اعتبار منابع را تأیید می‌کند، یافته‌ها را تجمیع می‌کند و خلاصه‌ای جامع از تحقیقات سنتز شده با هوش مصنوعی را به همراه امتیاز اطمینان تولید می‌کند.

5. خروجی و اعلان‌ها: خلاصه نهایی تحقیقات را کش می‌کند، پاسخ‌ها را برای کانال‌های مختلف قالب‌بندی می‌کند و اعلان‌ها را از طریق Slack و ایمیل ارسال می‌کند، در حالی که نتایج را برای حسابرسی ثبت می‌کند.

---

تحلیل جزئیات بلوک‌ها

۱. مدیریت ورودی و کشینگ

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

نودها:

  • Webhook Entry (Webhook)
  • Set Variables (Set)
  • Cache Check (Redis)
  • Check Cache Hit (If)
  • Return Cached Result (Respond to Webhook)
  • Log Cache Hit (Data Table)

جزئیات نودها:

  • Webhook Entry:

* نوع: Webhook

* عملکرد: درخواست‌های HTTP POST ورودی را در نقطه پایانی /advanced-brightdata-search دریافت می‌کند. نیاز به احراز هویت هدر دارد.

* ورودی مورد انتظار: بار داده JSON حاوی prompt, source, language, و notifyEmail.

* خروجی: داده‌های درخواست را به نود Set Variables ارسال می‌کند.

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

  • Set Variables:

* نوع: Set

* عملکرد: متغیرهای کلیدی را از بار داده وب‌هوک استخراج و اختصاص می‌دهد:

* userPrompt: از فیلد source نگاشت شده است.

* cellReference: از فیلد prompt نگاشت شده است.

* outputLanguage: در صورت عدم ارائه، به طور پیش‌فرض "English" است.

* cacheKey: یک هش MD5 که از الحاق prompt و source برای جستجوی کش تولید شده است.

* requestId: یک شناسه منحصر به فرد که ترکیبی از یک مُهر زمانی و یک مقدار هگز تصادفی برای ردیابی است.

* ورودی: داده‌های JSON از نود Webhook Entry.

* خروجی: متغیرها را به نود Cache Check ارسال می‌کند.

* موارد لبه‌ای: فیلدهای ورودی گمشده را با اعمال مقادیر پیش‌فرض مدیریت می‌کند.

  • Cache Check:

* نوع: Redis

* عملکرد: کش Redis را با استفاده از cacheKey تولید شده برای بررسی نتایج از پیش محاسبه شده، پرس و جو می‌کند.

* ورودی: cacheKey از نود Set Variables.

* خروجی: نتایج از Redis به نود Check Cache Hit.

* مدیریت خطا: خطاهای اتصال Redis و عدم موفقیت کش را مدیریت می‌کند.

  • Check Cache Hit:

* نوع: If

* عملکرد: خروجی نود Cache Check را ارزیابی می‌کند تا تعیین کند آیا ضربه کش رخ داده است (یعنی آیا داده‌ای پیدا شده است).

* منطق:

* شاخه True: اگر ضربه کش شناسایی شود، به Return Cached Result و Log Cache Hit ادامه می‌دهد.

* شاخه False: اگر ضربه کش وجود نداشته باشد، به بلوک بعدی (Query Decomposition and Optimization) ادامه می‌دهد.

* ورودی: خروجی از نود Cache Check.

* مدیریت خطا: خطاهای احتمالی ارزیابی عبارت را دریافت می‌کند.

  • Return Cached Result:

* نوع: Respond to Webhook

* عملکرد: بلافاصله پاسخ JSON کش شده را به درخواست وب‌هوک اصلی برمی‌گرداند، از جمله هدر X-Cache: HIT.

* ورودی: داده‌های JSON کش شده تجزیه شده.

* موارد لبه‌ای: مشکلات احتمالی با داده‌های کش شده بدشکل را مدیریت می‌کند.

  • Log Cache Hit:

* نوع: Data Table

* عملکرد: رویدادهای ضربه کش را در یک جدول داده برای اهداف نظارت و حسابرسی ثبت می‌کند.

* ورودی: داده‌های متنی مربوط به ضربه کش.

---

۲. تجزیه و بهینه‌سازی پرس‌وجو

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

نودها:

  • Rate Limit Check (Code)
  • Multi-Step Reasoning Agent (LangChain Agent)
  • GPT-4o (Reasoning) (OpenAI GPT-4o)
  • Reasoning Output Parser (Structured Output Parser)
  • Split Sub-Queries (SplitOut)
  • Query Optimizer Agent (LangChain Agent)
  • GPT-4o Mini (Optimizer) (OpenAI GPT-4o-mini)
  • Optimizer Output Parser (Structured Output Parser)

جزئیات نودها:

  • Rate Limit Check:

* نوع: Code

* عملکرد: با استفاده از کلیدهای Redis بر اساس دقیقه فعلی، محدودیت نرخ (مثلاً ۶۰ درخواست در دقیقه) را پیاده‌سازی می‌کند تا از بارگذاری بیش از حد سرویس‌های پایین‌دستی جلوگیری شود.

* ورودی: در صورت عدم موفقیت ضربه کش، فعال می‌شود.

* خروجی: به Multi-Step Reasoning Agent ادامه می‌دهد.

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

  • Multi-Step Reasoning Agent:

* نوع: LangChain Agent

* عملکرد: از مدل GPT-4o برای تجزیه و تحلیل پیچیدگی پرس‌وجوی کاربر استفاده می‌کند. اگر پیچیده تلقی شود، پرس‌وجو را به ۲-۵ زیرپرس‌وجو منطقی تجزیه می‌کند.

* Prompt: به هوش مصنوعی دستور می‌دهد تا پیچیدگی پرس‌وجو را تجزیه و تحلیل کرده و آن را با در نظر گرفتن زمینه ارائه شده، تجزیه کند.

* ورودی: متغیرها از نود Rate Limit Check.

* خروجی: JSON حاوی isComplex (boolean)، subQueries (array)، و reasoning (text).

* مدل زیربنایی: GPT-4o (Reasoning) با دمای ۰.۳ برای خلاقیت کنترل شده پیکربندی شده است.

* مدیریت خطا: تأخیر مدل هوش مصنوعی، خطاها و شکست‌های تجزیه خروجی را مدیریت می‌کند.

  • Reasoning Output Parser:

* نوع: Structured Output Parser

* عملکرد: خروجی JSON از Multi-Step Reasoning Agent را به یک فرمت ساختاریافته تجزیه می‌کند.

* موارد لبه‌ای: JSON بدشکل را مدیریت می‌کند.

  • Split Sub-Queries:

* نوع: SplitOut

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

* ورودی: خروجی استدلال تجزیه شده حاوی subQueries.

* خروجی: زیرپرس‌وجوهای جداگانه به Query Optimizer Agent.

  • Query Optimizer Agent:

* نوع: LangChain Agent

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

* ورودی: زیرپرس‌وجوهای جداگانه از Split Sub-Queries.

* خروجی: شیء JSON حاوی پرس‌وجوی بهینه شده و فراداده‌های مرتبط.

* مدل زیربنایی: GPT-4o Mini (Optimizer) با دمای پایین (۰.۱) برای بهینه‌سازی متمرکز پیکربندی شده است.

* مدیریت خطا: خطاها و شکست‌های تجزیه هوش مصنوعی را مدیریت می‌کند.

  • Optimizer Output Parser:

* نوع: Structured Output Parser

* عملکرد: خروجی JSON از Query Optimizer Agent را تجزیه می‌کند.

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

---

۳. جستجوی چند منبعی و خراشیدن موازی

هدف: این بلوک با استفاده از ابزارهای هوش مصنوعی و Bright Data، منابع وب معتبر را شناسایی کرده و سپس محتوا را از این منابع به طور همزمان خراش می‌دهد.

نودها:

  • Multi-Source Search Agent (LangChain Agent)
  • Bright Data MCP Tool (Bright Data MCP Client Tool)
  • GPT-4o (Search) (OpenAI GPT-4o)
  • Search Output Parser (Structured Output Parser)
  • Split URLs for Parallel Scraping (SplitOut)
  • Parallel Web Scraping (HTTP Request)

جزئیات نودها:

  • Multi-Source Search Agent:

* نوع: LangChain Agent

* عملکرد: از هوش مصنوعی (GPT-4o) برای جستجوی ۵ URL معتبرتر مرتبط با پرس‌وجوی بهینه شده استفاده می‌کند. عواملی مانند کشور و انواع منابع مورد انتظار را در نظر می‌گیرد و به منابع معتبر اولویت می‌دهد.

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

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

* خروجی: JSON حاوی آرایه‌ای از ۵ URL، هر کدام با فراداده‌هایی مانند title, sourceType, و credibilityScore.

* مدل زیربنایی: GPT-4o (Search).

* مدیریت خطا: خطاهای جستجوی هوش مصنوعی و مجموعه‌های نتیجه ناقص را مدیریت می‌کند.

  • Bright Data MCP Tool:

* نوع: MCP Client Tool (Bright Data)

* عملکرد: با ابزارهای Web Unlocker یا سرویس‌های مشابه Bright Data برای انجام جستجوهای واقعی وب، با استفاده از شبکه گسترده پروکسی آن‌ها، ادغام می‌شود. با مهلت زمانی ۱۲۰ ثانیه‌ای پیکربندی شده است.

* پیکربندی: از ابزار search_engine در کلاینت MCP استفاده می‌کند. نیاز به توکن API دارد.

* مدیریت خطا: توکن‌های نامعتبر API و مشکلات اتصال شبکه را مدیریت می‌کند.

  • Search Output Parser:

* نوع: Structured Output Parser

* عملکرد: نتایج جستجوی JSON به دست آمده از ادغام Bright Data را تجزیه کرده و آرایه URLهای مرتبط را استخراج می‌کند.

* موارد لبه‌ای: نتایج جستجوی بدشکل را مدیریت می‌کند.

  • Split URLs for Parallel Scraping:

* نوع: SplitOut

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

* ورودی: آرایه URLها از Search Output Parser.

  • Parallel Web Scraping:

* نوع: HTTP Request

* عملکرد: درخواست‌های POST را به API Bright Data برای خراشیدن محتوای هر URL ارسال می‌کند. محتوا در قالب markdown درخواست می‌شود.

* پیکربندی:

* Zone: mcp_unlocker (یا منطقه خراشیدن مشابه Bright Data).

* Country: به صورت پویا بر اساس پیشنهادهای عامل بهینه‌ساز پرس‌وجو تنظیم می‌شود.

* Authorization: نیاز به توکن Bearer برای API Bright Data دارد.

* Timeout: برای هر درخواست ۳۰ ثانیه تنظیم شده است.

* Concurrency: برای مدیریت خراشیدن در دسته‌ها (مثلاً اندازه دسته ۵) پیکربندی شده است.

* ورودی: URLهای جداگانه از Split URLs for Parallel Scraping.

* خروجی: محتوای markdown خراشیده شده برای هر URL.

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

---

۴. استخراج، اعتبارسنجی و سنتز داده‌ها

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

نودها:

  • Advanced Data Extraction & Analysis (LangChain Chain LLM)
  • GPT-4o (Extraction) (OpenAI GPT-4o)
  • Extraction Output Parser (Structured Output Parser)
  • Source Validation Agent (LangChain Agent)
  • GPT-4o Mini (Validation) (OpenAI GPT-4o-mini)
  • Validation Output Parser (Structured Output Parser)
  • Filter Valid Sources (If)
  • Aggregate All Results (Aggregate)
  • Smart Summarizer with Context (LangChain Agent)
  • GPT-4o (Summarizer) (OpenAI GPT-4o)
  • Summary Output Parser (Structured Output Parser)

جزئیات نودها:

  • Advanced Data Extraction & Analysis:

* نوع: LangChain Chain LLM

* عملکرد: از GPT-4o برای استخراج اطلاعات کلیدی از محتوای markdown خراشیده شده استفاده می‌کند. این شامل پاسخ به پرس‌وجو، حقایق، موجودیت‌های نام‌گذاری شده، تحلیل احساسات، جداول داده، نقل قول‌های مستقیم، تاریخ‌ها و امتیاز ارتباط است. دستور داده شده است که دقیق باشد و از توهمات اجتناب کند، با گزینه‌هایی برای ترجمه.

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

* مدل زیربنایی: GPT-4o (Extraction).

* خروجی: داده‌های ساختاریافته استخراج شده از محتوا.

* مدیریت خطا: خطاهای خروجی هوش مصنوعی و مشکلات تجزیه را مدیریت می‌کند.

  • Extraction Output Parser:

* نوع: Structured Output Parser

* عملکرد: خروجی JSON ساختاریافته از فرآیند استخراج را تجزیه می‌کند.

  • Source Validation Agent:

* نوع: LangChain Agent

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

* ورودی: داده‌های استخراج شده و فراداده منبع برای هر صفحه خراشیده شده.

* مدل زیربنایی: GPT-4o Mini (Validation) برای پردازش کارآمد.

* خروجی: شیء JSON حاوی ارزیابی اعتبار، سطح اعتماد، پرچم‌های شناسایی شده و یک مقدار بولی shouldInclude.

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

  • Validation Output Parser:

* نوع: Structured Output Parser

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

  • Filter Valid Sources:

* نوع: If

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

* ورودی: داده‌های اعتبارسنجی شده و تجزیه شده برای هر منبع.

* خروجی: فقط منابع معتبر را به نود Aggregate All Results ارسال می‌کند.

  • Aggregate All Results:

* نوع: Aggregate

* عملکرد: تمام داده‌های استخراج شده و اعتبارسنجی شده را از منابع معتبر در یک مجموعه داده واحد و یکپارچه ادغام می‌کند.

  • Smart Summarizer with Context:

* نوع: LangChain Agent

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

* ورودی: مجموعه داده تجمیع شده و متغیرهای تعریف شده توسط کاربر (مانند outputLanguage).

* مدل زیربنایی: GPT-4o (Summarizer) با دمای ۰.۳.

* خروجی: خلاصه تحقیقاتی نهایی در قالب JSON.

* مدیریت خطا: خطاهای هوش مصنوعی و مشکلات تجزیه را مدیریت می‌کند.

  • Summary Output Parser:

* نوع: Structured Output Parser

* عملکرد: خروجی نهایی خلاصه JSON را تجزیه می‌کند.

---

۵. خروجی و اعلان‌ها

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

نودها:

  • Cache Final Result (Redis)
  • Prepare Webhook Response (Code)
  • Respond to Webhook (Respond to Webhook)
  • Send Slack Notification (Slack)
  • Send Email Report (Email Send)
  • Log Final Result (Data Table)

جزئیات نودها:

  • Cache Final Result:

* نوع: Redis

* عملکرد: خلاصه تحقیقاتی نهایی سنتز شده را با استفاده از cacheKey تولید شده قبلی در کش Redis ذخیره می‌کند. یک زمان انقضا (TTL) برای مدیریت انقضای کش تنظیم شده است.

* ورودی: خلاصه نهایی JSON و cacheKey.

  • Prepare Webhook Response:

* نوع: Code

* عملکرد: خلاصه نهایی و فراداده‌های مرتبط را به یک پاسخ JSON ساختاریافته مناسب برای فراخواننده وب‌هوک قالب‌بندی می‌کند. شامل یک هدر X-Cache: MISS برای نشان دادن یک نتیجه تازه است.

* ورودی: خلاصه نهایی، requestId، و زمینه مرتبط دیگر.

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

  • Respond to Webhook:

* نوع: Respond to Webhook

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

* ورودی: بار داده پاسخ قالب‌بندی شده از Prepare Webhook Response.

  • Send Slack Notification:

* نوع: Slack

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

* ورودی: خلاصه نهایی، requestId، و احتمالاً notifyEmail برای زمینه.

  • Send Email Report:

* نوع: Email Send

* عملکرد: یک گزارش ایمیل دقیق حاوی خلاصه تحقیقاتی کامل را به آدرس notifyEmail مشخص شده در درخواست اولیه، ترکیب و ارسال می‌کند.

* ورودی: خلاصه نهایی، requestId, notifyEmail.

  • Log Final Result:

* نوع: Data Table

* عملکرد: خلاصه تحقیقاتی نهایی و فراداده‌های مرتبط (مانند requestId، جزئیات پرس‌وجو، و امتیاز اطمینان) را برای ردیابی تاریخی، حسابرسی و تحلیل احتمالی آینده در یک جدول داده ثبت می‌کند.

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

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

این گردش کار n8n چه قابلیت‌هایی دارد؟

این گردش کار قابلیت‌هایی مانند مدیریت ورودی و کشینگ، تجزیه و بهینه‌سازی پرس‌وجو، جستجوی چند منبعی و خراش‌دهی موازی با استفاده از Bright Data، استخراج و سنتز داده‌ها با OpenAI، و خروجی و اعلان‌های چند کاناله را ارائه می‌دهد.

چگونه این گردش کار از Bright Data و OpenAI استفاده می‌کند؟

این گردش کار از Bright Data برای جمع‌آوری داده از منابع مختلف وب به صورت موازی استفاده می‌کند و سپس اطلاعات جمع‌آوری شده را با استفاده از OpenAI برای استخراج، اعتبارسنجی و سنتز نتایج پردازش می‌کند.

نقش Redis در این گردش کار چیست؟

Redis به عنوان یک لایه کشینگ عمل می‌کند. این گردش کار ابتدا نتایج قبلی را در Redis بررسی می‌کند تا از پردازش‌های تکراری جلوگیری کرده و عملکرد را بهبود بخشد.

این گردش کار برای چه نوع تحقیقاتی مناسب است؟

این گردش کار برای تحقیقات پیچیده هوش مصنوعی که نیاز به جمع‌آوری داده از منابع متعدد، تجزیه و تحلیل عمیق اطلاعات و ارائه خلاصه‌های جامع دارند، بسیار مناسب است.

workflowهای مرتبط

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