بدائل LangChain: أطر عمل مرنة ومتخصصة لتطوير الذكاء الاصطناعي

شكل هندسي على خلفية شبكية زرقاء اللون

المؤلفين

Tim Mucci

IBM Writer

Gather

ما هو LangChain؟

إذا كنت تعمل باستخدام نماذج لغوية كبيرة (LLMs) ، فمن المحتمل أنك واجهت LangChain، وهو إطار عمل مفتوح المصدر والمستخدم على نطاق واسع والمصمم لتبسيط تطوير التطبيقات المدعومة بالنماذج اللغوية الكبيرة. يعمل LangChain على تبسيط بناء تطبيقات الذكاء الاصطناعي (AI) من خلال توفير كتل بناء جاهزة يمكن للمطورين استخدامها لربط النماذج اللغوية الكبيرة بمصادر البيانات في العالم الحقيقي. بدلاً من برمجة هذه التكاملات يدويًا، يمكن للمطورين استخدام وحدات جاهزة مسبقًا للبدء بسرعة.

يعد LangChain مفيدًا بشكل خاص للتطبيقات التي تعتمد على معالجة اللغة الطبيعية (NLP)، مثل:

  • الذكاء الاصطناعي الحواري: روبوتات المحادثة التي تستجيب بذكاء باستخدام الذكاء الاصطناعي التوليدي مثل GPT-4 أو المحولات الأخرى.
  • التوليد المعزز بالاسترجاع (RAG): أنظمة الذكاء الاصطناعي التي تجمع بين معرفة النماذج اللغوية الكبيرة المدربة مسبقًا واسترجاع البيانات في الوقت الفعلي.
  • وكلاء الذكاء الاصطناعي المستقلون: وكلاء الذكاء الاصطناعي يتخذون القرارات ويقومون بأتمتة سير العمل ويتفاعلون مع الأدوات الخارجية مثل واجهة برمجة التطبيقات (APIs) وقواعد البيانات.

وتشمل الأمثلة روبوت محادثة لدعم العملاء يستخرج بيانات في الوقت الفعلي من قاعدة المعرفة الخاصة بالشركة، أو مساعد قانوني بالذكاء الاصطناعي يقوم بجلب أحكام قضائية محددة من قاعدة بيانات أو وكيل ذكاء اصطناعي يقوم بجدولة الاجتماعات وحجز الرحلات الجوية للمستخدمين.

تتمثل إحدى مزايا LangChain الأساسية في نهجه المنظم. بدلاً من كتابة عمليات تكامل مخصصة من الصفر، يمكن للمطورين استخدام قوالب ووحدات نمطية معدة مسبقاً لربط النماذج اللغوية الكبيرة بأدوات مختلفة. يعد إطار العمل هذا مفيدًا للمطورين الذين يرغبون في إنشاء تطبيقات بسرعة دون الغوص في تعقيدات تنسيق النموذج اللغوي الكبير أو الضبط الدقيق أو استرجاع البيانات منخفضة المستوى.

تحديات استخدام LangChain

في حين أن LangChain قوي، إلا أنه يقدم العديد من التحديات التي يمكن أن تجعل تطوير النموذج اللغوي الكبير أكثر تعقيدًا من اللازم.

التجريدات الصارمة

توفر وحدات العمل وسير العمل المعرفة مسبقًا في LangChain بيئة تطوير منظمة، وذلك أحيانًا على حساب القدرة على التخصيص. المطورون الذين يفضلون الوصول المباشر إلى واجهة برمجة التطبيقات أو يحتاجون إلى تحكم دقيق على قوالب الموجِّه وموصلات البيانات ومسارات معالجة اللغة الطبيعية قد يجدون نهج LangChain مقيدًا.

على سبيل المثال، قد يحتاج فريق يعمل على نماذج الذكاء الاصطناعي المالية إلى تحكم دقيق في مصادر البيانات، ومنطق المعالجة، وتقنيات التلخيص. قد يفضلون التكامل المباشر مع مخازن المتجهات بدلاً من الاعتماد على مسار الاسترجاع الافتراضي في LangChain. قد تحتاج أداة التلخيص المخصصة إلى محولات متخصصة تعالج النص بتنسيق فريد. باستخدام LangChain، قد يتطلب دمج نماذج الذكاء الاصطناعي المخصصة هذه طبقات تجريد إضافية، مما يزيد التعقيد بدلاً من تبسيط المهمة.

