بایگانی برچسب: s

اقتصاد API محور – چگونه Wrapper ها ما را به کشتن خواهند داد؟

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

و خب طبیعیه که در طی چند سال گذشته سرویس‌های زیادی مانند اول‌ای‌آی اومدند که به شما امکان ساخت wrapper روی APIهای مدل‌های زبانی و تصویری متعددی رو میدن. در این مطلب، میخواهیم یک بررسی جامعه داشته باشیم که چرا این API wrapper ها می‌تونن ما و کسب و کارمون رو به ته دره هدایت کنند 🙂

اصلا API Wrapper یعنی چی؟

در دنیای هوش مصنوعی ما دو تا راه داریم که یک محصول بسازیم. تقریبا میشه گفت بسته به شرایط، یکی می‌تونه نسبت به اون یکی برتری داشته باشه اما در این مطلب، میخواهیم ببینیم که «معایب» ساخت API Wrapper چیه. به همین خاطر اول به این پرسش باید پاسخ داد که «اصلا API Wrapper یعنی چی؟»

فعل wrap در زبان انگلیسی یعنی چیزی که به چیز دیگر احاطه پیدا می‌کنه و اون رو می‌پوشونه. یعنی ما ابزاری بسازیم که در واقع فقط فرانت‌اند یک API معروف (مثل OpenAI) باشه.

حالا خیلی‌ها این API رو مستقیم از OpenAI یا DeepSeek یا MiniMax تهیه می‌کنند، یا از واسطه‌های خارجی مثل UseAPI و OpenRouter و یا این که از واسطه داخلی مثل اول‌ای‌آی و لیارا.

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

چرا ساخت API Wrapper ایده خوبی نیست؟

در اینجا مواردی رو میارم که ساخت API Wrapper ایده خوبی نیست. شاید در پستی در آینده، مواردی رو برشمردم که اتفاقا می‌تونه ایده خوبی هم باشه.

در حال حاضر، تمرکز ما روی اون دوستانیه که با API دمو می‌کنند و مدعی میشن مدل خودشونه و این داستانا که اتفاقا عمدتا هم وقتی به سیستم‌های Air Gap یا لوکال میان، تازه مشخص میشه دموشون چقدر دروغ و دغل بوده.

خلاقیت رو ازمون می‌گیره

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

اینجا، اگر خودم دست به Google Colab و Stable Diffusion نمی‌بردم، قاعدتا امکان این که بتونم پروسه میدجرنی رو تا حد زیادی مهندسی معکوس کنم، وجود نداشت.

جریان داده دست خودمون نیست

جریان داده در کسب و کارهای مختلف مهمه، کدهای شما، نامه‌های اداری و اطلاعات مشتریانتون مهمه. نتیجتا اگر میخواهید امنیت بالاتری رو داشته باشید، بهتره از APIها استفاده نکنید.

یا اگر هم سراغ API ها می‌رین، برید سراغ خود تامین‌کننده‌های رسمی. به جز خود OpenAI و Anthropic و DeepSeek معمولا Open Router و Together AI هم جزء تامین‌کنندگان رسمی مدل‌های زبانی هستند. همچنین Fal AI, Runware و Replicate هم جزء تامین‌کنندگان رسمی مدل‌های ویدئویی و تصویری هستند و می‌تونید از این دوستان هم API رو تهیه کنید.

آفلاین نیست

آخرین و شاید یکی از مهم‌ترین ارکان APIها – بخصوص برای مایی که در ایران زندگی می‌کنیم – این موضوعه. این موضوع یک عیب بزرگه و خب میشه با ابزارهایی مانند Ollama تا حدی از پسش بر اومد.

چطور ممکنه API Wrapper به کشتنمون بده؟

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

  • تعطیلی ارائه‌دهنده
  • قطع و وصل شدن API (چیزی که بخصوص در APIهای واسط مثل اول‌ای‌آی کاملا پیش میاد)
  • هک شدن API و لو رفتن دیتا
  • ارسال دیتا به واسطه‌هایی که ازشون مطمئن نیستیم
  • عدم کنترل روی محصول وقتی اینترنت با مشکل مواجه می‌شه.

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

جمع‌بندی

در کل API Wrapper نوشتن برای پروژه‌های عام‌منظوره، کار عجیب و بدی نیست و خب هزینه خروج و شکست رو به وضوح کمتر می‌کنه، در حالی که برای انجام کار جدی و حساس، گزینه مناسبی نیست. اگر هرکدوم از معایبی که برشمرده شد رو تونستید برطرف کنید، احتمالا گزینه مناسبی برای شما، پروژه یا کسب و کارتونه؛ در غیر اینصورت باید کمی Local تر فکر کنید.

در نهایت، ازتون ممنونم که وقت گذاشتید و این مطلب رو خوندید. باز هم اگر نظر و پیشنهادی پیرامونش داشتید، ممنون میشم در بخش نظرات همین بلاگ یا بخش گفتگوی کانال تلگرام به من بگید.

Share

یک تخم مرغ اضافه کن: رساله‌ای در باب اثر IKEA

احتمالا شما هم در دهه هشتاد شمسی، تبلیغ معروف تلویزیونی «به همین سادگی، به همین خوشمزگی، پودر کیک رشد» رو یادتون باشه. پودرهای کیک آماده، یکی از اختراعات جالب بشر بودند که هنوز هم فکر کردن بهشون برای من شخصا جالبه. اما موضوعی که وجود داره، اینه که این پودرها، باعث شدند مفهومی به اسم اثر IKEA یا IKEA Effect به وجود بیاد.

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

پودر کیک آماده: مردها هم آشپزی می‌کنند!

در سال ۱۹۳۰ میلادی شرکتی با نام Duff and Sons محصولی به بازار ارائه کرد. پودر کیک آماده! این محصول با شعار مردها هم آشپزی می‌کنند سعی داشت بگه در حدی کار پختن کیک رو ساده کرده که آقایون هم می‌تونن صرفا با اضافه کردن آب یا شیر به این پودر و قرار دادنش در فر، کیک بپزند.

اما یک مشکلی به مدت دو دهه، گریبان این محصول رو گرفت. نه فقط شرکت Duff and Sons بلکه هر شرکت دیگری که پودر کیک تولید می‌کرد، چنین معضلی رو باهاش روبرو بود. نمی‌تونستند بفروشند.

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

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

یک تخم مرغ اضافه کنید!

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

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

همین هک ساده، باعث افزایش چند برابری فروش این محصول شد. اما حالا ربطش به آیکیا چیه؟ بهتره یه بررسی روی آیکیا داشته باشیم!

آیکیا: کسب و کار اضافه کردن تخم مرغ به پودر کیک

اگر در فضای کسب و کار و بخصوص حوزه لوازم خانگی فعال باشید حتما اسم آیکیا رو شنیدید. یک برند سوئدی که بخاطر یک موضوع خیلی معروفه:

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

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

اما چرا این موضوع «سرهم کردن کتابخونه توسط خودمون» خیلی مهمه؟ چون داره مشتری رو وارد پروسه تولید می‌کنه و این یعنی فروش حس به مشتری.

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

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

اثر آیکیا در خدمت تکنولوژی

قبل از این که بخوام از نمونه‌های عملی اثر آیکیا در تکنولوژی صحبت کنم، لازمه ذکر کنم خود آیکیا، از اثر آیکیا در تکنولوژی استفاده کرده. چطور؟ خیلی ساده‌ست.

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

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

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

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

جمع‌بندی

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

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

در پایان امیدوارم موفق و موید باشید و از خیزش ربات‌ها هم نترسید 🙂

Share

