Apidog

منصة تطوير API تعاونية متكاملة

تصميم API

توثيق API

تصحيح أخطاء API

محاكاة API

اختبار API الآلي

كيفية تثبيت واستخدام خادم OpenMemory MCP و API

Ashley Goolam

Ashley Goolam

Updated on مايو 14, 2025

بصفتكم مطورين، تبحثون عن حلول ذاكرة قوية تضمن أيضًا خصوصية البيانات والتحكم فيها، وقابلية تشغيل سلسة بين أدوات الذكاء الاصطناعي. يتجه الاتجاه بوضوح نحو أنظمة الذاكرة المحلية أولاً والموجهة للمطورين. يقود مفهوم خادم OpenMemory MCP، الذي تم إحياؤه بواسطة تقنيات مثل إطار العمل مفتوح المصدر Mem0، هذا التغيير. إنه يوفر طبقة ذاكرة محلية خاصة، مما يتيح لوكلاء الذكاء الاصطناعي تذكر السياق عبر التطبيقات بينما تظل بياناتك آمنة على جهازك. هذا الدليل مخصص للمطورين مثلكم. إنه شرح كامل خطوة بخطوة حول تثبيت المكونات الأساسية باستخدام Mem0، وتشغيل خادم OpenMemory MCP المحلي الخاص بك، واستخدام واجهة برمجة تطبيقات REST الخاصة به بمهارة لإنشاء تطبيقات ذكاء اصطناعي أكثر ذكاءً ووعيًا بالسياق.

لنبدأ في فتح قفل الذاكرة المحلية المستمرة للذكاء الاصطناعي.

💡
هل تريد أداة رائعة لاختبار واجهة برمجة التطبيقات (API Testing) تولد توثيق API جميل؟

هل تريد منصة متكاملة وشاملة لفريق المطورين الخاص بك للعمل معًا بأقصى إنتاجية؟

Apidog يلبي جميع متطلباتك، ويحل محل Postman بسعر أقل بكثير!
button

الخطوة 1: إعداد بيئة التطوير الخاصة بك

قبل الغوص في التثبيت، من الضروري أن تكون أدوات التطوير الأساسية جاهزة وأن تفهم المكونات الأساسية التي سنعمل معها. سنستخدم بشكل أساسي إطار العمل مفتوح المصدر متعدد الاستخدامات Mem0 لإنشاء ثم التفاعل مع خادم OpenMemory MCP المحلي الخاص بنا. سيتم هذا التفاعل إلى حد كبير عبر واجهة برمجة تطبيقات REST الخاصة به، مما يوفر طريقة موحدة لإدارة ذاكرة الذكاء الاصطناعي الخاصة بك.

ستحتاج إلى بيئة Python حديثة، ويفضل أن تكون الإصدار 3.8 أو أحدث، لضمان التوافق الكامل مع Mem0 وتوابعه. يمكنك تنزيل أحدث إصدار من Python من python.org. بالإضافة إلى Python، ستحتاج إلى pip، مثبت حزم Python، وهو أمر بالغ الأهمية لتثبيت Mem0 ويأتي عادةً مدمجًا مع تثبيتات Python. ستكون مكتبة Python mem0ai هي محركنا؛ طبيعتها مفتوحة المصدر تسمح لك بتشغيل خادم محلي يصبح فعليًا خادم OpenMemory MCP الخاص بك. يركز هذا الإعداد بأكمله على تشغيل خادم الذاكرة على جهازك المحلي، مما يمنحك تحكمًا كاملاً في بياناتك وعملياتك - وهو مبدأ أساسي لفلسفة OpenMemory. يقوم الخادم بعد ذلك بكشف وظائفه من خلال واجهة برمجة تطبيقات REST، مع نقاط نهاية لإضافة، والبحث عن، وإدارة الذكريات التي تتوافق مع العمليات القياسية المحددة بواسطة بروتوكول سياق النموذج (MCP).

نصيحة احترافية: استخدام البيئات الافتراضية (مثل venv أو conda) خطوة ذكية. يساعد في إدارة تبعيات المشروع ويمنع التعارضات مع مشاريع Python الأخرى.

الخطوة 2: كيفية تثبيت إطار عمل Mem0