يفضل بعض المطورين إطار العمل الذي يسمح لهم بتحديد سير العمل بدلاً من استخدام سلاسل ووحدات محددة مسبقاً. تُعد هذه المرونة مهمة لفرق الذكاء الاصطناعي التي تعمل على البنى الجديدة التي تتطلب تكاملاً عميقاً مع المنصات الحالية.

دورات تكرار أبطأ

يتطلب تطوير تطبيقات النماذج اللغوية الكبيرة التجريب، خاصةً عند ضبط النماذج أو تعديل منطق الإجابة عن الأسئلة أو تحسين سير عمل توليد النصوص. يمكن لبنية LangChain المهيكلة أن تجعل التكرار السريع أمرًا صعبًا، حيث تتطلب التغييرات غالبًا إجراء تعديلات على عناصر متعددة مترابطة.

يمكن أن يؤدي هذا النقص في المرونة إلى إبطاء الابتكار بالنسبة للشركات الناشئة أو فرق البحث التي تحتاج إلى وضع نماذج أولية لتطبيقات الذكاء الاصطناعي بسرعة.

الإفراط في الهندسة للمهام البسيطة

لا تتطلب كل التطبيقات المستندة إلى الذكاء الاصطناعي تنسيقًا معقدًا. غالبًا ما تكون استدعاءات واجهة برمجة التطبيقات البسيطة إلى OpenAI أو Hugging Face أو Anthropic كافية. تقدم LangChain طبقات إضافية، على الرغم من أنها قابلة للتطبيق في بعض السياقات، إلا أنها يمكن أن تعقد سير عمل التطوير الأساسي دون داعٍ.

على سبيل المثال، قد لا يحتاج مطور ينشئ روبوت محادثة مدعومًا بـ GPT-4 إلا إلى نص برمجي بلغة Python يستدعي واجهة برمجة تطبيقات GPT-4، وقاعدة بيانات لتخزين تفاعلات المستخدم، ومسار معالجة لغة طبيعية بسيط لمعالجة الردود. تعد القوالب المضمنة في LangChain لهذه المهام مفيدة ولكنها ليست ضرورية دائما. يفضل بعض المطورين بدائل خفيفة الوزن تسمح لهم بالعمل مباشرة مع واجهات برمجة تطبيقات النماذج اللغوية الكبيرة دون نفقات إضافية.

يتطلع العديد من المطورين إلى استكشاف إطار العمل البديل الذي يعطي الأولوية للمرونة وسرعة وضع النماذج الأولية والتكامل مع البنى البرمجية الحالية. ومع ذلك، تعتمد الأداة المناسبة على نوع التطبيق الذي يتم إنشاؤه ومستوى التخصيص المطلوب وسير العمل المفضل للمطور.

التكامل السلس مع البنى التحتية الحالية

تمتلك العديد من الشركات بالفعل مسارات الذكاء الاصطناعي وقواعد البيانات وعمليات تكامل واجهة برمجة التطبيقات. يمكن أن يؤدي استخدام إطار عمل يفرض هيكلاً جديداً لسير العمل إلى تعطيل فرق التطوير بدلاً من تعزيز الكفاءة.

على سبيل المثال، قد يفضل الفريق الذي يستخدم بالفعل TensorFlow للضبط الدقيق و PyTorch للاستدلال إطار العمل الذي يتكامل مع مجموعة التعلم الآلي (ML) الموجودة لديهم بدلاً من اعتماد وحدات LangChain الجاهزة.

تصميم ثلاثي الأبعاد لكرات تتدحرج على مسار

أحدث الأخبار والرؤى حول الذكاء الاصطناعي 


تتوفر معارف وأخبار منسقة بمهارة حول الذكاء الاصطناعي والسحابة وغيرها في نشرة Think الإخبارية الأسبوعية. 

بدائل LangChain لجوانب مختلفة من تطوير النماذج اللغوية الكبيرة

أفضل بديل لـ LangChain يعتمد على التحدي المحدد الذي يحاول المطور حله. تركز بعض الأدوات على هندسة المطالبات، بينما تقوم أدوات أخرى بتحسين استرجاع البيانات، أو سير عمل وكلاء الذكاء الاصطناعي، أو تنسيق نماذج لغوية كبيرة. هنا بعض الفئات المختلفة لتطوير نماذج لغوية كبيرة والأدوات التي تعالجها بشكل أفضل:

