بناء نظام RAG باستخدام Claude وChatGPT APIs

Share:
درس تقني متوسط ⏱ ٤٥ دقيقة قراءة © بوابة الذكاء الاصطناعي ٢٠٢٦-٠٦-٢٤

تعلم كيفية بناء نظام توليد معزز بالاسترجاع باستخدام Claude وChatGPT APIs للاستفادة من أفضل ما في كلا النموذجين لتحسين التفاعلات الذكية.

المتطلبات الأساسية

  • Node.js v١٨.٠ أو أعلى
  • مفتاح API لـ OpenAI ومفتاح API لـ Anthropic
  • مهارات برمجة متوسطة في JavaScript

ما الذي نبنيه

في هذا الدرس، سنقوم ببناء نظام توليد معزز بالاسترجاع (RAG) يجمع بين قدرات Claude وChatGPT APIs. سيقوم هذا النظام بجلب البيانات ذات الصلة من مستودع الوثائق وتوليد ردود غنية بالسياق باستخدام نماذج لغوية متقدمة.

سيسمح التطبيق النهائي للمستخدمين بإدخال استفسارات، واسترجاع المعلومات ذات الصلة من مجموعة وثائق مفهرسة مسبقًا، واستخدام نماذج الذكاء الاصطناعي لتوليد إجابات شاملة. يوفر هذا النهج المتكامل أداءً قويًا في التطبيقات التي تتطلب دقة وملاءمة عالية، مثل أنظمة دعم العملاء ومساعدي البحث.

الإعداد والتثبيت

سنبدأ بإعداد بيئة التطوير الخاصة بنا وتثبيت المكتبات اللازمة. يتضمن ذلك إعداد Node.js وتثبيت SDKs المطلوبة للوصول إلى APIs.

npm install openai anthropic dotenv

بعد ذلك، سنقوم بتكوين متغيرات البيئة الخاصة بنا لتخزين مفاتيح API بأمان. قم بإنشاء ملف .env في جذر المشروع الخاص بك وأضف المتغيرات التالية:

 OPENAI_API_KEY=your_openai_api_key ANTHROPIC_API_KEY=your_anthropic_api_key 

الخطوة ١: إعداد مستودع الوثائق

أولاً، نحتاج إلى إنشاء مستودع وثائق يمكن لنظام RAG الخاص بنا الاستعلام عنه. سنستخدم ملف JSON بسيط لمحاكاة هذا المستودع. تأكد من أن البيانات منظمة للوصول السريع وتسجيل الملاءمة.

 const fs = require('fs'); const documents = JSON.parse(fs.readFileSync('documents.json', 'utf8')); function getRelevantDocuments(query) { // Simple keyword matching for relevance return documents.filter(doc => doc.text.includes(query)); } module.exports = { getRelevantDocuments }; 

يقرأ هذا الكود ملف JSON يحتوي على وثائقنا ويقوم بتصفيتها بناءً على الاستعلام. سيتم استخدام وظيفة getRelevantDocuments لاحقًا لجلب الوثائق ذات الصلة لأي استعلام معين.

الخطوة ٢: دمج Claude وChatGPT APIs

بعد ذلك، سنقوم بإعداد التكامل مع Claude وChatGPT APIs لمعالجة وتوليد الردود. يتضمن ذلك تكوين كلا API وإنشاء اتصال لإرسال واستقبال البيانات.

 require('dotenv').config(); const { OpenAI } = require('openai'); const { Anthropic } = require('anthropic'); const openAIClient = new OpenAI({ apiKey: process.env.OPENAI_API_KEY }); const anthropicClient = new Anthropic({ apiKey: process.env.ANTHROPIC_API_KEY }); async function generateResponseWithClaude(prompt) { const response = await anthropicClient.chat.completions.create({ model: "claude-3-5-sonnet-20241022", messages: [{ role: "user", content: prompt }] }); return response.data.choices[0].message.content; } async function generateResponseWithChatGPT(prompt) { const response = await openAIClient.chat.completions.create({ model: "gpt-4o", messages: [{ role: "user", content: prompt }] }); return response.data.choices[0].message.content; } module.exports = { generateResponseWithClaude, generateResponseWithChatGPT }; 

يقوم هذا الكود بإنشاء اتصالات مع كلا API باستخدام SDKs الحديثة. يحدد وظائف لإرسال موجه إلى كل خدمة واستقبال رد مولد، والذي سيتم استخدامه لإنتاج الإجابة النهائية.

الخطوة ٣: بناء منطق معالجة الاستفسارات

سنقوم الآن ببناء المنطق الأساسي لمعالجة استفسارات المستخدمين. يتضمن ذلك استرجاع الوثائق ذات الصلة واستخدام وظائف الذكاء الاصطناعي المتكاملة لدينا لتوليد رد متماسك.

 const { getRelevantDocuments } = require('./documentRepository'); const { generateResponseWithClaude, generateResponseWithChatGPT } = require('./aiIntegrations'); async function handleUserQuery(query) { const relevantDocs = getRelevantDocuments(query); const combinedContext = relevantDocs.map(doc => doc.text).join('n'); const prompt = `Based on these documents:n${combinedContext}nAnswer the following question: ${query}`; const claudeResponse = await generateResponseWithClaude(prompt); const chatGPTResponse = await generateResponseWithChatGPT(prompt); return { claude: claudeResponse, chatGPT: chatGPTResponse }; } module.exports = { handleUserQuery }; 

تجمع هذه الوظيفة بين استرجاع الوثائق ومعالجة الذكاء الاصطناعي لتشكيل آلية معالجة استفسارات كاملة. تجمع السياق من الوثائق ذات الصلة وترسلها إلى كل من Claude وChatGPT لتوليد الردود، مما يسمح لك بمقارنة أو دمج مخرجاتهما حسب الحاجة.

⚠️ خطأ شائع: تأكد من إعداد متغيرات البيئة بشكل صحيح وأنها قابلة للوصول. ستؤدي المفاتيح غير المكونة بشكل صحيح إلى أخطاء في المصادقة مع APIs.

اختبار تنفيذك

بمجرد اكتمال الإعداد، من الضروري اختبار تطبيقك للتأكد من أن كل شيء يعمل كما هو متوقع. يمكنك إنشاء برنامج بسيط لمحاكاة استفسارات المستخدمين والتحقق من الردود.

 const { handleUserQuery } = require('./queryHandler'); (async () => { const query = "How does the RAG system work?"; const responses = await handleUserQuery(query); console.log("Claude's response:", responses.claude); console.log("ChatGPT's response:", responses.chatGPT); })(); 

يجب أن يؤدي تشغيل هذا البرنامج إلى إخراج ردود من كل من Claude وChatGPT، مما يسمح لك بتقييم جودتها وملاءمتها بناءً على سياق الوثائق المقدمة.

ما الذي تبنيه بعد ذلك

  • دمج واجهة مستخدم باستخدام React لجعل نظام RAG تفاعليًا وسهل الاستخدام.
  • إضافة آلية تغذية راجعة لتحسين ملاءمة وجودة الردود بناءً على مدخلات المستخدم.
  • تنفيذ تقنيات معالجة اللغة الطبيعية المتقدمة لتعزيز دقة استرجاع الوثائق.
Share:

هل كان هذا الشرح مفيداً؟