خانواده‌ مدل‌های زبانی Xei برای اجرای روی دستگاه شما آمده‌است!

مدتی پیش، پروژه‌های مختلفی مثل مارال یا جبیر رو با هدف انتشار و ساخت یک مدل زبانی بزرگ با همون LLM (مخفف Large Language Model) شروع کرده بودم اما بحث این مدل‌ها و شاید همزمان شدن انتشار این‌ها با نسخه‌های جدیدی از پلتفرم‌های مانی و آتلیه، کمی باعث شده بود که از هدف اصلی دور بشیم.

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

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

تصمیم به ساخت یک خانواده از مدل‌ها

از تولیدکنندگان بزرگ و تجاری مدل‌های جنریتیو که بگذریم، بسیاری از شرکت‌هایی که مدل‌های اوپن سورس تولید می‌کنن و نام‌داران این عرصه هم هستند (مثل Alibaba Cloud, DeepSeek, Mistral و حتی Meta) عموما به یک عدد مدل کفایت نمی‌کنند.

مدل‌هایی که این شرکت‌ها تولید می‌کنند عموما در یک «خانواده» قرار داره و این خانواده هم بر اساس تعداد پارامتر، توانایی استنتاج (یا همون Reasoning) توانایی بینایی ماشین (یا همون vision) و …، تعیین می‌شن. برای مثال یکی از مدل‌های معروف این حوزه که LLaMA نام داره و توسط شرکت متا ساخته شده، معمولا در یک نمونه کوچک (۷ یا ۸ میلیارد پارامتری)، یک نمونه متوسط (۱۱ یا ۱۳ پارامتری) و نمونه‌های بزرگ (۷۰ میلیارد پارامتر و بیشتر) تولید میشه.

اما خب یک مورد دیگری هم که به چشمم خورد، کاری بود که DeepSeek با R1 کرده بود. در واقع اومده بودن مدل‌های کوچکتر (از یک و نیم میلیارد تا هفتاد میلیارد پارامتر) رو با روش Distillation درست کرده بودند.

در واقع مدل‌هایی مثل LLaMA, Qwen, Mistral و … رو با داده‌هایی که از مدل دیپ‌سیک ۶۷۱ میلیارد پارامتری به دست آورده بودند، مجدد آموزش دادند که در اختیار افراد بیشتری قرار بگیره.

همین موضوع، باعث شد که به این فکر بیفتیم که در سال ۱۴۰۴ به جای این که هفته‌ای یک LLM ریلیز کنیم 😁 یک خونواده خوب از LLMها برای تمام فصول ریلیز کنیم که باز هم از DeepSeek V3 و ترین‌ کردن QLoRA و مرج کردن روی اون شروع شد.

اسم Xei از کجا میاد؟

پیش از این که بخواهیم در مورد خود مدل‌ها و روش اجراشون صحبت کنیم، کمی در مورد اسم توضیح بدم.

ریاضیدانان ایرانی مثل خوارزمی، موقعی که معادلات خاصی رو حل می‌کردند از عبارت «شیء» بعنوان مجهول استفاده می‌کردند. وقتی اروپایی‌ها آثار این دانشمندان رو به زبان‌های خودشون ترجمه کردند، درک کردند که این «شیء» در واقع مجهوله و به جای این که Object (یا چیزی معادلش) ترجمه‌ش کنند، برای حفظ حالت مجهولش از عبارت xei استفاده کردند که بعدا شد xای که در معادلات مختلف استفاده می‌کنیم.

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

اما حالا مدل‌ها چی هستند؟ چرا انقدر این خونواده از مدل‌ها مهم بود؟

اهمیت خانواده مدل Xei

یکی از دلایل اصلی ساخته شدن Xei این بود که این مدل‌ها بتونن هم روی دستگاه‌های کاربر نهایی مثل من و شما اجرا شن هم روی زیرساخت‌های بزرگ و صنعتی.

در واقع هم تعدادی مدل On Device داشته باشیم و هم تعداد زیادی مدل برای استفاده Enterprise و به همین خاطر ۷ تا مدل در این خونواده، قرار گرفته که در ادامه بررسی می‌کنیم.

مدل‌های Xei

  • مدل ۰.۱ میلیارد پارامتری، مبتنی بر لاماست و صرفا زبان انگلیسی می‌فهمه و می‌تونه در کارهایی مثل کدنویسی به شما کمک کنه.
  • مدل ۰.۵ میلیارد پارامتری، مبتنی بر Qwen ساخته شده. با این که از دیتای چندزبانی درش استفاده شده ولی بهترین عملکرد رو روی انگلیسی داره و همچنان برای کارهایی مثل کدنویسی و نوشتن ایمیل، مناسبه.
  • مدل ۲ میلیارد پارامتری که مبتنی بر Gemma 2 ساخته شده و محمد شجاعی عزیز زحمت ساختش رو کشیده، اولین مدلیه که به خوبی فارسی رو درک می‌کنه و می‌تونه به زبان فارسی به شما پاسخ‌های درست بده.
  • مدل ۸ میلیارد پارامتری که در واقع همون هرمز قدیمی خودمونه و مبتنی بر Command-R از Cohere ساخته شده.
  • مدل ۳۲ میلیارد پارامتری که باز هم مبتنی بر Command-R ساخته شده و نتایج بهتر و دقیق‌تری می‌تونه تولید کنه.
  • مدل ۱۰۰ میلیارد پارامتری که باز هم مبتنی بر Command-R ساخته شده 😁
  • و در نهایت مدل ۶۷۱ میلیارد پارامتری که مبتنی بر DeepSeek V3 ساخته شده و از معماری MoE بهره می‌بره.

و خب همونطوری که می‌بینید، تا مدل ۸ میلیارد پارامتری به سادگی روی اکثر رایانه‌های شخصی حتی بدون کارت گرافیک NVIDIA قابل اجراست ولی نمونه ۳۲ و ۱۰۰ و ۶۷۱ نیاز به منابع بیشتری دارند که در ادامه به اون‌ها هم می‌پردازیم.

چطوری به Xei دسترسی پیدا کنیم؟

اگر می‌خواهید مستقیما به سمت مدل ۶۷۱ میلیارد پارامتری بریم، کافیه که به این سرویس برید، یک حساب کاربری بسازید و شروع به چت کنید.

ولی اگر دوست دارید که این مدل رو روی سیستم شخصی خودتون اجرا کنید، می‌تونید از کتابخونه Ollama نسخه مناسب رو دانلود کنید (با کارت ۲۰۵۰ تا مدل ۳۲ میلیاردی قابل اجراست، گرچه بهترین نتیجه مربوط به همون ۸ میلیاردیه).

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

جمع‌بندی و سخن آخر

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

اما کل داستان این نیست و به زودی با سورپرایزهای جدید‌تری، در خدمت شما خواهیم بود. امیدوارم تا اون موقع با Xei کارهای خفنی کرده باشید 😎

Share

برای ساخت agent های هوش مصنوعی، فقط به پایتون نیاز دارید!

پاییز دو سال پیش بود که ChatGPT آمد و به شکل خاصی بازار همه چیز رو عوض کرد یا بهتره بگم که به هم ریخت 😁 در این مدت نه فقط OpenAI که هزاران شرکت دیگر هم دست به کار شدند و شروع کردند به ارائه مدل‌های زبانی بزرگ یا همون LLMها و خواستند که به شکلی با OpenAI رقابت کنند.

الان که دو سالی از اون روزها گذشته منتها موضوع کمی تفاوت داره و بیش از این که سمت ارائه مدل بریم، بهتره به سمت agent یا «عامل» بریم که خب خودش یک بحث مفصله.

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

