دليل برمجي لتمكين ذاكرة mem0 مع روبوت Anthropic Claude: محادثات غنية بالسياق
يقدم هذا الدليل الشامل طريقة عملية لإنشاء روبوت محادثة متكامل على منصة Google Colab، مستفيدًا من قدرات نموذج Claude من Anthropic بالإضافة إلى مميزات ذاكرة mem0 لاستدعاء المعلومات بسلاسة. يُمكننا هذا المزيج، الذي يجمع بين سهولة استخدام LangGraph في تنظيم آلية الحالة (state-machine) وقوة ذاكرة mem0 القائمة على المتجهات، من تزويد مساعدنا الافتراضي بقدرة تذكر المحادثات السابقة، واسترجاع التفاصيل ذات الصلة عند الطلب، والحفاظ على استمرارية طبيعية عبر جلسات متعددة. سواء كنت تبني روبوتات دعم عملاء، أو مساعدين افتراضيين، أو عروضًا تفاعلية، فإن هذا الدليل سيوفر لك أساسًا متينًا لتجارب الذكاء الاصطناعي القائمة على الذاكرة.
1. تثبيت المكتبات اللازمة
بادئ ذي بدء، نقوم بتثبيت وتحديث المكتبات الضرورية لبناء روبوت محادثة قائم على الذاكرة مع Claude على Google Colab. هذا يضمن تجنب مشاكل التبعيات ويسهل عملية الإعداد:
pip install -qU langgraph mem0ai langchain langchain-anthropic anthropic
2. استيراد المكتبات الأساسية
نقوم باستيراد الوحدات الأساسية اللازمة لبناء روبوت المحادثة:
import os
from typing import Annotated, TypedDict, List
from langgraph.graph import StateGraph, START
from langgraph.graph.message import add_messages
from langchain_core.messages import SystemMessage, HumanMessage, AIMessage
from langchain_anthropic import ChatAnthropic
from mem0 import MemoryClient
3. إعداد مفاتيح API
نقوم بتعيين مفاتيح API الخاصة بـ Anthropic و Mem0 بشكل آمن في المتغيرات البيئية:
os.environ["ANTHROPIC_API_KEY"] = "Use Your Own API Key"
MEM0_API_KEY = "Use Your Own API Key"
ملاحظة: يجب استبدال "Use Your Own API Key"
بمفاتيح API الخاصة بك.
4. تهيئة نموذج Claude وذاكرة mem0
نقوم بتهيئة نموذج Claude وعميل ذاكرة mem0:
llm = ChatAnthropic(
model="claude-3-5-haiku-latest",
temperature=0.0,
max_tokens=1024,
anthropic_api_key=os.environ["ANTHROPIC_API_KEY"]
)
mem0 = MemoryClient(api_key=MEM0_API_KEY)
5. تعريف هيكل حالة المحادثة ووظيفة روبوت المحادثة
نقوم بتعريف هيكل حالة المحادثة باستخدام TypedDict
ووظيفة chatbot
التي تدير تدفق المحادثة:
class State(TypedDict):
messages: Annotated[List[HumanMessage | AIMessage], add_messages]
mem0_user_id: str
graph = StateGraph(State)
def chatbot(state: State):
messages = state["messages"]
user_id = state["mem0_user_id"]
memories = mem0.search(messages[-1].content, user_id=user_id)
context = "n".join(f"- {m['memory']}" for m in memories)
system_message = SystemMessage(content=(
"You are a helpful customer support assistant. "
"Use the context below to personalize your answers:n" + context
))
full_msgs = [system_message] + messages
ai_resp: AIMessage = llm.invoke(full_msgs)
mem0.add(f"User: {messages[-1].content}nAssistant: {ai_resp.content}", user_id=user_id)
return {"messages": [ai_resp]}
6. بناء وتجميع الرسم البياني باستخدام LangGraph
نقوم بتوصيل وظيفة chatbot
برسم بياني LangGraph:
graph.add_node("chatbot", chatbot)
graph.add_edge(START, "chatbot")
graph.add_edge("chatbot", "chatbot")
compiled_graph = graph.compile()
7. تشغيل المحادثة
أخيرًا، نقوم بتعريف دالة run_conversation
لتشغيل المحادثة:
def run_conversation(user_input: str, mem0_user_id: str):
config = {"configurable": {"thread_id": mem0_user_id}}
state = {"messages": [HumanMessage(content=user_input)], "mem0_user_id": mem0_user_id}
for event in compiled_graph.stream(state, config):
for node_output in event.values():
if node_output.get("messages"):
print("Assistant:", node_output["messages"][-1].content)
return
if __name__ == "__main__":
print("Welcome! (type 'exit' to quit)")
mem0_user_id = "customer_123"
while True:
user_in = input("You: ")
if user_in.lower() in ["exit", "quit", "bye"]:
print("Assistant: Goodbye!")
break
run_conversation(user_in, mem0_user_id)
هذا الكود يوفر روبوت محادثة متكامل يستخدم Claude و mem0. يمكن تطويره أكثر بإضافة المزيد من الميزات.
اترك تعليقاً