بازگشت به اسناداز پیام مشتری تا پاسخ هوشمند؛ ساخت یک تیم AI Agent
وبینار سوم از سری AI Agents

از پیام مشتری تا پاسخ هوشمند؛
ساخت یک تیم AI Agent

یک Coding Session زنده برای ساخت یک سیستم چندعاملی پشتیبانی مشتری

در این جلسه می‌بینیم چطور یک CRM معمولی با Agentic Workflowها به سیستمی تبدیل می‌شود که خودش پیام مشتری را می‌فهمد، دسته‌بندی می‌کند و پاسخ می‌دهد.

کدنویسی زندهسیستم چندعاملیAgentic CRM
Agentic CRM01 / 31
فهرست مطالب02 / 31

در این جلسه چه می‌بینیم؟

۱
CRM ایجنتی: بازاریابی، فروش و خدمات
اسلاید ۳
۲
هدف: چرا ایجنتیک ورک‌فلو؟
اسلاید ۷
۳
مفاهیم پایه: ایجنت، حافظه و اتصال‌ها
اسلاید ۹
۴
محدوده و معماری سیستم
اسلاید ۱۴
۵
دیتاست و محیط آزمایش
اسلاید ۱۶
۶
تیم ایجنت‌ها
اسلاید ۱۷
۷
ساخت مرحله به مرحله با کد ایجنت
اسلاید ۱۸
۸
ادامه مسیر: معرفی دوره‌ها
اسلاید ۲۹
فهرست مطالب02 / 31
نقشه کلی CRM ایجنتی03 / 31

اپلیکیشن‌ها و ایجنت‌های از پیش ساخته CRM

هر CRM مدرن سه بازو دارد و در هر بازو، تیمی از ایجنت‌ها کار واقعی را انجام می‌دهند.

Marketing

بازاریابی

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

تمرکز این وبینار
Sales

فروش

مدیریت فرصت‌ها، پیش‌فاکتور و پیش‌بینی درآمد تا بستن قرارداد.

تمرکز این وبینار
Service

خدمات مشتری

پاسخ به پیام مشتری، حل درخواست‌ها و نگه‌داشتن رضایت او.

تمرکز این پروژه: فروش و خدمات مشتری؛ یعنی موفقیت مشتری (Customer Success).

بازاریابی، فروش، خدمات03 / 31
اتوماسیون بازاریابی (Marketing Automation)04 / 31

ایجنت‌های از پیش ساخته برای اتوماسیون بازاریابی

از تولید محتوا تا سنجش اثر هر کانال، ایجنت‌ها چرخه کمپین را سریع‌تر می‌چرخانند.

اپلیکیشن‌ها

جایی که داده و فرآیند زندگی می‌کند
نمای ۳۶۰ درجه مشتریCustomer 360
مدیریت سرنخLead Management
مدیریت کمپینCampaign Management
تبلیغات دیجیتالDigital Ads
ایمیل مارکتینگEmail Marketing
مدیریت رویدادEvent Management
ایجنتی شدن ←

ایجنت‌ها

جایی که تصمیم و اقدام اتفاق می‌افتد
ایجنت تولید محتوای بازاریابیMarketing Content Agent
ایجنت نوشتن ایمیلEmail Generation Agent
ایجنت کمپینCampaign Agent
ایجنت امتیازدهی سرنخLead Scoring Agent
ایجنت توزیع سرنخLead Distribution Agent
ایجنت سنجش سهم کانال‌هاAttribution Agent
بازاریابی: از محتوا تا سرنخ04 / 31
اتوماسیون نیروی فروش (Sales Force Automation)05 / 31

ایجنت‌های از پیش ساخته برای اتوماسیون فروش

ایجنت‌ها کارهای تکراری فروشنده را برمی‌دارند تا او روی مذاکره و بستن قرارداد تمرکز کند.

اپلیکیشن‌ها

جایی که داده و فرآیند زندگی می‌کند
نمای ۳۶۰ درجه مشتریCustomer 360
مدیریت سرنخ و فرصت فروشLead & Opportunity Management
مدیریت سفارش و قراردادOrder & Contract Management
پیش‌بینی فروشSales Forecasting
فروش هدایت‌شدهGuided Selling
بهره‌وری فروشSales Productivity
ایجنتی شدن ←

ایجنت‌ها

جایی که تصمیم و اقدام اتفاق می‌افتد
ایجنت تحقیق درباره حساب مشتریAccount Research Agent
ایجنت تولید پیش‌فاکتورQuote Generation Agent
ایجنت آماده‌سازی جلسهMeeting Preparation Agent
ایجنت پیش‌بینیForecast Agent
ایجنت مدیریت منطقه فروشTerritory Management Agent
ایجنت فروش میدانیField Sales Agent
فروش: از سرنخ تا قرارداد05 / 31
اتوماسیون خدمات مشتری (Service Automation)06 / 31

