فراخوانی Toolها در چندمرحله با AI در NextJS
برخی از LLMها توانایی بالایی در فراخوانی Toolها بهصورت چندمرحلهای برای انجام وظایف پیچیدهتر دارند. این ویژگی زمانی مفید است که Toolها به یکدیگر وابسته باشند و نیاز باشد که پشتسرهم در یک گام از تولید محتوا اجرا شوند.
کلاینت
بیایید یک کامپوننت React ایجاد کنیم که در آن از هوک useChat از ماژول ai-sdk/react@ استفاده کند. این هوک هنگام ارسال پیام توسط کاربر، یک endpoint به نام api/chat/ را فراخوانی میکند. این endpoint بر اساس تاریخچهی گفتگو، پاسخ دستیار را تولید کرده و آن را بهصورت استریم به کلاینت ارسال میکند. اگر دستیار در پاسخ خود از فراخوانی tool استفاده کند، این هوک بهصورت خودکار آنها را نیز نمایش میدهد.
برای فراخوانی Toolها در چند مرحله، میتوانید از گزینهی maxSteps استفاده کنید تا حداکثر تعداد مراحلی که قبل از پاسخ متنی مدل یا کاربر مجاز است انجام شود را، تعیین نمایید. در این مثال، مقدار maxSteps روی 5 تنظیم میشود تا امکان فراخوانی چندین Tool بهصورت متوالی فراهم باشد.
در فایل app/page.tsx قطعه کد زیر را قرار دهید:
سرور
اکنون باید یک مسیر جدید در api/chat/ ایجاد کنید که از تابع streamText از ماژول ai برای تولید پاسخ دستیار بر اساس تاریخچهی گفتگو استفاده کند. از فیلد tools برای مشخص کردن دو Tool به نامهای getLocation و getWeather استفاده خواهید کرد که ابتدا موقعیت مکانی کاربر را بهدست میآورند و سپس از آن برای دریافت وضعیت آبوهوا استفاده میکنند.
شما دو تابع ذکرشده را اضافه خواهید کرد و با استفاده از Zod، یک اسکیما برای پارامترهای آنها تعریف خواهید نمود.
در مسیر app/api/chat/route.ts، قطعه کد زیر را قرار دهید:
متغیرهای محیطی BASE_URL و LIARA_API_KEY همان baseUrl سرویس هوش مصنوعی لیارا و کلید API لیارا هستند که باید در بخش متغیرهای محیطی برنامه خود، آنها را تنظیم کنید.
خروجی برنامه فوق:

پروژه فوق را میتوانید بهصورت کامل در گیتهاب لیارا، مشاهده کنید.