140 lines
5.7 KiB
JavaScript
Executable File
140 lines
5.7 KiB
JavaScript
Executable File
export default defineEventHandler(async (event) => {
|
||
try {
|
||
const body = await readBody(event);
|
||
const { action, text, language = "fa" } = body;
|
||
|
||
// بررسی پارامترهای ورودی
|
||
if (!action || !text) {
|
||
throw createError({
|
||
statusCode: 400,
|
||
statusMessage: "پارامترهای action و text الزامی هستند",
|
||
});
|
||
}
|
||
|
||
// API keyها از .env
|
||
const config = useRuntimeConfig();
|
||
const OPENAI_API_KEY = config.OPENAI_API_KEY;
|
||
const GEMINI_API_KEY = config.GEMINI_API_KEY;
|
||
|
||
// انتخاب سرویس AI
|
||
const useOpenAI = !!OPENAI_API_KEY;
|
||
const useGemini = !!GEMINI_API_KEY && !useOpenAI;
|
||
|
||
let aiResult = "";
|
||
|
||
if (useOpenAI) {
|
||
// OpenAI API
|
||
const response = await fetch(
|
||
"https://api.openai.com/v1/chat/completions",
|
||
{
|
||
method: "POST",
|
||
headers: {
|
||
Authorization: `Bearer ${OPENAI_API_KEY}`,
|
||
"Content-Type": "application/json",
|
||
},
|
||
body: JSON.stringify({
|
||
model: "gpt-3.5-turbo",
|
||
messages: [
|
||
{
|
||
role: "system",
|
||
content:
|
||
"تو یک دستیار فارسیزبان هستی که به کاربران در نوشتن کمک میکنی.",
|
||
},
|
||
{
|
||
role: "user",
|
||
content: getPrompt(action, text, language),
|
||
},
|
||
],
|
||
temperature: 0.7,
|
||
max_tokens: 500,
|
||
}),
|
||
}
|
||
);
|
||
|
||
if (!response.ok) {
|
||
throw new Error(`OpenAI API error: ${response.status}`);
|
||
}
|
||
|
||
const data = await response.json();
|
||
aiResult = data.choices[0]?.message?.content || "خطا در پردازش";
|
||
} else if (useGemini) {
|
||
// Google Gemini API
|
||
const response = await fetch(
|
||
`https://generativelanguage.googleapis.com/v1beta/models/gemini-pro:generateContent?key=${GEMINI_API_KEY}`,
|
||
{
|
||
method: "POST",
|
||
headers: {
|
||
"Content-Type": "application/json",
|
||
},
|
||
body: JSON.stringify({
|
||
contents: [
|
||
{
|
||
parts: [
|
||
{
|
||
text: getPrompt(action, text, language),
|
||
},
|
||
],
|
||
},
|
||
],
|
||
}),
|
||
}
|
||
);
|
||
|
||
if (!response.ok) {
|
||
throw new Error(`Gemini API error: ${response.status}`);
|
||
}
|
||
|
||
const data = await response.json();
|
||
aiResult =
|
||
data.candidates?.[0]?.content?.parts?.[0]?.text || "خطا در پردازش";
|
||
} else {
|
||
// پاسخ تستی (اگر API key ندارید)
|
||
aiResult = getMockResponse(action, text, language);
|
||
}
|
||
|
||
return {
|
||
success: true,
|
||
action,
|
||
result: aiResult,
|
||
timestamp: new Date().toISOString(),
|
||
};
|
||
} catch (error) {
|
||
console.error("AI API Error:", error);
|
||
|
||
return {
|
||
success: false,
|
||
error: error.message,
|
||
mockResponse: getMockResponse(action, text, language),
|
||
};
|
||
}
|
||
});
|
||
|
||
// تولید prompt بر اساس action
|
||
function getPrompt(action, text, language) {
|
||
const prompts = {
|
||
summarize: `لطفاً این متن را به فارسی خلاصه کن و نکات اصلی آن را استخراج کن. متن:\n\n${text}\n\nخلاصه:`,
|
||
improve: `این متن را از نظر دستوری، نگارشی و سبک نوشتار بهبود بده و آن را حرفهایتر کن. متن:\n\n${text}\n\nمتن بهبود یافته:`,
|
||
translate: `این متن فارسی را به انگلیسی ترجمه کن. متن:\n\n${text}\n\nترجمه:`,
|
||
explain: `این متن را به زبان ساده توضیح بده و مفاهیم آن را شفاف سازی کن. متن:\n\n${text}\n\nتوضیح:`,
|
||
continue: `بر اساس این متن، آن را ادامه بده و محتوای مرتبط اضافه کن. متن:\n\n${text}\n\nادامه متن:`,
|
||
};
|
||
|
||
return prompts[action] || `در مورد این متن نظر بده:\n\n${text}\n\nنظر:`;
|
||
}
|
||
|
||
// پاسخهای تستی
|
||
function getMockResponse(action, text, language) {
|
||
const responses = {
|
||
summarize: `📝 خلاصه متن: این یک خلاصه آزمایشی از متن شماست که نکات کلیدی را پوشش میدهد. متن اصلی حدود ${text.length} کاراکتر داشت و شامل موضوعاتی مانند نمونهگیری و تست است.`,
|
||
improve: `✨ متن بهبود یافته: این نسخه اصلاح شده متن شماست با رعایت اصول نگارشی و ساختار بهتر. جملات روانتر شده و از واژگان مناسبتری استفاده شده است.`,
|
||
translate: `🌍 Translation: This is a sample translation of your Persian text into English. The original text was about testing and demonstration purposes.`,
|
||
explain: `💡 توضیح: این مفهوم به زبان ساده توضیح داده میشود تا درک آن آسانتر شود. منظور از این متن نمایش قابلیتهای سیستم هوش مصنوعی است.`,
|
||
continue: `↪️ ادامه متن: این بخش ادامه منطقی متن شماست که ایدههای مطرح شده را توسعه میدهد. با توجه به محتوای قبلی، میتوان به موضوعات مرتبط دیگری نیز پرداخت.`,
|
||
};
|
||
|
||
return (
|
||
responses[action] ||
|
||
"پردازش AI انجام شد. برای استفاده از قابلیتهای واقعی، لطفاً API key مناسب را تنظیم کنید."
|
||
);
|
||
}
|