مقالات

ساختن یک هوش مصنوعی مکالمه با کارگران ابر


مکالمه هوش مصنوعی اساساً در حال تغییر پشتیبانی مشتری است و پاسخ های فوری و آگاهانه ای را در مقیاس عظیم ارائه می دهد. با وجود بازار جهانی مکالمه AI ، که پیش بینی می شود تا سال 2030 به 32.6 میلیارد دلار برسد و با رشد CAGR 23.6 ٪ ، توسعه دهندگان به روشهای مؤثر برای استقرار این ابزارهای قدرتمند نیاز دارند. سیستم عامل های رایانه ای Edge مانند CloudFlare و AI Gateway راه حل ایده آل را ارائه می دهند که امکان اجرای عوامل تأخیر کم بدون سرور بدون پیچیدگی مدیریت زیرساخت ها را فراهم می کند.

این درس یک راهنمای جامع برای ساختن یک چت بابات آماده ساخته شده ارائه می دهد. ما از کارگران Cloudflare برای Hassle -Free Backend ، AI Gateway برای مدیریت و نتیجه گیری برای مسیرهای مسیر و CSS در Tailwind برای یک جبهه تمیز و پاسخگو استفاده خواهیم کرد. نتیجه یک عامل پشتیبانی مشتری متنی است که از یک مدل زبان بزرگ بسیار کارآمد مانند Llama 3.1 استفاده می شود.

چرا یک هوش مصنوعی مکالمه را در Cloudflare ایجاد می کنید؟

استقرار برنامه های AI در شبکه Edge CloudFlare چندین مزایای مختلف را ارائه می دهد:

  • تأخیر بسیار بالا: شبکه جهانی CloudFlare برای ارائه درخواست از مکانی نزدیک به کاربر طراحی شده است و اطمینان حاصل می کند که تأخیر در نتیجه گیری هوش مصنوعی برای تجربه واقعی به طور دائم کمتر از 50 میلی متر است.
  • مدیریت مجرد با AI Gateway: AI Gateway به عنوان یک هواپیمای کنترل مرکزی برای برنامه های هوش مصنوعی شما عمل می کند. این مسیریابی کارگران مختلف هوش مصنوعی را متحد می کند (به عنوان مثال ، @cf/meta/llama-3.1-8b-instruct) ، ارائه ویژگی های اساسی مانند ذخیره ، محدودیت سرعت و تجزیه و تحلیل دقیق در خارج از جعبه.
  • الگوهای معاصر: شاخص های اخیر انواع Llama 3.1 را نشان می دهد ، که در انسجام زیادی متمایز هستند و این باعث می شود آنها برای کارهای مکالمه بهتر شوند. کارگران هوش مصنوعی دسترسی آسان به این مدل ها را فراهم می کنند.
  • مقیاس: بدون سرور ، معماری کارگران CloudFlare به طور خودکار برای پردازش میلیون ها نمایش داده شده با صفر سرماخوردگی مقیاس می شود ، و اطمینان می دهد که برنامه شما بدون در نظر گرفتن ترافیک ، همیشه در دسترس و اجرا است.

پیش نیازهای

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

  • حساب Cloudflare: حساب CloudFlare رایگان برای شروع کافی است. در CloudFlare.com ثبت نام کنید و کارگران AI را فعال کنید.
  • Wrangler CLI: رابط خط فرمان برای مدیریت کارگران در ابر. آن را از طریق NPM نصب کنید: npm install -g wranglerو سپس با شروع با حساب خود تأیید می شوید wrangler loginحرف
  • Wrangler CLI: رابط خط فرمان برای مدیریت کارگران در ابر. آن را از طریق NPM نصب کنید: npm install -g wranglerو سپس با شروع با حساب خود تأیید می شوید wrangler loginحرف
  • دانش: درک اصلی JavaScript ، REST API و API ابزار (به عنوان یک Tailwind CSS).
  • ساز: ویرایشگر کد به عنوان یک کد VS و یک مرورگر وب مدرن.

درک معماری