تثبيت حزمة mem0ai هو خطوتك العملية الأولى نحو الحصول على خادم ذاكرة ذكاء اصطناعي محلي. يتم ذلك بأمر بسيط يجهز نظامك بمكتبة Mem0 الأساسية وجميع المكونات الضرورية.

افتح الطرفية (وقم بتنشيط بيئتك الافتراضية إذا كنت تستخدم واحدة). ثم، قم بتشغيل أمر التثبيت:

pip install mem0ai

يقوم هذا الأمر بتثبيت مكتبة mem0ai، والتي تتضمن فئة Memory الأساسية لإدارة الذاكرة المباشرة في Python. تحصل أيضًا على دعم لمختلف نماذج اللغة الكبيرة (LLMs) وقواعد بيانات المتجهات، بالإضافة إلى مكونات FastAPI و Uvicorn اللازمة لتشغيل خادم واجهة برمجة تطبيقات REST الخاص بـ Mem0. بعد اكتمال التثبيت، يمكنك التحقق منه عن طريق التحقق من إصدار الحزمة المثبتة باستخدام pip show mem0ai، أو عن طريق محاولة استيراد سريع في جلسة Python:

import mem0
print(mem0.__version__)

يتعامل pip أيضًا تلقائيًا مع تثبيت التبعيات المطلوبة مثل FastAPI (لبناء واجهة برمجة التطبيقات)، و Uvicorn (كخادم ASGI)، ومختلف مكتبات معالجة البيانات. مع تثبيت mem0ai، لديك البرنامج الأساسي. يمكنك استخدام المكتبة مباشرة في سكربتات Python لعمليات الذاكرة، ولكن بالنسبة لجانب "الخادم" الذي يمكن لعملاء MCP التفاعل معه، سنستخدم وظيفة الخادم المدمجة به.

الخطوة 3: كيفية تكوين خادم الذاكرة المحلي الخاص بك

قبل بدء تشغيل الخادم، لديك خيار تكوين مثيل Mem0 الأساسي الخاص به. هذا التكوين هو المفتاح لأنه يحدد نموذج اللغة الكبيرة (LLM)، وقاعدة بيانات المتجهات، ونموذج التضمين الذي سيشغل قدرات معالجة واسترجاع الذاكرة في خادمك - بشكل أساسي، أنت تقوم بتخصيص "دماغه".

يتم تكوين خادم Mem0 (وفئة Memory التي بني عليها) بشكل أساسي باستخدام متغيرات البيئة. هذه طريقة مرنة تتيح لك إعداد الواجهة الخلفية الخاصة بك دون تعديل أي تعليمات برمجية. على سبيل المثال، لتكوين LLM، يمكنك تعيين OPENAI_API_KEY لـ OpenAI، أو ANTHROPIC_API_KEY لـ Anthropic، أو متغيرات مثل MEM0_LLM_PROVIDER="ollama" للنماذج المحلية عبر Ollama. وبالمثل، بالنسبة لقاعدة بيانات المتجهات، بينما يستخدم Mem0 افتراضيًا LanceDB (وهي محلية ولا تتطلب إعدادًا إضافيًا)، يمكنك تحديد بدائل مثل Qdrant باستخدام متغيرات مثل MEM0_VECTOR_STORE_PROVIDER="qdrant". غالبًا ما ترتبط تكوينات نموذج التضمين بمزود LLM الخاص بك ولكن يمكن أيضًا تحديدها بشكل مستقل.

إذا لم تقم بتعيين أي متغيرات بيئة محددة، يحاول Mem0 استخدام إعدادات افتراضية معقولة. ومع ذلك، قد يتطلب مفتاح OpenAI لنموذج LLM الافتراضي الخاص به إذا لم يتم تحديده بخلاف ذلك. تؤثر هذه الخيارات بشكل كبير على خادمك: يؤثر LLM على كيفية فهم الذكريات، بينما تؤثر قاعدة بيانات المتجهات على كفاءة التخزين وسرعة البحث. للحصول على قائمة شاملة بجميع متغيرات البيئة القابلة للتكوين والخيارات لمختلف LLMs، ومخازن المتجهات، والمضمنات، استشر دائمًا وثائق Mem0 الرسمية.

نصيحة احترافية: ابدأ بإعداد محلي بسيط (مثل Ollama لـ LLM و LanceDB الافتراضي). يساعدك هذا على التعود على النظام. ثم، استكشف إعدادات أكثر تقدمًا مع تطور احتياجاتك.

