تست A/B پرامپت‌های هوش مصنوعی با Supabase و GPT-4o

تست A/B پرامپت‌های هوش مصنوعی با Supabase و GPT-4o

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

دانلود workflow

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

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

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

تست A/B پرامپت‌های هوش مصنوعی با Supabase، Langchain Agent و OpenAI GPT-4o

https://axeto.ai/n8n

تست A/B پرامپت‌های هوش مصنوعی با Supabase، Langchain Agent و OpenAI GPT-4o

۱. نمای کلی Workflow

این workflow مکانیزم تست A/B برای پرامپت‌های هوش مصنوعی را با استفاده از ادغام‌های n8n با Supabase، Langchain Agent و مدل GPT-4o شرکت OpenAI پیاده‌سازی می‌کند. این workflow برای تخصیص تصادفی جلسات چت به یکی از دو نوع پرامپت متمایز (پایه یا جایگزین) و حفظ ثبات در طول جلسه برای استفاده از پرامپت طراحی شده است. این workflow با ردیابی تخصیص‌ها و پاسخ‌های جلسه، ارزیابی عملکرد پرامپت‌های مختلف را در یک محیط شبیه به تولید تسهیل می‌کند.

بلوک‌های منطقی شامل:

  • ۱.۱ دریافت ورودی: دریافت پیام‌های چت ورودی و استخراج شناسه‌های جلسه.
  • ۱.۲ مدیریت جلسه: بررسی اینکه آیا جلسه چت از قبل در Supabase وجود دارد و در صورت جدید بودن، مسیر پرامپت را اختصاص می‌دهد.
  • ۱.۳ تعریف پرامپت: تعریف مقادیر پرامپت پایه و جایگزین و تعیین اینکه کدام یک برای هر جلسه استفاده شود.
  • ۱.۴ پردازش هوش مصنوعی: استفاده از Langchain AI Agent پیکربندی شده با پرامپت انتخاب شده و OpenAI GPT-4o برای تولید پاسخ.
  • ۱.۵ مدیریت حافظه: ذخیره و بازیابی تاریخچه چت در PostgreSQL برای حفظ زمینه مکالمه.
  • ۱.۶ راه‌اندازی و مستندات: یادداشت‌های چسبنده که راهنمایی، دستورالعمل‌ها و نکات پیکربندی را ارائه می‌دهند.

---

۲. تجزیه و تحلیل بلوک به بلوک

#### ۱.۱ دریافت ورودی

  • مرور کلی:

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

  • گره‌های درگیر:

- When chat message received (هنگام دریافت پیام چت)

  • جزئیات گره:

- نوع: @n8n/n8n-nodes-langchain.chatTrigger

- نقش: شنونده Webhook برای پیام‌های چت، راه‌اندازی workflow در ورودی جدید.

- پیکربندی: گزینه‌های پیش‌فرض؛ پارامترهای اضافی ندارد.

- ورودی‌ها: فراخوانی‌های HTTP Webhook خارجی.

- خروجی‌ها: JSON حاوی chatInput (پیام کاربر) و sessionId (شناسه جلسه چت).

- موارد لبه‌ای: sessionId گم شده یا بدشکل، خرابی Webhook، یا payloadهای غیرمنتظره.

- الزامات نسخه: نسخه ۱.۱ یا بالاتر برای پایداری توصیه می‌شود.

#### ۱.۲ مدیریت جلسه

  • مرور کلی:

بررسی می‌کند که آیا جلسه چت از قبل در Supabase وجود دارد یا خیر. اگر وجود نداشته باشد، جلسه را به طور تصادفی به یکی از دو مسیر پرامپت اختصاص می‌دهد و این تخصیص را برای ثبات ذخیره می‌کند.

  • گره‌های درگیر:

- Define Path Values (تعریف مقادیر مسیر)

- Check If Session Exists (بررسی وجود جلسه)

- If Session Does Exist (اگر جلسه وجود دارد)

- Assign Path To Session (اختصاص مسیر به جلسه)

  • جزئیات گره:

- Define Path Values

- نوع: گره Set

- نقش: رشته‌های پرامپت ثابت را برای پرامپت‌های پایه و جایگزین تعریف می‌کند.

- پیکربندی: baseline_value را روی "The dog's name is Ben" و alternative_value را روی "The dog's name is Tom" تنظیم می‌کند.

- ورودی‌ها: از تریگر چت.

- خروجی‌ها: JSON با انواع پرامپت.

- موارد لبه‌ای: هیچ مورد قابل توجهی وجود ندارد مگر اینکه مقادیر خالی یا نامعتبر باشند.