ایجنت‌ها، عملگرایی به LLMها اضافه می‌کنند.

اگر دنبال‌کننده بلاگ و در کل محتوای من باشید، احتمالا می‌دونید که من هم در بازی LLM بودم و مثلا یکی از LLMهای اوپن سورسی که روش کار کردم مدل مارال هفت میلیارد پارامتری بود که روی Alpaca Persian تمرین داده شد.

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

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

برای حل این مشکل، ما نیاز به agentها داریم. در واقع در مثال‌های فوق هر API و ابزاری که لازم داریم رو برمیداریم، می‌بریم یک جایی براشون توابع درستی می‌نویسیم و سپس با کمک LLMها خروجی رو «انسانی» یا Humanize می‌کنیم. به این شکل بار فاین‌تیون کردن LLMهم به دوش نمی‌کشیم و همه چیز هم عالی پیش خواهد رفت.

ساخت ایجنت بدون استفاده از فریمورک

دقیقا از زمانی که OpenAI و سایر شرکت‌هایی که LLM ارائه دادند APIهای چت و یا Instruction Following خودشون رو هم ارائه کردند، فریمورک‌های زیادی مثل Flowise یا Crew AI ساخته شدند که به شما کمک کنند تا ایجنت بسازید.

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

نتیجه این شد که شخصا به دنبال روشی گشتم که بتونم بدون استفاده از فریمورک خاصی، به راحتی بتونیم یک ایجنت بسازیم. برای همین لازم بود که درک کنم ایجنت اصلا چی کار می‌کنه؟ چرا انقدر مهمه که ما بتونیم ایجنت رو درک کنیم؟ و صدالبته از هر ایجنتی که اسمش «اسمیت» باشه دوری بجوییم 😂

ایجنت‌ها یک سری «وظیفه» و «ورودی مناسب هر وظیفه» رو درک می‌کنند. این وظایف یا تسک‌ها در واقع توابعی هستند که در برنامه‌مون قرار ادادیم که بتونن یک کاری رو انجام بدن (مثلا بره رخداد n ام سری فیبوناچی رو حساب کنه) و ورودی‌هاشون هم دیتاییه که ایجنت باید با هوش خودش تشخیص بده و بسازه.

در نهایت نیاز به مکانیزمی داریم که بیاد این وظایف و ورودی‌ها رو اجرا کنه، خروجیشون رو دوباره بده به LLM و ازش بخواد که Humanizeش کنه. گذشته از این بد نیست که ایجنت ما یک حافظه کوچکی هم داشته باشه.

نمونه یک ایجنت ساده با پایتون

سلب ادعا: از اونجایی که کد این ایجنت رو در گیتهاب گذاشتم، صرفا مراحل ساخت ایجنت ساده رو توضیح میدم و باقیش رو میتونید از گیتهابم ببینید و ایده بگیرید.

اولین گام ما برای ساخت ایجنت باید این باشه که یک LLM مناسب انتخاب کنیم. شما مختارید هر LLMای که یک OpenAI Compatible API ارائه می‌ده انتخاب کنید اما من شخصا دارم از پروژه جبیر خودم استفاده می‌کنم 😁

بعد از اون، لازم داریم که بیاییم یک کلاینت ساده OpenAI درست کنیم که بتونه با API مورد نظر ما کار کنه:

from openai import OpenAI

client = OpenAI(api_key="FAKE", base_url="https://openai.jabirpoject.org/v1")

همونطور که قبلا در این پست توضیح داده بودم، کتابخونه OpenAI در پایتون نیازمند یک API Keyئه که اینجا ما از FAKE استفاده کردیم براش.

حالا یک کلاس ایجنت ساده درست می‌کنیم که حافظه هم داشته باشه:

class Agent:
    
    def __init__(self, system=""):
        self.system = system
        self.messages = []
        if self.system:
            self.messages.append({"role" : "system", "content" : system})
    
    def __call__(self, message):
        self.messages.append({"role" : "user", "content" : message})
        result = self.execute()
        self.messages.append({"role" : "assistant", "content" : result})
        return result
    
    def execute(self):
        completion = client.chat.completions.create(
            model = "jabir-400b",
            messages = self.messages,
            temperature = 0.0
        )
        
        return completion.choices[0].message.content

همونطوری که می‌بینید، این ایجنت می‌تونه یک تاریخچه از چیزهایی که بهش گفتیم (و بهمون گفته) نگه داره و کم کم باید بریم سراغ این که بهش اکشن‌های مورد نظر رو اضافه کنیم.

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

sample_agent = Agent("You are a helpful assistant")
print(sample_agent("What is 1+1?"))

کد نمونه با اکشن

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

جمع‌بندی

اگر طی دو سه سال گذشته محتوای این بلاگ رو خونده باشید می‌بینید که علاقه من به هوش مصنوعی از پروژه‌هایی مثل ریاضی ۱ رو با هوش مصنوعی پاس کن یا پلاک‌خوان فارسی که با Yolo v5 پیاده کرده بودم جدی شد.

این علاقه، کم کم به سمت Generative AI رفت و خب طبیعتا همین علاقه باعث ساخته‌شدن پلتفرم مانی و همچنین آتلیه شد. اما خب در سال ۲۰۲۵ احتمالا بیش از این که به مدل‌های جدید نیاز داشته باشیم، نیاز داریم که مدل‌ها رو به سمت agentic شدن بیاریم و اپلیکیشن‌ها رو به شکل AI agent داشته باشیم.

Share

استفاده از APIهای ChatGPT به صورت کاملا رایگان!

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

احتمالا شما هم دوست داشتید که از APIهای OpenAI استفاده کنید ولی هزینه‌های بالایی داشته و اونطوری که باید و شاید، نتونسته شما رو راضی کنه. در این پست، می‌خوام یک راهکار بهتون نشون بدم که به صورت «کاملا رایگان» بتونید از این APIها استفاده کنید. فقط یادتون باشه که این روش رو فقط برای مصارف شخصی استفاده کنید، چون اگر ببریدش روی محصول، ممکنه دردسرساز بشه براتون.

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

پیش‌نیازها

برای این که از این آموزش استفاده کنیم، نیاز داریم این موارد رو بلد باشیم:

  • آشنایی پایه با APIها و این که چطور کار می‌کنند (می‌تونید یکی از مطالب قدیمی من رو بخونید)
  • آشنایی اجمالی با پایتون

همین؟ بله همین!

شروع به کار

نصب کتابخانه‌های مربوطه

مثل هر پروژه دیگری، ابتدا نیاز داریم تا کتابخانه‌ها و چارچوب‌های مربوط به اون رو، روی سیستم خودمون نصب کنیم. چون این پروژه پایتونیه، از ابزار pip استفاده خواهیم کرد.

اما قبل از اون، بهتره یک محیط مجازی پایتون ایجاد کنیم:

virtualenv -ppython3 .venv

بعد از اون، وقتشه که فعالش کنیم:

source .venv/bin/activate

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

بعد از فعالسازی، ترمینال شما به این شکل درمیاد:

(venv) ~:$

این به این معناست که محیط مجازی پایتون، اجرا شده و میشه بدون مشکل ازش استفاده کرد.

حالا وقتشه که کتابخونه‌های openai و g4f رو نصب کنیم:

pip install "g4f[all]" openai

این دو کتابخونه، دقیقا تنها چیزهایی هستند که ما نیاز داریم!

حالا g4f چیه؟

عبارت g4f مخفف gpt4free و بازی با عبارت gpt for free یعنی «جی‌پی‌تی رایگان»ئه! حالا این کتابخونه چه کاری می‌کنه که gpt رایگان به ما می‌رسونه؟ 😁