ایجنت‌های از پیش ساخته برای اتوماسیون خدماتتمرکز این وبینار

همان بخشی که امروز می‌سازیم: ایجنت‌ها پیام مشتری را می‌فهمند، دسته‌بندی می‌کنند و پاسخ می‌دهند.

اپلیکیشن‌ها

جایی که داده و فرآیند زندگی می‌کند
نمای ۳۶۰ درجه مشتریCustomer 360
مرکز خدمات مشتریCustomer Service Center
بهره‌وریProductivity
مدیریت دانشKnowledge Management
مدیریت درخواست‌هاCase Management
مدیریت NPS و بازخوردNPS & Feedback Management
ایجنتی شدن ←

ایجنت‌ها

جایی که تصمیم و اقدام اتفاق می‌افتد
ایجنت پشتیبانی مشتریCustomer Support Agent
ایجنت پایگاه دانشKnowledge Base Agent
ایجنت دسته‌بندی درخواست‌هاCase Classification Agent
ایجنت موفقیت مشتریCustomer Success Agent
ایجنت دستورالعمل خدماتService Playbook Agent
ایجنت بهترین اقدام بعدیNext Best Action Agent
خدمات: از پیام مشتری تا پاسخ هوشمند06 / 31
هدف این جلسه07 / 31

چه چیزی می‌سازیم؟

یک سیستم چندعاملی موفقیت مشتری که:

  • داده‌های CRM را پایش می‌کند
  • مشتریان در خطر را پیدا می‌کند
  • علت را از روی شواهد می‌فهمد
  • بهترین اقدام بعدی را پیشنهاد می‌دهد
  • و فقط پس از تأیید انسان، اقدام را اجرا می‌کند
هدف: از داده خام تا تصمیم عملیاتی07 / 31
هدف این جلسه08 / 31

چرا ایجنتیک ورک‌فلو؟

اتوماسیون ساده

یک قانون ثابت

IF revenue < threshold THEN create_task

نمی‌داند چرا درآمد افت کرده؛ افت فصلی و ریزش واقعی را یکسان می‌بیند.

Agentic Workflow

بررسی، استدلال، تصمیم

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

مشاهده←بررسی←استدلال←تصمیم←اقدام←به‌روزرسانی
هدف: از داده خام تا تصمیم عملیاتی08 / 31
مفاهیم پایه09 / 31

ایجنت و ایجنتیک ورک‌فلو

AI Agent

یک LLM که با ابزار و حافظه، خودش تصمیم می‌گیرد برای رسیدن به هدف چه کند.

ورودی‌ها
ابزارهای دیتابیسDB tools
ابزارهای APIRead APIs
داده کاربرUser input
←
هدف و دستورالعمل
LLMمغز ایجنت
حافظهMemory
←
خروجی‌ها
GmailSend email
چت‌بات مشتریCustomer chatbot
ساخت تسکCRM action
حلقه ایجنت: فکر، اقدام، مشاهده؛ تا رسیدن به هدف ↺
Agentic Workflow

چند ایجنت با هدف‌های جدا که یک هماهنگ‌کننده آن‌ها را در یک فرآیند کنار هم می‌گذارد.

رویدادTrigger←هماهنگ‌کنندهOrchestrator
↓
وضعیت مشترک و خروجی‌های ساختاریافتهShared state + handoffs
↓
گاردریل + تأیید انسانی←اجرا←ارزیابی ↺
ایجنت یک تصمیم‌گیرنده است؛ ورک‌فلو یک تیم09 / 31
مفاهیم پایه10 / 31

حافظه و پنجره زمینه

حافظه یعنی هر چیزی که ایجنت نگه می‌دارد تا تصمیم بعدی را بهتر بگیرد.

درون پنجره زمینه In-context
کوتاه‌مدتShort-term
همین گفتگو و نتیجه ابزارها، داخل پنجره زمینه.
وضعیت کاریWorking state
خروجی‌هایی که بین مراحل ورک‌فلو دست‌به‌دست می‌شوند.
بلندمدت، بیرون از مدل Long-term
رویدادیEpisodic
تجربه‌های قبلی: «دفعه قبل با این مشتری چه کردیم؟»
معناییSemantic
دانش و واقعیت‌ها: «این مشتری از ۲۰۲۲ با ماست.»
رویه‌ایProcedural
مهارت و دستورالعمل: «پلی‌بوک خدمات مشتری».

