بناء ونشر أول دالة ذكاء اصطناعي بدون خادم باستخدام Cloudflare Workers وClaude

بناء ونشر أول دالة ذكاء اصطناعي بدون خادم باستخدام Cloudflare Workers وClaude
الدوال بدون خادم (Serverless Functions) تُحدث ثورة في طريقة بناء ونشر التطبيقات. عندما تُدمج مع قدرات الذكاء الاصطناعي مثل Claude، تصبح أدوات قوية للغاية لإنشاء خدمات ذكية وقابلة للتوسع تعمل على حافة الشبكة.
في هذا الدليل الشامل، ستتعلم كيفية بناء دالة ذكاء اصطناعي جاهزة للإنتاج باستخدام Cloudflare Workers وواجهة Claude API من Anthropic. بنهاية هذا الدرس، سيكون لديك دالة منشورة قادرة على معالجة طلبات الذكاء الاصطناعي بأقل زمن استجابة، مع توسع تلقائي وتوزيع عالمي.
لماذا Cloudflare Workers + Claude؟
Cloudflare Workers تشغل كودك على شبكة Cloudflare العالمية من مراكز البيانات، مما يعني أن دالتك تُنفذ بالقرب من مستخدميك في أي مكان في العالم. المزايا تشمل:
- بدون تأخير بارد – تنفيذ فوري
- توزيع عالمي – أكثر من 300 مركز بيانات حول العالم
- فعالة من حيث التكلفة – طبقة مجانية سخية (100,000 طلب/يوم)
- زمن استجابة منخفض – الحوسبة الطرفية تقلل أوقات الاستجابة
- توسع تلقائي – تتعامل مع الزيادات المفاجئة في الزيارات تلقائياً
واجهة Claude API من Anthropic توفر قدرات نموذج لغوي متطورة:
- تحليل واستنتاج متقدم
- نوافذ سياق كبيرة (حتى 200 ألف رمز)
- ضمانات أمان قوية
- ممتاز في اتباع التعليمات
- أوقات استجابة سريعة
معاً، يشكلان مجموعة أدوات قوية لبناء تطبيقات ذكية قابلة للتوسع عالمياً.
ماذا سنبني؟
سننشئ محلل محتوى ذكي – نقطة نهاية API تقبل نصاً وترجع:
- تحليل المشاعر
- استخراج المواضيع الرئيسية
- إنشاء ملخص
- توصيات للمحتوى
يمكن تكييف هذا النمط لبناء روبوتات المحادثة، مراقبة المحتوى، معالجة المستندات، والمزيد.
المتطلبات المسبقة
قبل البدء، تأكد من توفر:
- Node.js 18+ مثبت (تحميل من هنا)
- حساب Cloudflare (الطبقة المجانية تعمل بشكل مثالي)
- مفتاح Anthropic API (احصل على واحد من هنا)
- معرفة أساسية بـ JavaScript/TypeScript
- إلمام بواجهات REST API
ستحتاج أيضاً لحوالي 30 دقيقة لإكمال هذا الدرس.
الخطوة 1: إعداد بيئة التطوير
أولاً، قم بتثبيت Wrangler، أداة سطر الأوامر من Cloudflare للـ Workers:
npm install -g wranglerتحقق من التثبيت:
wrangler --versionسجل الدخول إلى حساب Cloudflare الخاص بك:
wrangler loginهذا يفتح نافذة متصفح للمصادقة. بمجرد تسجيل الدخول، أنت جاهز لإنشاء أول Worker.
الخطوة 2: إنشاء مشروع Worker جديد
أنشئ مجلداً جديداً وابدأ المشروع:
mkdir smart-analyzer-worker
cd smart-analyzer-worker
npm init -yأنشئ ملف إعداد Worker باسم wrangler.toml:
name = "smart-analyzer"
main = "src/index.js"
compatibility_date = "2026-02-28"
[vars]
ENVIRONMENT = "production"أنشئ مجلد الكود المصدري:
mkdir srcالخطوة 3: كتابة أول Worker
أنشئ ملف src/index.js بهيكل Worker أساسي:
export default {
async fetch(request, env, ctx) {
// معالجة CORS لطلبات المتصفح
if (request.method === 'OPTIONS') {
return new Response(null, {
headers: {
'Access-Control-Allow-Origin': '*',
'Access-Control-Allow-Methods': 'POST, OPTIONS',
'Access-Control-Allow-Headers': 'Content-Type',
},
});
}
// قبول طلبات POST فقط
if (request.method !== 'POST') {
return new Response('Method not allowed', { status: 405 });
}
try {
const { text } = await request.json();
if (!text || text.trim().length === 0) {
return new Response(
JSON.stringify({ error: 'النص مطلوب' }),
{ status: 400, headers: { 'Content-Type': 'application/json' } }
);
}
return new Response(
JSON.stringify({
message: 'Worker يعمل!',
textLength: text.length,
}),
{
headers: {
'Content-Type': 'application/json',
'Access-Control-Allow-Origin': '*',
},
}
);
} catch (error) {
return new Response(
JSON.stringify({ error: 'JSON غير صالح' }),
{ status: 400, headers: { 'Content-Type': 'application/json' } }
);
}
},
};اختبر محلياً:
wrangler devالـ Worker الخاص بك يعمل الآن على http://localhost:8787. اختبره:
curl -X POST http://localhost:8787 \
-H "Content-Type: application/json" \
-d '{"text":"مرحباً بالعالم!"}'يجب أن ترى: {"message":"Worker يعمل!","textLength":21}
الخطوة 4: دمج Claude API
الآن دعنا نضيف سحر الذكاء الاصطناعي. أولاً، قم بتخزين مفتاح Anthropic API كسر:
wrangler secret put ANTHROPIC_API_KEYالصق مفتاح API الخاص بك عند المطالبة.
حدّث src/index.js لاستدعاء Claude:
async function analyzeWithClaude(text, apiKey) {
const response = await fetch('https://api.anthropic.com/v1/messages', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'x-api-key': apiKey,
'anthropic-version': '2023-06-01',
},
body: JSON.stringify({
model: 'claude-3-5-sonnet-20241022',
max_tokens: 1024,
messages: [
{
role: 'user',
content: \`حلل النص التالي وقدم:
1. المشاعر (إيجابية/سلبية/محايدة مع نسبة الثقة)
2. أهم 3 مواضيع رئيسية
3. ملخص مختصر (جملتان كحد أقصى)
4. توصية للمحتوى (ما الإجراء الذي يجب اتخاذه)
النص: "\${text}"
أرجع إجابتك كـ JSON صالح بهذا الهيكل:
{
"sentiment": {"label": "positive", "confidence": 0.85},
"topics": ["موضوع1", "موضوع2", "موضوع3"],
"summary": "ملخصك هنا",
"recommendation": "توصيتك هنا"
}\`,
},
],
}),
});
if (!response.ok) {
throw new Error(\`خطأ في Claude API: \${response.status}\`);
}
const data = await response.json();
const content = data.content[0].text;
// استخراج JSON من رد Claude
const jsonMatch = content.match(/\{[\s\S]*\}/);
if (!jsonMatch) {
throw new Error('فشل تحليل رد Claude');
}
return JSON.parse(jsonMatch[0]);
}
export default {
async fetch(request, env, ctx) {
if (request.method === 'OPTIONS') {
return new Response(null, {
headers: {
'Access-Control-Allow-Origin': '*',
'Access-Control-Allow-Methods': 'POST, OPTIONS',
'Access-Control-Allow-Headers': 'Content-Type',
},
});
}
if (request.method !== 'POST') {
return new Response('Method not allowed', { status: 405 });
}
try {
const { text } = await request.json();
if (!text || text.trim().length === 0) {
return new Response(
JSON.stringify({ error: 'النص مطلوب' }),
{ status: 400, headers: { 'Content-Type': 'application/json' } }
);
}
// تحديد طول النص لمنع إساءة الاستخدام
if (text.length > 10000) {
return new Response(
JSON.stringify({ error: 'النص طويل جداً (الحد الأقصى 10,000 حرف)' }),
{ status: 400, headers: { 'Content-Type': 'application/json' } }
);
}
const analysis = await analyzeWithClaude(text, env.ANTHROPIC_API_KEY);
return new Response(
JSON.stringify({
success: true,
analysis,
processedAt: new Date().toISOString(),
}),
{
headers: {
'Content-Type': 'application/json',
'Access-Control-Allow-Origin': '*',
},
}
);
} catch (error) {
console.error('خطأ:', error);
return new Response(
JSON.stringify({
error: 'فشل التحليل',
message: error.message,
}),
{
status: 500,
headers: { 'Content-Type': 'application/json' },
}
);
}
},
};الخطوة 5: الاختبار المحلي
شغّل Worker الخاص بك مع السر:
wrangler devاختبر بنص عينة:
curl -X POST http://localhost:8787 \
-H "Content-Type: application/json" \
-d '{
"text": "الميزات الجديدة للذكاء الاصطناعي في منتجنا لاقت استقبالاً رائعاً. العملاء يبلغون عن زيادة في الإنتاجية بنسبة 40٪ والتعليقات كانت إيجابية للغاية. هذا يؤكد صحة اتجاهنا الاستراتيجي."
}'يجب أن تحصل على تحليل منظم يتضمن المشاعر والمواضيع والملخص والتوصيات!
الخطوة 6: النشر للإنتاج
بمجرد أن يبدو الاختبار جيداً، انشر على شبكة Cloudflare العالمية:
wrangler deployستحصل على رابط مثل https://smart-analyzer.YOUR-SUBDOMAIN.workers.dev
دالة الذكاء الاصطناعي بدون خادم الخاصة بك الآن حية وموزعة عبر أكثر من 300 مركز بيانات حول العالم!
الخطوة 7: إضافة تحديد المعدل (اختياري لكن موصى به)
لمنع إساءة الاستخدام، أضف تحديد معدل بسيط:
// في أعلى Worker الخاص بك
const RATE_LIMIT = 10; // طلبات في الدقيقة
const rateLimitMap = new Map();
function checkRateLimit(ip) {
const now = Date.now();
const windowStart = now - 60000; // نافذة دقيقة واحدة
if (!rateLimitMap.has(ip)) {
rateLimitMap.set(ip, [now]);
return true;
}
const requests = rateLimitMap.get(ip).filter(time => time > windowStart);
requests.push(now);
rateLimitMap.set(ip, requests);
return requests.length <= RATE_LIMIT;
}
// في معالج fetch الخاص بك، قبل المعالجة:
const clientIP = request.headers.get('CF-Connecting-IP') || 'unknown';
if (!checkRateLimit(clientIP)) {
return new Response(
JSON.stringify({ error: 'تجاوزت حد المعدل. حاول مرة أخرى لاحقاً.' }),
{ status: 429, headers: { 'Content-Type': 'application/json' } }
);
}أعد النشر بـ wrangler deploy.
الخطوة 8: المراقبة والتحسين
عرض التحليلات
تحقق من أداء Worker الخاص بك في لوحة تحكم Cloudflare:
- اذهب إلى Workers & Pages
- اختر Worker الخاص بك
- عرض المقاييس: الطلبات، الأخطاء، وقت CPU، النطاق الترددي
تحسين الأداء
1. استخدم البث للاستجابات الكبيرة:
// لمهام التحليل الطويلة
return new Response(stream, {
headers: { 'Content-Type': 'text/event-stream' }
});2. ذاكرة التخزين المؤقت للطلبات المتكررة:
const cache = caches.default;
const cacheKey = new Request(request.url, request);
let response = await cache.match(cacheKey);
if (!response) {
response = await analyzeWithClaude(text, env.ANTHROPIC_API_KEY);
ctx.waitUntil(cache.put(cacheKey, response.clone()));
}3. استخدم نماذج Claude الأسرع للمهام البسيطة:
model: 'claude-3-5-haiku-20241022' // أسرع وأرخصأفضل الممارسات
1. الأمان
- لا تكشف أبداً مفتاح API الخاص بك في كود جانب العميل
- استخدم Cloudflare Access للمصادقة الإضافية
- قم بتطبيق توقيع الطلبات للعمليات الحساسة
- تحقق من صحة جميع المدخلات ونظفها
2. معالجة الأخطاء
- ارجع دائماً استجابات أخطاء منظمة
- سجل الأخطاء لتصحيح الأخطاء (استخدم
console.error) - قدم رسائل خطأ مفيدة للمستخدمين
- حدد رموز حالة HTTP المناسبة
3. تحسين التكلفة
- حدد حدود طول نص معقولة
- قم بتطبيق التخزين المؤقت للطلبات المتطابقة
- استخدم نماذج Claude المناسبة (Haiku للمهام البسيطة، Sonnet للمعقدة)
- راقب الاستخدام عبر لوحات تحكم Cloudflare وAnthropic
4. الأداء
- اجعل Workers خفيفة (أقل من 1MB مضغوطة)
- قلل استدعاءات API الخارجية
- استخدم
ctx.waitUntil()للعمليات غير المحجوبة - استفد من شبكة Cloudflare العالمية
حالات الاستخدام في العالم الحقيقي
يمكن لهذا النمط أن يشغّل:
- مراقبة المحتوى – وضع علامة تلقائية على المحتوى غير المناسب
- دعم العملاء – تحليل تذاكر الدعم للتوجيه والأولوية
- معالجة المستندات – استخراج رؤى من المستندات المحملة
- روبوتات المحادثة – بناء واجهات محادثة بزمن استجابة منخفض عالمياً
- تحليل البريد الإلكتروني – تصنيف وتلخيص رسائل البريد الواردة
- مراقبة وسائل التواصل الاجتماعي – تحليل إشارات العلامة التجارية والمشاعر
- مراجعة الكود – فحوصات تلقائية لجودة الكود والأمان
استكشاف الأخطاء وإصلاحها
خطأ: "Invalid API key"
- تحقق من السر الخاص بك:
wrangler secret list - أعد الإنشاء إذا لزم الأمر:
wrangler secret put ANTHROPIC_API_KEY
خطأ: "Worker exceeded CPU time limit"
- حسّن مطالبات Claude لتكون أكثر إيجازاً
- استخدم نماذج Claude الأسرع
- قم بتطبيق معالجة المهلة
زمن استجابة عالٍ
- تحقق إذا كنت على الطبقة المجانية (بدايات باردة طفيفة محتملة)
- حسّن كود Worker الخاص بك
- فكر في تطبيق التخزين المؤقت
تحديد معدل من Anthropic
- قم بتطبيق قائمة انتظار الطلبات
- استخدم التراجع الأسي
- قم بترقية خطة Anthropic الخاصة بك إذا لزم الأمر
الخطوات التالية
الآن بعد أن أصبح لديك دالة ذكاء اصطناعي بدون خادم تعمل، فكر في:
- إضافة مصادقة باستخدام Cloudflare Access أو رموز JWT
- تطبيق واجهة أمامية للتفاعل مع API الخاص بك
- تخزين النتائج في Cloudflare D1 (قاعدة بيانات SQL بدون خادم)
- إضافة webhooks لإخطار الأنظمة الخارجية بنتائج التحليل
- بناء لوحة تحكم لتصور التحليلات
- إنشاء محللات متخصصة لأنواع محتوى مختلفة
- التكامل مع APIs أخرى (ترجمة، تحليل صور، إلخ)
الخلاصة
لقد نجحت في بناء ونشر دالة مدعومة بالذكاء الاصطناعي بدون خادم تعمل عالمياً بزمن استجابة ضئيل. هذه البنية جاهزة للإنتاج ويمكنها التوسع لملايين الطلبات دون إدارة بنية تحتية.
الجمع بين Cloudflare Workers وواجهة Claude API يفتح إمكانيات لا حدود لها لبناء تطبيقات ذكية. سواء كنت تعالج محتوى من المستخدمين، أو تبني روبوتات محادثة، أو تنشئ أدوات تحليل، فإن هذه المجموعة توفر الأداء والقابلية للتوسع والذكاء الذي تتطلبه التطبيقات الحديثة.
مستعد للارتقاء بمهاراتك؟ استكشف دروسنا الأخرى حول تكامل الذكاء الاصطناعي، بنية بدون خادم، واستراتيجيات النشر للإنتاج.
تحتاج مساعدة في بناء أنظمة ذكاء اصطناعي للإنتاج؟ اتصل بـ Noqta للحصول على استشارات خبراء في تكامل الذكاء الاصطناعي، البنية بدون خادم، وتطوير تطبيقات قابلة للتوسع.
ناقش مشروعك معنا
نحن هنا للمساعدة في احتياجات تطوير الويب الخاصة بك. حدد موعدًا لمناقشة مشروعك وكيف يمكننا مساعدتك.
دعنا نجد أفضل الحلول لاحتياجاتك.
مقالات ذات صلة

بناء مفسر الأكواد الخاص بك مع توليد الأدوات الديناميكية
تعلم كيفية إنشاء مفسر أكواد مخصص باستخدام التوليد الديناميكي للأدوات والتنفيذ مع o3-mini، مما يتيح حل المشاكل بمرونة وقابلية للتكيف.

بناء مفسر أكواد مخصص لوكلاء نماذج اللغة الكبيرة
تعلم كيفية إنشاء مفسر أكواد مخصص لوكلاء نماذج اللغة الكبيرة (LLM)، مما يتيح استدعاء الأدوات الديناميكي وتنفيذ الأكواد المعزول لتعزيز المرونة والأمان.

الكشف عن أمراض أوراق النبات وتحديدها باستخدام YOLOv4
دليل عملي شامل لبناء نظام كشف عن أمراض أوراق النبات باستخدام YOLOv4 — من إعداد البيانات إلى التدريب والتقييم، مع تحقيق دقة 99.99% على مجموعة بيانات PlantVillage.