کاری که این کتابخونه می‌کنه، اینه که میاد و از providerهای مختلفی که داره (بعضیا مثل Airforce/OpenRouter با خواست خودشون البته در اختیارش قرار دادند) استفاده می‌کنه و به شما امکان استفاده از مدل‌های متنوع هوش مصنوعی مثل GPT, Claude, Mistral و … رو میده. در واقع یک «تلاش برای دمکراتیزه کردن هوش مصنوعی» در نوع خودش می‌تونه محسوب بشه.

و خب نه فقط چت‌بات، که APIهای تولید تصویر (بخصوص با مدل Dall-E) رو هم پشتیبانی درستی داره می‌کنه! اما حقیقتش رو بخواهید، مدل‌های تصویرش به شدت محدودن و بهتره که به همین متنی‌ها قناعت بورزیم 😁

چرا به OpenAI نیاز داریم؟

این هم سوال خوبیه. مگه نگفتیم قرار نیست از خود OpenAI یا سایر فراهم‌کنندگان APIهاش سرویس بگیریم؟ درسته. ولی نیاز داریم به کتابخونه پایتونیش برای این که بتونیم از API لوکالمون استفاده کنیم!

راه‌اندازی API لوکال

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

g4f api

بعدش enter بزنید و صبر کنید تا API بیاد بالا. وقتی API بیاد بالا چنین صحنه‌ای می‌بینید:

و تبریک، API ما قابل استفاده‌ست.

نوشتن کد پروژه

این همه توضیح دادیم تا برسیم به بخش جذاب ماجرا، که نوشتن کدهای پروژه‌مونه!

اول لازم داریم تا کتابخونه‌های لازم رو به پروژه اضافه کنیم:

from openai import OpenAI

این قطعه کد، میاد و کلاس OpenAI رو از کتابخونه openai برای ما در پروژه لود می‌کنه.

بعدش نیاز داریم یک کارخواه OpenAI درست کنیم:

client = OpenAI(
 api_key = "FAKE", 
 base_url = "http://localhost:1337/v1"
)

خب یک توضیحی بدم، کتابخونه OpenAI بدون API Key کار نمی‌کنه. به همین خاطر یک مقدار بی‌خود (در اینجا عبارت FAKE) رو وارد کردیم. در قسمت Base URL هم آمدیم و به این کتابخونه فهموندیم که به جای این که به APIهای خود OpenAI متصل بشه، به لوکال هاست ما متصل بشه.

در واقع کل کار رو اینجا انجام دادیم و حالا مونده یک مرحله! اون هم اینه که یک چت با مدل مورد نظر بسازیم:

response = client.chat.completions.create(
 model = "gpt-4o", 
 messages = [
   {
     "role" : "user",
     "content" : "Hello"
   }
  ],
)

و همونطوری که می‌بینید فرمت پیام‌های ما، فرمت چت و اسم مدلمون هم gpt-4o گذاشتیم. البته امکان استفاده از مدل‌های دیگر هم هست ولی اینجا با gpt-4o کار داشتیم 😁

و حالا وقتشه که نتیجه رو  در ترمینال ببینیم:

print(response.choices[0].message.content)

و تمام!

کد کامل

کد کامل این پروژه هم به این شکل خواهد شد:

from openai import OpenAI

client = OpenAI(
 api_key = "FAKE", 
 base_url = "http://localhost:1337/v1"
)

response = client.chat.completions.create(
 model = "gpt-4o", 
 messages = [
   {
     "role" : "user",
     "content" : "Hello"
   }
  ],
)

print(response.choices[0].message.content)

ملاحظات قانونی

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

مثلا من پیشنهاد می‌کنم برای خیلی از پروژه‌هایی که با g4f قراره بسازید از mixtral-8x22b استفاده کنید. هم خوبه، هم اوپن سورسه و هم فارسی می‌فهمه. یا مثلا llama-3.1-70b و llama-3.1-405b و …

در کل میخوام بگم که می‌تونیم این موضوع رو کاملا درست و قانونی هم در دستان خودمون داشته باشیم و لذت هم ببریم 😎

جمع‌بندی

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

احتمالا در آینده، باز هم ابزار یا API خوب در حوزه هوش مصنوعی و بخصوص هوش مصنوعی زایا (Generative AI) معرفی کنم. امیدوارم که موفق و موید باشید و این آموزش به دردتون خورده باشه.

ضمنا، لطفا از مدل‌های تجاری به صورت غیرقانونی استفاده نکنید 😁

Share

با موسیقا، رویای خود را بنوازید!

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

موسیقا، پلتفرمی مبتنی بر تکنولوژی هوش مصنوعی زایا یا Generative AI است که به شما کمک می‌کند تا آنچه در ذهن دارید را با چند کلیک، به موسیقی آن هم در ژانرهای مختلف مانند امبینت، الکترونیک، پاپ و … تبدیل کنید.

نحوه استفاده از موسیقا

برای استفاده از موسیقا، ابتدا به وبسایت موسیقا به آدرس musiqa.ir بروید، سپس، منتظر بمانید تا مدل روی سیستم شما لود شود (بهتر است با رایانه شخصی خود به این وبسایت مراجعه کنید چرا که ممکن است گوشی‌های همراه شما سخت‌افزار لازم برای اجرای این مدل را نداشته باشند).

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

پس از دانلود مدل، یکی از پرامپت‌ها (داخل کادرهای زردرنگ) را انتخاب کرده و یا پرامپت مورد نظر خود را نوشته، سپس دکمه Let’s Party را بفشارید.

بسته به سخت‌افزار خود، صبر کنید تا موسیقی مورد نظرتان تولید شود!

نمونه موسیقی تولید‌شده با موسیقا

حامیان پروژه

شرکت محترم ایران‌سرور، از نیمه دوم سال ۱۴۰۲ هجری خورشیدی، با تامین زیرساخت برای پروژه‌های مانی، وکنتور و موسیقا به نخستین و بزرگترین حامی این استارتاپ تبدیل شده است.

همچنین، مفتخریم اعلام کنیم که برای تامین زیرساخت پروژه‌های دانشجویی شما نیز، آماده ارائه سرویس‌های نوت‌بوک با GPU با همکاری ایران‌سرور هستیم.

Share

مصاحبه با محمدرضا حقیری، مهندس هوش مصنوعی – ابزارهای هوش مصنوعی ما را به جهانی هل می‌دهند که مردم در آن هوشمندانه‌تر کار می‌کنند، نه سخت‌تر

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

مصاحبه با محمدرضا حقیری، مهندس هوش مصنوعی

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

او دانشش درباره فناوری‌هایی که برای توسعه این مدل استفاده کرده را با ما به اشتراک گذاشته است. هوش مصنوعی چندمدلی او، از Stable Diffusion و Dream Booth استفاده می‌کند.

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

لطفا خودت رو برای خوانندگان ما معرفی کن. چه کارهایی کردی که به اینجا رسیدی؟ و چطور؟

من محمدرضا حقیری هستم، متولد ۹ خرداد ۱۳۷۵ (۳۰ می ۱۹۹۶) در تهران، ایران. من همیشه علاقه وافری به ساختن چیزهای مختلف داشتم و این علاقه در حوزه علوم کامپیوتر بیشتر و بیشتر شد. در سن ۱۲ سالگی برنامه‌نویسی رو شروع کردم و اولین زبانی که یادگرفتم هم ویژوال‌بیسیک ۶ بود. یادمه اولین برنامه‌ای که نوشتم، ماشین حسابی بود که فشاری که یک جرم به سطح وارد می‌کنه رو محاسبه می‌کرد.

