Mendals AI هي أداة مصممة لإنشاء وتشغيل الوكلاء التي تتميز loops memory tools مختلفة ، جميعها من خلال ملف markdown المباشر مع امتداد. فكر في ملف الوكيل كملف قابل للتنفيذ. أنت تركز بالكامل على منطق الوكيل ، مما يلغي ضرورة كتابة رمز السقالات في بيثون أو أي لغة أخرى. في الأساس ، يعيد تعريف الأطر التأسيسية لتطبيقات الذكاء الاصطناعي في المستقبل؟
ملحوظة
لعبة سلسلة الكلمات في حلقة ذاتية تتحكم فيها LLM: 
NLOP - عملية اللغة الطبيعية
أو حالات الاستخدام الأكثر تعقيدًا:
| أي تفاعلات متعددة الوكلاء | ؟ وكيل مولد الغزاة الفضائي | ؟ وكيل مولد منصة 2D |
|---|---|---|
![]() | ![]() | ![]() |
أو المساعدة في المحتوى:
توجد جميع الأمثلة المذكورة أعلاه في مجلد الوكلاء.
ملحوظة
يتوفر دعم LLAMA3 لمقدمي الخدمات باستخدام واجهة برمجة تطبيقات Openai متوافقة.
ابدأ بتأمين مفتاح Openai API من خلال إنشاء حساب Openai. إذا كان لديك بالفعل مفتاح API ، تخطي هذه الخطوة.
المتطلبات الأساسية
قبل بناء المشروع ، تأكد من تثبيت التبعيات التالية:
اعتمادًا على نظام التشغيل الخاص بك ، يمكنك تثبيت ذلك باستخدام الأوامر التالية:
Linux
sudo apt-get update
sudo apt-get install libcurl4-openssl-dev libfmt-dev libpoppler-devماكوس
brew update
brew install curl fmt popplerالنوافذ
بالنسبة لنظام التشغيل Windows ، يوصى باستخدام VCPKG أو مدير حزمة مماثل:
vcpkg install curl fmt popplerPGVector تثبيت
ملحوظة
في الفرع main ، يمكنك تخطي هذه الخطوة
استنساخ المستودع
git clone https://github.com/turing-machines/mentals-ai
cd mentals-aiإعدادات
ضع مفتاح API الخاص بك في ملف config.toml :
[llm]
# OpenAI
api_key = " "
endpoint = " https://api.openai.com/v1 "
model = " gpt-4o "بناء المشروع
makeيجري
./build/mentals agents/loop.gen -dيميز Mendals AI عن الأطر الأخرى بثلاث طرق مهمة:
Agent Executor ؟ يعمل من خلال حلقة العودية. يحدد LLM الخطوات التالية: تحديد التعليمات (مطالبات) وإدارة البيانات بناءً على الحلقات السابقة. عملية صنع القرار العودية هذه جزء لا يتجزأ من نظامنا ، المبين في Mendals_System.promptMarkdown ، مما يلغي الحاجة إلى لغات البرمجة التقليدية. ومع ذلك ، يمكن دمج Python مباشرة في البرنامج النصي Markdown الوكيل إذا لزم الأمر.Tree of Thoughts ، ReAct ، Self-Discovery ، Auto-CoT ، وغيرها. يمكن للمرء أيضًا ربط هذه الأطر معًا بتسلسلات أكثر تعقيدًا ، حتى إنشاء شبكة من أطر عمل التفكير المختلفة. ملف الوكيل هو وصف نصي لتعليمات الوكيل بامتداد .gen .
التعليمات هي المكون الأساسي للوكيل في Mendals. يمكن أن يتكون الوكيل من تعليمات واحدة أو أكثر ، والتي يمكن أن تشير إلى بعضها البعض.

