إذا قمت ببناء عامل ذكاء اصطناعي عن طريق ربط آلة حالات ضخمة من نوع if/else، فأنت تعلم مدى سرعة هشاشة ذلك. Strands Agents تتخذ الرهان المعاكس: دع النموذج يقوم بالتخطيط، وأنت تقدم مطالبة وقائمة أدوات. إنها حزمة تطوير برامج مفتوحة المصدر من AWS، صدرت في مايو 2025 بموجب ترخيص Apache License 2.0، وهي تشغل العوامل الإنتاجية داخل فرق Amazon مثل Amazon Q Developer و AWS Glue.
ما هو Strands Agents في الواقع
Strands Agents هي حزمة تطوير برامج (SDK) لبناء وتشغيل عوامل الذكاء الاصطناعي ببضعة أسطر من التعليمات البرمجية. تعطي العامل ثلاثة أشياء: نموذج، ومطالبة نظام، ومجموعة أدوات. يقرأ النموذج المطالبة، ويقرر أي الأدوات يستدعيها، ويشغلها، وينظر إلى النتائج، ويستمر حتى يتم إنجاز المهمة. هذه الدورة هي المنتج بأكمله.

تتوفر لـ Python و TypeScript. الاسم هو إشارة إلى الخيطين اللذين يشكلان العامل: النموذج والأدوات. قامت AWS بفتح مصدره بعد تشغيله داخليًا، لذا يعكس التصميم احتياجات الإنتاج، وليس مجرد عرض توضيحي. منذ إطلاقه التجريبي، تجاوز 150 ألف تنزيل عبر PyPI ووصل إلى الإصدار 1.0 الذي أضاف بدائيات متعددة العوامل ودعم بروتوكول Agent-to-Agent (A2A).
إذا كنت قد قرأت عن حزم تطوير برامج العوامل الأخرى، فستشعر أن الشكل مألوف. Strands تقع في نفس الفئة مثل LangGraph و Google ADK، ولكنها تعتمد بشكل أكبر على النموذج لدفع تدفق التحكم بدلاً من مطالبتك برسم الرسم البياني بنفسك.
الفلسفة التي يحركها النموذج مقابل التنسيق المبرمج يدويًا
طلبت معظم أطر عمل العوامل المبكرة منك تحديد سير العمل مقدمًا. ستقوم ببناء العقد والحواف والشروط، ثم توجيه النموذج من خلالها. هذا يعمل، ولكن كل قدرة جديدة تعني المزيد من الرسم البياني للحفاظ عليه.
Strands تقلب المسؤولية. النماذج الحديثة تقوم بالفعل بالتخطيط، وتسلسل التفكير، واستدعاء الأدوات، والتفكير في النتائج. لذا بدلاً من ترميز هذا المنطق يدويًا، يمكنك وصف الهدف وتسليم الأدوات. يكتشف النموذج الخطوات.
إليك التباين بعبارات واضحة:
| النهج | أنت تحدد | تدفق التحكم موجود في | تكلفة القدرة الجديدة |
|---|---|---|---|
| التنسيق المبرمج يدويًا | العقد، الحواف، الشروط، التوجيه | تعليمات الرسم البياني الخاصة بك | تعديل الرسم البياني، إعادة اختبار المسارات |
| الذي يحركه النموذج (Strands) | مطالبة + قائمة أدوات | حلقة التفكير في النموذج | إضافة أداة، تحديث المطالبة |
المقايضة حقيقية. العوامل التي يحركها النموذج أسرع في البناء والتكيف، لكنك تتنازل عن بعض الحتمية. بالنسبة لسير العمل الذي يجب أن يعمل بنفس الطريقة في كل مرة، لا يزال بإمكانك إضافة هيكل باستخدام أنماط وعمليات ربط متعددة العوامل. النقطة ليست أن الرسوم البيانية خاطئة؛ بل هي أنك تلجأ إليها عندما تحتاجها بدلاً من ذلك بشكل افتراضي.
عامل الحد الأدنى
أصغر برنامج Strands مفيد يكون قصيرًا. تقوم باستيراد الفئة Agent، وتعرف أداة اختياريًا باستخدام المزين @tool، وتستدعي العامل كدالة.
from strands import Agent, tool
@tool
def word_count(text: str) -> int:
"""عد الكلمات في كتلة نصية."""
return len(text.split())
agent = Agent(
system_prompt="أنت مساعد كتابة موجز.",
tools=[word_count],
)
response = agent("كم عدد الكلمات في هذه الجملة؟")
print(response)
المزين @tool يحول دالة Python عادية إلى شيء يمكن للنموذج استدعاؤه. يصبح نص الوصف (docstring) وتلميحات النوع (type hints) وصف الأداة ومخطط الإدخال، بحيث يعرف النموذج متى وكيف يستخدمها. لا يوجد سجل منفصل للحفاظ عليه. استدعاء (...)agent يشغل الحلقة حتى يقرر النموذج أنه قد انتهى.
الأدوات ومقدمو النماذج
الأدوات هي كيفية اتصال العامل بالعالم الخارجي. يمكن أن تكون الأداة دالة Python كتبتها، أو أداة مجمعة من المجتمع، أو خادم بروتوكول سياق النموذج (MCP) بالكامل مكشوفًا للعامل.
على جانب النموذج، Strands مرن من حيث المزودين. المزود الافتراضي هو Amazon Bedrock، وبشكل افتراضي يستخدم العامل نموذج Claude Sonnet في منطقة us-west-2 (لقد تغير معرف النموذج الافتراضي الدقيق عبر إصدارات SDK، لذا تحقق من الإصدار المثبت بدلاً من ترميزه يدويًا). يمكنك توجيهه إلى مكان آخر:
- أي نموذج Amazon Bedrock يدعم استخدام الأدوات والبث
- عائلة Claude من Anthropic عبر Anthropic API
- نماذج Llama عبر Llama API
- Ollama للتطوير المحلي
- مزودون آخرون مثل OpenAI عبر LiteLLM
تبديل المزودين هو تغيير في كائن النموذج، وليس إعادة كتابة. حلقة العامل، وأدواتك، ومطالبتك تبقى كما هي. هذا يجعل من العملي التطوير مقابل نموذج Ollama محلي والشحن على Bedrock.
دعم العوامل المتعددة و MCP
يتعامل العامل الواحد مع الكثير، لكن الأنظمة الحقيقية غالبًا ما تحتاج إلى عدة عوامل. أضاف Strands 1.0 أساسيات لتطبيقات متعددة العوامل، بما في ذلك نمط العامل كأداة (Agent-as-Tool) حيث يستدعي عامل عاملًا آخر بنفس الطريقة التي يستدعي بها أي أداة، والتنسيق على غرار السرب (Swarm-style coordination) لمجموعات من العوامل التي تعمل على حل مشكلة معًا. كما يدعم بروتوكول A2A، بحيث يمكن لعوامل Strands التحدث مع العوامل المبنية على أطر عمل أخرى.
MCP هو مواطن من الدرجة الأولى. بروتوكول سياق النموذج (Model Context Protocol) هو معيار مفتوح لربط النماذج بالأدوات ومصادر البيانات. مع Strands، يمكنك الاتصال بخوادم MCP المنشورة واستخدام أدواتها مباشرة، مما يعني أن آلاف التكاملات الموجودة تصبح متاحة بدون كود ربط مخصص. يمكنك إدارة الاتصال من خلال عميل MCP وتمرير أدواته إلى العامل مثل أي قائمة أدوات أخرى.
إذا كنت تدير بالفعل خوادم MCP، فهذه هي أرخص طريقة لإعطاء العامل قدرات جديدة. المقايضة هي أنك الآن تعتمد على سلوك هذه الخوادم، وهذا أحد الأسباب التي تجعل اختبار النقاط الطرفية الأساسية مهمًا.
نشر عامل Strands
صُممت Strands للانتقال من جهاز الكمبيوتر المحمول الخاص بك إلى الإنتاج دون تغيير في الإطار. تقوم بالاختبار محليًا، ثم تنشر على الهدف الذي يناسب مجموعتك التقنية:
- Amazon Bedrock AgentCore لوقت تشغيل عامل مُدار
- AWS Lambda للعوامل قصيرة الأجل المدفوعة بالأحداث
- AWS Fargate أو Amazon EKS للخدمات المستمرة، المعبأة في حاويات
- Docker العادي في أي مكان يمكنك تشغيل حاوية فيه
نظرًا لأن العامل هو Python أو TypeScript عادي، فإن حزمه يتبع نفس قواعد أي تطبيق. توثق AWS أيضًا خطافات المراقبة، حتى تتمكن من تتبع ما قرره النموذج والأدوات التي استدعاها بمجرد أن يصبح العامل مباشرًا.
أين يتناسب Apidog
Strands تبني العامل. إنها لا تبني واجهات برمجة التطبيقات (APIs) التي يستدعيها العامل الخاص بك، وهذه هي الفجوة التي تستحق التخطيط لها. يعتمد كل عامل من Strands على نوعين من نقاط نهاية HTTP: واجهة برمجة تطبيقات مزود LLM خلف النموذج، وواجهات برمجة تطبيقات REST أو الأدوات خلف وظائف @tool وخوادم MCP الخاصة بك. إذا كانت نقاط النهاية هذه تتصرف بشكل خاطئ، يفشل العامل بطرق تبدو وكأنها مشاكل في النموذج ولكنها ليست كذلك.

