بناء سير عمل آمن وقابل للتوسع مع ذاكرة مدمجة لوكلاء الذكاء الاصطناعي باستخدام Cipher واختيار نماذج اللغات الكبيرة ديناميكيًا
يقدم هذا المقال شرحًا تفصيليًا لبناء سير عمل مُدمج وفعال قائم على Cipher، أداة قوية لإدارة الذاكرة طويلة المدى في وكلاء الذكاء الاصطناعي. سنبدأ بتأمين مفتاح واجهة برمجة التطبيقات (API) الخاص بـ Gemini داخل واجهة مستخدم Colab دون الكشف عنه في الكود. ثم سنُنفذ وظيفة اختيار ديناميكية لنماذج اللغات الكبيرة (LLMs) تتيح التبديل تلقائيًا بين OpenAI و Gemini و Anthropic بناءً على مفتاح API المتوفر.
إعداد بيئة العمل وتثبيت المتطلبات
تبدأ عملية الإعداد بتثبيت Node.js و Cipher CLI، وذلك باستخدام الأوامر التالية:
sudo apt-get update -y && sudo apt-get install -y nodejs npm
npm install -g @byterover/cipher
بعد ذلك، سنقوم بتأمين مفتاح API الخاص بنا باستخدام وظيفة getpass
للحفاظ على سرية بيانات اعتمادنا:
import getpass
os.environ["GEMINI_API_KEY"] = getpass.getpass("أدخل مفتاح API الخاص بـ Gemini: ").strip()
اختيار نموذج اللغة الكبير ديناميكيًا
سنُنشئ دالة choose_llm()
لاختيار مزود نموذج اللغة الكبير، والنموذج، ومفتاح API المناسب بناءً على المتغيرات البيئية:
def choose_llm():
if os.getenv("OPENAI_API_KEY"):
return "openai", "gpt-4o-mini", "OPENAI_API_KEY"
if os.getenv("GEMINI_API_KEY"):
return "gemini", "gemini-2.5-flash", "GEMINI_API_KEY"
if os.getenv("ANTHROPIC_API_KEY"):
return "anthropic", "claude-3-5-haiku-20241022", "ANTHROPIC_API_KEY"
raise RuntimeError("يجب تعيين أحد مفاتيح API قبل التشغيل.")
إنشاء ملف التكوين cipher.yml
سنستخدم الدالة write_cipher_yml()
لإنشاء ملف تكوين cipher.yml
يحدد مزود نموذج اللغة الكبير، والنموذج، ومفتاح API، بالإضافة إلى تمكين مطالبة النظام مع ذاكرة طويلة المدى وتسجيل خادم MCP لنظام الملفات:
def write_cipher_yml(workdir, provider, model, key_env):
cfg = """
llm:
provider: {provider}
model: {model}
apiKey: ${key_env}
systemPrompt:
enabled: true
content: |
أنت مساعد برمجة ذكاء اصطناعي مع ذاكرة طويلة المدى للقرارات السابقة.
embedding:
disabled: true
mcpServers:
filesystem:
type: stdio
command: npx
args: ['-y','@modelcontextprotocol/server-filesystem','.']
""".format(provider=provider, model=model, key_env=key_env)
(workdir / "memAgent").mkdir(parents=True, exist_ok=True)
(workdir / "memAgent" / "cipher.yml").write_text(cfg.strip() + "n")
وظائف مساعدة لتشغيل أوامر Cipher
سنُنشئ وظائف مساعدة لتشغيل أوامر Cipher مباشرةً من Python، مثل run()
و cipher_once()
، لتسهيل التفاعل مع Cipher:
def run(cmd, check=True, env=None):
print("▸", cmd)
# ... (rest of the run function remains the same)
def cipher_once(text, env=None, cwd=None):
cmd = f'cipher {shlex.quote(text)}'
# ... (rest of the cipher_once function remains the same)
تشغيل Cipher في وضع API
تُستخدم الدالة start_api()
لتشغيل Cipher في وضع API كعملية فرعية، ثم الاستعلام بشكل متكرر عن نقطة النهاية /health
للتأكد من جاهزية خادم API:
def start_api(env, cwd):
# ... (rest of the start_api function remains the same)
الوظيفة الرئيسية main()
تُجمع الوظيفة الرئيسية main()
جميع المكونات معًا، بدءًا من اختيار مزود نموذج اللغة الكبير وتثبيت التبعيات، وصولًا إلى تشغيل Cipher في وضع API:
def main():
# ... (rest of the main function remains the same)
الخلاصة
يُقدم هذا المقال سير عمل متكامل لاستخدام Cipher مع نماذج اللغات الكبيرة المختلفة، مع التركيز على الأمان وإدارة الذاكرة طويلة المدى. يتيح هذا السير العمل تخزين واسترجاع معلومات المشاريع بشكل برمجي، مما يسهل عملية تطوير التطبيقات المعتمدة على الذكاء الاصطناعي. يمكن إعادة استخدام هذا النهج في مشاريع أخرى لتطوير أنابيب عمل مُحسّنة بمساعدة الذكاء الاصطناعي.
اترك تعليقاً