۲۹ شهریور ۱۴۰۳

Techboy

اخبار و اطلاعات روز تکنولوژی

نحوه استفاده از GPT-4 با داده های جریانی برای هوش مصنوعی مولد بلادرنگ

برای کسب‌وکارها و مشتریانشان، پاسخ به اکثر سؤالات متکی به داده‌هایی است که در سیستم‌های سازمانی قفل شده‌اند. در اینجا نحوه تحویل داده ها به درخواست های مدل GPT در زمان واقعی آورده شده است.

برای کسب‌وکارها و مشتریانشان، پاسخ به اکثر سؤالات متکی به داده‌هایی است که در سیستم‌های سازمانی قفل شده‌اند. در اینجا نحوه تحویل داده ها به درخواست های مدل GPT در زمان واقعی آورده شده است.

تا این لحظه، تقریباً همه به بازی با ChatGPT مشغول بوده اند و باعث می شود که انواع کارهای شگفت انگیز و عجیب انجام دهد. اما چگونه می‌توانید فراتر از به هم ریختن و استفاده از آن برای ساختن یک برنامه کاربردی تولیدی در دنیای واقعی بروید؟ بخش بزرگی از آن، گرد هم آوردن قابلیت های کلی ChatGPT با داده ها و نیازهای منحصر به فرد شما است.

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

مشتری شما ممکن است در مورد هزینه آوردن اسکی در هواپیما سوالی داشته باشد. خوب، اگر این یک خط مشی کلی شرکت هواپیمایی است، احتمالاً این اطلاعات در اینترنت موجود است و ChatGPT ممکن است بتواند به درستی به آن پاسخ دهد.

اما سؤالات شخصی تر، مانند

چه می شود

آیا پرواز من تاخیر دارد؟
آیا می توانم به فرست کلاس ارتقا دهم؟
آیا هنوز در لیست آماده به کار پرواز فردا هستم؟

بستگی دارد! اول از همه، شما کی هستید؟ کجا و کی پرواز می کنی؟ با چه خط هوایی رزرو کرده اید؟

ChatGPT نمی‌تواند در اینجا کمک کند زیرا پاسخ این سؤالات را نمی‌داند. این چیزی نیست که بتوان آن را با نوآوری بیشتر در OpenAI «رفع» کرد. اطلاعات شخصی شما (خوشبختانه) در اینترنت عمومی در دسترس نیست، بنابراین حتی اجرای Bing که ChatGPT را به وب باز متصل می کند، کار نمی کند.

موانع اساسی این است که شرکت هواپیمایی (شما، در سناریوی ما) باید با خیال راحت داده های به موقع را از فروشگاه های داده داخلی خود به ChatGPT ارائه دهد. با کمال تعجب، نحوه انجام این کار از دستورالعمل استاندارد زیرساخت آموزش ماشینی پیروی نمی کند. مدل های زبان بزرگ رابطه بین مهندسی داده و ایجاد مدل را تغییر داده است. اجازه دهید با یک نمودار سریع توضیح دهم.

gpt 4 streaming 01

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

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

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

در این پست، نحوه عملکرد استریم و ChatGPT را نشان خواهم داد. من نحوه ساخت یک عامل پشتیبانی بی‌درنگ را توضیح می‌دهم، در مورد معماری که باعث کارکرد آن می‌شود بحث می‌کنم و چند مشکل را یادداشت می‌کنم.

چگونه ChatGPT کار می کند

در حالی که هیچ کمبودی در بحث عمیق درباره چگونه ChatGPT کار می کند، من با توضیح کافی از موارد داخلی آن شروع می کنم این پست را معنا کنید.

ChatGPT، یا واقعاً GPT، مدل، اساساً یک شبکه عصبی بسیار بزرگ است که بر روی متن از اینترنت آموزش داده شده است. با آموزش بر روی مجموعه عظیمی از داده ها، GPT توانسته است یاد بگیرد که چگونه مانند یک انسان مکالمه کند و باهوش به نظر برسد.

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

انسان: سلام.

AI: چگونه

AI: چگونه می توان

AI: چگونه می توانم

AI: چگونه می توانم کمک کنم

AI: چگونه می توانم به شما کمک کنم

AI: امروز چگونه می توانم به شما کمک کنم؟

یکی از جذاب ترین جنبه های ChatGPT این است که می تواند قسمت های قبلی مکالمه شما را به خاطر بسپارد. به عنوان مثال، اگر از آن بپرسید “پایتخت ایتالیا چیست؟” به درستی پاسخ می دهد “رم”. اگر بپرسید “چه مدت پایتخت بوده است؟”، می تواند استنباط کند که “آن” به معنای رم به عنوان پایتخت است، و به درستی با ۱۸۷۱ پاسخ می دهد. چگونه می تواند این کار را انجام دهد؟

ChatGPT چیزی به نام پنجره زمینه دارد که مانند نوعی حافظه فعال است. هر یک از مدل‌های OpenAI دارای اندازه‌های مختلف پنجره هستند که با مجموع نشانه‌های ورودی و خروجی محدود می‌شوند. وقتی تعداد توکن‌ها از اندازه پنجره بیشتر شود، قدیمی‌ترین نشانه‌ها از پشت حذف می‌شوند و ChatGPT آن چیزها را «فراموش می‌کند».