- نسخه: ۳.۴

- Check If Session Exists

- نوع: گره Supabase

- نقش: جدول split_test_sessions را در Supabase برای رکوردی که با sessionId ورودی مطابقت دارد، کوئری می‌کند.

- پیکربندی: فیلتر بر اساس session_id برابر با sessionId ورودی.

- اعتبارنامه‌ها: API Supabase متصل به پروژه bsde.ai.

- ورودی‌ها: خروجی Define Path Values.

- خروجی‌ها: در صورت یافتن، رکورد جلسه موجود را برمی‌گرداند.

- موارد لبه‌ای: خطاهای اتصال Supabase، عدم یافتن جلسه مطابق، نتایج خالی.

- نسخه: ۱

- If Session Does Exist

- نوع: گره If

- نقش: انشعاب شرطی بر اساس اینکه آیا رکورد جلسه وجود دارد (بررسی می‌کند که آیا فیلد id وجود دارد).

- پیکربندی: وجود فیلد id را در نتیجه کوئری Supabase بررسی می‌کند.

- ورودی‌ها: خروجی Check If Session Exists.

- خروجی‌ها: شاخه True اگر جلسه وجود دارد، False اگر وجود ندارد.

- موارد لبه‌ای: مثبت کاذب اگر ساختار داده تغییر کند، خطاهای عبارت.

- نسخه: ۲.۲

- Assign Path To Session

- نوع: گره Supabase

- نقش: رکورد جلسه جدید را با یک مقدار بولی تصادفی show_alternative (true/false) که نشان می‌دهد کدام پرامپت باید نمایش داده شود، درج می‌کند.

- پیکربندی: فیلدهای تنظیم شده: session_id با sessionId فعلی، show_alternative با مقدار بولی تصادفی (شانس ۵۰٪).

- اعتبارنامه‌ها: همان اعتبارنامه‌های Supabase.

- ورودی‌ها: شاخه False از If Session Does Exist (یعنی جلسه جدید).

- خروجی‌ها: تأیید درج.

- موارد لبه‌ای: خرابی‌های نوشتن Supabase، کلیدهای تکراری اگر session_id از قبل وجود داشته باشد.

- نسخه: ۱

#### ۱.۳ تعریف پرامپت

  • مرور کلی:

بر اساس تخصیص ذخیره شده در Supabase، تعیین می‌کند که کدام پرامپت (پایه یا جایگزین) برای جلسه فعلی استفاده شود.

  • گره‌های درگیر:

- Get Correct Prompt (دریافت پرامپت صحیح)

  • جزئیات گره:

- نوع: گره Set

- نقش: متن پرامپت را به صورت شرطی بر اساس مقدار بولی show_alternative از رکورد Supabase انتخاب می‌کند.

- پیکربندی: از عبارت برای انتخاب alternative_value در صورت true بودن show_alternative استفاده می‌کند؛ در غیر این صورت baseline_value.

- ورودی‌ها: شاخه True از If Session Does Exist یا خروجی Assign Path To Session.

- خروجی‌ها: JSON با پرامپت انتخاب شده تحت ویژگی prompt.

- موارد لبه‌ای: فیلد show_alternative گم شده یا مقادیر null می‌توانند باعث شکست عبارت شوند.

- نسخه: ۳.۴

#### ۱.۴ پردازش هوش مصنوعی

  • مرور کلی:

از Langchain AI Agent پیکربندی شده با پرامپت انتخاب شده به عنوان پیام سیستم و OpenAI GPT-4o به عنوان مدل زبان زیرین برای تولید پاسخ‌های چت استفاده می‌کند.

  • گره‌های درگیر:

- AI Agent (عامل هوش مصنوعی)

- OpenAI Chat Model (مدل چت OpenAI)

  • جزئیات گره:

- AI Agent

- نوع: @n8n/n8n-nodes-langchain.agent

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

- پیکربندی:

- text: ورودی چت کاربر از "When chat message received".

- systemMessage: روی پرامپت انتخاب شده در "Get Correct Prompt" تنظیم شده است.

- promptType: حالت "define" برای تعریف پرامپت.

- ورودی‌ها: خروجی Get Correct Prompt برای پرامپت، ورودی چت از تریگر اولیه.

- خروجی‌ها: پاسخ چت تولید شده توسط هوش مصنوعی.

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

- نسخه: ۱.۷

- OpenAI Chat Model

- نوع: @n8n/n8n-nodes-langchain.lmChatOpenAi