هندسة المطالبات والتجريب

هندسة المطالبات هي أساس تحسين النماذج اللغوية الكبيرة، حيث تحدد مدى فعالية النموذج في تفسير النص وإنشائه. تؤدي المطالبات سيئة التنظيم إلى استجابات غير متناسقة أو غير ذات صلة، بينما تؤدي المطالبات جيدة التصميم إلى زيادة الدقة والترابط وكفاءة المهمة.

يقدم LangChain تسلسل مطالبات أساسي، ولكن الأدوات البديلة توفر تخصيصًا أعمق، والتحكم في الإصدار، وبيئات صديقة للتجربة.

بدائل لهندسة المطالبات:

  • Vellum AI: ملعب هندسة المطالبات مع اختبار مدمج، وإصدارات، ومقارنة A/B. إنه مثالي للمطورين الذين يحتاجون إلى تحسين المطالبات على نطاق واسع.
  • Mirascope: يشجع على تجميع المطالبات داخل قاعدة التعليمات البرمجية، مما يضمن قابلية التكرار وسير عمل منظم لمعالجة اللغات الطبيعية.
  • Guidance: يسمح للمستخدمين بتقييد مخرجات المطالبات باستخدام التعابير النمطية (regex) والقواعد الخالية من السياق (CFGs). إنه مثالي للتحكم في الاستجابات التي تم إنشاؤها بواسطة النماذج اللغوية الكبيرة.

لماذا لا نستخدم LangChain؟

لم يتم تحسين المطالبات في LangChain للضبط الدقيق التكراري والاختبار المنظم. قد يجد المطورون الذين يسعون إلى تحكم أكبر في قوالب المطالبات القابلة للتخصيص استخدام Vellum AI أو Guidance أكثر فعالية.

تصحيح الأخطاء والضبط الدقيق وتحسين النموذج

النماذج اللغوية الكبيرة ليست مثالية؛ فهي تتطلب تصحيح الأخطاء المستمر، والاختبار، والتحسين لإنتاج نتائج دقيقة وموثوقة. غالبًا ما يجد المطورون الذين يعملون على ضبط نماذج الذكاء الاصطناعي أو ضمان أداء خالٍ من الأخطاء أن نهج الصندوق الأسود في LangChain مقيد.

بدائل التصحيح والضبط الدقيق:

  • Galileo: يركز على قابلية الملاحظة وتحليل الأخطاء وضبط سير العمل. إنه يوفر رؤى حول جودة البيانات واختناقات الأداء.
  • Mirascope: يدعم الاستخراج المنظم للبيانات وتصحيح الأخطاء الفورية، مما يجعل تتبع سلوك المطالبة عبر الإصدارات المختلفة أسهل.

لماذا لا نستخدم LangChain؟

يُجرّد LangChain عملية تصحيح الأخطاء، مما يجعل من الصعب تحديد وحل المشكلات في سلوك المطالبات، أو موصلات البيانات، أو استجابات الذكاء الاصطناعي. يوفر Galileo رؤية دقيقة لأخطاء النموذج اللغوي الكبير وتناقضات مجموعة البيانات.

أطر عمل وكلاء الذكاء الاصطناعي

يعمل وكلاء الذكاء الاصطناعي كوسطاء ذكيين، مما يتيح اتخاذ قرارات مستقلة بناء على إدخال المستخدم. في حين أن LangChain توفر تنفيذ المهام المستندة إلى الوكيل، فإن المطورين الذين يبحثون عن مرونة أكبر غالبًا ما يفضلون أطر عمل وكلاء أكثر تخصصًا.

بدائل وكلاء الذكاء الاصطناعي:

  • AutoGPT: منصة الذكاء الاصطناعي مفتوحة المصدر التي تنشئ وكلاء الذكاء الاصطناعي المستقلين القادرين على جمع المعلومات واتخاذ القرارات وتشغيل مهام سير العمل المتعددة الخطوات دون إدخال مباشر من المستخدم.
  • AgentGPT: منصة وكلاء ذكاء اصطناعي قائمة على المتصفح تتيح للمستخدمين إنشاء وكلاء الذكاء الاصطناعي ونشرهم في الوقت الفعلي.
  • MetaGPT: إطار العمل مفتوح المصدر الذي يحاكي فريق تطوير البرمجيات، ويقسم الأهداف إلى تحليل تنافسي وقصص مستخدمين ونماذج.
  • Grip Tape: إطار العمل القائم على Python لإدارة مهام الذكاء الاصطناعي طويلة الأمد مع تتبع التبعية المنظم.