من در دانشگاه مهندسی سخت‌افزار خوندم و بعد از این که در مقطع کارشناسی فارغ‌التحصیل شدم (که همزمان با قرنطینه بود) مطالعه هوش مصنوعی رو جدی‌تر شروع کردم. ایده‌هایی در ذهنم بودند، برنامه‌نویسی بلد بودم ولی قبل اون دوره، هیچوقت به این که مهندس هوش مصنوعی بشم فکر نکرده بودم. انگیزه اصلی برای مطالعه هوش مصنوعی رو یک سریال تلویزیونی به نام مظنون (Person of Interest) به من داد که به نوعی داشت آثار واقعی هوش مصنوعی بر زندگی بشر رو به تصویر می‌کشید.

اواخر ۲۰۲۱ و اوایل ۲۰۲۲ بود که مفهوم «هوش مصنوعی مولد» و «هنر تولیدشده توسط هوش مصنوعی» رو شناختم و همونطوری که می‌تونی حدس بزنی، عاشقش شدم 😁 به همین خاطر هم مطالعاتم جدی‌تر شدند و سعی کردم مدل خودم رو در قالب یک استارتاپ توسعه بدم تا بتونم اون چیزی که در ذهن دارم رو تولید کنم.

در حال حاضر روی مدل متن به تصویری به اسم Mann-E کار می‌کنی. می‌تونی یکم در موردش توضیح بدی و بگی چطور کار می‌کنه؟

مانی (که در بلاگم توضیح دادم یک جورایی بازی کردن با اسم مانی بوده، یک نام مردانه فارسی که البته اشاره‌ای هم به رهبر روحانی دوران ساسانی به همین نام – که نقاش هم بوده – داره) یک مدل Diffusion محسوب میشه. این به این معنیه که اول یک فضای مبهم (مثل برفک تلویزیون) درست می‌کنه و شروع می‌کنه به توسعه دادن اون تصویر که همزمان با مدلی مثل CLIP هم داره چک میشه که آیا درست داره پیش میره یا خیر. در نهایت هم تصویر تولید شده رو به کاربر نشان میده.

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

اگر دوست دارید بدونید چطور می‌تونید از مانی استفاده کنید، می‌تونید به گیتهاب من مراجعه کنید. یک دفترچه یادداشت جوپیتر اونجا هست که می‌تونه به Google Colab وارد بشه. حجم زیادی از کد هم از دید کاربر مخفی شده که حسی مشابه Midjourney یا Dall-E داشته باشه.

تو وبلاگت اشاره کردی که مدل بر مبنای Stable Diffusion ساخته شده. چه فناوری‌هایی برای این هوش مصنوعی استفاده کردی؟

این چیزیه که من بهش میگم «سوال مورد علاقه‌م». می‌تونم ساعت‌ها در مورد فناوری‌هایی که استفاده کردم، صحبت کنم. اول بذارید یک تاریخچه‌ای براتون بگم. وقتی اکثر تولیدکنندگان تصویر خوب «آزاد» نبودند (در مصاحبه گفتم free و ظاهرا یادم رفته مشخص کنم free as in freedom) تنها پایه و مبنای خوب برای یک تولیدکننده اثر هنری با کمک هوش مصنوعی VQGAN بود. یادمه که اگر نتایجش رو با CLIP ترکیب می‌کردی می‌تونست نتایج خوبی ارائه بده. در واقع این یک بازی انکودر-دیکودر بین دوتا مدل هوش مصنوعی بود.

ولی به قدر کافی خوشحال‌کننده نبود، مخصوصا این که midjourney در همون نسخه‌ها هم تصاویری تولید می‌کرد که انگار همین الان از ذهن یک هنرمند چیره‌دست بیرون آمده. پس من چه کردم؟ شخصا به این فکر بودم که چه اتفاقی می‌افتاد اگر یک نسخه متن‌باز از Midjourney داشتیم؟ و همزمان افرادی در شرکت Stability AI هم فکر مشابهی داشتند. وقتی انتشار Sable Diffusion رو اعلام کردند، من واقعا خوشحال شده بودم. کانسپت رو واقعا دوست داشتم با خودم گفتم که این به درد پروژه من هم میخوره! اینجا دقیقا جایی بود که من رفتم هرچی مقاله و تحقیق در مورد Stable Diffusion بود رو خوندم. این برای من یک دنیا ارزش داشت، چون بالاخره یک مدل تولید تصویر بسیار خوب داشت منتشر می‌شد.

این Stable Diffusion فناوری ابتدایی من بود. بی‌نهایت دوستش داشتم. همیشه تلاش می‌کردم بهترین نتایج رو ازش بگیرم. از prompt engineering صرف بگیر تا نوشتن کد‌هایی که بتونه برای من نتایج بهتری ازش بگیره. در ماه‌هایی که از انتشار نسخه اولیه‌ش گذشت، دو تا اتفاق خیلی بزرگ افتاد. اول این که Dream Booth برای Stable Diffusion ریلیز شد ( و صادقانه بخوام بگم، فاین تیون کردن Stable Diffusion رو به شدت ساده کرده) و همزمان RunwayML هم ورژن ۱.۵ از Stable Diffusion رو منتشر کرد. من مواد اولیه اصلی برای ساخت Midjourney متن‌باز رو داشتم!

بخوام خلاصه بگم: هسته اصلی Stable Diffusion ئه، از چک‌پوینت‌های نسخه ۱.۵ ای که runwayml ساخته استفاده کردم و تیون/ترین کردن با Dream Booth انجام شده. اینا Mann-E رو ممکن کردند. همچنین زبان‌های مورد استفاده هم باید بگم که عمدتا از پایتون استفاده کردم و کمی هم کد روبی برای توسعه وب نوشتم. و این تمام چیزیه که من استفاده کردم.

چه تفاوتی با Dall-E, Open Journey و باقی مدل‌ها داره؟

این سوال سختیه، بخصوص که در طول سال گذشته هزاران مدل با تکنیک‌های Textual Inversion و Dream Booth منتشر شدند. ولی اگر بخوام خلاصه بگم که چه فرقی با Dall-E داره، باید بگم که مانی به اون اندازه گرون نیست. برای استفاده از مانی، فقط کافیه که Google Colab رو راه‌ بندازید، نوت‌بوک رو واردش کنید و تمام! می‌تونید بی‌نهایت تصویر باهاش بسازید. این رو با Dall-E مقایسه کنید که به شما ۵۰ تا تصویر رایگان می‌ده و بعدش باید هزینه پرداخت کنید (که البته به نظرم مدل درآمدی بدی نیست).

ولی وقتی بحث به SD و Open Journey می‌رسه، باید بگم که من همیشه از بزرگترین طرفدارای این مدلا بودم و همیشه حس می‌کردم یه چیزی اونجا درست نیست (بخصوص با SD خام). برای این مدل‌ها، این که نتایج پرت و پلا و بی‌ربط تولید کنند چیز عجیبی نیست. پس چه کار می‌تونستم بکنم؟ حدس می‌زدم بهتره سعی کنم مدل‌های خوب رو با هم ترکیب کنم. الان می‌تونم مدعی بشم که مانی، در واقع یک هوش مصنوعی چندمدلی محسوب میشه که در حال حاضر توضیحش یکم سخته، ولی فکر کنم مقاله‌ای به زودی در موردش منتشر خواهم کرد.

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

روی مدلی به نام Open Journey کار می‌کردی ولی اسمشو عوض کردی. می‌تونی کمی در موردش بگی؟