الخطوة 4: كيفية تشغيل خادم OpenMemory MCP الخاص بك

مع تثبيت mem0ai وتكوينه (اختياريًا) حسب رغبتك، يمكنك الآن بدء عملية الخادم المحلي. هذا الخادم هو ما يكشف عن نقاط نهاية واجهة برمجة تطبيقات REST، مما يسمح للتطبيقات أو السكربتات الأخرى بأداء عمليات الذاكرة.

توفر حزمة mem0ai سكربت سطر أوامر مفيدًا لتشغيل الخادم. في الطرفية الخاصة بك، ما عليك سوى كتابة:

mem0-server

يمكنك أيضًا تحديد مضيف ومنفذ مخصصين إذا لزم الأمر، على سبيل المثال: mem0-server --host 127.0.0.1 --port 8000. الإعداد الافتراضي هو عادةً 0.0.0.0 (جميع واجهات الشبكة المتاحة) على المنفذ 8000. بمجرد البدء، سيقوم Uvicorn (الخادم الذي يشغل تطبيق FastAPI الخاص بك) بإخراج سجلات إلى وحدة التحكم، مما يشير إلى أن الخادم قيد التشغيل ويستمع للطلبات. سترى رسائل مثل: INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit).

خادم OpenMemory MCP الخاص بك يعمل الآن محليًا! يمكن للعملاء المتوافقين مع MCP، إذا تم تكوينهم للإشارة إلى http://localhost:8000 (أو عنوانك المخصص)، التفاعل معه. يمكنك أيضًا استخدام واجهة برمجة تطبيقات REST الخاصة به مباشرة، وهو ما سنستكشفه لاحقًا. لإيقاف الخادم، ما عليك سوى الضغط على CTRL+C في الطرفية التي يعمل فيها. يقوم الأمر mem0-server أساسًا بتشغيل خادم Uvicorn ASGI، الذي يشغل تطبيق FastAPI المحدد داخل Mem0. يستضيف هذا التطبيق نقاط نهاية واجهة برمجة تطبيقات REST، وهذا المثيل قيد التشغيل هو خادم OpenMemory MCP المحلي الخاص بك.

الخطوة 5: فهم قدرات واجهة برمجة تطبيقات الخادم

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

تستخدم واجهة برمجة التطبيقات بروتوكولات HTTP/HTTPS القياسية، و JSON هو تنسيق البيانات لكل من أجسام الطلب والاستجابة. إذا كنت تشغل الخادم محليًا بالإعدادات الافتراضية، فسيكون عنوان URL الأساسي الخاص بك هو http://localhost:8000. العمليات الأساسية المتاحة عبر واجهة برمجة التطبيقات (بناءً على تطبيقات واجهة برمجة تطبيقات REST النموذجية لـ Mem0) تشمل POST /add لتخزين معلومات جديدة، POST /search لاسترداد الذكريات ذات الصلة، GET /get_all لسرد ذكريات متعددة (مع خيارات التصفية)، GET /get لاسترداد ذاكرة واحدة بمعرفها، PUT /update لتعديل ذاكرة موجودة، DELETE /delete لإزالة ذاكرة محددة، و DELETE /delete_all لمسح الذكريات، ربما مع التصفية حسب المستخدم.

بشكل افتراضي، لا يقوم mem0-server الذي يعمل محليًا بتطبيق المصادقة، حيث إنه مخصص أساسًا للتطوير والاستخدام المحلي. إذا كنت تفكر في النشر للإنتاج أو النشر المكشوف (وهو ما لا يُنصح به بدون طبقات أمان إضافية كبيرة)، فإن المصادقة ستكون جانبًا حاسمًا يجب تنفيذه.

نصيحة احترافية: يمكنك غالبًا استكشاف واجهة برمجة التطبيقات بشكل تفاعلي. حاول زيارة http://localhost:8000/docs في متصفحك بمجرد تشغيل الخادم. يوفر خادم FastAPI الخاص بـ Mem0 عادةً صفحة التوثيق المفيدة هذه من خلال Swagger UI.

الخطوة 6: كيفية إضافة ذكريات باستخدام واجهة برمجة التطبيقات