پنجره زمینهContext Window

همه چیزی که مدل در یک لحظه می‌بیند. محدود است؛ پس فقط چیزهای لازم را در آن می‌گذاریم.

دستور سیستمSystem prompt
تعریف ابزارهاTool definitions
حافظه بازیابی‌شدهRetrieved memory
تاریخچه گفتگوHistory
نتیجه ابزارهاTool results
فضای خالی
حافظه بلندمدت بیرون از مدل است؛ فقط بخش لازم وارد پنجره زمینه می‌شود10 / 31
اتصال ایجنت به دنیا11 / 31

API، MCP و Webhook

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

API
درخواست و پاسخ
ایجنت⇄سرویس

ایجنت از یک سرویس داده می‌خواهد یا از آن کاری می‌خواهد و جواب می‌گیرد.

مثال: ارسال ایمیل با Resend
MCP
استاندارد اتصال
ایجنت⇄MCP⇄ابزارها

یک پروتکل باز که ابزارها و داده‌ها را یک‌بار تعریف می‌کند تا هر ایجنتی از آن‌ها استفاده کند.

مثال: اتصال به Gmail یا Notion
Webhook
خبر دادن خودکار
سرویس←ایجنت

وقتی اتفاقی می‌افتد، سرویس خودش به آدرس ما خبر می‌دهد و ورک‌فلو شروع می‌شود.

مثال: تیکت جدید، شروع ورک‌فلو
API: ما می‌پرسیم · MCP: یک استاندارد برای همه ابزارها · Webhook: به ما خبر می‌دهند11 / 31
واژه‌نامه12 / 31

زبان مشترک ایجنت‌ها

هدفGoal
نتیجه‌ای که ایجنت باید به آن برسد و معیار پایان کار است.
حلقهLoop
چرخه فکر، اقدام و مشاهده که تا رسیدن به هدف یا سقف مراحل تکرار می‌شود.
اسکفولدینگScaffolding
کدی که دور LLM می‌سازیم: پرامپت، ابزارها، حلقه و مدیریت وضعیت.
گاردریلGuardrails
قواعدی که جلوی خروجی یا اقدام نادرست و پرخطر را می‌گیرند.
فراخوانی ابزارTool Calling
مدل تصمیم می‌گیرد کدام تابع را با چه ورودی‌ای صدا بزند.
خروجی ساختاریافتهStructured Output
پاسخ در قالب مشخص مثل JSON تا کد بتواند آن را مطمئن بخواند.
هماهنگ‌سازیOrchestration
تعیین ترتیب اجرای ایجنت‌ها و رساندن خروجی هر کدام به بعدی.
تحویلHandoff
سپردن کار از یک ایجنت به ایجنت دیگر همراه با زمینه لازم.
انسان در حلقهHuman-in-the-Loop
تصمیم مهم قبل از اجرا به تأیید انسان می‌رسد.
سطح خودمختاریAutonomy Level
اینکه ایجنت تا کجا بدون اجازه انسان اقدام کند.
ردیابیTracing
ثبت هر گام ایجنت برای دیباگ و فهم تصمیم‌ها.
ارزیابیEvals
سنجش خروجی ایجنت با معیار و داده مرجع، نه با حس خوب.
هر اصطلاح در یک جمله12 / 31
مفاهیم پایه13 / 31

الگوهای ارکستریشنOrchestration Types

حالت‌مندStateful

همه ایجنت‌ها یک وضعیت مشترک را می‌خوانند و به‌روز می‌کنند؛ مسیر بعدی از روی همین وضعیت انتخاب می‌شود.

ایجنت ۱ایجنت ۲ایجنت ۳
↕↕↕
وضعیت مشترکShared state

تحویلHand-off

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

ایجنت ۱←ایجنت ۲←ایجنت ۳
کار + زمینه، از هر ایجنت به بعدی

ناظرSupervisor

یک ایجنت ناظر کار را تقسیم می‌کند، به ایجنت‌های متخصص می‌سپارد و نتیجه را جمع می‌کند.

ناظرSupervisor
↘↓↙
متخصص ۱متخصص ۲متخصص ۳

کیت‌های توسعه سازنده‌هاAgent SDKs

ابزار رسمی هر سازنده مدل؛ شروع سریع، اما وابسته به همان اکوسیستم.

OpenAI Agents SDKClaude Agent SDKGoogle ADK

پکیج‌های مستقل از مدلAgnostic

با هر مدلی کار می‌کنند؛ کنترل کامل روی گراف، وضعیت و تحویل‌ها.

LangGraphCrewAIAutoGen
وضعیت مشترک، دست‌به‌دست، یا یک ناظر13 / 31
محدوده پروژه14 / 31

