بناء روبوت محادثة ذكي باستخدام MCP-Use و Langchain-Groq
يُعدّ بناء روبوتات محادثة قادرة على الوصول إلى الأدوات والخدمات الخارجية تحديًا مثيرًا في مجال الذكاء الاصطناعي. في هذا المقال، سنستعرض خطوات بناء روبوت محادثة بسيط ولكنه فعال، يستخدم مكتبة MCP-Use مفتوحة المصدر للوصول إلى أدوات مثل البحث على الويب وإجراء عمليات على الملفات، وذلك من خلال الربط مع نموذج لغوي كبير (LLM) عبر Langchain-Groq.
1. تهيئة بيئة العمل
قبل البدء، يجب تهيئة بيئة العمل وتثبيت التبعيات اللازمة. سنستخدم مدير الحزم uv
لتبسيط العملية:
1.1 تثبيت مدير الحزم uv
:
- لنظامي Mac و Linux:
curl -LsSf https://astral.sh/uv/install.sh | sh
- لنظام Windows (PowerShell):
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
1.2 إنشاء بيئة افتراضية:
- أنشئ مجلدًا جديدًا للمشروع:
uv init mcp-use-demo
cd mcp-use-demo
- أنشئ بيئة افتراضية وقم بتفعيلها:
- لنظامي Mac و Linux:
uv venv
source .venv/bin/activate
- لنظام Windows:
uv venv
.venvScriptsactivate
1.3 تثبيت التبعيات:
قم بتثبيت المكتبات اللازمة باستخدام الأمر التالي:
uv add mcp-use langchain-groq python-dotenv
2. إعداد متغيرات البيئة
يحتاج الروبوت إلى مفاتيح API للوصول إلى خدمات Groq و Brave Search:
2.1 مفتاح API الخاص بـ Groq:
- قم بزيارة لوحة تحكم Groq وقم بإنشاء مفتاح API جديد.
- أنشئ ملفًا باسم
.env
في مجلد المشروع، وأضف السطر التالي:
GROQ_API_KEY=<YOUR_API_KEY>
استبدل <YOUR_API_KEY>
بمفتاح API الذي قمت بإنشائه.
2.2 مفتاح API الخاص بـ Brave Search:
- احصل على مفتاح API الخاص بـ Brave Search من موقعهم الرسمي.
- أنشئ ملفًا باسم
mcp.json
في مجلد المشروع، وأضف المحتوى التالي:
{
"mcpServers": {
"brave-search": {
"command": "npx",
"args": [ "-y", "@modelcontextprotocol/server-brave-search" ],
"env": {
"BRAVE_API_KEY": "<YOUR_BRAVE_SEARCH_API>"
}
}
}
}
استبدل <YOUR_BRAVE_SEARCH_API>
بمفتاح API الخاص بك.
2.3 تثبيت Node.js (اختياري):
بعض خوادم MCP، بما في ذلك Brave Search، تتطلب تثبيت npx
، والذي يأتي مع Node.js. قم بتنزيل وتثبيت أحدث إصدار من Node.js من nodejs.org.
2.4 استخدام خوادم MCP أخرى:
يمكنك استخدام خوادم MCP أخرى بسهولة بتعديل محتويات ملف mcp.json
وفقًا لإعدادات الخادم المراد استخدامه.
3. بناء وتكامل روبوت المحادثة
سنقوم بإنشاء ملف app.py
ويحتوي على الكود التالي:
from dotenv import load_dotenv
from langchain_groq import ChatGroq
from mcp_use import MCPAgent, MCPClient
import os
import sys
import warnings
warnings.filterwarnings("ignore", category=ResourceWarning)
async def run_chatbot():
"""تشغيل محادثة باستخدام ذاكرة المحادثة المدمجة في MCPAgent"""
load_dotenv()
os.environ["GROQ_API_KEY"] = os.getenv("GROQ_API_KEY")
configFile = "mcp.json"
print("بدء روبوت المحادثة...")
client = MCPClient.from_config_file(configFile)
llm = ChatGroq(model="llama-3.1-8b-instant")
agent = MCPAgent(
llm=llm, client=client, max_steps=15, memory_enabled=True, verbose=False
)
print("n-----محادثة MCP التفاعلية----")
print("اكتب 'exit' أو 'quit' لإنهاء المحادثة")
print("اكتب 'clear' لمسح سجل المحادثة")
try:
while True:
user_input = input("nأنت: ")
if user_input.lower() in ["exit", "quit"]:
print("إنهاء المحادثة....")
break
if user_input.lower() == "clear":
agent.clear_conversation_history()
print("تم مسح سجل المحادثة....")
continue
print("nالمساعد: ", end="", flush=True)
try:
response = await agent.run(user_input)
print(response)
except Exception as e:
print(f"nخطأ: {e}")
finally:
if client and client.sessions:
await client.close_all_sessions()
except KeyboardInterrupt:
print("تم مقاطعة الجلسة. وداعًا!")
finally:
sys.stderr = open(os.devnull, "w")
if __name__ == "__main__":
import asyncio
try:
asyncio.run(run_chatbot())
except KeyboardInterrupt:
print("Session interrupted. Goodbye!")
finally:
sys.stderr = open(os.devnull, "w")
هذا الكود يقوم بما يلي:
- تحميل متغيرات البيئة: يقوم بتحميل مفاتيح API من ملف
.env
. - إنشاء عميل MCP: يقوم بإنشاء عميل للاتصال بخادم MCP باستخدام إعدادات
mcp.json
. - إنشاء نموذج LLM: يقوم بإنشاء مثيل لنموذج
ChatGroq
من Langchain-Groq. - إنشاء وكيل MCPAgent: يقوم بإنشاء وكيل مع تمكين ذاكرة المحادثة.
- التفاعل مع المستخدم: يدخل المستخدم النص، ويعالج الوكيل الطلب، ويعرض الرد.
- معالجة الاستثناءات: يعالج الكود الاستثناءات المحتملة ويضمن إغلاق جميع جلسات MCP بشكل صحيح.
4. تشغيل التطبيق
لتشغيل التطبيق، استخدم الأمر التالي:
uv run app.py
سيبدأ التطبيق، ويمكنك الآن التفاعل مع روبوت المحادثة.
اترك تعليقاً