ارسال بدنه‌ی سفارشی از useChat


در حال حاضر، experimental_prepareRequestBody یک قابلیت آزمایشی است و تنها در فریم‌ورک‌های React و Solid و Vue در دسترس است.

به‌صورت پیش‌فرض، useChat تمام پیام‌ها و اطلاعات مربوط به درخواست را به سرور ارسال می‌کند. با این حال، معمولاً نیاز است که محتوای بدنه‌ی ارسال‌شده به سرور کنترل شود، برای مثال:

  • فقط آخرین پیام ارسال شود
  • داده‌های اضافی همراه با پیام ارسال شوند
  • ساختار بدنه‌ی درخواست تغییر کند

گزینه‌ی experimental_prepareRequestBody به شما امکان می‌دهد محتوای بدنه‌ی ارسالی به سرور را سفارشی‌سازی کنید. این تابع لیست پیام‌ها، داده‌های درخواست و بدنه‌ی درخواست دریافتی از append call را به عنوان ورودی دریافت می‌کند و محتوایی که قرار است به سرور ارسال شود را بازمی‌گرداند.


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


کلاینت

قطعه کد زیر را در فایل app/page.tsx قرار دهید:

کپی
'use client';

import { useChat } from '@ai-sdk/react';

export default function Chat() {
  const { messages, input, handleInputChange, handleSubmit } = useChat({
    experimental_prepareRequestBody: ({ messages }) => {
      // e.g. only the text of the last message:
      return messages[messages.length - 1].content;
    },
  });

  return (
    <div>
      {messages.map(m => (
        <div key={m.id}>
          {m.role === 'user' ? 'User: ' : 'AI: '}
          {m.content}
        </div>
      ))}

      <form onSubmit={handleSubmit}>
        <input value={input} onChange={handleInputChange} />
      </form>
    </div>
  );
}

کپی