نقطة النهاية /add هي أداتك الأساسية لإدخال البيانات في خادم الذاكرة. تتيح لك تخزين معلومات نصية، وربطها بمستخدم محدد، وتضمين بيانات وصفية اختيارية لتحسين التنظيم والاسترجاع.

لاستخدامها، ترسل طلب POST إلى نقطة النهاية /add. يجب أن يكون جسم الطلب بصيغة JSON ويتضمن data (محتوى الذاكرة كنص)، user_id (معرف للمستخدم المرتبط بهذه الذاكرة - أمر بالغ الأهمية لتنظيم واسترداد الذكريات الخاصة بالمستخدم)، واختياريًا metadata (كائن JSON يحتوي على أي أزواج مفتاح-قيمة إضافية تريد تخزينها، مثل {"source": "chat_log"}).

إليك مثال باستخدام curl:

curl -X POST http://localhost:8000/add \
-H "Content-Type: application/json" \
-d '{
    "data": "Alice prefers Python for web development.",
    "user_id": "user_alice",
    "metadata": {"topic": "preferences", "language": "Python"}
}'

وإليك كيف يمكنك فعل ذلك باستخدام مكتبة Python requests:

import requests
import json

url = "http://localhost:8000/add"
payload = {
    "data": "Alice prefers Python for web development.",
    "user_id": "user_alice",
    "metadata": {"topic": "preferences", "language": "Python"}
}
headers = {"Content-Type": "application/json"}

response = requests.post(url, data=json.dumps(payload), headers=headers)
print(response.json())

سيستجيب الخادم بصيغة JSON يؤكد الإضافة، وغالبًا ما يتضمن المعرف الفريد للذاكرة التي تم إنشاؤها حديثًا، على سبيل المثال: {"message": "Memory added successfully", "memory_id": "some-unique-id"}. كل استدعاء لـ /add ينشئ سجل ذاكرة جديدًا. user_id حيوي للتطبيقات متعددة المستخدمين أو لفصل السياق، والبيانات الوصفية تعزز بشكل كبير إمكانية البحث والتنظيم.

الخطوة 7: كيفية البحث عن الذكريات المخزنة عبر واجهة برمجة التطبيقات

بمجرد تخزين الذكريات، تتيح لك نقطة النهاية /search إجراء عمليات بحث دلالية. هذا يعني أنه يمكنك استرداد المعلومات ذات الصلة باستعلام معين وسياق المستخدم، حتى لو لم تتطابق مصطلحات البحث الخاصة بك تمامًا مع النص المخزن.

ترسل طلب POST إلى /search مع جسم JSON يحتوي على سلسلة query، و user_id الذي تريد البحث في ذكرياته، ومعلمات اختيارية مثل filters (لمعايير أكثر تحديدًا، بناءً على حقول البيانات الوصفية - الهيكل الدقيق يعتمد على تطبيق Mem0) و limit (لتحديد عدد نتائج البحث).

مثال curl يبدو كالتالي:

curl -X POST http://localhost:8000/search \
-H "Content-Type: application/json" \
-d '{
    "query": "What are Alices language preferences?",
    "user_id": "user_alice",
    "limit": 3
}'

باستخدام مكتبة Python requests:

import requests
import json

url = "http://localhost:8000/search"
payload = {
    "query": "What are Alices language preferences?",
    "user_id": "user_alice",
    "limit": 3
}
headers = {"Content-Type": "application/json"}

response = requests.post(url, data=json.dumps(payload), headers=headers)
print(response.json())

الاستجابة المتوقعة هي مصفوفة JSON من كائنات الذاكرة التي تتطابق مع استعلام البحث. تتضمن هذه الكائنات عادةً محتوى الذاكرة، وبياناتها الوصفية، ونقطة صلة تشير إلى مدى تطابقها مع الاستعلام، على سبيل المثال:
[{"id": "some-unique-id", "data": "Alice prefers Python for web development.", ..., "score": 0.85}].

نصيحة احترافية: استخدام user_id بشكل صحيح في عمليات البحث أمر ضروري. يضمن أن المستخدمين يستردون فقط ذكرياتهم ذات الصلة، وهو أمر حيوي للحفاظ على الخصوصية وتقديم تجارب مخصصة.

الخطوة 8: كيفية استرداد ذكريات محددة باستخدام واجهة برمجة التطبيقات

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

