الذكاء الاصطناعي السياقي: كيف بدأ يفهمنا ويتصرف مثلنا؟

"قل له يرسل الإيميل اللي كنا نبغاه أمس، وعدّل الموعد يكون الأسبوع الجاي، وضمّن اسم الفريق."
جملة بسيطة جدًا… بالنسبة لنا.
بس جرّب تقولها لمساعد ذكي تقليدي، بيرد عليك: "أي إيميل؟ أي موعد؟ أي فريق؟"
هنا يبدأ الفرق بين الذكاء الاصطناعي التقليدي، والذكاء الاصطناعي السياقي.
ما هو الذكاء الاصطناعي السياقي؟
هو نوع من الذكاء الاصطناعي يحاول فهم السياق العام للي تقوله، بدل ما يتعامل مع كل رسالة كأنها منعزلة. السياق يشمل:
- الكلام اللي قلته قبل شوي.
- نيتك.
- حالتك.
- الأشياء اللي صارت في المحادثات السابقة.
هذا الذكاء ما يتعامل مع كلامك كأنه نص، بل كجزء من قصة أو مشهد مستمر.
ليه هذا مهم؟
لأنه يمهد الطريق لوكلاء (Agents) فعليًا يشتغلون معك، مو بس يجاوبونك. يساعد في:
- إدارة محادثة مستمرة.
- فهم التعليمات الغامضة.
- تنفيذ مهام متسلسلة دون ما تعيد كل التفاصيل.
أنواع السياق اللي يقدر يتعامل معها الـ Agent
1. سياق المحادثة (Chat History)
يحفظ آخر الكلام اللي دار، عشان ما ينسى وين وقفت.
2. سياق المستخدم (User Context)
زي اسمك، تفضيلاتك، المشاريع اللي تشتغل عليها.
3. سياق المهمة (Task Context)
زي: "أنت مسؤول عن إدارة مواعيد عبد الرحمن فقط".
4. سياق خارجي (External Context)
زي ربطه بالتقويم أو البريد أو الملفات عشان يقرأ منها قبل يرد.
طيب، كيف نعلم الـ Agent يتعامل مع السياق؟
مثال عملي باستخدام LangChain:
from langchain.chat_models import ChatOpenAI
from langchain.memory import ConversationBufferMemory
from langchain.chains import ConversationChain
# 1. إنشاء النموذج
llm = ChatOpenAI(temperature=0)
# 2. تفعيل ذاكرة المحادثة
memory = ConversationBufferMemory()
# 3. ربط النموذج بالذاكرة
conversation = ConversationChain(
llm=llm,
memory=memory,
verbose=True
)
# 4. إجراء محادثة
conversation.predict(input="أبغى ألغي الموعد الأسبوع الجاي")
conversation.predict(input="طيب احجز بداله يوم الثلاثاء")
وش اللي صار هنا؟
ConversationBufferMemory
خزنت المحادثة.ConversationChain
استخدمت الذاكرة وحقنتها تلقائيًا داخل كل prompt.- الموديل صار يرد بناءً على الكلام اللي قبله.
كيف نضيف ذاكرة طويلة المدى؟
الذاكرة الطويلة المدى تفيد في تذكر معلومات ما تتكرر في كل محادثة، مثل:
- بيانات المستخدم.
- المشاريع السابقة.
- المهام المنجزة.
مثال باستخدام LangChain + FAISS:
from langchain.vectorstores import FAISS
from langchain.embeddings import OpenAIEmbeddings
from langchain.memory import VectorStoreRetrieverMemory
# قاعدة بيانات الذاكرة طويلة المدى
embedding = OpenAIEmbeddings()
vectorstore = FAISS.from_texts([
"المستخدم اسمه عبد الرحمن ويشتغل على مشروع Notion Arabia",
"عبد الرحمن يفضّل اللغة العربية في المحادثات"
], embedding=embedding)
# ربطها كذاكرة طويلة المدى
long_term_memory = VectorStoreRetrieverMemory(retriever=vectorstore.as_retriever())
ثم نربطها مع الذاكرة القصيرة:
from langchain.memory import CombinedMemory
combined_memory = CombinedMemory(memories=[
ConversationBufferMemory(), # ذاكرة قصيرة
long_term_memory # ذاكرة طويلة
])
conversation = ConversationChain(
llm=llm,
memory=combined_memory,
verbose=True
)
إضافة معلومة جديدة للذاكرة الطويلة:
long_term_memory.save_context({"input": ""}, {"output": "عبد الرحمن خلص مشروع OCR الأسبوع الماضي"})
بهذا الشكل، كل مرة تبدأ محادثة، الوكيل الذكي يبحث في الذاكرة الطويلة عن أي شيء ممكن يساعده يفهمك أكثر.
أدوات ومكتبات تساعدك تبني Agent سياقي
الأداة | فائدتها |
---|---|
LangChain Memory | إدارة الذاكرة السياقية للمحادثات |
AutoGen | بناء وكلاء يتحاورون ويتبادلون السياق |
CrewAI | تنسيق العمل بين وكلاء متعددين مع سياق مشترك |
LangGraph | تخطيط سير المحادثات والتحكم بالسياق بشكل مرن |
ReAct Pattern | دمج التفكير + الفعل على مراحل معتمدًا على السياق السابق |
نصائح لبناء Agent سياقي فعّال:
- لا تحقن كل المحادثة دائمًا، اختصر الأشياء المهمة فقط.
- اربط الـ Agent بذاكرة طويلة المدى (Redis أو FAISS مثلًا).
- وضّح هدف الـ Agent في بداية الـ prompt.
- اربطه بـ tools خارجية (زي تقويم أو نظام ملفات) لتحسين الفهم.
خلاصة:
الذكاء السياقي هو الخطوة اللي تحول الـ AI من مجرد "مجيب" إلى "مشارك فعلي".
إذا علمت وكيلك كيف يتذكر، كيف يفهم الخلفية، وكيف يربط بين المواقف، راح تبدأ تشوف نتائج حقيقية.
وما راح تحتاج تعيد له كل مرة: "أقصد الإيميل اللي أرسلناه يوم الأربعاء الماضي الساعة 5!"
النشرة الإخبارية
انضم إلى النشرة الإخبارية لتلقي آخر التحديثات.