لماذا لا نستخدم LangChain؟

إطار عمل تنفيذ الوكلاء في LangChain صارم، مما يتطلب من المطورين الامتثال لقوالب مبنية مسبقًا. يوفر كل من AutoGPT و AgentGPT المزيد من التخصيص لوكلاء الذكاء الاصطناعي المستقلين، بينما يركز MetaGPT على التعاون المنظم متعدد الوكلاء.

تنسيق وأتمتة سير العمل في النموذج اللغوي الكبير

نظرًا لأن تطبيقات الذكاء الاصطناعي أصبحت أكثر تعقيدًا، يحتاج المطورون غالبًا إلى تنسيق النماذج اللغوية الكبيرة—أي القدرة على تنسيق نماذج الذكاء الاصطناعي المتعددة وواجهات برمجة التطبيقات ومجموعات البيانات والأدوات ضمن سير عمل واحد.

بينما يقدم LangChain إطارًا معياريًا لربط مكونات النماذج اللغوية الكبيرة المختلفة معًا، يسعى العديد من المطورين إلى تحكم أكبر في كيفية تدفق البيانات عبر تطبيقاتهم.

بدائل تنسيق والأتمتة للنماذج اللغوية الكبيرة:

  • LlamaIndex: إطار العمل المفتوح المصدر المتخصص في RAG، مما يتيح للمطورين فهرسة واستعلام البيانات المنظمة و غير المنظمة لتطبيقات الذكاء الاصطناعي. يتضمن موصلات بيانات قوية لدمج مصادر مختلفة، مثل قواعد البيانات وواجهات برمجة التطبيقات وملفات PDF وقواعد المعرفة المؤسسية.
  • Haystack: إطار عمل مفتوح المصدر لمعالجة اللغة الطبيعية مصمم لبناء تطبيقات مدعومة بنماذج لغوية كبيرة، مثل أدوات البحث الذكية، وروبوتات المحادثة، وأنظمة التوليد المعزز بالاسترجاع (RAG). ويتيح نهجه القائم على خطوط الإنتاج التكامل السلس لنماذج الذكاء الاصطناعي المختلفة.
  • Flowise AI: منصة منخفضة التعليمات البرمجية أو بدون تعليمات برمجية توفر واجهة مرئية لنمذجة ونشر تطبيقات النماذج اللغوية الكبيرة. تمكِّن المطورين من إنشاء سير عمل معياري للذكاء الاصطناعي باستخدام أدوات سحب ووضع، مما يجعل تطوير الذكاء الاصطناعي أكثر سهولة.

لماذا لا نستخدم LangChain؟

تم تصميم LangChain حول هياكل تسلسلية محددة مسبقًا، والتي قد تبدو صارمة بالنسبة للمطورين الذين يحتاجون إلى تطبيقات نماذج لغوية كبيرة قابلة للتخصيص مع أتمتة سير العمل. يعد LlamaIndex مفيدًا للتطبيقات التي تحتوي على الكثير من البيانات، بينما يعد Flowise AI مثاليًا للمطورين الذين يفضلون نهجًا مرئيًا بدون تعليمات برمجية.

استرجاع البيانات ومصادر المعرفة والبحث عن المتجهات

لا تعمل النماذج اللغوية الكبيرة بمعزل عن بعضها البعض—فهي غالبًا ما تحتاج إلى الوصول إلى مصادر البيانات الخارجية لتعزيز استجاباتها. سواءً كان الأمر يتعلق ببناء أنظمة الإجابة على الأسئلة، أو روبوتات المحادثة، أو أدوات التلخيص، يحتاج المطورون إلى طرق فعالة لتخزين واسترجاع ومعالجة المعلومات ذات الصلة. توفر LangChain عمليات التكامل لمخازن المتجهات وقواعد البيانات، ولكن العديد من الحلول البديلة توفر كفاءة وقابلية توسع أكبر.

