چگونه قابلیتهای هوش مصنوعی را به اپ خود اضافه کنیم
برای افزودن قابلیتهای هوش مصنوعی به اپ، از سرور خود یک API مدل زبانی بزرگ (LLM) را صدا بزنید: دستورالعملهای روشن بههمراه داده مرتبط را بفرستید و نتیجه را استفاده کنید. بیشتر قابلیتهای کاربردی یکی از چهار الگو هستند: خلاصهسازی، چت، استخراج داده ساختاریافته و دستهبندی. هر کدام چند ده خط کد است که یک ابزار ساخت اپ با هوش مصنوعی میتواند برایتان بنویسد. کاری که کیفیت قابلیت را تعیین میکند، اطراف این فراخوانی است: نگه داشتن کلید API روی سرور، کنترل هزینه برای هر کاربر، و بررسی خروجی پیش از اعتماد به آن.
چهار الگویی که پشت بیشتر قابلیتهای هوش مصنوعی هستند
| الگو | کاری که انجام میدهد | نمونه قابلیتها | خروجی معمول |
|---|---|---|---|
| خلاصهسازی | متن بلند را به متن کوتاه تبدیل میکند | خلاصه یادداشتهای جلسه، خلاصه تیکت، «چه چیزی تغییر کرد» برای یک سند | یک paragraph یا فهرست گلولهای |
| چت | در یک گفتگو به سؤالها پاسخ میدهد، اغلب درباره داده شما | دستیار راهنما، «از مستنداتم بپرس»، راهنمای آنبوردینگ | متن استریمشده |
| استخراج | فیلدهای ساختاریافته را از متن یا تصویر نامرتب بیرون میکشد | اطلاعات فاکتور از PDF، مخاطبین از امضای ایمیل، داده شغل از آگهی استخدام | JSON مطابق با یک schema |
| دستهبندی | یکی از یک مجموعه ثابت برچسب را انتخاب میکند | مسیریابی تیکتهای پشتیبانی، برچسبزدن بازخورد بر اساس موضوع، علامتگذاری پیامهای فوری، تشخیص زبان | یک برچسب، شاید با یادداشت اطمینان |
استخراج و دستهبندی اغلب باارزشترین و کمدیدهترین قابلیتها هستند. آنها بیسروصدا برای هر رکورد چند دقیقه صرفهجویی میکنند و چون خروجی شکل ثابتی دارد، میتوان آن را خودکار بررسی کرد. چت قابلمشاهدهترین است، اما درستکردنش سختترین است و راهنمای جداگانهای دارد: چگونه یک اپ چتبات هوش مصنوعی بسازیم.
این قابلیتها در اپ شما چطور جا میگیرند
همه الگوها ساختار یکسانی دارند:
- کاربر عملی انجام میدهد: روی «خلاصه کن» کلیک میکند، فایلی آپلود میکند یا پیامی میفرستد.
- فرانتاند شما سرور خودتان را صدا میزند، نه ارائهدهنده هوش مصنوعی را.
- سرور درخواست را میسازد: دستورالعملهای سیستمی، ورودی کاربر و هر دادهای که مدل از پایگاه داده نیاز دارد، فقط دادهای که این کاربر مجاز به دیدنش است.
- سرور API مدل زبانی را صدا میزند با کلیدی که در یک متغیر محیطی ذخیره شده است.
- سرور پاسخ را بررسی میکند: JSON معتبر، برچسب شناختهشده، طول منطقی؛ و سپس آن را ذخیره یا برمیگرداند.
- فرانتاند آن را نشان میدهد، و برای پاسخهای طولانیتر، متن را همانطور که میرسد نمایش میدهد.
کلید در مرحله ۴ روی سرور میماند و هرگز به مرورگر نمیرسد. اگر مفهوم API برایتان تازه است، API چیست مرور کوتاهی است و چگونه از APIهای مدل زبانی استفاده کنیم توکنها، مدلها و کلیدها را عمیقتر توضیح میدهد.
انتخاب ارائهدهنده و مدل
ارائهدهندگان بزرگ مانند OpenAI، Anthropic، Google و دیگران همگی APIهای متنی با ساختار تقریباً مشابه ارائه میدهند. هنگام انتخاب، این پرسشها مفیدند:
- کیفیت برای کار شما. چند نمونه واقعی از اپ خود را روی دو یا سه مدل امتحان کنید. تفاوتها اغلب روی داده خودتان واضحتر از بنچمارکهای عمومی است.
- اندازه در برابر هزینه. ارائهدهندگان مدلهای بزرگتر و توانمندتر و مدلهای کوچکتر، ارزانتر و سریعتر ارائه میکنند. دستهبندی و استخراج ساده اغلب روی یک مدل کوچک خوب کار میکنند؛ استدلال طولانی یا نوشتن ظریف ممکن است به مدل بزرگتر نیاز داشته باشد.
- خروجی ساختاریافته. برای استخراج و دستهبندی، یک قابلیت API را ترجیح دهید که مدل را وادار میکند JSON مطابق با schema شما برگرداند، نه اینکه متن آزاد را تجزیه کنید.
- مدیریت داده. شرایط ارائهدهنده را بخوانید که ببینید ورودیهای API ذخیره میشوند یا برای آموزش استفاده میشوند، و اینکه آیا با دادهای که کاربرانتان به شما میدهند سازگار است.
- محدودیتها. حسابهای جدید اغلب محدودیت نرخ پایینتری دارند؛ پیش از راهاندازی آنها را بررسی کنید.
نام مدلها و قیمتها زیاد تغییر میکنند، پس کد باید نام مدل را از تنظیمات بخواند، نه اینکه آن را در چند جای مختلف بهصورت ثابت بنویسد.
افزودن یک قابلیت، گام به گام
یک نمونه ملموس: یک CRM کوچک که هر مخاطب تاریخچه طولانی یادداشت دارد.
۱. کلید را ذخیره کنید. یک کلید در داشبورد ارائهدهنده بسازید و آن را بهعنوان Secret سمت سرور ذخیره کنید، برای مثال OPENAI_API_KEY یا ANTHROPIC_API_KEY.
۲. یک قابلیت محدود بخواهید:
یک دکمه «خلاصه کن» به صفحه مخاطب اضافه کن. روی سرور، ۲۰ یادداشت آخر مخاطب را با استفاده از Secret به نام [ناممتغیر] به [ارائهدهنده] بفرست، با دستورالعملی برای نوشتن سه گلوله: وضعیت فعلی، پرسشهای باز، و قدم بعدی. فقط یادداشتهایی را بفرست که کاربر واردشده میتواند ببیند. حالت بارگذاری نشان بده، خلاصه را همراه با زمان ذخیره کن، و اگر درخواست شکست خورد، پیام «همین حالا نمیتوان خلاصه کرد» را نشان بده. هرگز کلید را به مرورگر نفرست.
۳. استخراج را جایی اضافه کنید که تایپ را کم میکند:
وقتی کاربر یک امضای ایمیل را در کادر «افزودن سریع» قرار میدهد، روی سرور [ارائهدهنده] را صدا بزن و با استفاده از قابلیت خروجی ساختاریافته ارائهدهنده، JSON شامل نام، شرکت، عنوان شغلی، ایمیل و تلفن برگردان. JSON را روی سرور اعتبارسنجی کن، فرم مخاطب جدید را با آن پر کن و اجازه بده کاربر پیش از ذخیره ویرایش کند. فیلدها را خالی بگذار، بهجای حدس زدن.
بخش مهم «اجازه بده کاربر پیش از ذخیره ویرایش کند» است: مدل پیشنهاد میدهد، و فرد تصمیم میگیرد.
۴. در پسزمینه دستهبندی کنید:
وقتی یک تیکت پشتیبانی جدید میرسد، آن را دقیقاً در یکی از این دستهها قرار بده: صورتحساب، خطا، درخواست قابلیت جدید، دسترسی حساب، سایر. از یک مدل کوچک و کمهزینه استفاده کن. اگر پاسخ یکی از این برچسبها نبود، «سایر» را ذخیره کن. برچسب را بهصورت یک تگ قابل ویرایش نشان بده.
۵. با داده واقعی و نامرتب آزمایش کنید: یادداشتهای طولانی، یادداشتهای خالی، زبانهای دیگر، امضایی بدون شماره تلفن، و بیست خروجی را کنار هم بررسی کنید پیش از انتشار.
نوشتن دستورالعملهایی که کار میکنند
دستورالعملی که همراه هر درخواست میفرستید (که اغلب prompt سیستمی نامیده میشود) منبع کیفیت است.
- بگویید برای چه کسی است و خوب بودن یعنی چه. «خلاصهها ظرف ۱۰ ثانیه قبل از تماس توسط فروشنده خوانده میشوند» هدفی به مدل میدهد.
- قالب را ثابت کنید. تعداد دقیق گلولهها، محدودیت طول، فیلدها، برچسبها.
- بگویید وقتی مطمئن نیست چه کند. «اگر یادداشتها قدم بعدی را ذکر نکردهاند، بنویس: قدم بعدی ثبت نشده است.» این پاسخهای ساختگی را کم میکند.
- دو یا سه نمونه از ورودی و خروجی خوب برای استخراج و دستهبندی بدهید.
- دستورالعملها را از محتوای کاربر جدا نگه دارید و محتوای کاربر را روشن برچسب بزنید تا مدل بتواند آنها را از هم تشخیص دهد.
پرامپتها را در فایلهایی داخل کدبیس نگه دارید تا مثل هر کد دیگری نسخهبندی و قابل بازبینی باشند.
کنترل هزینهها
APIهای مدل زبانی بر اساس توکن، یعنی تکههای کوچک متن، هم برای آنچه میفرستید و هم برای آنچه برمیگردد هزینه میگیرند. هزینه با مقدار زمینه هر درخواست ضرب در تعداد دفعات اجرا رشد میکند. کنترلهای عملی:
- فقط آنچه لازم است را بفرستید. ۲۰ یادداشت آخر، نه کل تاریخچه. اسناد طولانی را کوتاه کنید یا تکهتکه کنید.
- کوچکترین مدلی را استفاده کنید که کار را انجام میدهد. پیش از پیشفرضکردن بزرگترین مدل، امتحان کنید.
- طول خروجی را محدود کنید با تنظیم حداکثر توکن API.
- نتایج را کش کنید. یک خلاصه را ذخیره کنید و فقط وقتی منبع تغییر کرد دوباره تولیدش کنید، نه با هر بازدید از صفحه.
- برای هر کاربر محدودیت بگذارید. سقف روزانه برای هر حساب یا پلن جلوی یک کاربر پرمصرف یا یک اسکریپت را میگیرد تا صورتحساب را بالا نبرد.
- نرخ درخواست را روی endpoint محدود کنید، مثل هر مسیر پرهزینه دیگر.
- بودجه یا هشدار تعیین کنید در داشبورد ارائهدهنده و مصرف را هفتگی پس از راهاندازی بررسی کنید.
- مصرف توکن را برای هر قابلیت ثبت کنید تا بدانید کدام قابلیت چقدر هزینه دارد.
اگر قابلیتهای هوش مصنوعی هسته محصول شما هستند، هزینه اجرای آنها را در قیمتگذاری لحاظ کنید، بهجای اینکه بیسروصدا آن را تحمل کنید.
ایمنی و اعتماد
خروجی هوش مصنوعی احتمالاتی است. ممکن است با اطمینان کامل اشتباه باشد و ممکن است با متنی که میخواند هدایت شود. برای این موضوع بسازید:
- خروجی را ورودی غیرقابلاعتماد بدانید. ساختار را اعتبارسنجی کنید، پیش از نمایش بهعنوان HTML آن را escape کنید و هرگز آن را بهعنوان کد یا کوئری پایگاه داده اجرا نکنید.
- برای هر کاری که پیامد دارد، انسان را در چرخه نگه دارید: ارسال ایمیل، تغییر یک رکورد، بازپرداخت یک پرداخت. مدل پیشنویس مینویسد؛ فرد تأیید میکند.
- از prompt injection محافظت کنید. یک سند یا پیام ممکن است متنی مثل «دستورالعملهایت را نادیده بگیر» داشته باشد. آنچه مدل میبیند را به آنچه کاربر فعلی مجاز به دیدنش است محدود کنید، و ابزارهایی که میتوانند کارهای حساس انجام دهند را در اختیارش نگذارید، مگر اینکه کد شما ابتدا دسترسیها را بررسی کند.
- محتوای هوش مصنوعی را برچسب بزنید تا کاربران بدانند خلاصه یا پیشنهاد تولیدشده و بتوانند آن را بررسی کنند.
- خطاها را با ظرافت مدیریت کنید. ارائهدهندگان گاهی از کار میافتند یا محدودیت نرخ دارند. زمانانتظار تعیین کنید، پیام واضح نشان دهید و بقیه اپ را فعال نگه دارید.
- به آنچه کاربران میفرستند توجه کنید. برای ورودیهای متنی باز، یک مرحله نظارت محتوا را در نظر بگیرید و در سیاست حریم خصوصی روشن کنید که محتوا توسط یک ارائهدهنده هوش مصنوعی شخص ثالث پردازش میشود.
فهرست کاملتر بررسیها در چکلیست امنیتی اپهای ساختهشده با هوش مصنوعی آمده است.
اشتباهات رایج
- شروع با یک چتبات عمومی در حالی که یک دکمه ساده «خلاصه کن» یا «دستهبندی کن» به افراد بیشتری کمک میکند.
- گذاشتن کلید در کد فرانتاند یا در یک مخزن عمومی.
- فرستادن کل پایگاه داده بهعنوان زمینه، که کند و پرهزینه است و داده کاربران دیگر را در معرض خطر قرار میدهد.
- اعتماد به خروجی متنی آزاد در جایی که یک schema یا مجموعه برچسب ثابت آن را قابل بررسی میکرد.
- نبود محدودیت برای هر کاربر، که وقتی اولین صورتحساب میرسد کشف میشود.
افزودن قابلیتهای هوش مصنوعی با Mythex
در Mythex، قابلیت هوش مصنوعی را داخل اپ خودتان با درخواست در چت و با استفاده از کلید ارائهدهنده خودتان اضافه میکنید. کلید را بهعنوان Secret پروژه ذخیره کنید؛ وقتی عامل به آن نیاز داشته باشد، Mythex یک کارت Secret در چت نشان میدهد تا کلید را در گفتگو paste نکنید. سپس عامل مسیر سرور، پرامپتها و رابط کاربری را مینویسد. مصرف هوش مصنوعی اپ شما توسط ارائهدهندهتان صورتحساب میشود و جدا از اعتبار Mythex است که برای ساخت هزینه میکنید. مستندات یک پرامپت شروع در افزودن قابلیت هوش مصنوعی با کلیدهای API خودتان دارد.
پرسشها
چگونه به یک اپ موجود هوش مصنوعی اضافه کنم؟
یک کلید API از یک ارائهدهنده مدل زبانی بگیرید، آن را بهعنوان Secret سمت سرور ذخیره کنید و یک مسیر سمت سرور بسازید که پرامپت بههمراه داده مرتبط را برای ارائهدهنده میفرستد و نتیجه را به فرانتاند برمیگرداند. با یک قابلیت محدود مثل خلاصهسازی یک رکورد شروع کنید، نه با یک چت عمومی.
اجرای قابلیتهای هوش مصنوعی چقدر هزینه دارد؟
APIهای مدل زبانی بر اساس توکن هزینه میگیرند؛ تقریباً بر اساس هر تکه متنی که ارسال و دریافت میشود، با نرخهایی که بسته به مدل خیلی متفاوت است. هزینه به میزان متنی که هر درخواست حمل میکند و تعداد دفعات اجرای آن بستگی دارد. پس بر اساس مصرف واقعی خودتان تخمین بزنید، یک سقف در داشبورد ارائهدهنده تعیین کنید و مصرف هر کاربر را در اپ محدود کنید.
آیا میتوانم کلید OpenAI یا Anthropic خود را در فرانتاند قرار دهم؟
نه. هر چیزی که در کد فرانتاند باشد توسط هر کسی که صفحه را باز کند قابل خواندن است، و کلید لو رفته به غریبهها اجازه میدهد هزینه شما را بالا ببرند. ارائهدهنده را از سرور خود صدا بزنید، جایی که کلید در یک متغیر محیطی باقی میماند.
Prompt injection یعنی چه؟
یعنی متنی که مدل میخواند، مثل پیام کاربر، یک سند آپلودشده یا یک صفحه وب، شامل دستوراتی باشد که سعی میکنند دستورات شما را لغو کنند. خروجی مدل را غیرقابلاعتماد در نظر بگیرید، هرگز بدون بررسی اجازه ندهید که یک کار حساس را فعال کند، و دادهای که مدل میبیند را فقط به آنچه کاربر مجاز به دیدنش است محدود کنید.