مانی اول کار، اسم مدل نبود؛ بلکه اسم استارتاپی بود که در تابستان ۲۰۲۲ برای همین کار راه انداخته بودم. اسم مدل Open Journey بود که اشاره به Open Source Midjourney داشت. بعدا، فهمیدم که یک نفر از تیم میدجرنی از تیم prompthero خواسته که اسم مدلشون (که فکر کنم چیزی مثل midjourney-v4-style-stable-diffusion یا چنین چیزی بود) رو عوض کنند و اون‌ها (یعنی prompthero) هم اسم مدل رو به OpenJourney تغییر دادند. من ازشون درخواست کردم که اسم مدل رو عوض کنند ولی از اونجایی که ترجیحم این بود که اون استارتاپ رو در اون برهه زمانی متوقف کنم، اسم مدل رو به مانی تغییر دادم.

و البته یک اتفاق خوشحال‌کننده هم افتاد. یک نفر لینک قدیمی به مدل من (که هنوز اسم رو Open Journey درج کرده بود) رو در هکرنیوز پست کرده بود و وبسایت من هم از لحاظ تعداد بازدیدکننده ترکید. من اون صفحه رو به صفحه درست، ری‌دایرکت کردم و فکر کنم این «ناخواسته‌ترین دیده‌شدن»ی بود که من می‌تونستم از یک پروژه متن‌باز بگیرم.

فکر می‌کنی آینده هوش مصنوعی چطوریه؟ حرف و حدیث در مورد موضوع خیلی زیاده و اکثرا ریشه در محصولات شرکت OpenAI مثل ChatGPT داره. اتفاق بعدی چیه؟

باور دارم که هوش مصنوعی آینده‌ست. برخلاف چیزی که سال ۲۰۲۱ اومد و یه فازی ساخت و رفت (و بله، منظورم متاورس زاکربرگه). هوش مصنوعی واقعی و آینده‌داره. من دارم به چشم می‌بینم که افراد زیادی از این ابزارها برای تولید پست‌های بلاگ، کپی‌رایتینگ، تولید شعار برای شرکت و استارتاپ، تولید آیکون و تصویر شاخص و حتی تولید کد استفاده می‌کنند. این خیلیه، بخصوص با وجود ابزارهایی مثل GPT-3 یا ChatGPT حتی می‌تونه رایج‌تر هم بشه. از طرف دیگر قضیه هم که بخواهیم نگاه کنیم، ابزارهای متن‌بازی مثل BLOOM, BLOOMZ, Flan-T5, GPT-Neo و … رو داریم. افراد می‌تونند این مدل‌ها و API رو متناسب با نیازهای خودشون، تغییر بدند.

و باور دارم که ابزارهای هوش مصنوعی ما را به جهانی هل می‌دهند که مردم در آن هوشمندانه‌تر کار می‌کنند، نه سخت‌تر. می‌دونی، تو می‌تونی شونزده ساعت از بیست و چهار ساعت شبانه روز رو صرف توسعه یه کمپوننت تو پروژه ری‌اکتیت کنی، درسته؟ این خیلی خوبه که شغلت و کاری که می‌کنی رو دوست داره ولی حدس من اینه که این ماجرا برای کارفرما یا سرمایه‌گذار هیچ اهمیتی نداره، بخصوص وقتی می‌فهمن که با ۱۶ دقیقه prompt engineering می‌تونستی همون نتیجه رو از GPT-3 با کمی ویرایش کد بگیری. برای من، این یک دنیای بهتره.

در پایان هم از تو، الکساندر؛ تشکر می‌کنم که اومدی سراغم.

سخن آخر

سالها پیش دوستانی در وبسایت لینوکس سیزن با من مصاحبه‌ای انجام دادند که از اینجا در دسترسه. اما خب این یکی مصاحبه، برای من پراهمیت‌تر بود، چرا که فکر کنم تنها کسی هستم که در ایران، با جدیت روی پروژه‌های Generative AI (هوش مصنوعی مولد) به صورت آزاد/متن‌باز کار می‌کنه و خب حیف بود که الان که موقعشه، منتشرش نکنم.

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

Share

نصب Phosh روی دبیان

گنوم، چندسال اخیر رو در حال بهبود تجربه کاربریش روی دستگاه‌هایی مثل گوشی‌های همراه و همچنین تبلت‌هاست. در کل، داره برای یک انقلاب در صفحات لمسی آماده میشه. حالا، یک رابط کاربری جالب به اسم Phosh (مخففی برای Phone Shell) ارائه کرده که روی دبیان (بله، حتی دسکتاپ!) قابل نصب و اجراست.

نماگرفت زیر، نماگرفتی از صفحه قفل این رابط کاربریه:

و خب همونطوری که می‌بینید، کار تمیز و نسبتا زیباییه. حالا سوال اینه چطور نصبش کنیم؟ در ادامه مطلب مفصلا توضیح میدم 🙂

نصب قدم به قدم Phosh روی دبیان

گام اول: نصب دبیان

توجه داشته باشید که دبیان مد نظر من اینجا، دبیانیه که شما روی پردازنده‌های x86 نصب می‌کنید. اگر قراره این دبیان روی رزبری پای باشه، یا سیستم شخصی شما صفحه لمسی داره، می‌تونید این قسمت رو نادیده بگیرید. اما من نصب رو روی یک ماشین مجازی با کمک Virtual Box انجام دادم. آموزش نصب دبیان، در اینترنت زیاد پیدا میشه؛ فلذا اینجا حرفی از آموزش نصب به میان نمیارم. فقط حواستون باشه نسخه Net Install دبیان رو دانلود و نصب کنید که چیز اضافه‌ای نداشته باشیم. برای دانلود دبیان هم می‌تونید به وبسایت دبیان مراجعه کنید و آخرین ISO مورد نظر رو بگیرید.

گام دوم: قبل از نصب Phosh چه کنیم؟

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

گام سوم: نصب و راه‌اندازی Phosh

خب برای نصب کافیه که دستورات زیر رو اجرا کنیم:

sudo apt install phosh-core

و اگر می‌خواهید Phosh شما مناسب تبلت باشه:

sudo apt install phosh-tablet

و اگر می‌خواهید نسخه کامل Phosh رو نصب کنید، کافیه که دستور رو به این شکل تغییر بدید:

sudo apt install phosh-full

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

sudo systemctl enable phosh
sudo systemctl start phosh

سپس، صفحه قفل (که بالاتر عکسش رو قرار دادم) و بعد از اون، صفحه ورود رمز به شما نمایش داده میشه.

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

خب، حالا با خیال راحت می‌تونیم از Phosh استفاده کنیم و لذت ببریم 😁

نکات مهم

از اونجایی که Phosh نرم‌افزار نوپا و نسبتا جدیدیه، لازمه چند نکته مهم رو در موردش متذکر بشم:

  • نسخه خاصی ازش در مخازن دبیان پایدار موجوده که خب برای یک تست دم دستی و ویرچوال‌باکسی، بهترین گزینه بود (حداقل برای من) و خب قاعدتا روی مخازن تستینگ و ناپایدار هم قرارش دادند. موقع نصب، مراقب باشید تا به ضررتون نشه 😁 ترجیحا نصب رو روی یک ماشین مجازی انجام بدید.
  • این میزکار خاص، برای صفحات لمسی خیلی بهینه شده و استفاده ازش با ماوس و کی‌برد تا حد زیادی سخته. اگر صفحه لمسی دارید که می‌تونید به سیستمتون وصلش کنید، احتمالا تجربه کاربری بهتری داشته باشید.
  • بعضی نرم‌افزارها اندازه‌شون برای من مشکل داشت (که احتمالا برمی‌گرده به ویرچوال باکس). اگر در جای دیگری امتحان بشه شاید اندازه صفحه و برنامه‌ها، مناسب باشه.