کوچک، اما واقعی

تمرکز ما استدلال و اقدام ایجنتی روی داده ساختاریافته CRM است، نه ساختن یک محصول کامل.

چه چیزی می‌سازیم

  • یک دیتابیس CRM کوچک با ۸ جدول مرتبط
  • داده مصنوعی علّی با ۱۰ داستان رفتاری مشتری
  • لایه ابزار برای خواندن، تحلیل و اجرا
  • پنج ایجنت تخصصی با خروجی ساختاریافته
  • صفحه تأیید انسانی و اجرای اقدام (تسک و ایمیل)
  • ارزیابی خودکار در برابر حقیقت پنهان داده

چه چیزی نمی‌سازیم

  • احراز هویت و فرانت‌اند پیچیده
  • اتصال به CRM یا مشتریان واقعی
  • دیتاست‌های حجیم و مدل‌های ML پیچیده
  • RAG روی هزاران سند
  • Fine-tuning

ما پنج چت‌بات نمی‌سازیم؛ یک فرآیند کسب‌وکار را با تیمی هماهنگ از ایجنت‌ها پیاده می‌کنیم.

محدوده: یک فرآیند کسب‌وکار، نه یک محصول14 / 31
نمای کلی سیستم15 / 31

معماری کامل، از داده تا اقدام

لایه دادهSQLite
مشتریمخاطبینفرصت‌هاسفارش‌هافاکتورهاتعاملاتتیکت‌هاتسک‌هارویدادها🔒 حقیقت پنهان (فقط ارزیابی)
لایه ابزارTools
ابزارهای خواندن get_*تحلیل قطعی با SQLابزارهای اجرا create_taskایجنت هیچ‌وقت مستقیم به دیتابیس دسترسی ندارد
لایه ایجنت‌هاAvalAI LLM
تشخیص رویداد←تحقیق←تحلیلگر←سلامت مشتری←بهترین اقدام بعدی
لایه تصمیم و اجراFastAPI + Next.js
تأیید انسانی←ساخت تسکارسال ایمیل با Resend←CRM به‌روز می‌شود↺رویداد بعدی
لایه ارزیابیEvaluation
مقایسه خروجی ایجنت‌ها با حقیقت پنهانکیفیت شواهدکیفیت اقدامتعداد فراخوانی ابزار
یک فرآیند، پنج ایجنت، یک حلقه بسته15 / 31
تنظیمات آزمایش16 / 31

محیط آزمایش کنترل‌شده

داده مصنوعی علّیcrm.sqlite + ground_truth.json

دیتاست آماده: ۵۰ مشتری در ۶ ماه، ۹ جدول. هر مشتری یک داستان پنهان دارد که همه جدول‌ها را با هم تغییر می‌دهد.

سالمخرابی خدماتمشکل پرداختریزش خاموشفرصت توسعهرشد بالامشکل کیفیتتهدید رقباافت فصلیبهبود

پشته فنیTech Stack

  • Python، SQLite و FastAPI برای بک‌اند
  • Next.js برای صفحه تأیید
  • AvalAI برای مدل‌های زبانی (سازگار با OpenAI)
  • Resend برای ارسال ایمیل

ایمنی و خودمختاریSafety & Autonomy

ایمیل‌ها پیش‌فرض ارسال نمی‌شوند: dry_run، redirect یا live.

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

معیارهای ارزیابیEvaluation Metrics

تشخیص رویداد، درستی علت، کیفیت شواهد، دسته‌بندی وضعیت مشتری، کیفیت اقدام و تعداد فراخوانی‌های غیرضروری ابزار.

داستان پنهان فقط برای ارزیابی است، نه برای ایجنت16 / 31
ایجنت‌ها17 / 31

پنج ایجنت، پنج مسئولیت

1
تشخیص رویداد«اتفاق مهمی افتاده؟»
تغییرات معنادار را در داده پیدا می‌کند و یک رویداد ساختاریافته با نوع و شدت می‌سازد.
2
تحقیق«با این مشتری چه خبر است؟»
با ابزارها فقط داده‌های لازم را می‌خواند: سفارش، تیکت، تعامل، فاکتور.
3
تحلیلگر«چرا این اتفاق افتاده؟»
فرضیه‌ها را کنار هم می‌گذارد، با شواهد می‌سنجد و محتمل‌ترین علت را انتخاب می‌کند.
4
سلامت مشتری«وضعیت مشتری چیست؟»
افت موقت را از افت ساختاری جدا می‌کند و وضعیت را تعیین می‌کند؛ مثلاً در خطر یا در حال بهبود.
5
بهترین اقدام بعدی«چه باید کرد؟»
اقدام مناسب و پیش‌نویس پیام را آماده می‌کند و منتظر تأیید انسان می‌ماند.
رویداد در داده CRM
↓
۱. تشخیص رویداد
↓
۲. تحقیق
↓
۳. تحلیلگر
↓
۴. سلامت مشتری
↓
۵. بهترین اقدام بعدی
↓
تأیید انسانی
↓
اجرا و به‌روزرسانی CRM
هر ایجنت یک سؤال را جواب می‌دهد17 / 31
ساخت با کد ایجنت18 / 31