- نقش: مدل زیرین OpenAI GPT-4o که توسط AI Agent برای تولید متن استفاده می‌شود.

- پیکربندی: مدل روی gpt-4o-mini تنظیم شده است.

- اعتبارنامه‌ها: کلید API OpenAI مورد نیاز است.

- ورودی‌ها: به عنوان مدل زبان هوش مصنوعی به "AI Agent" متصل شده است.

- خروجی‌ها: نتایج تولید متن به AI Agent.

- موارد لبه‌ای: تایم‌اوت‌های API، محدودیت‌های سهمیه، کلید API نامعتبر.

- نسخه: ۱.۲

#### ۱.۵ مدیریت حافظه

  • مرور کلی:

تاریخچه مکالمات چت را در PostgreSQL ذخیره و بازیابی می‌کند تا حافظه زمینه را برای AI Agent فراهم کند.

  • گره‌های درگیر:

- Postgres Chat Memory (حافظه چت Postgres)

  • جزئیات گره:

- نوع: @n8n/n8n-nodes-langchain.memoryPostgresChat

- نقش: پایداری حافظه چت را برای جلسات، با کلید جلسه سفارشی، مدیریت می‌کند.

- پیکربندی:

- جدول: n8n_split_test_chat_histories

- کلید جلسه: شناسه جلسه از گره "When chat message received".

- sessionIdType: کلید سفارشی برای تمایز جلسات.

- اعتبارنامه‌ها: اتصال پایگاه داده PostgreSQL به پایگاه داده Supabase Session Pooler.

- ورودی‌ها: به عنوان حافظه هوش مصنوعی به "AI Agent" متصل شده است.

- خروجی‌ها: زمینه حافظه را برای ورودی AI Agent فراهم می‌کند.

- موارد لبه‌ای: خرابی‌های اتصال پایگاه داده، جدول تاریخچه چت گم شده، خطاهای کوئری.

- نسخه: ۱.۳

#### ۱.۶ راه‌اندازی و مستندات

  • مرور کلی:

یادداشت‌های چسبنده را در سراسر workflow با توضیحات، دستورالعمل‌ها، نکات راه‌اندازی و راهنمایی اصلاحات ارائه می‌دهد.

  • گره‌های درگیر:

- Sticky Note1 تا Sticky Note8

  • جزئیات گره:

- نوع: n8n-nodes-base.stickyNote

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

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

- موقعیت‌یابی: به صورت استراتژیک در نزدیکی گره‌های مرتبط برای راهنمایی قرار گرفته است.

- موارد لبه‌ای: هیچ مورد قابل اعمالی وجود ندارد.

---

۳. جدول خلاصه

نام گرهنوع گرهنقش عملکردیگره(های) ورودیگره(های) خروجییادداشت چسبنده
When chat message received@n8n/n8n-nodes-langchain.chatTriggerدریافت پیام‌های چت ورودیExternal webhookDefine Path Values## ۱. دریافت پیام
Define Path ValuesSetتعریف پرامپت‌های پایه و جایگزینWhen chat message receivedCheck If Session Exists### اصلاح - مقادیر پرامپت‌های پایه و جایگزین را تنظیم کنید
Check If Session ExistsSupabaseبررسی وجود جلسه در SupabaseDefine Path ValuesIf Session Does Exist
If Session Does ExistIfانشعاب بر اساس وجود جلسهCheck If Session ExistsGet Correct Prompt, Assign Path To Session
Assign Path To SessionSupabaseاختصاص تصادفی مسیر پرامپت در صورت جلسه جدیدIf Session Does Exist (false)Get Correct Prompt
Get Correct PromptSetانتخاب پرامپت بر اساس تخصیص جلسهIf Session Does Exist (true), Assign Path To SessionAI Agent
AI Agent@n8n/n8n-nodes-langchain.agentعامل اصلی مکالمه هوش مصنوعیGet Correct Prompt, When chat message received## ۳. عامل هوش مصنوعی
OpenAI Chat Model@n8n/n8n-nodes-langchain.lmChatOpenAiمدل زبان OpenAI GPT-4oAI Agent (ai_languageModel)AI Agent### اصلاح - این گره فرعی را برای استفاده از مدل زبان متفاوت جایگزین کنید
Postgres Chat Memory@n8n/n8n-nodes-langchain.memoryPostgresChatمدیریت حافظه جلسه چتAI Agent (ai_memory)AI Agent
Sticky Note1Sticky Noteحاشیه‌نویسی بلوک Workflow## ۱. دریافت پیام
Sticky NoteSticky Noteحاشیه‌نویسی بلوک Workflow## ۲. تعیین پرامپت برای LLM
Sticky Note2Sticky Noteحاشیه‌نویسی بلوک Workflow## ۳. عامل هوش مصنوعی
Sticky Note3Sticky Noteنمای کلی Workflow و نکات مورد استفاده## تست A/B پرامپت‌های مختلف عامل با Supabase و OpenAI (توضیحات مفصل و مراحل بعدی)
Sticky Note5Sticky Noteدستورالعمل‌های راه‌اندازی۱. جدول Supabase split_test_sessions را با ستون‌های session_id (text) و show_alternative (bool) ایجاد کنید ۲. اعتبارنامه‌ها را اضافه کنید ۳. پرامپت‌ها را اصلاح کنید ۴. فعال و تست کنید ۵. جلسات را آزمایش کنید
Sticky Note6Sticky Noteنکته اصلاح### اصلاح - مقادیر پرامپت‌های پایه و جایگزین را تنظیم کنید
Sticky Note8Sticky Noteنکته اصلاح### اصلاح - این گره فرعی را برای استفاده از مدل زبان متفاوت جایگزین کنید