Apidog هو المكان الذي تختبر فيه وتزيف تلك واجهات برمجة التطبيقات الأساسية قبل أن يلمسها العامل على الإطلاق. بعض الاستخدامات الملموسة:
- زيف النموذج أو نقطة نهاية الأداة بينما تكرر على الحلقة، حتى لا تحرق الرموز المميزة أو تصل إلى حدود المعدل في كل تشغيل. توضح المقالة حول بناء مجموعة اختبار عامل الذكاء الاصطناعي باستخدام Apidog هذا النمط.
- تأكيد أشكال استجابة الأداة بحيث يتم اكتشاف الأداة التي تعيد حمولة مشوهة في الاختبار، وليس في الإنتاج. راجع دليل تأكيدات واجهة برمجة التطبيقات لمعرفة كيفية التحقق من الحقول والأنواع ورموز الحالة.
- إنشاء واجهة برمجة تطبيقات وهمية تحاكي استجابات خدمة حقيقية، بما في ذلك حالات الخطأ التي يحتاج العامل الخاص بك إلى التعامل معها بأمان.
- إدارة مفاتيح واجهة برمجة التطبيقات لكل بيئة بحيث تتصل عوامل التطوير والتدريج والإنتاج الخاصة بك بالخلفيات الصحيحة دون تسريب بيانات الاعتماد إلى الكود.
لكي نكون واضحين، Apidog ليس إطار عمل عامل ولا يقوم بتنسيق أي شيء. Strands يظل العقل المدبر. Apidog هو طاولة العمل للسباكة تحته. يمكنك تنزيل Apidog وربط نماذج لأدواتك في بضع دقائق.
متى تستخدم Strands Agents
استخدم Strands عندما ترغب في التحرك بسرعة وتثق في النموذج للتخطيط. إنه يناسب جيدًا إذا كنت تستخدم AWS وتستخدم بالفعل Bedrock، أو إذا كنت ترغب في البدء بعامل واحد والنمو إلى عوامل متعددة لاحقًا، أو إذا كنت ترغب في استخدام أدوات MCP دون كتابة كود تكامل.
إنه أقل ملاءمة عندما تحتاج إلى تدفقات صارمة، قابلة للتدقيق، حتمية حيث يجب تحديد كل فرع مسبقًا. لا يزال بإمكانك تحقيق ذلك باستخدام الخطافات وهيكل متعدد العوامل، ولكن إطار عمل يعتمد على الرسوم البيانية أولاً قد يكون أكثر ملاءمة. الإطار الصادق هو أن النهج الذي يحركه النموذج والنهج الذي يحركه الرسم البياني يحلان مشاكل مختلفة، و Strands هو النهج الذي يحركه النموذج.
أسئلة مكررة
هل Strands Agents مجانية ومفتوحة المصدر؟
نعم. Strands Agents مفتوحة المصدر بموجب ترخيص Apache License 2.0، مع المصدر على GitHub. لا توجد رسوم ترخيص لـ SDK. تدفع مقابل النموذج وأي موارد سحابية تنشرها، مثل استدلال Bedrock أو تنفيذ Lambda، ولكن الإطار نفسه لا يكلف شيئًا.
هل يجب علي استخدام Amazon Bedrock مع Strands؟
لا. Bedrock هو المزود الافتراضي، لكن Strands يدعم Anthropic's API، و Llama API، و Ollama للتشغيل المحلي، ومزودين آخرين عبر LiteLLM. تقوم بتغيير كائن النموذج وتحتفظ ببقية الكود الخاص بك. هذا يجعل من السهل عمل نموذج أولي محليًا والتبديل إلى مزود مُدار للإنتاج.
ما الفرق بين Strands وإطار العمل القائم على الرسوم البيانية؟
Strands تعتمد على النموذج: أنت تقدم مطالبة وأدوات، ويقرر النموذج الخطوات. أطر العمل القائمة على الرسوم البيانية تطلب منك تحديد تدفق التحكم كعقد وحواف. Strands أسرع في البناء والتكيف؛ أطر العمل القائمة على الرسوم البيانية تمنحك تنفيذًا أكثر إحكامًا ويمكن التنبؤ به. تستخدم العديد من الفرق كلاهما لخدمات مختلفة.
كيف أختبر واجهات برمجة التطبيقات التي يعتمد عليها عامل Strands الخاص بي؟
اختبرها بشكل مستقل عن العامل، قبل وأثناء التطوير. قم بتزييف نقاط نهاية LLM والأدوات، وتأكيد أشكال استجابتها، وقم بتشغيل هذه الفحوصات في CI. أداة مثل Apidog تتعامل مع التزييف والتأكيدات، وتغطي الإرشادات حول اختبار ChatGPT API باستخدام Apidog المصادقة والبث واختبار استدعاء الأدوات الذي يتطابق مباشرة مع الخلفيات العاملة.
الخلاصة
Strands Agents تقدم طريقة واضحة لبناء العوامل: تحديد نموذج، ومطالبة، وأدوات، ثم السماح للنموذج بتشغيل الحلقة. إنها تتوسع من عامل واحد إلى العديد، وتدعم MCP و A2A، وتنتشر عبر مجموعة AWS دون إعادة كتابة. الإطار يتعامل مع التفكير. مهمتك هي التأكد من أن واجهات برمجة التطبيقات الأساسية قوية، وهذا هو بالضبط المكان الذي يكتسب فيه Apidog مكانه، حيث يقوم بتزييف واختبار نقاط النهاية التي يستدعيها العامل الخاص بك حتى تظهر الأعطال في اختباراتك بدلاً من الإنتاج.