کدوم توزیع‌ها از Phosh پشتیبانی می‌کنند؟

این هم سوال مهمیه، تا جایی که دیدم PostmarketOS (که برمبنای آلپاین ساخته شده) و همچنین Mobian (که برپایه دبیانه) از این میزکار (یا بهتر بگم پوسته) پشتیبانی می‌کنند. در مورد سایر توزیع‌ها/سیستم‌عامل‌هایی که ممکنه گنوم رو اجرا کنند، ایده‌ای ندارم.

جمع‌بندی

این بلاگ اصلا قرار نبود نوشته شه، ولی امروز از سر خستگی (دقیقا خستگی 😂) جستجو کردم ببینم Phosh چطور می‌تونه روی دبیان دسکتاپ نصب بشه. امتحانش کردم و به نظرم پروژه تمیز، باحال و آینده‌داری اومد. حالا هم تستش کردم و هم یک سری ایده‌ اومد به ذهنم. در آینده، احتمالا بیشتر با Phosh کار کنم و در موردش بنویسم. در آخر هم بابت وقتی که صرف کردید و این مطلب رو خوندید، ازتون تشکر می‌کنم.

Share

نصب کتابخانه tensorflow روی Raspberry Pi

حدود بهمن یا اسفند سال ۱۳۹۹ بود که من، یک عدد رزبری پای ۴ مدل B (لینک) خریداری کردم که باهاش یه سری ایده رو عملی کنم. از وقتی که این دستگاه رو خریدم، مدت زیادی تقریبا گذشته اما خب چند هفته اخیر، شدیدا با این دستگاه در حال کشتی گرفتن و تست ایده‌های مختلف هستم. یکی از ایده‌های من پروژه‌ای بود که تا حد زیادی به هوش مصنوعی (و بخصوص tensorflow) نیازمند بود. مشکلی که داشتم این بود که در خود مخازن PyPi ای که روی رزبری پای در دسترسه، هیچ ساخت درستی از tensorflow وجود نداره.

اما خب، نمیشه در دنیای تِک ناامید شد؛ به همین خاطر دنبال راهکار و راه حلی گشتم که بتونم تنسرفلو رو روی رزبری پای داشته باشم. یکم سخت‌تر از حالت عادی (که استفاده از pip بود) شد اما ارزشش رو داشت. چون تونستم بدون مشکل مدلی که مدنظر داشتم رو لود و استفاده کنم. همچنین لازمه ذکر کنم که در این مطلب قراره یاد بگیریم چطور خود تنسرفلو رو نصب کنیم و به TFLite کاری نداریم.

رزبری پای چیه؟

رزبری پای (Raspberry Pi) یک کامپیوتر تک‌برد (SBC یا Single Board Computet) محسوب می‌شه که توسط یک بنیاد غیرانتفاعی به همین اسم در بریتانیا طراحی شده (البته تولیدش مثل عمده محصولات دیگر، در کشور چین انجام میشه). این بردها معمولا یک پردازنده ARM دارند و می‌شه روی اونها سیستم‌عامل نصب کرد. خیلی‌هاشون هم ورودی/خروجی عام‌منظوره (General Purpose Input/Output) یا همون GPIO دارند که می‌تونن رابطی بین این کامپیوتر و قطعات الکترونیکی دیگر باشند.

این کامپیوترهای کوچک – که در ابعاد یک کارت اعتباری ساخته شدند – اسباب‌بازی خوبی برای برنامه‌نویسان و مهندسین کامپیوتر به شمار میان. بسیاری از متخصصین و علاقمندان از رزبری پای استفاده می‌کنن تا ایده‌ها و پروژه‌هاشون رو پیاده‌سازی کنن. البته لازم به ذکره که خیلی‌ها هم حتی محصولاتشون رو برپایه رزبری‌پای توسعه دادند (پس اگر دوست داشتید یکی تهیه کنید و باهاش بازی کنید، درنگ نکنید 😁)

تنسرفلو چیه؟

از اونجایی که این مطلب، در مورد نصب Tensorflow روی رزبری پای بود، لازمه که کمی هم در مورد تنسرفلو توضیح داده بشه. تنسرفلو یک کتابخونه نرم‌افزاری آزاد و متن‌بازه که توسط تیم Google Brain توسعه‌ داده میشه. این کتابخونه، به ما اجازه میده که پروژه‌ها و پروسه‌های یادگیری ماشین، هوش مصنوعی، یادگیری عمیق، استنباط آماری و … تا توسعه شبکه‌های عصبی مصنوعی رو انجام بدیم. به خاطر پشتیبانی گوگل از این کتابخونه، به یکی از محبوب‌ترین و پراستفاده‌ترین کتابخونه‌های هوش مصنوعی تبدیل شده (مثلا در پروژه خودران، من از این کتابخونه استفاده کرده بودم).

اما یک مشکل بزرگی با نصب تنسرفلو روی رزبری پای مواجه هستیم. مشکل اینجاست که وقتی دستور روتین pip برای نصب تنسرفلو رو بزنیم، اتفاق خیلی خاصی رخ نمی‌ده، جز این که یک ارور مبنی بر پیدا نشدن این کتابخونه در مخازن  PyPi متعلق به پلتفرم ما نشون داده میشه. پس باید چی کار کنیم؟ خب در ادامه قراره که همین داستان رو بررسی کنیم و به نتیجه درستی برسیم.

نصب Tensorflow روی Raspberry Pi

قبل از هرچیزی باید بگم که من این پروسه رو روی Raspberry Pi 4 Model B (با رم ۲ گیگابایت) و سیستم عامل Raspberry Pi OS نسخه Bullseye (بله درست حدس زدید، سیستم‌عامل رزبری پای دبیانه 😁 و صدالبته که می‌تونید توزیع‌های دیگری هم روش نصب کنید) و ویرایش ۶۴ بیتی طی کردم. بسته به مدل رزبری شما و سیستم‌عاملتون، این پروسه می‌تونه متفاوت باشه.

نصب نرم‌افزارهای پایه

ما برای این که بتونیم تنسرفلو رو نصب کنیم، نیاز به نصب تعداد زیادی نرم‌افزار روی خود سیستم‌عامل داریم. به نظر بهتره که ابتدا، لیست بسته‌های مخازن رو بروزرسانی کنیم:

sudo apt update

و صدالبته بهتره که خود سیستم‌عامل هم بروزرسانی‌های آخرش رو دریافت و نصب کنه:

sudo apt full-upgrade

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

sudo apt install gfortran libhdf5-dev libc-ares-dev libeigen3-dev libatlas-base-dev libopenblas-dev libblas-dev liblapack-dev

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

نصب و بروزرسانی بسته های پایتونی

خب ما تعدادی پیش‌نیاز پایتونی هم داریم (که این‌ها رو اکثرا حتی در وبسایت تنسرفلو هم می‌شه پیدا کرد) که با دستورات زیر نصبشون می‌کنیم:

pip3 install pybind11
pip3 install Cython==0.29.21
pip3 install h5py==2.10.0

و سپس بسته setuptools رو هم بروزرسانی می‌کنیم:

pip3 install --upgrade setuptools

و این یکی رو هم نصب می‌کنیم (چرا که باید فایل تنسرفلو رو با این بزرگوار دانلود کنیم)

pip3 install gdown

دانلود و نصب Tensorflow

خب ابتدا به کمک gdown فایل wheel (فایل‌های wheel فایل‌هایی هستند که pip می‌فهمه باید نصبشون کنه) مربوط به نسخه مورد نظر تنسرفلو رو دانلود می‌کنیم:

gdown https://drive.google.com/file/d/1YpxNubmEL_4EgTrVMu-kYyzAbtyLis29

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

