برای برنامه نویسان، هوش مصنوعی Generative مزایای ملموسی را ارائه می دهد. این به نوشتن و اشکال زدایی کد کمک می کند و در نتیجه زندگی پر مشغله ما را کمی آسان تر می کند. اما در حال حاضر ابزارهای رقیب مانند ChatGPT و Bard وجود دارد که این سوال را ایجاد می کند: کدام یک برای من بهترین است؟
ما این ابزارها را با یکدیگر در نبرد نهایی مقایسه میکنیم تا ببینیم کدام ابزار غنیترین ابزار در حال حاضر برای اهداف برنامهنویسی است.
کسب اطلاعات بیشتر: خطاهای رایج در پایتون و نحوه رفع آنها
ChatGPT و Bard: تفاوت چیست؟
بزرگترین تفاوت بین ChatGPT و Bard مدل های زبان بزرگ (LLM) است که توسط آنها طراحی شده است. ChatGPT از Generative Pre-trained Transformer 4 (GPT-4) استفاده می کند، در حالی که Bard از مدل زبان برای برنامه های گفتگو (LaMBDA) استفاده می کند. همچنین ChatGPT توسط OpenAI توسعه داده شده است، در حالی که Bard توسط گوگل ساخته شده است.
از نظر قابلیت ها، هر دو کارهای بسیار مشابهی انجام می دهند. برنامه نویسان می توانند از ChatGPT برای موارد زیر استفاده کنند:
پیشنهادات: هر دو مدل میتوانند نحو و پارامترهای صحیح را برای توابع و سایر ساختارهای کد پیشنهاد کنند.
تکمیل: می تواند کدهایی را که شروع به نوشتن کرده اید کامل کند.
اشکال زدایی: می تواند به شما در شناسایی خطاها و مشکلات در کدتان کمک کند.
توضیح: می تواند کدی را که تولید می کند یا کدی که وارد می کنید توضیح دهد.
هر دو مدل بر روی یک مجموعه داده عظیم، از جمله Common Crawl، ویکیپدیا، کتابها، مقالهها، اسناد و محتوای حذفشده از اینترنت آموزش داده شدند. با این حال، Bard کمی متفاوت است زیرا در مورد مکالمات و دیالوگ های وب آموزش داده شده است، در حالی که ChatGPT بیشتر بر روی محتوای کلی خراشیده شده آموزش داده شده است.
هر دو محصول هنوز در حال توسعه هستند، Bard کمی بیشتر از ChatGPT. اما برای اینکه واقعاً نشان دهیم که این تفاوتها واقعاً چه اهمیتی دارند، در اینجا نحوه عملکرد آنها در هنگام آزمایش علیه یکدیگر است.
آزمایش ChatGPT و Bard در برابر یکدیگر
ما هفت دسته را برای آزمایش رباتهای چت در برابر یکدیگر انتخاب کردیم، بر اساس آنچه که احساس میکردیم مرتبطتر هستند: تولید کد، حل مشکل، بازآفرینی کد، کمک اشکالزدایی، افزونههای شخص ثالث/افزودن رابط کاربری، سهولت استفاده و هزینه. بیایید مقدمه این را با گفتن اینکه این یک مقایسه علمی دقیق نیست، بلکه تعداد انگشت شماری از آزمایشات است که با تجربه عملی ما تا به امروز ترکیب شده است.
1. تولید کد
نان و کره چیزی که ما آن را می خواهیم، درست است؟ برای این کار، در اعلان زیر تغذیه کردیم: “یک تابع در پایتون بنویسید که لیستی از 100 عدد اول را برمی گرداند.”
تلاش بارد برای کدنویسی
def get_prime_numbers(n):
"""Returns a list of prime numbers up to n."""
primes = []
for i in range(2, n + 1):
is_prime = True
for j in range(2, i):
if i % j == 0:
is_prime = False
break
if is_prime:
primes.append(i)
return primes
def main():
"""Prints a list of 100 prime numbers."""
primes = get_prime_numbers(100)
print(primes)
if __name__ == "__main__":
main()
محکم به نظر می رسد، اما آیا کار می کند؟ در تجربه ما، رباتهای چت گاهی اوقات میتوانند کدی ایجاد کنند که اجرا نمیشود، حتی تا جایی که توابع اختراع میکنند! این یکی از دلایلی است که داشتن کد تولید شده توسط هوش مصنوعی بدون نظارت انسانی بسیار بد خواهد بود. پس بیایید آن را آزمایش کنیم و ببینیم.
تلاش برای کدنویسی ChatGPT
def generate_primes(n):
primes = []
sieve = [True] * (n + 1)
for current in range(2, n + 1):
if sieve[current] != 0:
primes.append(current)
for multiple in range(current, n + 1, current):
sieve[multiple] = False
return primes
# Generate first 100 prime numbers
# The 100th prime number is 541, so we set the limit to 550 to make sure we get at least 100 primes
primes_100 = generate_primes(550)[:100]
print(primes_100)
وقتی همان دستور را توسط ChatGPT اجرا می کنیم، این کد یک تابع generate_primes(n) را تعریف می کند که یک عدد صحیح n را به عنوان ورودی می گیرد و لیستی از تمام اعداد اول تا n را برمی گرداند. از الگوریتم Sieve of Eratosthenes برای تولید اعداد اول استفاده می کند.
هر دوی اینها یک نتیجه عملکردی ایجاد کردند. مثال ChatGPT در این مورد بهتر است، زیرا تمیزتر است و کد بسیار کمتری دارد. همچنین، دستور مبهم ما را به درستی تفسیر کرد. با این حال، این تنها یک مورد استفاده است: مشخص است که رباتهای گفتگو بسته به زبانی که استفاده میکنند (با زبانهای کمتر رایج یا مستند که دارای خطاهای بیشتری هستند) یا پیچیدگی پرس و جو، در پاسخهایشان بسیار متفاوت هستند. بنابراین بیایید ببینیم Bard و ChatGPT چگونه موارد استفاده مختلف را مدیریت می کنند.
برنده: ChatGPT 🏆
2. حل مسئله
بیایید ببینیم که چگونه این LLM ها با یک مشکل برخورد می کنند. به جای اینکه فقط از آنها بخواهیم یک تابع عمومی بنویسند، اجازه دهید یک مشکل برنامه نویسی را از Leetcode به آنها بیاندازیم:
کد جاوا اسکریپتی بنویسید که همه آرایه ها را تقویت کند به طوری که می توانید متد ()array.last را در هر آرایه ای فراخوانی کنید و آخرین عنصر را برمی گرداند. اگر هیچ عنصری در آرایه وجود نداشته باشد، باید -1 را برگرداند.
حل مشکل ChatGPT
Here's how you would do it in JavaScript:
Array.prototype.last = function() {
if (this.length === 0) {
return -1;
} else {
return this[this.length - 1];
}
};
In this code:
Array.prototype.last adds a new method called last to the Array.prototype object. This ensures that all arrays will have this method.
this refers to the array object on which the last method is being called.
this.length gives the number of elements in the array.
If the array is empty (this.length === 0), the method returns -1.
Otherwise, the method returns the last element of the array: this[this.length - 1].
Here is how you would use it:
let array = [1, 2, 3, 4, 5];
console.log(array.last()); // prints: 5
array = [];
console.log(array.last()); // prints: -1
Remember that extending built-in JavaScript objects like Array is generally not recommended, as it can lead to conflicts if the JavaScript environment (like a browser or Node.js) adds a method with the same name. This is generally called monkey patching and is usually avoided in production-grade code. But for quick and dirty hacks, or to understand how JavaScript works, it's a fun tool to use!
ChatGPT نه تنها مشکل را حل می کند، بلکه مشکل را توضیح می دهد. مرتب! بیایید کد را از طریق leetcode اجرا کنیم و ببینیم که آیا واقعاً آزمایشات را پشت سر می گذارد یا خیر.
به نظر می رسد ChatGPT در اولین تلاش مشکل را حل کرده است! اکنون زمان آن است که بارد به سمت بشقاب برود.
حل مشکل بارد
Sure, here is the JavaScript code that enhances all arrays such that you can call the array.last() method on any array and it will return the last element. If there are no elements in the array, it should return -1:
// Define a new method on the Array prototype
Array.prototype.last = function() {
// If the array is empty, return -1
if (this.length === 0) {
return -1;
}
// Otherwise, return the last element
return this[this.length - 1];
};
Here is an example of how to use the array.last() method:
const array = [1, 2, 3, 4, 5];
// Get the last element of the array
const lastElement = array.last();
// Print the last element of the array
console.log(lastElement); // 5
بسیار خوب، بنابراین ما توضیح کاملی از Bard در مورد نحوه عملکرد کد دریافت نکردیم. با این حال، وقتی آنچه را که ChatGPT و Bard تولید کردند، مقایسه کنید، تقریباً یکسان است. آیا آنها به تکالیف یکدیگر نگاه می کردند؟
طبیعتاً نمیتوانیم حرف بارد را قبول کنیم، بنابراین آزمایش را از طریق Leetcode اجرا میکنیم و…
… کار می کند! با توجه به اینکه پاسخ تقریباً مشابه ChatGPT بود، قابل انتظار است.
وقتی نوبت به حل مشکل می رسد، یک تماس سخت بین این دو است. در حالی که آنها نتایج تقریباً یکسانی تولید می کنند، ChatGPT کد را بسیار بهتر برای شما توضیح می دهد، که برای یادگیری نحوه ماهیگیری به جای اینکه ChatGPT فقط برای شما ماهیگیری کند، بسیار خوب است. این تجربه کلی ما در استفاده از ChatGPT بوده است: نه تنها یک راه حل ممکن برای مشکل خود دریافت می کنید، بلکه ChatGPT شما را کمی بیشتر از طریق آن راهنمایی می کند.
برنده: ChatGPT 🏆
3. Refactoring Code
فرض کنید می خواهید راه بهینه تری برای انجام کاری پیدا کنید. این عالی است که دیدگاه متفاوتی در مورد کد خود داشته باشید، و برخلاف هم تیمی های خود (با فرض اینکه آنها را دارید)، این ابزارها همیشه رایگان و آماده بررسی کد شما هستند. پس بیایید ببینیم چگونه است! در اینجا نمونه ای است که ما آن را ارائه کردیم.
What is a more optimized way to write this code?
Array.prototype.last = function() {
if (this.length === 0) {
return -1;
} else {
return this[this.length - 1];
}
};
تلاش برای بازسازی ChatGPT
بنابراین ChatGPT پاسخی مبهم به ما داد. به طور مبهم کد را توضیح می دهد و یک اپراتور سه تایی را پیشنهاد می کند که خوب است و ارزش بررسی را دارد. با این حال، به نظر می رسد که می توانست کمی بیشتر انجام دهد. بیایید ببینیم بارد چگونه همان وظیفه را انجام می دهد.
تلاش بارد برای بازسازی مجدد
وای! تفاوت بین ChatGPT و Bard مانند گچ و پنیر است: Bard به وضوح فراتر از آن رفته است. نه تنها کد بهینه شده را ارائه می دهد، بلکه کدی را برای ایجاد یک معیار نشان می دهد و نتایج معیار را نشان می دهد.
به طور کلی، ما دریافتیم که بارد در بازآفرینی کمی بهتر است. بخشی از این احتمالاً به این دلیل است که Bard علاوه بر مدل زبان بزرگ (LLM) از اطلاعات موتور جستجو استفاده می کند، در حالی که ChatGPT در حال حاضر فقط یک LLM است. با این حال، باید بگویم که ChatGPT در حال حاضر در حال آزمایش بتا ویژگی «جستجو با بینگ» است و آن را در اختیار کاربران رایگان قرار میدهد، بنابراین ChatGPT ممکن است خیلی زود در بازسازی کد بسیار بهتر شود. اما فعلا باید برد را به بارد بدهیم.
برنده: بارد 🏆
4. کمک اشکال زدایی
حشرات بخشی از زندگی هستند. بیایید یک بیت کد بدیهی ناقص را در هر دو ابزار پرتاب کنیم و ببینیم که چقدر خوب آن را انتخاب می کند. ببینید آیا می توانید قبل از ChatGPT و Bard آن را ببینید یا خیر! دستوری که استفاده کردیم این است: کد زیر را که دارای خطا است اشکال زدایی کنید. کدی را ارائه کنید که خطاهای احتمالی را با آن برطرف کند.
def calculate_average(numbers):
total = 0
for number in numbers:
total += number
average = total / len(numbers)
return average
تلاش برای رفع اشکال ChatGPT
بسیار خوب، ChatGPT به ما پاسخی داده است که می گوید برای جلوگیری از خطای «ZeroDivision» باید مقداری منطق اضافه کنیم. گزینه ای برای انجام این کار می دهد و مشکل را توضیح می دهد. حالا نوبت بارد است.
تلاش بارد برای رفع اشکال
بارد با عملکردی که ChatGPT انجام داد همان مشکل را پیدا کرد. اما بار دیگر، بارد توضیحات بسیار دقیق تری ارائه کرده است. خطاهای احتمالی را تشریح می کند، نحوه رفع آنها را توضیح می دهد، نحوه استفاده از تابع و خروجی را به ما می گوید. وای!
برای اشکال زدایی، ما به طور کلی دریافتیم که Bard در پاسخ ها و توضیحات خود بسیار دقیق تر است. مواردی وجود داشته است که متوجه شدهایم ChatGPT باگها را بهتر کشف کرده است، اما در مجموع، Bard مثالهای واضحتری را در اختیار کاربر قرار میدهد.
بارد این یکی را برد و بنابراین ما 2-2 مساوی شدیم. آیا یکی از آنها می تواند بن بست را بشکند؟
برنده: بارد 🏆
5. افزونه های شخص ثالث و پسوندهای رابط کاربری
با اتصال یک افزونه شخص ثالث به یک LLM، میتوانیم قابلیتهای آنها را به روشهای عجیبی گسترش دهیم و به آنها اجازه دهیم کد را در مکالمه چت اجرا کنند یا با برنامههایی مانند Zapier ادغام شوند.
ChatGPT در حال حاضر بیش از 80 افزونه را به عنوان یک ویژگی بتا به مشترکین ممتاز خود ارائه می دهد. برای آشنایی با برخی از این موارد، مقاله ما را بررسی کنید: «برترین افزونه های ChatGPT برای توسعه دهندگان». در اینجا نمونه ای از فروشگاه افزونه ChatGPT در حال حاضر آورده شده است:
و در اینجا یک نمونه از فروشگاه افزونه Bard است:
…خب من نمیتونم چیزی نشونت بدم چون وجود نداره! شایعه شده است که در نقشه راه قرار دارد، اما هنوز هیچ چارچوب زمانی وجود ندارد.
اگر نمی خواهید از رابط وب استفاده کنید، هم ChatGPT و هم Bard یک API ارائه می دهند. با این حال، API Bard هنوز محدود به دعوت است، بنابراین ما موفق به آزمایش آن نشدیم. با این حال، API ChatGPT بسیار کامل و کامل است. ChatGPT همچنین دارای یک برنامه تلفن همراه رسمی است که به طور شگفت انگیزی قابل استفاده است و هنگام ایده پردازی بسیار مفید است.
برای این مورد، باید به ChatGPT امتیاز بدهیم، زیرا Bard یا هنوز ویژگی ها را ندارد یا آنها را پشت لیست دعوت پنهان می کند.
برنده: ChatGPT 🏆
6. سهولت استفاده
بسیار خوب، بنابراین در ابتدا، استفاده از ChatGPT و Bard بسیار آسان است. هر دو دارای یک رابط وب هستند که در آن شما یک درخواست را وارد می کنید و پاسخ دریافت می کنید. نسبتاً سرراست، درست است؟ آنها همچنین هر دو “مکالمات” دارند که در آن می توانند زمینه را حفظ کنند. با این حال، تفاوت هایی بین این دو وجود دارد.
یک تفاوت بزرگ این است که چگونه ChatGPT مکالمات شما را ردیابی می کند. آنها در سمت چپ صفحه ذخیره می شوند، هیچ محدودیتی برای طول آنها وجود ندارد و همیشه در دسترس هستند. همچنین می توانید هر زمان که بخواهید آنها را حذف کنید.
در مقایسه، Bard به شما اجازه ذخیره و دسترسی به مکالمات گذشته خود را نمی دهد. شما می توانید به سابقه خود دسترسی داشته باشید و آنچه را که جستجو کرده اید جستجو کنید، اما نمی توانید مانند ChatGPT روی یک مکالمه کلیک کرده و مجدداً راه اندازی کنید. شما فقط می توانید آنچه را که تایپ کرده اید برای یک درخواست ببینید. علاوه بر این، بارد طول مکالمه را محدود می کند، بنابراین اگر طولانی شد باید از نو شروع کنید.
یکی از ویژگی های Bard که ChatGPT ندارد، ویژگی “پیش نویس” است. در Bard، شما به مجموعهای از پیشنویسها دسترسی دارید تا بتوانید پاسخهای مختلف به درخواست خود را مرور کنید، که مفید است. با این حال، حتی با وجود این، ما استفاده از ChatGPT را آسانتر و قدرتمندتر یافتیم.
برنده: ChatGPT 🏆
7. هزینه
هر ابزاری باید بخشی در مورد هزینه آن داشته باشد، درست است؟ ChatGPT دارای هر دو نسخه رایگان و پریمیوم به نام ChatGPT Plus است که ماهانه 20 دلار صورتحساب دارد. مشترکین ممتاز به ویژگیهای جستجوی اینترنتی بیدرنگ، افزونهها، پاسخهای بهتر از مدل GPT-4، زمان پاسخدهی سریعتر، دسترسی اولویتدار به ویژگیهای جدید و دسترسی در زمانهای اوج مصرف دسترسی دارند.
در مقایسه، Bard برای هر کسی که دسترسی دارد رایگان است. برای دریافت این دسترسی نیاز به یک حساب Google شخصی است که خودتان آن را مدیریت می کنید، یا یک حساب Google Workspace که سرپرست شما با آن دسترسی به Bard را فعال کرده است (که اگر این کار را نکرده باشد می تواند کمی ناامید کننده باشد).
این احتمال وجود دارد که Bard در مقطعی تجاری شود، اما با توجه به اینکه در حال حاضر در مقابل فریمیوم رایگان است، Bard به طور پیش فرض برنده می شود.
برنده: بارد 🏆
نتیجه: ChatGPT برنده است، اما هر دو ابزار مفید هستند!
با امتیاز چهار به سه، ChatGPT به طور کلی برنده می شود (👑)، اما در عمل هر دوی این ابزارها باید بخشی از زرادخانه شما باشند. در اینجا چند نکته کلیدی وجود دارد که باید به عنوان یک توسعه دهنده با استفاده از این ابزارها به خاطر داشته باشید:
نسخه پایه ChatGPT فقط یک LLM است، به این معنی که اطلاعات ممکن است قدیمی باشند. بارد هم از LLM و هم از داده های جستجو استفاده می کند. این به زودی تغییر خواهد کرد، زیرا ChatGPT «جستجو با بینگ» را در پیشنهاد رایگان خود پیادهسازی میکند.
ChatGPT به طور کلی برای تولید اسناد بهتر است
Bard بیشتر اوقات توضیحات کامل تری از کد ایجاد می کند
Bard طول مکالمه را محدود می کند، ChatGPT فقط درخواست ها را در طول زمان محدود می کند (GPT-4)
به یاد داشته باشید که حتی اگر از این ابزارها استفاده می کنید، درک کدی که با آن کار می کنید مهم است. زیاد به آنها اتکا نکنید زیرا نتایج در هیچ نقطه ای دقیق نیستند.