با Prompt API یک چت بات محلی و آفلاین بسازید

منتشر شده: ۱۳ ژانویه ۲۰۲۵

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

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

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

دسترسی مدل مشترک

رابط برنامه‌نویسی کاربردی Prompt رفتاری مشابه WebLLM دارد. با این حال، این بار انتخاب مدل وجود ندارد (شما باید از LLM که همراه مرورگر ارائه می‌شود استفاده کنید). هنگام فعال کردن هوش مصنوعی داخلی، کروم Gemini Nano را در مرورگر دانلود می‌کند. سپس این مدل می‌تواند در چندین منبع به اشتراک گذاشته شود و با حداکثر عملکرد اجرا شود. مشکلی در GitHub وجود دارد که در آن یک توسعه‌دهنده درخواست اضافه کردن ویژگی انتخاب مدل را داده است.

مکالمه را تنظیم کنید

شما می‌توانید مکالمه پیام را دقیقاً به همین روش شروع کنید، اما API مربوط به Prompt یک سینتکس مختصر نیز برای مشخص کردن اعلان سیستم ارائه می‌دهد. جلسه مدل زبان را با استفاده از متد create() در رابط LanguageModel شروع کنید:

const session = await LanguageModel.create({
  initialPrompt: [
    {
      type: 'system',
      content: `You are a helpful assistant. You will answer questions related
        to the user's to-do list. Decline all other requests not related to the
         user's todos. This is the to-do list in JSON: ${JSON.stringify(todos)}`,
    },
  ],
});

به سوال اولت جواب بده

به جای داشتن یک شیء پیکربندی برای پیکربندی استریمینگ، API مربوط به Prompt دو ​​روش جداگانه ارائه می‌دهد:

  • prompt() رشته کامل را برمی‌گرداند.
  • promptStreaming() یک تابع تکرارشونده ناهمگام (async) برمی‌گرداند. برخلاف WebLLM، رابط برنامه‌نویسی کاربردی Prompt با پاسخ رشته‌ای کامل پاسخ می‌دهد، بنابراین لازم نیست خودتان نتایج را ترکیب کنید.

اگر هیچ منبع دیگری قبلاً دانلود مدل را آغاز نکرده باشد، اولین درخواست شما ممکن است مدت زمان بسیار زیادی طول بکشد تا Gemini Nano در مرورگر شما دانلود شود. اگر مدل از قبل موجود باشد، استنتاج بلافاصله شروع می‌شود.

const stream = session.promptStreaming("How many open todos do I have?");
for await (const reply of stream) {
  console.log(reply);
}

نسخه آزمایشی

خلاصه

ادغام LLMها در برنامه‌ها می‌تواند تجربه کاربری را به طور قابل توجهی بهبود بخشد. در حالی که سرویس‌های ابری، صرف نظر از دستگاه کاربر، مدل‌های با کیفیت بالاتر و عملکرد استنتاج بالایی ارائه می‌دهند، راه‌حل‌های روی دستگاه، مانند WebLLM و Prompt API کروم، در مقایسه با جایگزین‌های مبتنی بر ابر، قابلیت آفلاین دارند، حریم خصوصی را بهبود می‌بخشند و در هزینه‌ها صرفه‌جویی می‌کنند. این APIهای جدید را امتحان کنید و برنامه‌های وب خود را هوشمندتر کنید.