نقشه راه ساخت، مرحله به مرحله

از ساده به پیچیده: ایجنت تکی، بعد workflow ثابت، و فقط در صورت نیاز حلقه ایجنتی. هر مرحله یک commit مستقل است.

Explore→Plan→Approve→Implement→Test→Commit
0
راه‌اندازی و طراحی
Setup & design
اسلاید ۱۹
1
بارگذاری و کاوش داده
Load & explore dataset
اسلاید ۲۱
2
لایه ابزار و تحلیل
Tools + SQL analytics
اسلاید ۲۲
3
ایجنت تکی با ابزار
Single augmented-LLM agent
اسلاید ۲۳
4
تشخیص رویداد
Event-driven trigger
اسلاید ۲۴
5
خط لوله چندعاملی
Multi-agent pipeline
اسلاید ۲۵
6
اجرا، تأیید و ایمیل
Execution + approval + Resend
اسلاید ۲۶
7
ارزیابی
Evaluation vs ground truth
اسلاید ۲۷
8
ردیابی و اجرای کامل
Tracing + end-to-end run
اسلاید ۲۸
چرخه هر مرحله: کاوش، برنامه، تأیید، پیاده‌سازی، تست، ثبت18 / 31
پرامپت مرحله ۰19 / 31

مرحله ۰: راه‌اندازی و طراحی (بخش ۱ از ۲)

Read docs/PROJECT_SPEC.md. It defines a multi-agent CRM customer-success system.
Do not write application code in this stage.

PRINCIPLES (apply to every stage):
- Simple to complex: augmented LLM (LLM + tools + structured output) → fixed workflow → agent
  loop. Add complexity only when needed and document why.
- Per stage: Explore → Plan → wait for approval → Implement → Test → Commit (tag stage-XX).
- Numbers come from SQL/Python. The LLM only reasons and decides.

STACK:
- Backend: Python 3.11+, uv, SQLite, FastAPI, pydantic v2, pytest, typer, rich.
- LLM: AvalAI (OpenAI-compatible), called through the openai SDK with a custom base_url.
- Email: Resend. Frontend: minimal Next.js (TypeScript) app in /web, for approvals only.
- Data: the provided dataset in data/ (spec section 2). Never generate or modify it.

TASKS:
1. Summarize the spec in 10 bullets or fewer.
2. Create the structure:
   backend/src/crm_agents/{db, tools, analytics, llm, agents, orchestrator,
   execution, approval, evaluation, tracing, api}/
   backend/tests/, backend/scripts/, docs/, web/ (README only)
   data/ already contains crm.sqlite and ground_truth.json; leave both untouched.
3. Create AGENTS.md with these rules:
   - Readable code: clear names, docstrings, short functions, type hints.
   - Every agent input and output is a pydantic model.
   - Agents access data only through tools/. Only evaluation/ may read ground_truth.json.
   - data/crm.sqlite is read-only; the app reads and writes a working copy (DB_PATH).
   - Only llm/client.py imports openai. Only execution/email.py imports resend.
پرامپت را کامل به کد ایجنت بدهید؛ بعد از هر مرحله، تأیید و سپس مرحله بعد19 / 31
پرامپت مرحله ۰20 / 31

مرحله ۰: راه‌اندازی و طراحی (بخش ۲ از ۲)

   - Every stage ships with tests. Never start the next stage without approval.
4. Create docs/ARCHITECTURE.md (agents, responsibilities, allowed tools, schemas, authority
   limits) and docs/STAGES.md (per stage: goal, deliverables, "why an agent, not a rule").
5. Create .env.example:
     AVALAI_API_KEY=
     AVALAI_BASE_URL=https://api.avalai.ir/v1
     LLM_MODEL=
     LLM_MODEL_CHEAP=
     RESEND_API_KEY=
     RESEND_FROM=
     EMAIL_MODE=dry_run        # dry_run | redirect | live
     EMAIL_REDIRECT_TO=        # redirect mode sends every email here
     AUTONOMY_LEVEL=1          # 1..4
     DB_SOURCE=data/crm.sqlite
     DB_PATH=data/crm_work.sqlite
     GROUND_TRUTH_PATH=data/ground_truth.json
     API_URL=http://localhost:8000
