ساختن یک API FAQ Generator با Next.js، GPT-4 و Unkey: Making Rate Limiting Fun!

Summarize this content to 400 words in Persian Lang
چه کسی از بخش پرسشهای متداول جامد قدردانی نمیکند؟ این جواهرات کوچک اطلاعات به کاربران کمک می کند تا بدون پر کردن سؤالات صندوق ورودی شما، به سرعت پاسخ ها را بیابند. اما اگر به شما بگویم که میتوانیم فرآیند ایجاد سؤالات متداول را خودکار کنیم، چه؟ حتی بهتر از آن، میتوانیم کمی استعداد هوش مصنوعی اضافه کنیم، همه آن را به یک برنامه شیک Next.js پیوند دهیم، و همه چیز را با استفاده از محدود کردن نرخ کنترل کنیم. بی کلید. بعلاوه، ما مطمئن خواهیم شد که API از محدودیت ماهانه رمز شما عبور نمی کند!
و این است اینجا زندگی کن و منبع باز اینجا (فراموش نکنید که ⭐️ ;)).
صدا خوب است؟ بیایید شیرجه بزنیم
چالش: خودکار کردن سوالات متداول (در حالی که هزینه ها پایین است)
تصور کنید که به تازگی یک برنامه جدید و جالب راه اندازی کرده اید و کاربران سوالاتی مانند “این برنامه در مورد چیست؟” یا “چگونه کار می کند؟” میتوانید بنشینید و پاسخ همه این سؤالات را بنویسید، اما اگر برنامه فقط بتواند سؤالات متداول را برای شما ایجاد کند، چه؟ خوب به نظر می رسد، درست است؟
برای ایجاد پرسشهای متداول هوشمند و خودکار، GPT-4 OpenAI (یا اگر بودجهتان کم است نسخه 3.5) را وارد کنید. اما یک نکته وجود دارد: API OpenAI رایگان نیست، و مگر اینکه روی انبوهی از پول بنشینید، با بودجه محدود کار می کنید. برای مدیریت تعداد درخواستهای API که کاربرانتان میتوانند انجام دهند، به یک روش هوشمند نیاز دارید.
اینجاست که بی کلید این یک ابزار مدیریت API ساده است که محدودیت نرخ را برای جلوگیری از غلبه بر سیستم شما (یا کیف پول شما) توسط هر کاربر منفرد فراهم می کند. بیایید ببینیم چگونه همه آن را ساختم!
مرحله 1: راه اندازی Next.js و OpenAI API
اولین چیزها: Next.js چارچوب پیشرو ما برای این پروژه است. این مورد علاقه سریعکنندگان کشتی است (آره، من فقط یک کلمه ایجاد کردم :)).
در اینجا یک تفکیک سریع از نحوه مدیریت جادوی هوش مصنوعی ارائه شده است. در مسیر API خود، درخواستی را به GPT-4 OpenAI ارسال میکنیم و از آن میخواهیم فهرستی از سؤالات متداول را بر اساس یک موضوع ایجاد کند.
import { NextResponse, NextRequest } from “next/server”;
import rateLimit from “@/lib/unkey”;
import openai from “@/lib/openai”;
import { parseFaqResponse } from “@/lib/responseParser”;
export async function POST(request: NextRequest): Promise<NextResponse> {
const { topic } = await request.json();
// Make sure the ‘topic’ parameter is provided
if (!topic || typeof topic !== “string”) {
return NextResponse.json(
{ error: “Missing or invalid ‘topic’ parameter” },
{ status: 400 }
);
}
// Get the user’s IP address
const ip = request.headers.get(“x-forwarded-for”) || “anonymous”;
// Verify the rate limit
const rateLimitResponse = await rateLimit.limit(ip, { cost: 2 });
if (!rateLimitResponse.success) {
// Return a 429 status response if the limit is exceeded
return NextResponse.json(
{ message: “API rate limit exceeded. Try again later” },
{ status: 429 }
);
}
try {
// Generate FAQ answer using GPT-4o
const response = await openai.chat.completions.create({
model: “gpt-4o-mini”,
messages: [
{
role: “system”,
content:
“PROMPT”,
},
{
role: “user”,
content: `Here is the topic: “${topic}”`,
},
],
});
const answer = parseFaqResponse(response);
return NextResponse.json(answer, { status: 200 });
} catch (error) {
return NextResponse.json(
{ error: “Error generating FAQ” },
{ status: 500 }
);
}
}
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
در این نقطه پایانی API، ما را وارد می کنیم topic و user ip address (برای بررسی محدودیت نرخ). ما موضوع را به GPT-4 می فرستیم، از آن سؤالات متداول می خواهیم و سپس یک پاسخ JSON با فرمت زیبا را برمی گردانیم. و اگر کاربر با درخواست ها دیوانه شود؟ Unkey وارد میشود و میگوید: “اوه، آهسته!
مرحله 2: محدود کردن امتیاز با Unkey – زیرا هیچ کس یک Overachiver را دوست ندارد
ممکن است فکر کنید محدود کردن نرخ خسته کننده است، اما نجات دهنده است، به خصوص زمانی که از خدمات پولی مانند OpenAI استفاده می کنید. Unkey ساده است و این کار را با ظرافت انجام می دهد.
در اینجا چیزی است که Unkey را عالی می کند:
خیلی ساده است برای استفاده (به طور جدی، لازم نیست بدانید که چگونه یک div را در مرکز قرار دهید).
قیمت گذاری دوستانه – Unkey بانک را خراب نمی کند و بودجه OpenAI API شما را کنترل می کند.
در راهاندازی ما، به ازای هر کاربر 2 درخواست در هر 10 ثانیه اجازه میدهیم. پس از آن، Unkey میپرد و پیام دوستانه «از حد مجاز فراتر رفته است» را در آن پنجره 10 به آنها میفرستد. این باعث میشود API شما تحت فشار قرار نگیرد و مانع از آن میشود که تعداد توکنهای شما بیش از بودجه باشد. در اینجا چیزی است که unkey.ts فایل به نظر می رسد:
import { Ratelimit } from “@unkey/ratelimit”;
const unkey = new Ratelimit({
rootKey: process.env.UNKEY_ROOT_KEY!,
duration: “10s”,
limit: 2,
namespace: “askiq”,
async: true,
});
export default unkey;
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
مرحله 3: رسیدگی به خطا – زیرا گاهی اوقات همه چیز اشتباه می شود
ساختن یک API فقط برای کار کردن همه چیز نیست، بلکه در مورد اطمینان از همه چیز است نشکن زمانی که کاربران کارهای غیر منتظره را انجام می دهند.
در اینجا برخی از مواردی است که ما بررسی می کنیم:
گم شده topic? ما یک خطای 400 ارسال می کنیم.
از حد مجاز فراتر رفته است؟ ما یک خطای 429 ارسال می کنیم.
چیز دیگری؟ یک خطای 500 ارسال می کنیم و می گوییم: “اوه، مشکلی پیش آمد.”
همه چیز در مورد صاف و کاربرپسند نگه داشتن موارد است.
نتیجه: یک سازنده پرسشهای متداول مناسب برای توسعهدهندگان
در پایان روز، چه چیزی داریم؟ یک مولد سوالات متداول شیک و با نرخ محدود که توسعهدهندگان میتوانند از آن برای دریافت پرسشهای متداول خودکار در مورد هر موضوعی که میخواهند استفاده کنند که توسط GPT-4 OpenAI به نام ASKIQ پشتیبانی میشود.
بنابراین شما آن را دارید: یک مولد سوالات متداول نرم که از هوش مصنوعی برای صرفه جویی در وقت شما استفاده می کند، که توسط یک سیستم محدود کننده نرخ کارآمد قدرت می گیرد. آیا می خواهید API خود را کنترل کنید؟ بده بی کلید یک چرخش
اکنون، می روید تا پروژه منبع باز خود را بسازید یا این پروژه را به سطح بعدی ببرید و ممکن است از آنجایی که آنجا هستید ستاره ای را ترک کنید. کد نویسی مبارک!
چه کسی از بخش پرسشهای متداول جامد قدردانی نمیکند؟ این جواهرات کوچک اطلاعات به کاربران کمک می کند تا بدون پر کردن سؤالات صندوق ورودی شما، به سرعت پاسخ ها را بیابند. اما اگر به شما بگویم که میتوانیم فرآیند ایجاد سؤالات متداول را خودکار کنیم، چه؟ حتی بهتر از آن، میتوانیم کمی استعداد هوش مصنوعی اضافه کنیم، همه آن را به یک برنامه شیک Next.js پیوند دهیم، و همه چیز را با استفاده از محدود کردن نرخ کنترل کنیم. بی کلید. بعلاوه، ما مطمئن خواهیم شد که API از محدودیت ماهانه رمز شما عبور نمی کند!
و این است اینجا زندگی کن و منبع باز اینجا (فراموش نکنید که ⭐️ ;)).
صدا خوب است؟ بیایید شیرجه بزنیم
چالش: خودکار کردن سوالات متداول (در حالی که هزینه ها پایین است)
تصور کنید که به تازگی یک برنامه جدید و جالب راه اندازی کرده اید و کاربران سوالاتی مانند “این برنامه در مورد چیست؟” یا “چگونه کار می کند؟” میتوانید بنشینید و پاسخ همه این سؤالات را بنویسید، اما اگر برنامه فقط بتواند سؤالات متداول را برای شما ایجاد کند، چه؟ خوب به نظر می رسد، درست است؟
برای ایجاد پرسشهای متداول هوشمند و خودکار، GPT-4 OpenAI (یا اگر بودجهتان کم است نسخه 3.5) را وارد کنید. اما یک نکته وجود دارد: API OpenAI رایگان نیست، و مگر اینکه روی انبوهی از پول بنشینید، با بودجه محدود کار می کنید. برای مدیریت تعداد درخواستهای API که کاربرانتان میتوانند انجام دهند، به یک روش هوشمند نیاز دارید.
اینجاست که بی کلید این یک ابزار مدیریت API ساده است که محدودیت نرخ را برای جلوگیری از غلبه بر سیستم شما (یا کیف پول شما) توسط هر کاربر منفرد فراهم می کند. بیایید ببینیم چگونه همه آن را ساختم!
مرحله 1: راه اندازی Next.js و OpenAI API
اولین چیزها: Next.js چارچوب پیشرو ما برای این پروژه است. این مورد علاقه سریعکنندگان کشتی است (آره، من فقط یک کلمه ایجاد کردم :)).
در اینجا یک تفکیک سریع از نحوه مدیریت جادوی هوش مصنوعی ارائه شده است. در مسیر API خود، درخواستی را به GPT-4 OpenAI ارسال میکنیم و از آن میخواهیم فهرستی از سؤالات متداول را بر اساس یک موضوع ایجاد کند.
import { NextResponse, NextRequest } from "next/server";
import rateLimit from "@/lib/unkey";
import openai from "@/lib/openai";
import { parseFaqResponse } from "@/lib/responseParser";
export async function POST(request: NextRequest): Promise<NextResponse> {
const { topic } = await request.json();
// Make sure the 'topic' parameter is provided
if (!topic || typeof topic !== "string") {
return NextResponse.json(
{ error: "Missing or invalid 'topic' parameter" },
{ status: 400 }
);
}
// Get the user's IP address
const ip = request.headers.get("x-forwarded-for") || "anonymous";
// Verify the rate limit
const rateLimitResponse = await rateLimit.limit(ip, { cost: 2 });
if (!rateLimitResponse.success) {
// Return a 429 status response if the limit is exceeded
return NextResponse.json(
{ message: "API rate limit exceeded. Try again later" },
{ status: 429 }
);
}
try {
// Generate FAQ answer using GPT-4o
const response = await openai.chat.completions.create({
model: "gpt-4o-mini",
messages: [
{
role: "system",
content:
"PROMPT",
},
{
role: "user",
content: `Here is the topic: "${topic}"`,
},
],
});
const answer = parseFaqResponse(response);
return NextResponse.json(answer, { status: 200 });
} catch (error) {
return NextResponse.json(
{ error: "Error generating FAQ" },
{ status: 500 }
);
}
}
در این نقطه پایانی API، ما را وارد می کنیم topic
و user ip address
(برای بررسی محدودیت نرخ). ما موضوع را به GPT-4 می فرستیم، از آن سؤالات متداول می خواهیم و سپس یک پاسخ JSON با فرمت زیبا را برمی گردانیم. و اگر کاربر با درخواست ها دیوانه شود؟ Unkey وارد میشود و میگوید: “اوه، آهسته!
مرحله 2: محدود کردن امتیاز با Unkey – زیرا هیچ کس یک Overachiver را دوست ندارد
ممکن است فکر کنید محدود کردن نرخ خسته کننده است، اما نجات دهنده است، به خصوص زمانی که از خدمات پولی مانند OpenAI استفاده می کنید. Unkey ساده است و این کار را با ظرافت انجام می دهد.
در اینجا چیزی است که Unkey را عالی می کند:
- خیلی ساده است برای استفاده (به طور جدی، لازم نیست بدانید که چگونه یک div را در مرکز قرار دهید).
- قیمت گذاری دوستانه – Unkey بانک را خراب نمی کند و بودجه OpenAI API شما را کنترل می کند.
در راهاندازی ما، به ازای هر کاربر 2 درخواست در هر 10 ثانیه اجازه میدهیم. پس از آن، Unkey میپرد و پیام دوستانه «از حد مجاز فراتر رفته است» را در آن پنجره 10 به آنها میفرستد. این باعث میشود API شما تحت فشار قرار نگیرد و مانع از آن میشود که تعداد توکنهای شما بیش از بودجه باشد. در اینجا چیزی است که unkey.ts
فایل به نظر می رسد:
import { Ratelimit } from "@unkey/ratelimit";
const unkey = new Ratelimit({
rootKey: process.env.UNKEY_ROOT_KEY!,
duration: "10s",
limit: 2,
namespace: "askiq",
async: true,
});
export default unkey;
مرحله 3: رسیدگی به خطا – زیرا گاهی اوقات همه چیز اشتباه می شود
ساختن یک API فقط برای کار کردن همه چیز نیست، بلکه در مورد اطمینان از همه چیز است نشکن زمانی که کاربران کارهای غیر منتظره را انجام می دهند.
در اینجا برخی از مواردی است که ما بررسی می کنیم:
- گم شده
topic
? ما یک خطای 400 ارسال می کنیم. - از حد مجاز فراتر رفته است؟ ما یک خطای 429 ارسال می کنیم.
- چیز دیگری؟ یک خطای 500 ارسال می کنیم و می گوییم: “اوه، مشکلی پیش آمد.”
همه چیز در مورد صاف و کاربرپسند نگه داشتن موارد است.
نتیجه: یک سازنده پرسشهای متداول مناسب برای توسعهدهندگان
در پایان روز، چه چیزی داریم؟ یک مولد سوالات متداول شیک و با نرخ محدود که توسعهدهندگان میتوانند از آن برای دریافت پرسشهای متداول خودکار در مورد هر موضوعی که میخواهند استفاده کنند که توسط GPT-4 OpenAI به نام ASKIQ پشتیبانی میشود.
بنابراین شما آن را دارید: یک مولد سوالات متداول نرم که از هوش مصنوعی برای صرفه جویی در وقت شما استفاده می کند، که توسط یک سیستم محدود کننده نرخ کارآمد قدرت می گیرد. آیا می خواهید API خود را کنترل کنید؟ بده بی کلید یک چرخش
اکنون، می روید تا پروژه منبع باز خود را بسازید یا این پروژه را به سطح بعدی ببرید و ممکن است از آنجایی که آنجا هستید ستاره ای را ترک کنید. کد نویسی مبارک!