gpt 4 streaming 02

همانطور که در عرض یک دقیقه خواهیم دید، پنجره‌های زمینه کلید تکامل قابلیت‌های ChatGPT هستند.

درک کردن GPT-4 کسب و کار شما

با آن آغازگر اولیه در مورد نحوه عملکرد ChatGPT، به راحتی می توان فهمید که چرا نمی تواند به مشتری شما بگوید که آیا پرواز آنها با تاخیر انجام شده است یا می توانند به درجه یک ارتقا دهند. چیزی در مورد آن نمی داند. چه کاری می توانیم انجام دهیم؟

پاسخ این است که GPT را تغییر دهید و مستقیماً با آن کار کنید، نه اینکه از رابط سطح بالاتر ChatGPT استفاده کنید. برای اهداف این پست وبلاگ، من مدل GPT-4 را هدف قرار می دهم (و برای مختصر به آن به عنوان GPT اشاره می کنم).

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

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

gpt 4 streaming 03

اگر قرار بود این کار را به صورت دستی انجام دهید، درخواست شما چیزی شبیه به این خواهد بود:

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

مشتری که با شما صحبت می کند مایکل نام دارد.

مایکل پرواز ۱۰۵ را رزرو کرده است.

مایکل در حال پرواز در کلاس اقتصادی برای پرواز ۱۰۵ است.

پرواز ۱۰۵ برای ۲ ژوئن برنامه ریزی شده است.

پرواز ۱۰۵ از سیاتل به آستین پرواز می کند.

مایکل پرواز ۲۱۰ را رزرو کرده است.

مایکل در حال پرواز در کلاس اقتصادی برای پرواز ۲۱۰ است.

پرواز ۲۱۰ برای ۱۰ ژوئن برنامه ریزی شده است.

پرواز ۲۱۰ از آستین به سیاتل پرواز می کند.

پرواز ۱۰۵ دارای ۲ صندلی درجه یک باقی مانده است.

پرواز ۲۱۰ ۰ صندلی درجه یک باقی مانده است.

اگر حداقل ۱ صندلی فرست کلاس در پرواز باقی مانده باشد و مشتری قبلاً در آن پرواز درجه یک نباشد، ممکن است یک مشتری از کلاس اکونومی به فرست کلاس ارتقاء دهد.

اگر مشتری درخواست ارتقاء به فرست کلاس را داشته باشد، آن پرواز را تأیید خواهید کرد.

وقتی برای شروع آماده شدید، بگویید “چگونه می توانم امروز به شما کمک کنم؟”

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

بنابراین، دقیقاً چگونه همه اینها را می سازید؟

ساخت مشتری ۳۶۰

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

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

ادغام کنید

  • هویت مشتری
  • پروازهای رزرو شده آتی برای مشتری
  • طرح بندی صندلی هواپیمای اختصاص داده شده به پرواز
  • ظرفیت فعلی پرواز
  • برای ارتقاء رایگان امتیاز پاداش می گیرد

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

gpt 4 streaming 12

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

gpt 4 streaming 05

رابط‌های Confluent خواندن را از این سیستم‌های ایزوله آسان می‌کنند. یک رابط منبع را برای هر کدام روشن کنید، و تغییرات در زمان واقعی به Confluent منتقل می‌شوند.

از آنجایی که این جریان‌ها معمولاً حاوی اطلاعات تا حدودی خام هستند، احتمالاً می‌خواهید آن داده‌ها را در نمای دقیق‌تری پردازش کنید. پردازش جریانی نحوه تبدیل، فیلتر کردن و جمع‌آوری جریان‌های مجزا به نمای مناسب‌تر برای الگوهای دسترسی مختلف است. احتمالاً می‌خواهید در نهایت آن نمای را در یک پایگاه داده رابطه‌ای، فروشگاه کلید/مقدار، یا ذخیره‌سازی اسناد غرق کنید.

اتصال داده های مشتری به GPT

با تبدیل داده‌های مشتری ۳۶۰ به نمای یکپارچه، گام بعدی این است که به صورت برنامه‌نویسی آن اطلاعات را با هر درخواست متصل کنید. در این مرحله، معماری به این صورت است:

gpt 4 streaming 06

و تعامل عامل پشتیبانی به این شکل است:

AI: امروز چگونه می توانم به شما کمک کنم؟

انسان: سلام. من می خواهم صندلی خود را به درجه یک ارتقا دهم. آیا می توانید این کار را انجام دهید؟

AI: کاملاً، خوشحال می شوم در این مورد کمک کنم. با این حال، لطفاً مشخص کنید که کدام پرواز را می خواهید به فرست کلاس ارتقا دهید؟ آیا این پرواز ۱۰۵ است یا پرواز ۲۱۰؟

انسان: ۱۰۵ لطفا

AI: خبر عالی، مایکل. ما ۲ صندلی فرست کلاس در پرواز ۱۰۵ داریم. من می توانم صندلی کلاس اکونومی شما را برای این پرواز به فرست کلاس ارتقا دهم. آیا این تغییر را برای شما ادامه دهم؟