---

۴. بازسازی Workflow از ابتدا

۱. ایجاد گره تریگر چت ورودی

- افزودن گره: @n8n/n8n-nodes-langchain.chatTrigger

- هدف: دریافت پیام‌های چت از طریق webhook.

- پیکربندی: گزینه‌های پیش‌فرض را رها کنید.

- URL webhook را برای فراخوانی‌های خارجی یادداشت کنید.

۲. تعریف مقادیر پرامپت پایه و جایگزین

- افزودن گره: Set

- نام: Define Path Values

- دو متغیر رشته اختصاص دهید:

- baseline_value = "The dog's name is Ben"

- alternative_value = "The dog's name is Tom"

- خروجی تریگر چت را به این گره متصل کنید.

۳. پیکربندی اعتبارنامه‌های Supabase

- اعتبارنامه‌های API Supabase را با پروژه Supabase خود (به عنوان مثال، bsde.ai) راه‌اندازی کنید.

- اطمینان حاصل کنید که جدولی به نام split_test_sessions با ستون‌های زیر دارید:

- session_id (text)

- show_alternative (boolean)

۴. بررسی وجود جلسه در Supabase

- افزودن گره: Supabase

- نام: Check If Session Exists

- عملیات: Get

- جدول: split_test_sessions

- شرط فیلتر: session_id برابر با {{$node["When chat message received"].json["sessionId"]}}

- خروجی گره Define Path Values را به این گره متصل کنید.

۵. ایجاد انشعاب شرطی برای تشخیص جلسات موجود

- افزودن گره: If

- نام: If Session Does Exist

- شرط: بررسی کنید که آیا کوئری Supabase رکوردی را برگردانده است (فیلد id وجود دارد)

- خروجی گره Check If Session Exists را به این گره متصل کنید.

۶. اختصاص مسیر پرامپت برای جلسات جدید

- افزودن گره: Supabase

- نام: Assign Path To Session

- عملیات: Insert or Upsert در جدول split_test_sessions

- فیلدها:

- session_id = {{$node["When chat message received"].json["sessionId"]}}

- show_alternative = {{ Math.random() < 0.5 }} (مقدار بولی تصادفی)

- خروجی False (جلسه وجود ندارد) گره If را به این گره متصل کنید.

۷. تعیین اینکه کدام پرامپت استفاده شود

- افزودن گره: Set

- نام: Get Correct Prompt

- متغیر prompt را با عبارت اختصاص دهید:

```

{{$json.show_alternative ? $node["Define Path Values"].json.alternative_value : $node["Define Path Values"].json.baseline_value}}

```

- خروجی True (جلسه وجود دارد) گره If و خروجی Assign Path To Session را به این گره متصل کنید.

۸. پیکربندی گره OpenAI Chat Model

- افزودن گره: @n8n/n8n-nodes-langchain.lmChatOpenAi

- نام: OpenAI Chat Model

- مدل: gpt-4o-mini

- اعتبارنامه‌ها: کلید API OpenAI را پیکربندی کنید.

- این گره را به عنوان مدل زبان هوش مصنوعی به گره AI Agent متصل کنید.

۹. افزودن گره AI Agent

- افزودن گره: @n8n/n8n-nodes-langchain.agent

- نام: AI Agent

- پارامترها:

- text: {{$node["When chat message received"].json.chatInput}}

- systemMessage: {{$json.prompt}} (از گره Get Correct Prompt)

- promptType: "define"

