برنامه نویسی

افزایش کیفیت اینترنت ChatGPT Live Data

دیروز توانستیم چت ربات های ChatGPT خود را به اینترنت متصل کنیم. این ویژگی هنوز آزمایشی است و همیشه کار نمی کند – اما امروز توانستیم 90٪ از اشکالات مربوط به این را مرتب کنیم.

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

ما البته یک فروشگاه Hyperlambda هستیم، اما احتمالاً می توانید ایده های ما را به زبان برنامه نویسی انتخابی خود منتقل کنید.

ChatGPT را با دسترسی به اینترنت امتحان کنید

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

اطلاعاتی را برای پرسش زیر به من بیابید “آیا WHO COVID-19 را در سال 2023 یک بیماری همه گیر اعلام می کند؟”

نکته این است که شما چیزی مانند موارد زیر را از آن دریافت خواهید کرد.

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

اطلاعات مربوط به پرسش زیر را برای من پیدا کنید “QUERY_HERE”

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

خراش دادن وب سایت

ما احتمالاً بهترین فناوری خراش‌دهی وب را در صنعت داشته‌ایم، و با استفاده از آن در طول 7 ماه گذشته چیزهای زیادی یاد گرفته‌ایم و هر روز ده‌ها وب‌سایت را به دلیل دریافت یک وب ربات چت هوش مصنوعی رایگان می‌خریم. فرم. این ما را در موقعیتی منحصر به فرد قرار می دهد تا بفهمیم چگونه داده های آموزشی هوش مصنوعی با کیفیت بالا را از وب سایت ها و انواع منابع مختلف ایجاد کنیم – و از اینکه چقدر “مشکل هوش مصنوعی” توسعه نرم افزار مد قدیمی خوب است، با الگوریتم، معماری، ترکیب، طراحی نرم افزار و کد ساده.

اگر هوش مصنوعی بهتری می خواهید، کد سنتی بهتری بنویسید 😉

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

همه وب سایت ها را نمی توان خراش داد

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

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

راهی که ما این مشکل را حل می کنیم، با فراخوانی DuckDuckGo و بازیابی 5 بازدید برتر برای هر درخواستی که کاربر جستجو می کند است. سپس همه اینها را به صورت موازی و با فاصله زمانی 10 ثانیه بازیابی می کنیم. چرا تایم اوت؟ زیرا برخی از سایت ها این کار را انجام خواهند داد “شما را از دریافت داده مسدود می کند، در حالی که اتصال سوکت را باز نگه می دارد”، به این معنی است که آنها خواهند شد هرگز برگشت. ایده این است که اگر سایت HTML خود را در کمتر از 10 ثانیه برگرداند، اتصال HTTP را آزاد می کنیم و به سادگی این URL را نادیده می گیریم.

از 5 بازدید DuckDuckGo معمولاً 1 یا کمتر مسدود می شود. از آنجایی که ما اطلاعات را به صورت موازی و ناهمگام از 5 نشانی وب واکشی می کنیم، همچنان دریافت خواهیم کرد “برخی اطلاعات از 2/3 وب سایت” 98 درصد مواقع و این روند در کل به دلیل تایم اوت ما هرگز بیش از 10 ثانیه طول نخواهد کشید. مهلت زمانی برای ما بسیار مهم است، زیرا ما داده‌ها را به صورت محلی حفظ نمی‌کنیم، اما همیشه آن‌ها را در صورت درخواست واکشی می‌کنیم، به این معنی که 10 ثانیه برای حذف صفحات وب، 10 ثانیه اضافی برای دریافت پاسخ شما از ChatGPT می‌شود.

در زیر کد نقطه ورودی اولیه آمده است. حتی اگر Hyperlambda را نمی فهمید، باید بتوانید ایده کلی را درک کنید و احتمالاً آن را به زبان برنامه نویسی انتخابی خود منتقل کنید.

/*
 * Slot that searches DuckDuckGo for [max] URLs matching the [query],
 * for then to scrape each URL, and aggregating the result
 * returning it back to caller as a single Markdown.
 */