انسان: بله.

هوش مصنوعی: عالی، مایکل. من با موفقیت صندلی شما را به درجه یک در پرواز ۱۰۵ ارتقا دادم. اکنون از تمام مزایا و امکانات خدمات درجه یک ما لذت خواهید برد. اگر مورد دیگری هست که بتوانم امروز به شما کمک کنم به من اطلاع دهید. سفرهای ایمن!

انسان: آیا می توانید صندلی ۲۱۰ من را نیز به درجه یک ارتقا دهید؟

AI: متاسفم، مایکل، اما در حال حاضر هیچ صندلی درجه یک در پرواز ۲۱۰ باقی نمانده است. بنابراین، من نمی توانم صندلی شما را برای این پرواز ارتقا دهم. اگر مورد دیگری نیاز به کمک دارید، لطفاً به من اطلاع دهید.

بنابراین هنگامی که برنامه یک پیام چت دریافت می کند، تنها کاری که باید انجام دهد این است که شناسه مشتری را که آن را ارسال کرده است، جستجو کند، از نمای ۳۶۰ مشتری پرس و جو کند، و در ابتدای هر پیام، بلوکی از اطلاعات مفید ارائه کند – مشابه آنچه من در پیش درخواست دستی نشان دادم.

اتصال پایگاه دانش خود به GPT

این تکنیک برای سؤالات مربوط به یک مشتری خاص عالی عمل می کند، اما اگر می خواهید نماینده پشتیبانی اطلاعات گسترده ای در مورد کسب و کار شما داشته باشد، چه؟ به عنوان مثال، اگر مشتری بپرسد: “آیا می توانم یک نوزاد در دامان خود بیاورم؟”، این چیزی نیست که بتوان از طریق داده های مشتری ۳۶۰ به آن پاسخ داد. هر شرکت هواپیمایی شرایط کلی دارد که می‌خواهید به مشتری بگویید، مثلاً باید گواهی تولد کودک را بیاورد.

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

چگونه بر آن مشکل غلبه می کنید؟ پاسخ از طریق  جاسازی‌ها. وقتی از GPT سوالی می‌پرسید، باید بفهمید چه اطلاعاتی به آن مربوط می‌شود تا بتوانید آن را همراه با درخواست اصلی ارائه دهید. تعبیه‌ها راهی برای نگاشت چیزها در یک “فضای مفهومی” به عنوان بردار اعداد هستند. سپس می توانید از عملیات سریع برای تعیین ارتباط هر دو مفهوم استفاده کنید.

خوب، اما آن بردارهای اعداد از کجا می آیند؟ آنها از تغذیه داده ها از طریق شبکه عصبی و گرفتن مقادیر نورون ها در لایه های پنهان به دست می آیند. این کار به این دلیل است که شبکه عصبی قبلاً برای تشخیص شباهت آموزش دیده است.

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

curl https://api.openai.com/v1/embeddings \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -d '{
    "input": "Your text string goes here",
    "model": "text-embedding-ada-002"
  }'

{
  "data": [
    {
      "embedding": [
        -۰.۰۰۶۹۲۹۲۸۳۴۹۵۹۹۲۴۲۲,
        -۰.۰۰۵۳۳۶۴۲۲۰۰۷۵۳۰۹۲۸,
        ...
        -۴.۵۴۷۱۳۲۲۶۶۴۵۲۵۳۶e-05,
        -۰.۰۲۴۰۴۷۵۰۵۱۱۰۵۰۲۲۴۳
      ],
      "index": 0,
      "object": "embedding"
    }
  ],
  "model": "text-embedding-ada-002",
  "object": "list",
  "usage": {
    "prompt_tokens": 5,
    "total_tokens": 5
  }
}

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

gpt 4 streaming 07

به عنوان یک نکته، ممکن است تعجب کنید که چرا نباید به طور انحصاری از یک پایگاه داده برداری استفاده کنید. آیا ساده‌تر نیست که داده‌های ۳۶۰ مشتری خود را نیز در آنجا قرار دهید؟ مشکل این است که پرس و جوها در برابر یک پایگاه داده برداری داده ها را بر اساس فاصله بین جاسازی ها بازیابی می کنند، که ساده ترین کار برای اشکال زدایی و تنظیم نیست. به عبارت دیگر، هنگامی که یک مشتری چت را با نماینده پشتیبانی شروع می کند، شما کاملاً می خواهید که نماینده مجموعه پروازهایی را که مشتری رزرو کرده است بداند. شما نمی خواهید آن را به شانس واگذار کنید. بنابراین در این مورد، بهتر است فقط نمای ۳۶۰ مشتری خود را با شناسه مشتری پرس و جو کنید و داده های بازیابی شده را در ابتدای درخواست قرار دهید.

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

gpt 4 streaming 08

این، در سطح بسیار بالایی، نحوه اتصال داده های خط مشی خود به GPT است. اما برای ساختن این کار از بسیاری از جزئیات مهم صرف نظر کردم. زمان پر کردن آنها است.