يمكن كتابة التعليمات في شكل مجاني ، ولكن لديها دائمًا اسم يبدأ بالرمز # . ## use: يتم استخدام التوجيه لتحديد مرجع إلى التعليمات الأخرى. يتم إدراج مراجع متعددة مفصولة بفواصل.
فيما يلي مثال على تعليمين root و meme_explain مع مرجع:
# root
## use: meme_explain
1. Create 3 memes about AGI;
2. Then do meme explain with meme per call;
3. Output memes and their explanations in a list.
# meme_explain
Explain the gist of the meme in 20 words in medieval style.
Return explanation.
في هذا المثال ، تستدعي تعليمات root تعليمات meme_explain . ثم يتم إرجاع الاستجابة من meme_explain إلى التعليمات التي تم استدعاؤها منها ، وهي الجذر.
يمكن أن تأخذ التعليمات معلمة input ، والتي يتم إنشاؤها تلقائيًا بناءً على السياق عند استدعاء التعليمات. لتحديد بيانات الإدخال بشكل أكثر دقة ، يمكنك استخدام موجه مجاني الشكل في ## input: التوجيه ، مثل كائن JSON أو null .
باستخدام مستند للإدخال:
# some_instruction
## input: design document only
باستخدام كائن JSON كمدخلات:
# duckduckgo
## input: { search_query: search query, search_limit: search limit }
Write a Python script to search in DuckDuckGo.
Simulate request headers correctly e.g. user-agent as Mozilla and Linux.
ملحوظة
يتم تنفيذ مكالمات التعليمات بشكل مستقل عن مكالمات الوظيفة أو الأدوات في Openai ، مما يتيح تشغيل الوكلاء مع نماذج مثل LLAMA3. تنفيذ مكالمات التعليمات شفافة ومضمنة في ملف mendals_system.prompt.
الأداة هي نوع من التعليمات. لدى Mendals مجموعة من الأدوات الأصلية للتعامل مع إخراج الرسائل ، وإدخال المستخدم ، ومعالجة الملفات ، ومترجم Python ، وأوامر Bash ، والذاكرة قصيرة الأجل.
اسأل مثال المستخدم:
# root
## use: user_input
Ask user name.
Then output: `Welcome, user_name!`
مثال معالجة الملفات:
# root
## use: write_file, read_file
Write 'Hello world' to a file.
Then read and output file content.
يتم سرد القائمة الكاملة للأدوات الأصلية في الملف native_tools.toml .
كل تعليمات لها ذاكرة العمل الخاصة بها - سياق. عند الخروج من التعليمات وإعادة إدخالها ، يتم الاحتفاظ بالسياق افتراضيًا. لمسح السياق عند الخروج من التعليمات ، يمكنك استخدام ## keep_context: false :
# meme_explain
## keep_context: false
Explain the gist of the meme in 20 words in medieval style.
Return explanation.
بشكل افتراضي ، فإن حجم سياق التعليمات غير محدود. للحد من السياق ، هناك توجيه ## max_context: number الذي يحدد أنه يجب تخزين number الرسائل الأحدث فقط. سيتم دفع الرسائل القديمة من السياق. هذه الميزة مفيدة عندما تريد الاحتفاظ بأحدث البيانات في السياق بحيث لا تؤثر البيانات القديمة على سلسلة التفكير.
# python_code_generation
## input: development tasks in a list
## use: write_file
## max_context: 5
Do all development tasks in a loop: task by task.
Save the Python code you implement in the main.py file.
تسمح الذاكرة قصيرة المدى بتخزين النتائج الوسيطة من أنشطة الوكيل ، والتي يمكن استخدامها بعد ذلك لمزيد من التفكير. يمكن الوصول إلى محتويات هذه الذاكرة عبر جميع سياقات التعليمات.
يتم استخدام أداة memory لتخزين البيانات. عند تخزين البيانات ، يتم إنشاء كلمة رئيسية ووصف للمحتوى. في المثال أدناه ، فإن تعليمات meme_recall تدرك الميم لأنه تم تخزينه مسبقًا في الذاكرة.
# root
## use: memory, meme_recall
Come up with and memorize a meme.
Call meme recall.
# meme_recall
## input: nothing
What the meme was about?
يتم التعبير عن تدفق التحكم ، والذي يتضمن الظروف ومكالمات التعليمات والحلقات (مثل ReAct و Auto-CoT ، وما إلى ذلك) ، بشكل كامل في اللغة الطبيعية. تتيح هذه الطريقة إنشاء semantic conditions توجه تدفق البيانات المتفرعة. على سبيل المثال ، يمكنك طلب وكيل لتشغيل لعبة سلسلة كلمات بشكل مستقل في حلقة أو إنشاء حالة خروج غامضة: exit the loop if you are satisfied with the result . هنا ، يحدد نموذج اللغة وسياقه ما إذا كان سيتم المتابعة أو التوقف. يتم تحقيق كل هذا دون الحاجة إلى تحديد منطق التدفق في Python أو أي لغات برمجة أخرى.
## use: execute_bash_command, software_development, quality_assurance
...
You run in a loop of "Thought", "Action", "Observation".
At the end of the loop return with the final answer.
Use "Thought" to describe your thoughts about the task
you have been asked. Use "Action" to run one of the actions
available to you. Output action as: "Action: action name to call".
"Observation" will be the result of running those actions.
Your available actions:
- `execute_bash_command` for util purposes e.g. make directory, install packages, etc.;
- `software_development` for software development and bug fixing purposes;
- `quality_assurance` for QA testing purposes.
...
الفكرة وراء TOT هي إنشاء أفكار متعددة لحل مشكلة ثم تقييم قيمتها. يتم الاحتفاظ بأفكار قيمة وتطويرها ، يتم التخلص من الأفكار الأخرى.
لنأخذ مثال لعبة 24. اللغز الـ 24 عبارة عن لغز حسابي يكون فيه الهدف هو إيجاد طريقة لمعالجة أربعة أعداد صحيحة بحيث تكون النتيجة النهائية 24. أولاً ، نحدد التعليمات التي تخلق وتلاعب بنية بيانات الشجرة. يعرف النموذج ما هي الشجرة ويمكن أن تمثلها بأي شكل ، من نص عادي إلى XML/JSON أو أي تنسيق مخصص.
في هذا المثال ، سوف نستخدم تنسيق النص العادي:
# tree
## input: e.g. "add to node `A` child nodes `B` and `C`", "remove node `D` with all branches", etc.
## use: memory
## keep_context: false
Build/update tree structure in formatted text.
Update the tree structure within the specified action;
Memorize final tree structure.
بعد ذلك ، نحتاج إلى تهيئة الشجرة بالبيانات الأولية ، لنبدأ بتعليمات الجذر:
# root
## use: tree
Input: 4 5 8 2
Generate 8 possible next steps.
Store all steps in the tree as nodes e.g.
Node value 1: "2 + 8 = 10 (left: 8 10 14)"
Node value 2: "8 / 2 = 4 (left: 4 8 14)"
etc.
سيقترح استدعاء تعليمات الجذر 8 خطوات تالية محتملة للحساب مع الأرقام الأولى وتخزين هذه الخطوات كعقد شجرة. يؤدي مزيد من العمل من قبل الوكيل إلى بناء شجرة ملائمة للنموذج لفهم الإجابة النهائية واستنتاجها.
4 5 8 2
├── 4 + 5 = 9 (left: 9, 8, 2)
│ └── discard
├── 4 + 8 = 12 (left: 12, 5, 2)
│ └── discard
├── 4 + 2 = 6 (left: 6, 5, 8)
│ └── discard
├── 5 + 8 = 13 (left: 13, 4, 2)
│ └── discard
├── 5 + 2 = 7 (left: 7, 4, 8)
│ └── (7 - 4) * 8 = 24
├── 8 + 2 = 10 (left: 10, 4, 5)
│ └── discard
├── 4 * 5 = 20 (left: 20, 8, 2)
│ └── (20 - 8) * 2 = 24
└── 4 * 8 = 32 (left: 32, 5, 2)
└── discard
Based on the evaluations, we have found two successful paths to reach 24:
1. From the node "5 + 2 = 7 (left: 7, 4, 8)", we have the equation: (7 - 4) * 8 = 24.
2. From the node "4 * 5 = 20 (left: 20, 8, 2)", we have the equation: (20 - 8) * 2 = 24.
Thus, the final equations using all given numbers from the input are:
1. (5 + 2 - 4) * 8 = 24
2. (4 * 5 - 8) * 2 = 24
يوجد مثال كامل في الوكلاء/tree_structure.gen
نشأ المفهوم من دراسات حول الوظائف التنفيذية للتحليل النفسي ، واستكشاف المدير التنفيذي المركزي ، آلان بادلي ، 1996. وصف نظامًا ينظم العمليات المعرفية والذاكرة العاملة ، مما يسهل الاستردادات من الذاكرة طويلة الأجل. تعمل LLM كنظام System 1 ، ومعالجة الاستعلامات وتنفيذ التعليمات دون دافع متأصل أو تحديد الأهداف. إذن ، ما هو System 2 ؟ بالاعتماد على رؤى تاريخية ، أعيد النظر الآن من خلال عدسة علمية:
يعد المدير التنفيذي المركزي ، أو الوظائف التنفيذية ، أمرًا بالغ الأهمية للمعالجة التي يتم التحكم فيها في الذاكرة العاملة. يدير المهام بما في ذلك توجيه الانتباه ، والحفاظ على أهداف المهمة ، وصنع القرار ، واسترجاع الذاكرة.
هذا يثير إمكانية مثيرة للاهتمام: بناء عوامل أكثر تطوراً من خلال دمج System 1 والنظام System 2 . يعمل LLM ، باعتباره System 1 ، جنبًا إلى جنب مع System 2 ، الذي يحكم ويسيطر على LLM. تشكل هذه الشراكة العلاقة المزدوجة التأسيسية لـ Mendals AI.