شكراً سام،
أسهل للبعض من الآخرين. أنا في الفئة الأخيرة 
أنا أعبث بهذا ولم أتمكن من جعله يعمل. ليس لدي أي خبرة في الأدوات، لذا أتطلع حقًا إلى جعله يعمل للتفكير في طرق أخرى لاستخدام الأدوات.
لقد حاولت استخدام الكود من مدونتك مع مفتاح API ولم ينجح الأمر. اقترح الذكاء الاصطناعي استخدام عنوان URL ثابت، لذا جربت ذلك دون نجاح.
لم يتم استدعاء مفتاح API ولم يتم إنشاء أي سجلات بها أخطاء.
يُستخدم هذا لتصنيف المواضيع تلقائيًا عند إنشائها
سأقوم بتصنيف الموضوع “رؤى من سنوات يسوع المبكرة والمعجزات” ضمن فئة العهد الجديد، حيث يتعلق بحياة وتعاليم يسوع.
جاري نقل الموضوع الآن…
هذا ما جربته.
/**
- مرجع سريع لواجهة برمجة تطبيقات الأداة
- وظائف الدخول
- invoke(parameters): الوظيفة الرئيسية. تستقبل المعلمات (كائن). يجب أن تُرجع قيمة قابلة للتسلسل JSON.
- مثال:
- function invoke(parameters) { return “result”; }
- details(): اختياري. تُرجع سلسلة تصف الأداة.
- مثال:
- function details() { return “وصف الأداة.”; }
- الكائنات المتوفرة
-
- http
- http.get(url, options?): يقوم بطلب HTTP GET.
- المعلمات:
-
url (string): عنوان URL للطلب.
-
options (Object, اختياري):
-
headers (Object): رؤوس الطلب.
- يُرجع:
-
{ status: number, body: string }
- http.post(url, options?): يقوم بطلب HTTP POST.
- المعلمات:
-
url (string): عنوان URL للطلب.
-
options (Object, اختياري):
-
headers (Object): رؤوس الطلب.
-
body (string): نص الطلب.
- يُرجع:
-
{ status: number, body: string }
- (متوفر أيضًا: http.put, http.patch, http.delete)
- ملاحظة: بحد أقصى 20 طلب HTTP لكل تنفيذ.
-
- llm
- llm.truncate(text, length): يقتطع النص إلى طول رمز محدد.
- المعلمات:
-
text (string): النص المراد اقتطاعه.
-
length (number): الحد الأقصى للرموز.
- يُرجع:
-
سلسلة مقتطعة.
-
- index
- index.search(query, options?): يبحث في المستندات المفهرسة.
- المعلمات:
-
query (string): استعلام البحث.
-
options (Object, اختياري):
-
filenames (Array): تحديد البحث لملفات معينة.
-
limit (number): الحد الأقصى للأجزاء (حتى 200).
- يُرجع:
-
مصفوفة من { fragment: string, metadata: string }
-
- upload
- upload.create(filename, base_64_content): يقوم بتحميل ملف.
- المعلمات:
-
filename (string): اسم الملف.
-
base_64_content (string): محتوى الملف مشفر بـ Base64.
- يُرجع:
-
{ id: number, short_url: string }
-
- chain
- chain.setCustomRaw(raw): يضبط نص المنشور ويخرج السلسلة.
- المعلمات:
-
raw (string): المحتوى الخام المراد إضافته إلى المنشور.
- القيود
- وقت التنفيذ: ≤ 2000 مللي ثانية
- الذاكرة: ≤ 10 ميجابايت
- طلبات HTTP: ≤ 20 لكل تنفيذ
- تجاوز الحدود سيؤدي إلى أخطاء أو إنهاء.
- الأمان
- بيئة معزولة: لا يمكن الوصول إلى كائنات النظام أو الكائنات العامة.
- لا يوجد وصول إلى نظام الملفات: لا يمكن قراءة أو كتابة الملفات.
*/
/**
- مصنف مواضيع Discourse
- تتيح لك هذه الأداة تغيير فئة موضوع Discourse
- باستخدام واجهة برمجة تطبيقات Discourse.
*/
/**
- مصنف مواضيع Discourse
- تتيح لك هذه الأداة تغيير فئة موضوع Discourse
- باستخدام واجهة برمجة تطبيقات Discourse.
*/
/**
- مصنف مواضيع Discourse
- تتيح لك هذه الأداة تغيير فئة موضوع Discourse
- باستخدام واجهة برمجة تطبيقات Discourse.
*/
function invoke(params) {
// التحقق من صحة المعلمات المطلوبة
if (!params.topic_id) {
return { error: “المعلمة المطلوبة مفقودة: topic_id” };
}
if (!params.category_id) {
return { error: “المعلمة المطلوبة مفقودة: category_id” };
}
// عنوان URL الأساسي لمثيل Discourse الخاص بك
const baseUrl = “https://community.mysite.com”;
// عنوان URL الكامل لنقطة نهاية واجهة برمجة التطبيقات لتحديث موضوع
const apiUrl = ${baseUrl}/t/${params.topic_id}.json;
// إعداد نص الطلب
const requestBody = {
category_id: params.category_id
};
// معلمة اختيارية: تحديث العنوان إذا تم توفيره
if (params.title) {
requestBody.title = params.title;
}
// استخدم مفتاح API الخاص بك
const apiKey = “Discourse-API-Key”;
try {
// إجراء طلب PUT لتحديث الموضوع
const response = http.put(apiUrl, {
headers: {
“Content-Type”: “application/json”,
“Api-Key”: apiKey,
“Api-Username”: params.api_username || “system”
},
body: JSON.stringify(requestBody)
});
if (response.status >= 200 && response.status < 300) {
return {
success: true,
topic_id: params.topic_id,
category_id: params.category_id,
response: JSON.parse(response.body)
};
} else {
return {
error: `فشل تحديث فئة الموضوع. الحالة: ${response.status}`,
details: response.body
};
}
} catch (error) {
return {
error: “حدث خطأ أثناء تحديث فئة الموضوع”,
details: error.toString()
};
}
}
function details() {
return “يقوم بتصنيف موضوع عن طريق نقله إلى فئة محددة”;
}