سلب ادعا: این مطلب صرفا آموزشی بوده و هرگونه استفاده غیرقانونی از دانش به اشتراک گذاشته شده در این مطلب، بر عهده خواننده خواهد بود.
احتمالا شما هم دوست داشتید که از 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) معرفی کنم. امیدوارم که موفق و موید باشید و این آموزش به دردتون خورده باشه.
ضمنا، لطفا از مدلهای تجاری به صورت غیرقانونی استفاده نکنید 😁