slots.create:magic.http.duckduckgo-and-scrape

   // Sanity checking invocation.
   validators.mandatory:x:@.arguments/*/query
   validators.string:x:@.arguments/*/query
      min:3
      max:250
   validators.integer:x:@.arguments/*/max
      min:1
      max:10

   // Searching DuckDuckGo for matches.
   add:x:+
      get-nodes:x:@.arguments/*
   signal:magic.http.duckduckgo-search

   // Building our execution object that fetches all URLs simultaneously in parallel.
   .exe

      // Waiting for all scraping operations to return.
      join

   for-each:x:@signal/*/result/*

      // Dynamically contructing our lambda object.
      .cur
         fork
            .reference
            try
               unwrap:x:+/*
               signal:magic.http.scrape-url
                  url:x:@.reference/*/url
                  semantics:bool:true
            .catch
               log.error:Could not scrape URL
                  url:x:@.reference/*/url
                  message:x:@.arguments/*/message

      // Adding URL and title as reference to currently iterated [fork].
      unwrap:x:+/*/*
      add:x:@.cur/*/fork/*/.reference
         .
            url:x:@.dp/#/*/url
            title:x:@.dp/#/*/title

      // Adding current thread to above [join].
      add:x:@.exe/*/join
         get-nodes:x:@.cur/*

   // Executing [.exe] retrieving all URLs in parallel.
   eval:x:@.exe

   /*
    * Iterating through each above result,
    * returning result to caller.
    *
    * Notice, we only iterate through invocations that have result, and
    * did not timeout by verifying [signal] slot has children.
    */
   for-each:x:@.exe/*/join/*/fork

      // Verifying currently iterated node has result, containing both prompt and completion.
      if
         exists:x:@.dp/#/*/try/*/signal/*/*/prompt/./*/completion
         .lambda

            // Adding primary return lambda to [return] below.
            unwrap:x:+/*/*/*
            add:x:../*/return
               .
                  .
                     url:x:@.dp/#/*/.reference/*/url
                     title:x:@.dp/#/*/.reference/*/title
                     snippets

            // Adding [snippets] to return below.
            add:x:../*/return/0/-/*/snippets
               get-nodes:x:@.dp/#/*/try/*/signal/*

   // Returning result of invocation to caller.
   return
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

ایده اولیه به این شرح است؛

  1. DuckDuckGo را پرس و جو کنید و 5 URL برتر حاصل را خراش دهید
  2. برای هر نتیجه یک رشته ناهمگام ایجاد کنید، و آنها را از URL مربوطه خود بازیابی کنید، با فاصله زمانی 10 ثانیه
  3. منتظر بمانید تا همه رشته ها تمام شوند و یک نتیجه جمع آوری کنید

وجود دارد مقدار زیادی کدهای بیشتر مربوط به این موضوع است، اما از آنجایی که Magic منبع باز است، می توانید کد آن را برای جزئیات بیشتر مطالعه کنید. به عنوان مثال، ما یک مقدار زیادی تا بهترین تلاش خود را برای ایجاد Markdown از HTML حاصل انجام دهیم. این مقدار داده‌هایی را که به ChatGPT ارسال می‌کنیم به میزان قابل توجهی کاهش می‌دهد، در حالی که لینک‌ها، تصاویر و فهرست‌ها را در شکل معنایی آن‌ها حفظ می‌کند. به همین دلیل است که ربات چت ما می‌تواند تصاویر، لینک‌ها و فهرست‌ها را به روشی نمایش دهد. این واقعیت ساده کیفیت چت بات ما را به تنهایی حداقل 1 مرتبه افزایش می دهد.

ما اطلاعات شما را سرقت نمی کنیم

یک کاری که ما متفاوت انجام می دهیم این است که تمام تلاش خود را می کنیم همیشه در صورتی که بتوانیم آن را در متن قرار دهیم، منبع و ارجاعاتی را برای کاربران خود ارائه دهیم. این بدان معناست که معمولاً توضیح خود را با چیزی شبیه به پایان می‌رساند “این اطلاعات از آدرس های اینترنتی زیر دریافت شده است؛ abc، xyz”.

این اول از همه مودبانه است و ثانیاً به کاربران ما این امکان را می دهد بررسی واقعیت آنچه ربات های چت ما به شما می گویند. نتیجه نهایی می شود که به جای “دزدیدن ترافیک از وب سایت شما”، ما احتمالا به جای آن دادن ترافیک اضافی وب سایت شما – از آنجایی که کاربران احتمالاً می خواهند با خواندن منبعی که DuckDuckGo در اختیار ما قرار می دهد سؤالات خود را بررسی کنند.

نتیجه

این هست سخت. یادم می آید که شریک سابقم می گفت؛ “چرا باید روی چیزی سرمایه گذاری کنم که کسی می تواند کپی کند و بدزدد؟” خوب، تا کنون ما تنها کسی در صنعت هستیم که می‌توانیم کاری را که در حال حاضر انجام می‌دهیم انجام دهیم. ما اساسا هستیم “10 سال جلوتر از رقابت”، و هیچ کس قادر به انجام آن نیست “از ما کپی کن” – با وجود اینکه تمام تلاشم را می کنم تا به آنها کمک کنم هر روز ایده های ما را کپی کنند، با نوآوری انحصاری آشکارا در فضای عمومی و صدور مجوز منبع باز 99٪ از هر خط کدی که می نویسم.

تو اشتباه کردی، من درست گفتم، بررسی کن. 7 میلیارد و 999 میلیون و 999 هزار و 999 تا دیگه 😂

Psst، چت ربات های هوش مصنوعی ما را اینجا امتحان کنید

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

همچنین ببینید
بستن
دکمه بازگشت به بالا