ساخت دستیار فروش
آزمایشهای A/B
آزمایشهای A/B به شما امکان میدهند تا شخصیتهای مختلف دستیار فروش را بر روی ترافیک واقعی بازدیدکنندگان تست کنید و برنده را براساس تعامل، جذب مشتری یا طول مکالمه انتخاب کنید. Pitchbar هر بازدیدکننده را بهصورت چسبنده به یک نوع اختصاص میدهد — همان شخص همیشه همان نوع را میبیند — تا مقایسه منصفانه باشد.
محل قرارگیری
هر دستیار فروش را باز کنید ← زبانه آزمایشهای A/B در ناوبری دستیار فروش (آیکون بشر). آدرس: /app/agents/{id}/experiments. مالکان و مدیران میتوانند آزمایش ایجاد / شروع / متوقف کنند؛ ویرایشگران نمیتوانند.
ایجاد آزمایش
- روی آزمایش جدید کلیک کنید.
- یک نوع انتخاب کنید:
- persona — انواع، نام + لحن دستیار فروش را در راهنمای سیستم برای بازدیدکنندگان اختصاصیافته لغو میکنند. از این برای تست "آریا" در مقابل "مکس"، "دوستانه" در مقابل "تیز" و غیره استفاده کنید.
- cta — انواع، اختصاص را ثبت میکنند اما هنوز payload فراخوان زمان اجرا را تغییر نمیدهند. برای اندازهگیری ثبت میشوند؛ اعمال کامل زمان اجرا در نسخههای آینده ارائه میشود.
- trigger — مشابه cta — فقط اندازهگیری.
- حداقل ۲ نوع اضافه کنید. پیشفرض
control+treatmentبا نسبت ۵۰/۵۰ است. میتوانید وزنها (هر عدد صحیح مثبت — نرمالسازی میشوند) و نامها را تغییر دهید. - برای نوع
persona،configJSON هر نوع باید یک شیءpersonaداشته باشد:
ویجت نام شخصیت نوع را در هدر چت نمایش میدهد و هوش مصنوعی با آن نام + لحن برای مکالمه اختصاصیافته صحبت میکند.{ "persona": { "name": "آریا", "tone": "گرم و مختصر" } } - ذخیره کنید. وضعیت با
draftشروع میشود — هنوز بازدیدکنندهای اختصاص داده نشده است. - روی شروع کلیک کنید. وضعیت به
runningتغییر میکند. هر بازدیدکنندهی جدید در اولین نوبت، در یک گروه قرار میگیرد.
نحوه عملکرد اختصاص
در اولین پیام یک مکالمه، MessageStreamController تابع ExperimentResolver::resolveForConversation را فراخوانی میکند:
- اگر
conversation.variant_idقبلاً تنظیم شده باشد، از آن استفاده کنید (چسبنده). - در غیر این صورت، جدیدترین آزمایش
runningشروعشده برای این دستیار فروش را جستجو کنید. فقط یک آزمایش فعال در هر دستیار فروش — اگر آزمایش دوم را در حین اجرای آزمایش اول شروع کنید، حلکننده جدیدترین را انتخاب میکند. برای اجرای نوع متفاوت، ابتدا آزمایش قبلی را متوقف کنید. (visitor_id + experiment_id)را در لیست انواع وزنی هش کنید (Assigner). همان بازدیدکننده که روزها بعد بازمیگردد، در همان نوع قرار میگیرد — ردیف اختصاص پایدار است.conversation.variant_idرا ذخیره کنید. هر نوبت آینده برای این مکالمه، همان نوع را میخواند.- برای
kind = persona،config[persona]نوع، شخصیت پیشفرض دستیار فروش را درPromptBuilder::buildبرای آن نوبت لغو میکند.
مشاهده در عمل
سریعترین راه برای تأیید اتصال:
- یک آزمایش
personaبا دو نوع کاملاً متفاوت ایجاد کنید — مثلاً{ "persona": { "name": "ربات مفید" } }در مقابل{ "persona": { "name": "ربات تیز" } }. - آزمایش را شروع کنید.
- ویجت خود را در دو مرورگر مختلف باز کنید (یا یکی عادی و یکی مخفی — کوکیهای مختلف =
visitor_idمتفاوت). - در هر کدام یک سوال مشابه بپرسید. هدر پنل چت باید در یکی "ربات مفید" و در دیگری "ربات تیز" را نشان دهد و پاسخها باید بهطور قابلتوجهی متفاوت باشند.
/admin/conversationsرا باز کنید و تأیید کنید که هر ردیف مکالمه یکvariant_idثبت شده دارد.
اندازهگیری نتایج
همه موارد ذخیره میشوند: ردیفهای experiment_assignments + variant_id در هر ردیف conversations. این دو جدول را به messages و leads برای هر تحلیل دلخواه متصل کنید — به عنوان مثال:
SELECT v.name,
COUNT(DISTINCT c.id) AS conversations,
COUNT(DISTINCT l.id) AS leads_captured,
AVG(c.message_count) AS avg_messages
FROM variants v
LEFT JOIN conversations c ON c.variant_id = v.id
LEFT JOIN leads l ON l.conversation_id = c.id
WHERE v.experiment_id = '...'
GROUP BY v.name;
یک پنل آمار داخلی در /app/agents/{id}/experiments در نقشه راه است؛ در حال حاضر باید آن کوئری را بهصورت دستی اجرا کنید (توکن API فضای کاری + دسترسی خواندن /api/v1/db در صورت استفاده از نسخه خودمیزبانی، یا از پشتیبانی بخواهید).
متوقف کردن / حذف
متوقف کردن وضعیت را به stopped تنظیم کرده و کش آزمایش در حال اجرا را پاک میکند تا مکالمات جدید فوراً از اختصاص یافتن متوقف شوند. مکالمات موجود، نوع اختصاصیافته خود را برای سازگاری در مکالمات در حال انجام حفظ میکنند.
حذف ردیف آزمایش را بهصورت سخت حذف میکند. ردیفهای نوع آبشاری میشوند. مقادیر موجود conversations.variant_id یتیم میشوند — این عمدی است؛ ما حتی پس از پایان آزمایش، سابقه این که هر مکالمه کدام نوع را دریافت کرده است، نگهداری میکنیم.