الـ Tool Calling· الدرس 7 من 7
الأدوات المتوازية
في سطر واحد · أوقات الموديل بيطلب كذا أداة مرّة واحدة، مش واحدة ورا التانية — وإنت تقدر تشغّلهم مع بعض عشان توفّر وقت.
لو كل أداة استنّت اللي قبلها من غير داعي، ردّك بيبقى بطيء. تشغيل المستقلّين بالتوازي بيقصّر زمن الاستجابة بشكل ملموس.
لو الموديل عايز تلات معلومات مالهمش علاقة ببعض، مفيش داعي تجيبهم بالدور. اطلبهم كلهم في نفس اللحظة زي ما تبعت تلات رسايل مع بعض.
زي ما تبعت ٣ ناس يجيبوا ٣ حاجات في نفس الوقت بدل ما واحد يروح ويرجع ٣ مرات — بس بشرط الحاجات ما تكونش واحدة معتمدة على التانية.
مستخدم يسأل «قارن سعر وطقس ورصيد ٣ مدن» — الموديل يطلب ٣ أدوات مرة واحدة، تشغّلهم بالتوازي، وترجّعلهم كلهم فيكمّل بردّ واحد.
الموديل ممكن يرجّع في رد واحد أكتر من tool call block، كل واحد بـ id مختلف. كودك ساعتها بيشغّلهم مع بعض (Promise.all في JavaScript مثلًا) وبيرجّع نتيجة لكل id في نفس الرسالة التالية — كل نتيجة مربوطة بالـ id بتاعها عشان الموديل يعرف مين بتاع مين. الشرط الذهبي: التوازي للاستدعاءات المستقلة بس — لو استدعاء محتاج ناتج اللي قبله (هات العميل الأول وبعدين فواتيره)، دي لفّتين متتاليتين في اللوب، مش استدعاء متوازي. ولو واحدة من المتوازيين فشلت، رجّع نجاح الناجحين وخطأ الفاشلة — متضحّيش بالكل.
🧪 جرّب بنفسك: مستخدم طلب «هات طقس القاهرة والإسكندرية وأسوان، وبعدين رشّحلي أنسبهم لرحلة بكرة». قسّم المهمة: أنهي استدعاءات ينفع تجري بالتوازي؟ (طقس التلات مدن) وأنهي خطوة لازم تستنى؟ (الترشيح محتاج النتايج التلاتة). اكتب شكل رد الموديل في اللفة الأولى (٣ tool calls بـ 3 ids) وشكل رسالة النتايج اللي هترجعهاله.
أشهر الأخطاء: (1) تشغيل استدعاءات معتمدة على بعض بالتوازي — التاني بيشتغل بداتا لسه مجتش. (2) عمليات كتابة متوازية على نفس المورد (تحديثين لنفس السجل) — سباق ونتيجة عشوائية. (3) ترجّع النتايج من غير ربط صح بالـ ids فتتلخبط الإجابات. (4) أداة واحدة فشلت فترمي الباتش كله. (5) افتراض إن الموديل هيطلب التوازي دايمًا — ده قراره هو، وكودك لازم يستحمل الحالتين: طلب واحد أو عدة طلبات.
قراءات مستقلة عن بعضها: طقس ٣ مدن، بيانات من ٣ مصادر مختلفة، فحوصات متعددة لنفس الطلب — دي أرض التوازي الطبيعية.
أي سلسلة فيها اعتماد (ناتج خطوة بيدخل في اللي بعدها) لازم تفضل تسلسلية، وكذلك الكتابات على نفس المورد — التوازي هنا بيجيب bugs سباقات مش سرعة.