بدائل لاسترجاع البيانات وتكامل المعرفة:

  • Milvus و Weaviate: قواعد بيانات متجهة مصممة لغرض معين تقوم بتخزين واسترجاع التضمينات بكفاءة، وتحسين البحث الدلالي ومسارات التوليد المعزز بالاسترجاع (RAG). تعمل هذه الأدوات على تحسين دقة توليد النصوص من خلال ضمان رجوع النماذج اللغوية الكبيرة إلى السياق ذي الصلة.
  • قواعد بيانات SQL وقواعد بيانات NoSQL: قواعد البيانات العلائقية وغير العلائقية التقليدية التي توفر إدارة البيانات، مما يجعلها بدائل قوية لتنظيم المدخلات المسترجعة من الذكاء الاصطناعي.
  • Amazon Kendra: نظام بحث مؤسسي قوي يعزز الاستجابات المولدة بالذكاء الاصطناعي من خلال الاتصال بمستودعات الوثائق الداخلية، والويكي، ومجموعات البيانات المنظمة.
  • Instructor و Mirascope: أدوات تركز على استخراج البيانات، مما يسمح للنماذج اللغوية الكبيرة بإخراج تنسيقات منظمة مثل نماذج JSON و Pydantic.

لماذا لا نستخدم LangChain؟

تعمل أدوات الاسترجاع المدمجة في LangChain بشكل جيد للتطبيقات الأساسية، لكن Milvus و Weaviate يوفران بحثًا واسترجاعًا أسرع للتخزين القابل للتوسع. تُعد Amazon Kendra بديلاً قوياً لتطوير الذكاء الاصطناعي للمؤسسات، بينما يعمل Instructor و Mirascope على تبسيط استخراج البيانات المنظمة من استجابات النموذج اللغوي الكبير.

الوصول المباشر إلى النموذج اللغوي الكبير: واجهات برمجة التطبيقات ونماذج المصدر المفتوح

يفضل بعض المطورين الوصول المباشر إلى نماذج الذكاء الاصطناعي بدلاً من استخدام إطارات العمل مثل LangChain. يقلل هذا النهج من طبقات التجريد ويوفر تحكمًا أكبر في تفاعلات النموذج، مما يضمن أوقات استجابة أسرع وسلوك ذكاء اصطناعي قابل للتخصيص.

بدائل للوصول المباشر إلى النموذج اللغوي الكبير:

  • واجهات برمجة تطبيقات OpenAI و Anthropic و Hugging Face: يسمح مزودو نماذج الذكاء الاصطناعي المباشر للمطورين بالعمل دون قيود إطار العمل باستخدام مفتوح المصدر مثل LangChain.
  • BLOOM و LLaMa و Flan-T5: نماذج مفتوح المصدر قائمة على المحولات متوفرة على Hugging Face، مما يوفر الشفافية وقدرات الضبط الدقيق.
  • Google PaLM: نموذج معالجة لغة طبيعية عالي الأداء ينافس GPT-4، مثالي لتوليد النصوص المتقدم وتلخيصها.

لماذا لا نستخدم LangChain؟

يقوم LangChain بتلخيص استدعاءات واجهة برمجة التطبيقات، مما يبسط بعض المهام ويقلل من التحكم في تفاعلات النموذج اللغوي الكبير المباشرة. قد يفضل المطورون الذين يبحثون عن المرونة الكاملة في إدخالات البيانات وتنسيق الاستجابة وقوالب المطالبات العمل مباشرةً مع نماذج الذكاء الاصطناعي باستخدام واجهات برمجة التطبيقات أو البدائل مفتوحة المصدر.

منصات تطوير الذكاء الاصطناعي للمؤسسات

بالنسبة إلى الشركات التي تبحث عن حلول ذكاء اصطناعي مُدارة بالكامل، هناك بدائل لـ LangChain توفر بيئات متكاملة لبناء التطبيقات المدعومة بالذكاء الاصطناعي ونشرها وتوسيع نطاقها. تجمع هذه المنصات بين قدرات التعلم الآلي (ML) وتحليل البيانات ومعالجة اللغة الطبيعية مع ميزات الأمان والامتثال على مستوى المؤسسة.