معماری Chatbot ما ساده ، مقیاس و قدرتمند است:

  1. مشتری جلو: صفحه HTML استاتیک ، با شکل CSS Tailwind ، معرفی کاربران را ضبط می کند و از طریق درخواست ها با کارگر باطن ما ارتباط برقرار می کند.
  2. کارگر Cloudflare: این عملکرد بدون سرور هسته برنامه ما است. او درخواست های مشتری را دریافت می کند ، وضعیت مکالمه را مدیریت می کند و مطمئناً مدل AI را فراخوانی می کند.
  3. cloudflare kv: فروشگاه داده جهانی با مقادیر کلیدی تأخیر کم که برای مدیریت جلسات استفاده می شود. در اینجا ما تاریخچه مکالمات هر کاربر را ذخیره خواهیم کرد تا زمینه ای برای پیام های بعدی فراهم شود.
  4. دروازه AI: این سرویس به عنوان یک پروکسی بین کارگر ما و مدل اصلی هوش مصنوعی عمل می کند. این یک نقطه پایدار پایدار را فراهم می کند و ویژگی های مهمی را برای نظارت ، حافظه نهان و کنترل اضافه می کند.
  5. کارگران هوش مصنوعی: بستر اصلی برای نتیجه گیری که Llama 3.1 را مدیریت می کند.

مشتری پیام هایی را به کارگر CloudFlare ارسال می کند. کارگر تاریخ مکالمه KV را به دست می آورد ، درخواست AI Gateway را برای نتیجه گیری LLAMA 3.1 هدایت می کند و داستان به روز شده را در KV نگه می دارد.

اجرای

مرحله 1: دروازه AI خود را تنظیم کنید

ابتدا ، ما یک دروازه AI برای دسترسی به مدل خود ایجاد خواهیم کرد.

  1. داشبورد مدیریت CloudFlare را وارد کنید.
  2. حرکت کردن عده > دروازه AIحرف
  3. کلیک کردن یک دروازه ایجاد کنیدحرف
  4. به او یک نام به یاد ماندنی بدهید (به عنوان مثال chat-gateway) و انتخاب کنید کارگران هوش مصنوعی به عنوان ارائه دهنده API. کلیک کردن ایجادحرف
  5. در صفحه بعدی نقطه انتهایی API را در دروازه خود مشاهده خواهید کرد. به این موضوع توجه کنید به نظر می رسد چنین خواهد بود: https://gateway.ai.cloudflare.com/v1///workers-aiحرف
  6. سپس یک نشانگر API ایجاد کنید تا درخواست ها را به دروازه تأیید کنید. رفتن به نمایه من > نشانگرهای API و کلیک کنید یک نشانگر ایجاد کنیدحرف
  7. استفاده کردن یک برچسب سفارشی ایجاد کنید الگوی نشانگر نام را بدهید (به عنوان مثال ، AI Gateway Read Token).
  8. اجازه زیر را به او بدهید: حساب > عده > خواندنS این تنها مجوز لازم است.
  9. کلیک کردن به طور خلاصه ادامه دهیدپس یک نشانگر ایجاد کنیدS برچسب تولید شده را کپی کرده و آن را ایمن ذخیره کنید.

مرحله 2: پروژه کارگر را تنظیم کنید

حال ، بیایید پروژه را برای منطق پس زمینه خود ایجاد کنیم.

  1. ترمینال خود را باز کنید و با استفاده از CLI Wrangler یک کارگر پروژه جدید ایجاد کنید:

    npx wrangler init conversational-ai-worker --type javascript
    cd conversational-ai-worker
    npm install

  2. برای ذخیره جلسات چت یک فضای KV ایجاد کنید. در ترمینال خود ، شروع کنید:

    npx wrangler kv:namespace create CHAT_SESSIONS

    این دستور بیرون می آید id برای فضای نام جدید شما آن را کپی کنید

  3. باز wrangler.toml پرونده و پیکربندی آن برای اتصال به فضای AI Gateway و KV نام خود را پیکربندی کنید. مقادیر جایگزینی را با اعتبار واقعی خود جایگزین کنید.

    name = "conversational-ai-worker"
    main = "src/index.js"
    compatibility_date = "2025-10-01"
    
    # Binding for KV session storage
    [[kv_namespaces]]
    binding = "CHAT_SESSIONS"
    id = "" # Paste the ID from the previous step here
    
    # Environment variables for configuration
    [vars]
    GATEWAY_URL = "https://gateway.ai.cloudflare.com/v1///workers-ai"
    API_TOKEN = "" # Paste the token you created in Step 1
    MODEL = "@cf/meta/llama-3.1-8b-instruct"