6. Create backend/pyproject.toml and llm/client.py: chat, tool calling, structured output
   parsed into pydantic (one repair retry on invalid JSON), network retries, and logging of
   model, tokens, and latency. Add a smoke test that is skipped without AVALAI_API_KEY.
7. Propose the plan for Stage 1.

Commit "stage-00: setup and design". Stop and wait.
پرامپت را کامل به کد ایجنت بدهید؛ بعد از هر مرحله، تأیید و سپس مرحله بعد20 / 31
پرامپت مرحله ۱21 / 31

مرحله ۱: بارگذاری و کاوش داده

Stage 1: load and understand the provided dataset. Read AGENTS.md first.
The dataset already exists. Do not generate or modify data.

INPUTS:
- data/crm.sqlite: 9 CRM tables (docs/PROJECT_SPEC.md, section 2).
- data/ground_truth.json: hidden story per customer. Evaluation only.

TASKS:
1. scripts/reset_db.py: copy DB_SOURCE to DB_PATH. Every later stage uses only DB_PATH.
2. db/connection.py: open DB_PATH with foreign keys on and rows returned as dicts.
3. db/models.py: pydantic models for the 9 tables, matching the actual columns.
4. docs/DATA.md, generated from the database itself: tables, columns, row counts, date range,
   allowed values of status/category/sentiment fields, and table relationships.
5. scripts/describe_data.py: per customer and month: revenue, orders, tickets by category,
   interactions, negative-sentiment share, overdue invoices. Print a compact table.
6. evaluation/ground_truth.py: the only loader of ground_truth.json.

EXPLORE (write in docs/STAGES.md): pick 3 customers with different patterns and describe what
the numbers suggest, without looking at the ground truth. Then compare with it.

TESTS: row counts match docs/DATA.md, foreign keys are valid, reset_db is repeatable,
no module outside evaluation/ references ground_truth.json.

Commit "stage-01: dataset". Stop and wait.
پرامپت را کامل به کد ایجنت بدهید؛ بعد از هر مرحله، تأیید و سپس مرحله بعد21 / 31
پرامپت مرحله ۲22 / 31

مرحله ۲: لایه ابزار و تحلیل

Stage 2: tool layer and deterministic analytics. Read AGENTS.md first.

Use the real column names from docs/DATA.md.

READ TOOLS (tools/read.py), each returning pydantic models with capped result sizes:
get_customer, get_contacts, get_orders(customer_id, start, end),
get_invoices(customer_id, status), get_interactions(customer_id, start, end),
get_support_tickets(customer_id, status), get_opportunities, get_tasks,
get_business_events(customer_id).

ANALYTICS (analytics/), pure SQL/Python:
monthly_revenue, revenue_trend, order_frequency, engagement, support_pressure (by category),
payment_risk (overdue count and amount), sentiment_trend, compare_periods.
Each returns numbers plus a one-line plain-language summary.

REGISTRY (tools/registry.py): every tool has a name, description, JSON schema generated from
its pydantic input, and a Python function. The registry is the only thing the LLM sees.

GUARD: no tool can read ground_truth.json. Add a test that proves it.

TESTS: every tool and metric on known customers from the dataset.

Commit "stage-02: tools and analytics". Stop and wait.
پرامپت را کامل به کد ایجنت بدهید؛ بعد از هر مرحله، تأیید و سپس مرحله بعد22 / 31
پرامپت مرحله ۳23 / 31

مرحله ۳: ایجنت تکی با ابزار

Stage 3: a single agent with tools (augmented LLM). Read AGENTS.md first.

Build agents/customer_analyst.py that answers "What is happening with customer X?"

- Loop: the LLM picks tools from the registry, tools run, results return, repeat until a
  final answer or 8 steps maximum.
- Output (pydantic): summary, key_metrics, evidence[], hypotheses[{cause, supporting,
  contradicting, confidence}], open_questions.
- System prompt in agents/prompts/customer_analyst.md: role, tool list, "fetch only what you
  need", "use only numbers returned by tools".
- CLI: crm ask <customer_id>
- Log every step (tool, arguments, tokens, latency) as JSONL in tracing/.

EXPERIMENT (write results in docs/STAGES.md): one prompt with the full customer dump vs the
tool-based agent, on 3 customers. Compare tokens and answer quality.

TESTS: tool loop with a mocked LLM; one live test skipped without an API key.