بدائل لتطوير الذكاء الاصطناعي للمؤسسات:

  • IBM watsonx ™: مجموعة أدوات الذكاء الاصطناعي الشاملة التي تمكّن من تخصيص النماذج اللغوية الكبيرة وضبطها ونشرها. تتكامل مع مصادر البيانات الخارجية وتدعم إنشاء النصوص وتلخيصها وتطبيقات الإجابة على الأسئلة.
  • Amazon Bedrock: خدمة ذكاء اصطناعي مُدارة تُبسِّط نشر التطبيقات المدعومة بالنماذج اللغوية الكبيرة على نطاق واسع، خاصةً في بيئات AWS.
  • Amazon SageMaker JumpStart: مركز التعلم الآلي الذي يضم نماذج ذكاء اصطناعي مجهزة مسبقًا يمكن للمطورين نشرها بسرعة لتطبيقات مدعومة بالذكاء الاصطناعي.
  • Microsoft Azure AI: منصة قائمة على السحابة يوفر استضافة النماذج اللغوية الكبيرة والضبط الدقيق للنماذج وتنسيق سير العمل للأتمتة المدعومة بالذكاء الاصطناعي.

لماذا لا نستخدم LangChain؟

LangChain هو تطبيق مفتوح المصدر يركز على المطور أولاً. توفر منصات الذكاء الاصطناعي المؤسسي مثل IBM watsonx و Microsoft Azure AI حلولاً متكاملة للذكاء الاصطناعي مع إمكانات مدمجة للأمان وقابلية التوسع وتكامل الأعمال.

أكاديمية الذكاء الاصطناعي

لماذا تعد نماذج الأساس نقلة نوعية في الذكاء الاصطناعي

تعرَّف على فئة جديدة من نماذج الذكاء الاصطناعي المرنة والقابلة لإعادة الاستخدام التي يمكن أن تفتح مصادر جديدة للإيرادات، وتُسهم في تقليل التكاليف، وزيادة الإنتاجية، ثم استخدم دليلنا لمعرفة المزيد من التفاصيل.

اختيار بديل LangChain المناسب لمشروعك

  • إذا كنت تعطي الأولوية لهندسة المطالبات: استخدم Vellum AI أو Mirascope أو Guidance.
  • إذا كنت بحاجة إلى ضبط دقيق وتصحيح الأخطاء: فكر في استخدام Galileo لقابلية الملاحظة.
  • إذا كنت تقوم ببناء وكلاء الذكاء الاصطناعي المستقلين: تحقق من AutoGPT أو MetaGPT أو Grip Tape.
  • إذا كنت بحاجة إلى تنظيم سير العمل: جرّب LlamaIndex أو Haystack أو Flowise AI.
  • إذا كنت تعمل مع استرجاع البيانات: استخدم Milvus أو Weaviate أو Instructor.
  • إذا كنت تفضل الوصول المباشر إلى واجهة برمجة التطبيقات: استخدم OpenAI أو OpenAI أو Hugging Face أو Google PaLM.
  • إذا كنت تعمل في بيئة مؤسسية: جرّب IBM watsonx أو Amazon Bedrock أو Azure AI.
حلول ذات صلة
IBM Bob

تسريع عملية تسليم البرامج مع Bob، شريكك المدعوم بالذكاء الاصطناعي للتطوير الآمن والمدرك للأهداف.

استكشف ®IBM Bob
IBM® watsonx Orchestrate

يمكنك بسهولة تصميم مساعدي ووكلاء الذكاء الاصطناعي القابلين للتوسع وأتمتة المهام المتكررة وتبسيط العمليات المعقدة باستخدام IBM watsonx Orchestrate.

استكشف watsonx Orchestrate
حلول الذكاء الاصطناعي

استفِد من الذكاء الاصطناعي في عملك بالاستعانة بخبرة IBM الرائدة في مجال الذكاء الاصطناعي ومحفظة حلولها التي ستكون بجانبك.

استكشف حلول الذكاء الاصطناعي
اتخذ الخطوة التالية

أينما كنت ضمن دورة حياة تطوير البرمجيات، فإن Bob يساندك عبر تقديم تقييمات قائمة على الوكلاء ومدركة للهدف ومتوافقة مع متطلبات الأمان، بما يسرّع تسليم برمجيات عالية الجودة.

  1. اكتشف IBM Bob
  2. استكشف watsonx Orchestrate