- خروجی گره Get Correct Prompt را به پارامترهای این گره متصل کنید و همچنین گره OpenAI Chat Model را به عنوان مدل زبان هوش مصنوعی متصل کنید.

- ورودی چت را از تریگر چت به عنوان ورودی کاربر متصل کنید.

۱۰. راه‌اندازی گره Postgres Chat Memory

- افزودن گره: @n8n/n8n-nodes-langchain.memoryPostgresChat

- نام: Postgres Chat Memory

- نام جدول: n8n_split_test_chat_histories (باید در نمونه PostgreSQL شما وجود داشته باشد)

- کلید جلسه: {{$node["When chat message received"].json.sessionId}}

- نوع شناسه جلسه: customKey

- اعتبارنامه‌ها: اتصال پایگاه داده PostgreSQL (به عنوان مثال، Supabase Session Pooler)

- این گره را به عنوان حافظه هوش مصنوعی به گره AI Agent متصل کنید.

۱۱. اتصال گره‌ها برای جریان اجرا

- When chat message received → Define Path Values → Check If Session Exists → If Session Does Exist

- If true → Get Correct Prompt → AI Agent

- If false → Assign Path To Session → Get Correct Prompt → AI Agent

- AI Agent به OpenAI Chat Model (ai_languageModel) و Postgres Chat Memory (ai_memory) متصل می‌شود.

۱۲. افزودن یادداشت‌های چسبنده (اختیاری اما توصیه می‌شود)

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

۱۳. فعال‌سازی Workflow و تست

- Workflow را فعال کنید.

- پیام‌های چت را با شناسه‌های جلسه منحصر به فرد برای تست تخصیص تقسیم و پاسخ‌های هوش مصنوعی ارسال کنید.

---

۵. نکات عمومی و منابع

محتوای نکتهزمینه یا پیوند
دستورالعمل‌های راه‌اندازی: جدول Supabase split_test_sessions را با ستون‌های session_id (text) و show_alternative (bool) ایجاد کنید. اعتبارنامه‌های Supabase، OpenAI و PostgreSQL خود را قبل از فعال‌سازی اضافه کنید.Sticky Note5
Workflow تست A/B مؤثر انواع پرامپت را با تخصیص پرامپت در سطح جلسه پایدار برای تجربه کاربری سازگار نشان می‌دهد.Sticky Note3
برای تست مدل‌ها یا پارامترهای زبان مختلف (به عنوان مثال، دما)، گره OpenAI Chat Model را به طور مناسب جایگزین یا اصلاح کنید.Sticky Note8
مقادیر پرامپت پایه و جایگزین را در گره 'Define Path Values' اصلاح کنید تا با محتوای پرامپت‌های مختلف آزمایش کنید.Sticky Note6
برای بهبود بیشتر، جمع‌آوری معیارهایی برای اندازه‌گیری اثربخشی پرامپت و گسترش قابلیت‌های تست را در نظر بگیرید.Sticky Note3 (بخش مراحل بعدی)

---

سلب مسئولیت: متن ارائه شده منحصراً از یک workflow خودکار ایجاد شده با n8n، ابزاری برای ادغام و اتوماسیون، نشأت می‌گیرد. این پردازش به شدت از سیاست‌های محتوا پیروی می‌کند و حاوی هیچ گونه محتوای غیرقانونی، توهین‌آمیز یا محافظت شده نیست. تمام داده‌های دستکاری شده قانونی و عمومی هستند.

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

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

این workflow چگونه تست A/B پرامپت‌های هوش مصنوعی را انجام می‌دهد؟

این workflow با تخصیص تصادفی هر جلسه چت به یکی از دو پرامپت (پایه یا جایگزین) تست A/B را انجام می‌دهد. سپس پاسخ‌ها و تخصیص‌ها را برای تحلیل عملکرد هر پرامپت ذخیره می‌کند.

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

این workflow از n8n برای اتوماسیون، Supabase برای ذخیره‌سازی داده‌ها، Langchain Agent برای مدیریت منطق هوش مصنوعی و OpenAI GPT-4o برای پردازش زبان طبیعی استفاده می‌کند.

چگونه workflow ثبات پرامپت در طول یک جلسه را تضمین می‌کند؟

پس از تخصیص اولیه یک پرامپت به یک جلسه چت، workflow آن تخصیص را در Supabase ذخیره می‌کند و در طول همان جلسه از همان پرامپت استفاده می‌کند تا از نتایج ثابت اطمینان حاصل شود.

هدف اصلی از پیاده‌سازی این workflow چیست؟

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

workflowهای مرتبط

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