لسرد ذكريات متعددة، تستخدم نقطة النهاية GET /get_all. يمكنك تمرير معلمات الاستعلام مثل user_id لتصفية الذكريات حسب المستخدم، و limit لتحديد عدد الذكريات التي سيتم إرجاعها، و page للتقسيم إذا كان هناك العديد من الذكريات. على سبيل المثال، curl -X GET "http://localhost:8000/get_all?user_id=user_alice&limit=5" سيسترد أول 5 ذكريات لـ "user_alice". ستكون الاستجابة مصفوفة JSON من كائنات الذاكرة.

للحصول على ذاكرة محددة، استخدم GET /get مع معلمة الاستعلام memory_id: curl -X GET "http://localhost:8000/get?memory_id=some-unique-id". سيؤدي هذا إلى إرجاع كائن JSON يمثل تلك الذاكرة الواحدة، أو خطأ إذا لم يتم العثور عليها.

إليك كيفية استخدام مكتبة Python requests لـ /get_all:

import requests

url = "http://localhost:8000/get_all"
params = {"user_id": "user_alice", "limit": 5}
response = requests.get(url, params=params)
print(response.json())

نقطة النهاية /get_all جيدة بشكل خاص للمهام الإدارية أو عندما تحتاج إلى تصفح ذاكرة المستخدم. /get هي خيارك المفضل عندما يكون لديك بالفعل معرف الذاكرة، ربما من استجابة /add أو نتيجة بحث سابقة.

الخطوة 9: كيفية تحديث وحذف الذكريات باستخدام واجهة برمجة التطبيقات

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

لتحديث ذاكرة، أرسل طلب PUT إلى /update مع memory_id كمعلمة استعلام. يجب أن يكون جسم الطلب بصيغة JSON ويمكن أن يتضمن data جديدًا (محتوى نصي) أو metadata جديدًا (الذي سيحل محل البيانات الوصفية الموجودة لتلك الذاكرة). على سبيل المثال:

curl -X PUT "http://localhost:8000/update?memory_id=some-unique-id" \
-H "Content-Type: application/json" \
-d '{"data": "Alice now also enjoys Go for systems programming."}'

لحذف ذاكرة محددة، استخدم طلب DELETE إلى /delete مع memory_id كمعلمة استعلام: curl -X DELETE "http://localhost:8000/delete?memory_id=some-unique-id".

للتنظيف الأوسع، يمكن استخدام نقطة النهاية DELETE /delete_all. إذا قدمت معلمة استعلام user_id (على سبيل المثال، curl -X DELETE "http://localhost:8000/delete_all?user_id=user_alice")، فسيتم حذف جميع الذكريات لذلك المستخدم المحدد. إذا تم حذف user_id، فقد يكون السلوك هو حذف جميع الذكريات في النظام، لذا استخدم هذا بحذر شديد وتحقق دائمًا من سلوكه الدقيق في وثائق Mem0. سيستجيب الخادم عادةً برسائل JSON تؤكد نجاح أو فشل هذه العمليات.

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

الخلاصة

لقد قمت الآن بالمرور عبر الخطوات الأساسية لإعداد خادم OpenMemory MCP محلي باستخدام إطار العمل مفتوح المصدر Mem0 واستخدام واجهة برمجة تطبيقات REST الخاصة به. باتباع هذه التعليمات لتثبيت Mem0، وتشغيل الخادم، والتفاعل مع واجهة برمجة تطبيقاته، تحصل على تحكم مباشر في ذاكرة تطبيقات الذكاء الاصطناعي الخاصة بك. هذا يعزز مستويات جديدة من الاستمرارية، والتخصيص، والخصوصية. القدرة على إدارة الذكريات برمجيًا محليًا تفتح إمكانيات واسعة لأنظمة أكثر ذكاءً ووعيًا بالسياق - من روبوتات الدردشة التي تتذكر تفضيلات المستخدم إلى مساعدي المطورين الذين يتذكرون تفاصيل المشروع. القدرة على إنشاء ذاكرة ذكاء اصطناعي محلية ومدفوعة بواجهة برمجة التطبيقات أصبحت الآن ملكك. جرب هذه الواجهة، وابدأ في بناء تطبيقات ذكاء اصطناعي تتعلم وتتطور حقًا.