سپس کافیه که با اجرای این دستور:

pip3 install <TENSORFLOW WHL FILE>.whl

نصب رو انجام بدید.

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

جمع‌بندی

مدتهای زیادی میشه که دوست دارم در مورد پروژه‌هایی که در حوزه «اینترنت چیزها» یا همون IoT انجام میدم هم بنویسم. اما متاسفانه پروژه‌های سخت‌افزاری، وقت زیادی از آدم می‌گیرن و وقتی وقت آزاد زیادی نداشته باشید، معمولا به پروژه‌های سخت‌افزاریتون هم آنچنان نمی‌تونید رسیدگی کنید. به همین خاطر مدتی میشه که در تلاشم تا پروژه‌های شخصی و صدالبته کاریم در حوزه بینایی ماشین رو با IoT ترکیب کنم و به این شکل این حوزه رو هم وارد کارهای روتین و اصلیم کنم که وقت هم همیشه براشون باشه 😁

تست چند پروژه بینایی ماشین روی Raspberry Pi شروعی برای این دوران از زندگی منه. راستی، اگر دوست دارید نقشه راه بینایی ماشین رو داشته باشید می‌تونید بیایید اینجا، اگر دنبال ایده برای پروژه‌ها هستید هم اینجا رو بخونید. حتی می‌تونید به ما در جامعه بینایی ماشین هم ملحق بشید و اشتراک تجربه و دانش کنید.

در پایان، ضمن تشکر از این که وقت گذاشتید و این مطلب رو خوندید، باید بگم که هنوز می‌تونید من رو به یک فنجان قهوه مهمان کنید 🙂

Share

چرا گولنگ زبان مناسب شما نیست؟

در دنیای امروز، یکی از بحث‌های مهم برای هر استارتاپ و سازمانی، اینه که چطور و با چه ابزاری، محصول خودشون رو بسازند. این موضوع می‌تونه از لحظه تصمیم‌گیری برای راه‌اندازی استارتاپ در ذهن بنیان‌گذاران باشه، حین پیاده‌سازی محصول کمینه ارزشمند (MVP) ذهنشون رو بیشتر درگیر کنه و حتی پس از ارائه محصول نهایی هم همیشه فکر بازسازی و بازنویسی محصول یکی از مشغله‌های ذهنیشون باقی بمونه. چند وقت اخیر، یکی از فازهایی که میان خیلی از برنامه‌نویسان – بخصوص نسل جدید و تازه‌نفس برنامه‌نویس – رایج شده، استفاده از گولنگ در ساخت MVP و … است.

در این پست، قصد من اینه که توضیح بدم چرا گولنگ انتخاب مناسبی نیست و چرا بهتره که در یک سازمان کوچک، سمتش نریم و از ابزارهای دم‌دستی‌تری مثل پایتون یا PHP استفاده کنیم. ضمنا اینجا یک سلب ادعا بکنم که «دم‌ستی» به معنای «بد» بودن اون ابزار نیست و اتفاقا در این متن بخصوص، یک مزیت برای اون ابزار ایجاد کرده.

چطور برای پروژه خود یک زبان یا فرمورک مناسب انتخاب کنیم؟

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

جمعیت توسعه‌دهندگان

مهم‌ترین فاکتور در انتخاب زبان و فرمورک برنامه‌نویسی، دقیقا جمعیت توسعه‌دهندگان اونه. می‌پرسید چرا؟ چون اگر امروز خودتون کد رو بزنید، طبیعتا وقتی بیشتر با جنبه بیزنسی کارتون مواجه شید، وقت کمتری برای کد زدن خواهید داشت و نیازمند بزرگ‌تر کردن تیم توسعه استارتاپتون هستید. پس از این جهت نیاز دارید که این مورد رو حتما در نظر بگیرید. دقت کنید که Go از سال ۲۰۰۹ عرضه عمومی شده و چندین ساله که داره بعنوان یک ابزار توسعه وب دیده میشه (که تعداد این سال‌ها به انگشتای دست هم نمی‌رسه).

حالا از طرف دیگر، شما نگاه کنید که چقدر می‌تونید لاراول‌کار پیدا کنید؟ افرادی که لاراول یا جنگو (یا حتی روبی آن ریلز!!!) کار می‌کنند تعدادشون به شدت بیشتر از کسانیه که با Go کار می‌کنند. نتیجه منطقی اینه که سمت ابزاری برید که بزرگ کردن تیم توسعه‌ش براتون کم‌هزینه باشه.

تعداد کتابخانه‌ها و ابزارهای توسعه

مورد مهمی که باید بهش توجه کنید، اینه که زبان مورد استفاده‌تون چقدر ابزار داره؟ چندتا ORM استخوان‌دار داره؟ چقدر طول می‌کشه تا ایده اولیتون رو صرفا با «به هم چسبوندن ابزارهای موجود» بسازید؟ متاسفانه در این مورد هم باید بگم که Go بازندست. البته این رو هم باید در نظر داشت که Go زیادی جوانه و خب طبیعتا از بین این همه شرکت بزرگی که برای توسعه به سمتش رفتند، بالاخره از این جهت هم به بلوغ کافی می‌رسه. اما بحث ما، بحث حال حاضره. در حال حاضر، پایتون از این جهت – به نظر من – بهترین گزینه می‌تونه باشه. می‌دونید چرا؟ چون برای هر چیزی که فکرش رو بکنید یک کتابخونه ارائه کرده و واقعا شما نیاز به پیاده سازی منطقی جز منطق خالص کسب و کار خودتون ندارید.

مقیاس‌پذیری

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

سهولت استقرار

قبل‌تر در همین وبلاگ در مورد مهندسین DevOps توضیح داده بودم (لینک) و خب یه حقیقت تلخ در مورد این عزیزان اینه که نیروهای گرانقیمتی هستند. وقتی شما از ابزاری مثل Go یا حتی پایتون برای توسعه محصولتون استفاده کنید، احتمالا بعد مدتی نیاز دارید که برای استقرار و … محصول، از یک مهندس DevOps کمک بگیرید. این نیاز ممکنه از لحظه استقرار MVP با شما باشه تا وقتی که محصولتون رو بازسازی و ری‌فکتور می‌کنید. در صورتی که برای مثال یک پروژه Laravel ای رو می‌تونید به سادگی روی یک هاست سی‌پنل، میزبانی کنید.

و تیر آخر: زمان توسعه محصول!

در قسمت اول به این موضوع اشاره کردم ولی لازمه که دوباره هم اشاره بشه. چرا که این بخش به بخش کدنویسی و تست (و کلا کارهای برنامه‌نویسانه) محدود نیست و لازمه که موارد دیگر مثل استراتژی ورود به بازار، ارائه بتاهای عمومی و … هم در نظر بگیرید. متاسفانه Go در این مورد بازندست چرا که ابزارهایی به کاملی و خوبی جنگو، ریلز یا لاراول نداره. تنها راه‌حلی که بتونید با Go با سرعت زیادی به این مرحله برسید؛ اینه که چند توسعه‌دهنده حرفه‌ای استخدام کنید که خب هزینه‌هاتون رو شدیدا افزایش می‌ده.

جمع‌بندی

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

در پایان جا داره بگم که زبان برنامه‌نویسی صرفا ابزاریه که ما بتونیم باهاش برنامه بسازیم و برنامه‌های کامپیوتری، پاسخ‌هایی هستند به نیازهای ما. انتخاب ابزار مناسب، امکان‌سنجی خودش رو نیاز داره و امیدوارم که در این پست؛ تونسته باشم به شما کمی در این امکان‌سنجی، کمک کرده باشم.

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

Share