Commit "stage-03: single agent". Stop and wait.
پرامپت را کامل به کد ایجنت بدهید؛ بعد از هر مرحله، تأیید و سپس مرحله بعد23 / 31
پرامپت مرحله ۴24 / 31

مرحله ۴: تشخیص رویداد

Stage 4: event-driven trigger. Read AGENTS.md first.

Build agents/event_detector.py in two parts:
1. Deterministic scan (analytics only): flag candidate customers with a trigger reason,
   e.g. revenue drop + support pressure, overdue invoices, growing engagement and orders.
2. Cheap LLM triage (LLM_MODEL_CHEAP): choose event_type from CUSTOMER_HEALTH_CHANGED,
   PAYMENT_RISK_DETECTED, EXPANSION_SIGNAL, NO_ACTION, plus severity and trigger.
   It does not investigate.

Output a BusinessEvent model and store it in business_events with source 'scan_rule' or
'llm_triage'. Existing rows with source 'crm_alert' are the CRM's naive alerts; report where
the detector agrees and disagrees with them. CLI: crm scan

Document why detection is mostly rules and only triage uses an LLM.

TESTS: known archetypes produce the expected event types; healthy customers are mostly
NO_ACTION; seasonal_dip is not flagged as high severity.

Commit "stage-04: event detection". Stop and wait.
پرامپت را کامل به کد ایجنت بدهید؛ بعد از هر مرحله، تأیید و سپس مرحله بعد24 / 31
پرامپت مرحله ۵25 / 31

مرحله ۵: خط لوله چندعاملی

Stage 5: multi-agent pipeline with an orchestrator. Read AGENTS.md first.

AGENTS (each has its own prompt file, allowed tools, and pydantic input/output):
- ResearchAgent(BusinessEvent) → EvidencePack. Picks tools by event type
  (e.g. payment risk: invoices and orders first).
- AnalystAgent(EvidencePack) → Diagnosis: competing hypotheses, evidence for and against,
  primary cause, confidence. Analytics tools only.
- CustomerHealthAgent(Diagnosis + metrics) → HealthAssessment: state from HEALTHY, GROWING,
  EXPANSION_OPPORTUNITY, AT_RISK, PAYMENT_RISK, RECOVERING; temporary vs structural; rationale.
- NextBestActionAgent(HealthAssessment) → ActionProposal: action_type, priority, owner,
  task_summary, optional customer message draft, risk_level.

ORCHESTRATOR (orchestrator/pipeline.py):
- Fixed chain: event → research → analyst → health → next best action (prompt chaining).
- Routing: NO_ACTION stops early.
- Validate every output; retry once on invalid output, then fail the run with a clear error.
- Store each run with all intermediate outputs in a runs table, created in the working DB
  by db/migrations.py.
- CLI: crm run <customer_id> and crm run --all-events

TESTS: full pipeline with a mocked LLM, schema validation, early stop.

Commit "stage-05: multi-agent pipeline". Stop and wait.
پرامپت را کامل به کد ایجنت بدهید؛ بعد از هر مرحله، تأیید و سپس مرحله بعد25 / 31
پرامپت مرحله ۶26 / 31

مرحله ۶: اجرا، تأیید و ایمیل

Stage 6: execution, human approval, and autonomy levels. Read AGENTS.md first.

EXECUTION (execution/): create_task, update_task, create_note, update_customer_status,
prepare_customer_message, send_email. New tables (notes, messages, actions) go in
db/migrations.py and are created only in the working DB.
execution/email.py uses Resend according to EMAIL_MODE:
- dry_run: log only
- redirect: send every email to EMAIL_REDIRECT_TO
- live: send to the contact

POLICY (approval/policy.py), by AUTONOMY_LEVEL:
1 recommend only; 2 auto-create internal tasks and notes; 3 customer messages need approval;
4 low-risk actions run automatically, high-risk actions still need approval.
Every action has a status: proposed → approved/rejected → executed/failed, with who and when.

API (api/, FastAPI):
GET /runs, GET /runs/{id}, GET /approvals/pending,
POST /approvals/{id} {decision, edited_message?}, POST /scan, POST /run/{customer_id}

WEB (web/, Next.js + TypeScript, minimal, no auth):
- Pending approvals list.
- Detail view: event, diagnosis, health state, proposed action, editable email draft,
  Approve and Reject buttons.
- Run history.

TESTS: policy per level, email modes with Resend mocked, approval state transitions, API.

Commit "stage-06: execution and approval". Stop and wait.
پرامپت را کامل به کد ایجنت بدهید؛ بعد از هر مرحله، تأیید و سپس مرحله بعد26 / 31
پرامپت مرحله ۷27 / 31

مرحله ۷: ارزیابی