مرحله 3: منطق کارگر را بسازید

کارگر درخواست های چت را اداره می کند ، تاریخچه گفتگوی KV را مدیریت می کند و از طریق AI Gateway با مدل AI تماس می گیرد. محتویات را جایگزین کنید src/index.js با کد زیر:

export default {
  async fetch(request, env) {
    // We only accept POST requests for this endpoint
    if (request.method !== 'POST') {
      return new Response('Method Not Allowed', { status: 405 });
    }

    // Parse the incoming JSON body
    const { sessionId, message } = await request.json();

    // Validate the required fields
    if (!sessionId || !message) {
      return new Response(JSON.stringify({ error: 'The fields "sessionId" and "message" are required.' }), {
        status: 400,
        headers: { 'Content-Type': 'application/json' },
      });
    }

    // Define a unique key for storing this session's history in KV
    const historyKey = `chat:${sessionId}`;
    let history = [];

    // Attempt to retrieve existing conversation history from KV
    try {
      const historyData = await env.CHAT_SESSIONS.get(historyKey);
      if (historyData) {
        history = JSON.parse(historyData);
      }
    } catch (error) {
      console.error('KV read error:', error);
      // Continue with empty history if KV read fails
    }

    // Construct the payload for the AI model
    const messages = [
      { role: 'system', content: 'You are a friendly and helpful customer support agent.' },
      ...history,
      { role: 'user', content: message }
    ];

    // Call the AI model via our AI Gateway
    try {
      const aiResponse = await fetch(`${env.GATEWAY_URL}/v1/chat/completions`, {
        method: 'POST',
        headers: {
          'Authorization': `Bearer ${env.API_TOKEN}`,
          'Content-Type': 'application/json',
        },
        body: JSON.stringify({
          model: env.MODEL,
          messages,
          max_tokens: 250, // Limit the response length
          temperature: 0.7, // Adjust for creativity vs. predictability
        }),
      });

      if (!aiResponse.ok) {
        throw new Error(`API error: ${aiResponse.status} ${aiResponse.statusText}`);
      }

      const data = await aiResponse.json();
      const reply = data.choices[0].message.content.trim();

      // Add the user's message and the AI's reply to the history
      history.push({ role: 'user', content: message });
      history.push({ role: 'assistant', content: reply });

      // Keep the history to a reasonable size (last 5 turns)
      if (history.length > 10) {
        history = history.slice(-10);
      }

      // Store the updated history back in KV, expiring after 1 hour (3600 seconds)
      await env.CHAT_SESSIONS.put(historyKey, JSON.stringify(history), { expirationTtl: 3600 });

      // Send the AI's reply back to the client
      return Response.json({ reply });

    } catch (error) {
      console.error('Inference error:', error);
      return new Response(JSON.stringify({ error: 'Failed to process your message. Please try again.' }), {
        status: 500,
        headers: { 'Content-Type': 'application/json' },
      });
    }
  }
};

مرحله 4: کارگر را رها کنید

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

پس از اجرای موفقیت آمیز ، Wrangler URL کارگر کار شما را نشان می دهد که به نظر می رسد https://conversational-ai-worker..workers.devS این URL را برای مرحله بعدی کپی کنید.

مرحله 5: مشتری Frontend را ایجاد کنید

اکنون یک فایل HTML ساده برای رابط کاربری ایجاد کنید. یک فایل با یک نام ایجاد کنید index.html در فهرست اصلی پروژه شما. این کد از Tailwind CSS از طریق CDN برای یک ظاهر طراحی سریع استفاده می کند.




  
  
  AI Customer Support Chatbot
  

مهم: به یاد داشته باشید که جایگزین کنید WORKER_URL هیئت منصفه در فیلمنامه با URL واقعی کارگر آشکار شما.

مرحله ششم: Chatbot خود را کامل و آزمایش کنید

شما می توانید برنامه را فقط با باز کردن آزمایش کنید index.html پرونده ای در مرورگر وب شما.

مکالمه را شروع کنید و آگاهی از متن آن را آزمایش کنید:

  • کاربر: "چگونه رمز ورود خود را دوباره تنظیم کنم؟"
  • کاربر: "وضعیت سفارش من #xyz-98765 چیست؟"
  • کاربر: (ردیابی) "آیا می توانید تاریخ تحویل تخمین زده شده آن را بررسی کنید؟"

