AI/LLM Recipe Generator با chatGPT

ChatGPT API مانند یک طلسم جادویی برای برنامه وب شما است – تنها با چند خط کد، می تواند مکالمات جذاب و هوشمندانه ای را ایجاد کند. حتی برای یک مبتدی در حوزه فناوری، استفاده از برنامههای جدید یا موجود بسیار راحت است. شیرجه بزنید، و در کوتاه ترین زمان، یک هوش مصنوعی مکالمه ای خواهید داشت که کاربران را مجذوب خود می کند و برای اطلاعات بیشتر برمی گردند.
این مقدمه ای است که chatGPT ارائه کرده است. خیلی خوبه، درسته؟
در این مقاله من یک ابزار هوش مصنوعی مکالمه ایجاد نمی کنم، اما به ادغام بین برنامه Remix و chatGPT API می پردازم.
“تخت آزمایش” یک مولد دستور العمل ساده خواهد بود که اطلاعاتی را از کاربر دریافت می کند که از آن برای ایجاد یک درخواست برای chatGPT استفاده می کند.
این کد در github موجود است و در نهایت به شکل زیر است:
از پیش تنظیم
“پیش تنظیم” تا آنجا که می تواند ساده است. (پس از تنظیم پرداخت) باید یک کلید API مخفی در اینجا ایجاد کنید و آن را در خود کپی کنید .env
فایل (مطمئن شوید که در فایل .gitignore شما باشد تا کسی نتواند آن را در github پیدا کند!). همچنین شناسه سازمان خود را از اینجا کپی کنید.
OPENAI_API_KEY=[your secret API key]
OPENAI_ORG_KEY=[your organization id]
و نصب کنید openai
کتابخانه در صورت استفاده از npm
، که خواهد بود:
npm i openai
این شامل انواع TypeScript نیز می شود!
فراخوانی API
برای این مثال، میتوانیم از Chat Completions API استفاده کنیم، اما قبل از انجام این کار، باید کتابخانه را برای استفاده از کلیدهایمان پیکربندی کنیم. از آنجایی که این کد منحصراً بر روی یک سرور اجرا می شود و نه مرورگر کاربر، می توانیم آنچه را که نیاز داریم از آن دریافت کنیم process.env
هدف – شی:
const configuration = new Configuration({
apiKey: process.env.OPENAI_API_KEY,
organization: process.env.OPENAI_API_ORG,
});
const openai = new OpenAIApi(configuration);
اکنون می توانیم یک شی از نوع ایجاد کنیم CreateChatCompletionRequest
. این شی می تواند گزینه های مختلفی داشته باشد تا به chatGPT بگوید چه می خواهیم، اما مهم ترین (و مورد نیاز) گزینه ها عبارتند از model
– از کدام نسخه مدل استفاده کنید (لیست کامل اینجا) و messages
– زمینه و درخواست چت مورد نظر ما تکمیل شود.
یکی messages
گزینه می تواند یک “شخصیت” در سطح سیستم باشد که چت می تواند با آن مطابقت داشته باشد. همچنین گزینه هایی برای ارائه نمونه های API از خروجی ها وجود دارد که می توان از آنها برای آموزش مدل برای این چت خاص استفاده کرد.
ما از a استفاده خواهیم کرد user
پیام، یعنی ورودی دریافت شده از کاربر، برای اینکه از مدل GTP بپرسیم که چه می خواهیم.
// for the purpose of this article, we'll abstract this away.
const ingredientsList = getIngredientsList();
const completionRequest: CreateChatCompletionRequest = {
model: 'gpt-3.5-turbo',
messages: [
{
role: 'system',
content: 'You are a creative and experienced chef assistant.',
},
{
role: 'user',
content: `Generate a recipe with these ingredients: ${ingredientsList}.`,
},
],
};
const chatCompletion = await openai.createChatCompletion(completionRequest);
در این مورد، ما از gpt-3.5-turbo
مدل سازی کنید و مکالمه را با درخواست از API به عنوان “دستیار آشپز خلاق و با تجربه” شروع کنید.
رسیدگی به پاسخ
پاسخ به خوبی تایپ شده است و به راحتی قابل دسترسی است:
const generatedOutput = chatCompletion.data.choices[0].message?.content;
که در این مورد ممکن است به یک دستور پخت “تیلاپیا و شام سبزیجات یک تابه” با لیست کامل مواد تشکیل دهنده و دستورالعمل های گام به گام منجر شود!
این البته یک ساده سازی است. یک پیاده سازی کامل با گزینه های بیشتر و یک رابط کاربری ممکن است در نهایت چیزی شبیه به این باشد:
گزینه های پیشرفته
ویژگی جالبی که در اینجا در دسترس ما است، که در رابط chatGPT در دسترس نیست temperature
که انتزاعی از تصادفی است که می تواند کمی هرج و مرج را اضافه کند.
با یک temperature
از 2، یک “دستور پخت” ممکن است به این شکل ظاهر شود …
Chicken Delight Recipe Parham Style:
Featured Cooking Equipment(set boAirition above stove required Gas-Telian range VMM incorporated rather below ideal temperature during baking ir regulate heat applied):
- Large non-stick frypan(Qarma brand)->Coloning cooking Stenor service(each Product hasown separate reviews dependable optimization features)
مراقب باشید، زیرا این می تواند به نشانه های شما بخورد! به عنوان یک اقدام ایمنی (یا بسته به مورد استفاده شما)، a max_tokens
می توان از آن برای محدود کردن اندازه خروجی استفاده کرد.
در تجربه من با gpt-3.5-turbo، تغییر دادن system
محتوا در این مورد تأثیر چندانی نداشت، اما می تواند برای مکالمات مداوم مفیدتر باشد. از آنجایی که مورد استفاده من این است که فقط یک بار دستور غذا بخواهم، نیازی به تنظیم “شخصیت” سیستم وجود ندارد.
محدودیت ها
تا لحظه نگارش این مقاله، gpt-3.5-turbo
آخرین مدلی است که در دسترس من است اما با محدودیت هایی همراه است.
اول از همه، پردازش نسبتاً کند است و حدود 15 ثانیه طول می کشد تا یک دستور پخت بازگردد. OpenAI تعدادی بهبود در اسناد خود مانند محدود کردن اندازه خروجی، حافظه پنهان و دستهبندی پیشنهاد میکند.
همچنین یک محدودیت ذاتی وجود دارد که یک مکالمه “بی تابعیت” است: اگر می خواهید یک مکالمه مداوم داشته باشید، هر مکالمه قبلی user
پیام و آن assistant
پاسخ باید قبل از هر بار جدید ارسال شود user
پیام
در برنامه مثال من، ارائه مجموعه بسیار محدودی از مواد معمول (Salt, Pepper, Olive oil, Butter, All-purpose flour, Sugar, Eggs, Milk, Garlic, Onion, Lemons, White Vinegar, Apple Cider Vinegar, Soy sauce, Baking powder, Cumin
) هنوز هم به دستور العمل های مبتنی بر مرغ یا میگو منجر می شود. من سعی کردم با دستورات خاص تر (“اگر مرغ در دسترس نیست، دستور العمل های مرغ را توصیه نکنید.”) اما موفقیت چندانی نداشتم.
این نمونه ای از یک “توهم” است، اما به طور خاص مشکلی با GPT-4 نیست، که هنوز به طور گسترده از طریق API در دسترس نیست.
سایر محدودیتهای عمومی مولد هوش مصنوعی وجود دارد که باید به خاطر داشته باشید، مانند سوگیریها و اینکه چگونه آنها اغلب “با اطمینان نادرست” هستند.
در این مورد، بدترین سناریو یک وعده غذایی غیر جذاب است، اما هنگام تکیه بر محتوای تولید شده باید این محدودیت ها را در نظر داشت.
تنظیم دقیق و هزینه
به عنوان تنها کاربر این اپلیکیشن، هزینه های من بسیار کم بوده است 😅. یک اجرا برای حدود 200 توکن ورودی و خروجی بین 300 تا 500 توکن است. با gpt-3.5-turbo
، این به بیرون می آید (0.2 * $0.0015) + (.4 * $0.002)
یا در مورد یک دهم سنت.
زمانی که GPT-4 به طور کلی در دسترس قرار گیرد، بسیار گران تر خواهد بود. در حال حاضر، یک بار اجرا برای من معادل است (0.2 * $0.03) + (0.4 * $0.06)
یا در مورد 3 سنت.
قیمت API چند هفته پیش کاهش یافت، بنابراین منطقی است که انتظار داشته باشیم GPT-4 در آینده نیز ارزانتر شود.
خروجی GPT-3.5 هنوز هم میتواند با ورودیهای دقیقتر و دقیقتر تنظیم شود، اما از آنجایی که صورتحساب بر اساس تعداد نشانهها (یعنی طول ورودی و خروجی) است، تنظیم دقیق از این طریق میتواند مانند یک مکالمه پرهزینه باشد. برنامه ای که پیام های کاربر و دستیار را زنجیره می کند.
درخواست ها همچنین می توانند به اعلان های کوچکتر و خاص تر تقسیم شوند. با این حال، این رویکرد علاوه بر افزایش تعداد کل توکنها، پیچیدگی (و هزینه تعمیر و نگهداری) یک برنامه کاربردی را نیز افزایش میدهد، به خصوص اگر از خروجی یک پرس و جو به عنوان ورودی درخواست دیگری استفاده میکنید.
خلاصه
تصویر سرصفحه این پست با MidJourney ایجاد شده است، فقط یک نمونه (کوچک) دیگر از نحوه استفاده من از این فناوری.
هوش مصنوعی مولد طیف گسترده ای از برنامه های کاربردی جدید و هیجان انگیز را باز می کند، اما نه بدون ملاحظات اضافی که باید در نظر داشت.
اگرچه این برنامه به سختی سطح کاری را که می توان انجام داد خراش می دهد، امیدوارم که به عنوان مقدمه ای مفید برای یکپارچه سازی openai
کتابخانه را در برنامه وب خود قرار دهید، چه در حال ساخت یک محصول جالب باشید، چه فقط در حال کاوش در فناوری های جدید.
آیا کاربردهای جالب API را کاوش کرده اید یا قسمت های مختلف آن را آزمایش کرده اید؟ لطفا به اشتراک بگذارید!