Stage 7: evaluation against ground truth. Read AGENTS.md first.

evaluation/ is the only module that reads ground_truth.json (via evaluation/ground_truth.py).
It resets the working DB, then runs the pipeline on all customers.

METRICS:
- Event detection: precision and recall of flagged customers.
- Diagnosis: LLM-as-judge (separate prompt) scores whether the primary cause matches the true
  archetype in meaning, not exact wording; store the judge's rationale.
- Health state: accuracy and confusion matrix.
- Action: appropriateness against a rule table per archetype.
- Evidence: every cited number exists in the tool outputs of that run.
- Efficiency: tool calls, tokens, and latency per run.
- False positives on healthy and seasonal_dip customers.

OUTPUT: evaluation/report.md and a JSON file. CLI: crm eval
Support comparing two evaluation runs (e.g. prompt v1 vs v2).

TESTS: unit tests for every metric function.

Commit "stage-07: evaluation". Stop and wait.
پرامپت را کامل به کد ایجنت بدهید؛ بعد از هر مرحله، تأیید و سپس مرحله بعد27 / 31
پرامپت مرحله ۸28 / 31

مرحله ۸: ردیابی و اجرای کامل

Stage 8: tracing and end-to-end run. Read AGENTS.md first.

- tracing/: one trace per run with every agent step (input, tool calls, output, tokens,
  latency). Add a page in web/ that shows the chain as a timeline.
- scripts/end_to_end.py: reset the working DB → scan → pick one AT_RISK
  service_failure customer → run the pipeline → wait for approval in the web UI → execute with
  EMAIL_MODE=redirect → print the updated CRM records and the next event.
- README.md: setup, environment variables, commands per stage, architecture diagram
  (mermaid), known limitations.
- Final check: all tests pass; no forbidden imports; no ground_truth.json access outside
  evaluation/; data/crm.sqlite unchanged.

Commit "stage-08: tracing and end-to-end run". Stop and wait.
پرامپت را کامل به کد ایجنت بدهید؛ بعد از هر مرحله، تأیید و سپس مرحله بعد28 / 31
دوره‌ها29 / 31

ادامه مسیر، با من

اگر می‌خواهید این مسیر را عمیق‌تر و پروژه‌محور ادامه دهید:

بوتکمپ پاییز ۱۴۰۵

بوتکمپ ایجنت‌های هوش مصنوعی

۴۲ ساعت در ۶ جلسه، کاملاً پروژه‌محور؛ از طراحی تا ساخت ایجنت‌های واقعی و ارائه در Demo Day برای شرکت‌ها و سرمایه‌گذاران.

شروع: چهارشنبه ۱۵ مهر ۱۴۰۵

ctdrs.ir/cr18600←
دوره جامع

علم داده و هوش مصنوعی برای همه

۱۲۰ ساعت؛ مسیر کامل از پایه‌های داده و پایتون تا یادگیری ماشین و هوش مصنوعی.

ctdrs.ir/cr16814←
ثبت‌نام از طریق لینک‌ها29 / 31
برای رفتن جلوتر30 / 31

اگر این جلسه برایتان مفید بود

بوتکمپ «ایجنت‌های هوش مصنوعی» همین مسیر را پروژه‌محور و عمیق‌تر جلو می‌برد؛ شروع از چهارشنبه ۱۵ مهر ۱۴۰۵. هدایای ویژه تا چهارشنبه ۸ مهر با کد تخفیف AI2030.

هدایای ویژه شرکت‌کنندگان بوتکمپ؛ کد تخفیف AI2030 تا چهارشنبه ۸ مهربوتکمپ ایجنت‌های هوش مصنوعی؛ رضا شکرزاد و تیم تدریس
ثبت‌نام در بوتکمپctdrs.ir/cr18600←
بوتکمپ ایجنت‌های هوش مصنوعی30 / 31
راه‌های ارتباط31 / 31

راه‌های ارتباط

TG@DSLanders
کانال تلگرام؛ یادداشت‌ها و به‌روزرسانی‌های علم داده و AI.
YT@RezaShokrzad
کانال یوتیوب؛ آموزش علم داده و هوش مصنوعی.
IGrezashokrzad
اینستاگرام شخصی؛ محتوای کوتاه AI و مسیر شغلی.
@@cafetadrispro
هندل Cafetadris؛ بوتکمپ‌ها و رویدادهای AI.
IGcafetadrispro
اینستاگرام Cafetadris؛ پشت‌صحنه و اطلاعیه‌ها.
WWWcafetadris.com/datascience
صفحه دوره‌های Cafetadris در حوزه AI و علم داده.
راه‌های ارتباط31 / 31