Chatbot باید شماره سفارش را از نوبت قبلی به خاطر بسپارد و به لطف تاریخچه جلسه ذخیره شده در CloudFlare KV ، پاسخ مناسبی بدهد.

دلایل تولید

  • محدود کردن سرعت و حافظه پنهان: در داشبورد AI Gateway ، می توانید به راحتی محدودیت های محدودیت تعرفه را تنظیم کنید (به عنوان مثال 60 درخواست در دقیقه) برای جلوگیری از قوانین بیشتر حافظه پنهان و تنظیم حافظه پنهان برای ارائه درخواست های یکسان و با قیمت پایین تر.
  • مقیاس یک جلسه ذخیره سازی: CloudFlare KV مقیاس بسیار زیادی است ، اما برای برنامه هایی با حجم ضبط بسیار بالا یا نیاز به ضمانت های معامله ای ، برای مدیریت جلسات از اشیاء با دوام CloudFlare استفاده کنید.
  • عملکرد و نظارت: از داشبورد مدیریت AI Gateway برای نظارت بر درخواست ها ، خطاها ، هزینه ها و استفاده از نشانگرها استفاده کنید. برای درخواست های پیچیده تر می توانید به راحتی به یک مدل قدرتمندتر مانند تغییر دهید @cf/meta/llama-3.1-70b-instruct با به روزرسانی MODEL متغیر در wrangler.tomlحرف
  • فرآیند ساخت و ساز جلو: برای یک سایت تولیدی ، بهتر است مرحله مناسب ساخت یک Tailwind CSS را برای تصفیه سبک های استفاده نشده و به حداقل رساندن پرونده نهایی CSS به جای استفاده از CDN تنظیم کنید.

ویژگی های گسترده: تجزیه و تحلیل پارچه ها و خلق و خوی

شما می توانید به راحتی این بنیاد را با فرصت های بیشتر گسترش دهید.

دانش متنی با نسلی با استخراج (RAG) (RAG)

برای اینکه ربات خود را بر اساس اسناد شخصی خود پاسخ دهد ، می توانید RAG را با استفاده از CloudFlare Vectorize ادغام کنید.

  1. پیوندهای بردار و کارگران را اضافه کنید wrangler.toml:

    [[vectorize]]
    binding = "VECTOR_INDEX"
    index_name = "your-product-docs"
    
    [ai]
    binding = "AI"

  2. در کارگر خود ، نصب کاربر را تولید کنید ، از پایگاه داده بردار خود برای زمینه مناسب درخواست کرده و آن را به یک برجسته تزریق کنید.

    // In src/index.js, before calling the AI gateway
    const { results } = await env.AI.run('@cf/baai/bge-base-en-v1.5', { text: [message] });
    const embedding = results[0];
    
    const matches = await env.VECTOR_INDEX.query(embedding, { topK: 3 });
    const context = matches.map(m => m.metadata.text).join('\n---\n');
    
    const systemPrompt = `You are a helpful assistant. Answer the user's question based on the following context:\n${context}`;
    messages[0].content = systemPrompt; // Overwrite or prepend to system message

پایان

شما با موفقیت مقیاس ، با تأخیر کم و عامل هوش مصنوعی هوشمند زمینه با استفاده از کارگران CloudFlare ، AI Gateway و KV ایجاد کرده اید. این معماری از قدرت لبه برای ارائه یک تجربه عالی مصرف کننده استفاده می کند ، ضمن ساده سازی توسعه و عملیات.

نکته اصلی از این درس شامل موارد زیر است:

  • لبه: کارگران AI بر نتیجه گیری در نزدیکی کاربر غلبه می کنند ، و به طرز چشمگیری کاهش می دهند
  • عملیات ساده شده: AI Gateway تمرکز مسیریابی ، ذخیره ، محدودیت سرعت و نظارت.
  • واحد: CloudFlare KV روشی آسان و مؤثر برای مدیریت تاریخ گفتگو ارائه می دهد.
  • یک جبهه مدرن: Tailwind CSS امکان توسعه سریع یک رابط کاربری تمیز و پاسخگو را فراهم می کند.

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

منابع اضافی


Source link

نوشته های مشابه

دیدگاهتان را بنویسید

دکمه بازگشت به بالا