أبرز النقاط
- Restock هو وكيل نموذجي يدفع مقابل عمليات شراء حقيقية. يعمل في Slack عبر Managed Deep Agents، ويبحث عن المنتجات، ويبني سلة شراء، ويُتم الدفع من خلال واجهة برمجية تدعم بروتوكول المدفوعات الآلية (MPP).
- تبقى المدفوعات آمنة وضمن الميزانية. تتولى Link، محفظة Stripe للمستهلكين، عملية الدفع، لذا لا يرى الوكيل رقم البطاقة أبداً. يوافق المستخدم على طلب صرف بمبلغ محدد مسبقاً، ولا يمكن للوكيل أن ينفق أكثر منه.
- ابنِ وكيلك الخاص القادر على الدفع. ابدأ من الكود النموذجي لـ Restock، وأخبرنا بما ستبنيه.
الوكلاء أصبحوا جيدين بالفعل في البحث عن أشياء للشراء. أما الدفع فأصعب: فهو ينقل أموالاً حقيقية، ويتطلب بيانات اعتماد يجب ألا يراها النموذج أبداً، ويصعب التراجع عنه.
لإظهار كيفية بناء وكيل قادر على الدفع، أنشأنا Restock، وهو وكيل نموذجي للقرطاسية المكتبية يعمل في Slack عبر Managed Deep Agents. يبحث في منتجات حقيقية، ويبني سلة شراء، ويدفع من خلال Link، محفظة Stripe للمستهلكين، التي تمنح الوكلاء أكثر الطرق أماناً للدفع.
يتتبع هذا المنشور طلباً واحداً من الرسالة الأولى حتى تأكيد الطلب:
نحن على وشك النفاد من الأقلام. هل يمكنك أن تجد علبة من 12 قلم حبر أزرق للمكتب، بمجموع أقل من 25 دولاراً؟
يطلب Restock الأقلام مقابل 22.18 دولاراً شاملة الرسوم. الأسعار في هذا المنشور للتوضيح فقط.
اختيار طريقة الدفع
يمكن للوكيل أن يدفع عبر تشغيل صفحة الدفع الخاصة بالتاجر في متصفح، لكن ذلك هشّ. تتغير الصفحات، وتحظر المواقع عمليات الدفع الآلية، ويجب إدخال بيانات الدفع دون كشفها للنموذج.
أما واجهة برمجية تدعم بروتوكول المدفوعات الآلية (MPP) فتتجنب ذلك: فهي تخبر الوكيل بدقة بالمبلغ المطلوب دفعه وتقبل الدفعة مباشرة. المقايضة هي التغطية، إذ لا يستطيع الوكيل الشراء إلا عبر واجهات برمجية تدعم MPP. وهذه القائمة في تزايد، إذ انضم مجمّعات أدوات مثل Apify وMercator إلى أدوات قطاعية مثل Zinc المخصصة للبيع بالتجزئة. يستخدم Restock Zinc، لكن النمط لا يعتمد عليها.
كيف تتكامل المكوّنات
يتكون Restock من أربعة مكوّنات:
- Link يحفظ طرق الدفع الخاصة بالمستخدم ويطلب منه الموافقة على الدفعات.
- MPP، و Machine Payments Protocol، يحدد تبادل الدفع عبر HTTP. يرد التاجر بـ
402 Payment Requiredوإرشادات الدفع، ويعيد العميل المحاولة ببيانات اعتماد دفع. - Zinc يبحث في المنتجات ويضع طلبات التجزئة عبر MPP order API.
- Managed Deep Agents (MDA) يستضيف الوكيل ويتولى Slack والمراجعة البشرية وبيانات الاعتماد والحالة المحفوظة.

البحث وسلة المشتريات
كتبنا أدوات مخصصة لبحث Zinc والسلة والدفع، إضافة إلى التعليمات التي تشكّل المحادثة. وتتولى MDA الباقي، بما في ذلك حفظ المحادثات والطلبات، بحيث يمكن للشخص العودة بعد أيام والسؤال عن نفس الأقلام. إليك التخطيط وتعريف وكيل مختصر:
restock-agent/
├── agent.py # the agent: model + tools
├── instructions.md # how Restock talks and when it uses each tool
├── tools/restock.py # the tools the model can call
├── restock/ # Zinc, Link wallet, cart and order storage
└── sandbox/setup.sh # installs the Link CLI in the sandbox
agent = define_deep_agent(
name="restock",
model=ChatOpenAI(model=os.environ.get("OPENAI_MODEL", "gpt-5.6-sol")),
tools=[
search_restock_products, # Zinc search
prepare_restock_order, # save the cart
set_restock_payment_amount, # upfront amount, within the budget
request_restock_payment, # Slack review, then Link approval
wait_for_restock_approval,
check_restock_order, # order status from Zinc
],
)
بالنسبة لطلب الأقلام، يبحث Restock في Zinc باستخدام مفتاح Zinc API وحساب بحث مُموّل (البحث لا يُدفع عبر Link). يختار المستخدم علبة من 12 قلمًا، ويحفظ Restock السلة دون مبلغ دفع.
تحديد المبلغ المسبق
يتعامل Restock مع ميزانية 25 دولارًا كسقف أعلى، وليس كمبلغ يُحصَّل. فالضرائب والشحن غير معروفين من قائمة المنتج، ولا يُستقر على الإجمالي إلا بعد تقديم طلب التجزئة. لذا يسأل Restock المستخدم عن مقدار ما يدفعه مسبقًا، بأي مبلغ حتى 25 دولارًا. تأخذ Zinc ذلك المبلغ عند تقديم الطلب، وتدفع للمتجر منه، وتُعيد الباقي كمبلغ مسترد.
بالنسبة إلى الأقلام، يختار المستخدم 23 دولارًا. تحتفظ Zinc برسم أساسي قدره 1 دولار، مما يترك 22 دولارًا كبدل تجزئة للمنتج والضريبة والشحن. الرسوم الاختيارية، مثل تحديثات الطلب عبر البريد الإلكتروني من Zinc، يمكن أن تقلص هذا المبلغ أكثر، لذا قبل المراجعة، يطلب Restock الطلب دون دفع ويقرأ الرسوم الفعلية من Zinc's 402 Payment Required تحدٍ.
إبقاء بيانات الاعتماد بعيدة عن النموذج
لا يتعامل النموذج مطلقًا مع الأسرار المستخدمة لدفع قيمة الطلب. تعمل جلسة Link في مملوك للمستخدم MDA الاتصال، لذا تبقى محفظة كل شخص ملكه وحده. يقع عنوان التسليم والبريد الإلكتروني للإشعارات ومفتاح Zinc API في Connections المملوكة للوكيل. يشغّل Link CLI عملية تسجيل الدخول داخل MDA. بيئة اختبار معزولة مُدارةيحتفظ برنامج مساعد صغير بالجلسة المحفوظة في اتصال المستخدم (Connection)، ويضعها في بيئة الاختبار المعزولة (sandbox) فقط أثناء تشغيل أمر ما. إنّ Connecting Link لا يوافق على عملية شراء، وتعيد المحادثات اللاحقة استخدام الجلسة.
مراجعة عملية الشراء في Slack
قبل دفع أي شيء، يراجع المستخدم سلة المشتريات، وبطاقة المكتب، والرسوم، والمبلغ المقدّم في Slack. ويبقى عنوان التسليم خاصًا. Restock تُثير يُقاطِع لهذه المراجعة، لذا يبقى التشغيل متوقفاً مؤقتاً حتى ينقر المستخدم على Approve أو Reject في Slack. لا شيء يكتبه النموذج في استدعاء أداة يمكنه الموافقة عليه.
الدفع باستخدام Link بدلاً من MPP
بعد ذلك، ينشر Restock رابط موافقة من Link في محادثة Slack بالمبلغ المحدد في تحدّي Zinc، وهو نفسه 23 دولارًا. يوافق المستخدم عليه على موقع Link، وهو ما يمثل موافقة المحفظة نفسها على الدفع.
بمجرد موافقة Link، يرسل Restock الطلب المدفوع إلى Zinc مع رمز دفع مشترك من Link كبيانات الاعتماد، وتعالج Zinc الدفعة عبر Stripe. pympp يتولى تنسيق MPP.
تقرأ أداة الدفع الرمز من ملف sandbox خاص، وتحذفه بعد الاستخدام، وتعيد للنموذج ملخصًا عامًا فقط. الرمز لا يفرض تفاصيل السلة من تلقاء نفسه، لذا تتحقق الأداة أيضًا من الطلب مقابل ما راجعه المستخدم وتتأكد من أن الموافقة لا تزال حديثة.
تأكيد الطلب
يبلغ طلب المتجر 21.18 دولارًا (14.99 دولارًا للأقلام، و1.20 دولارًا كضريبة، و4.99 دولارًا للشحن)، وهو ضمن حد 22 دولارًا. يدفع المستخدم 22.18 دولارًا بما في ذلك رسوم Zinc، وتعيد Zinc المبلغ الباقي وهو 0.82 دولارًا.

يؤكد Restock في Slack بمجرد أن يبلّغ Zinc order_placed، ويشارك معلومات التتبع عند شحن المتجر للطلب. وبعيدًا عن الأسعار التوضيحية، شغّلنا Restock من البداية إلى النهاية على نشر مستضاف: وصل طلب مباشر إلى order_placed، ووصل الاسترداد المتوقع.
ابدأ الآن
الكود متاح على langchain-samples/restock-agent، وتشمل README يشرح خطوات الإعداد والنشر خطوة بخطوة. أما دليل إعداد Slack الخاص بـ MDA فيغطي ربط تطبيق Slack. دليل إعداد Slack يغطي ربط تطبيق Slack.
Restock نموذج توضيحي: يدعم التوصيل داخل الولايات المتحدة وبالدولار الأمريكي فقط، ومكتبًا واحدًا لكل نشر، والدفع من محفظة مقدم الطلب نفسه.
لدي Restock ثلاثة أوضاع. اضبط RESTOCK_MODE لاختيار أحد، وجربها بالترتيب:
- Rehearsal (
rehearsal): منتجات وهمية وموافقة محاكاة. يتطلب مفتاح OpenAI API ومساحة عمل LangSmith مع صلاحية الوصول إلى Managed Deep Agents. - Link test approval (
link-test): بحث حقيقي عبر Zinc وموافقة حقيقية عبر Link، دون أي شراء. يضيف محفظة Link ومفتاح Zinc API وحساب بحث Zinc ممول وتفاصيل التوصيل. - Live purchase (
live): دفعة حقيقية وطلب حقيقي من متجر تجزئة.
ينطبق هذا النمط على أي وكيل ينفق المال. دع الوكيل يبحث ويبني سلة الشراء، مع إبقاء حد الإنفاق والموافقات في كود لا يستطيع النموذج لمسه، ولا تُعدّ الخدمة قد طُلبت إلا عندما يؤكد المتجر ذلك.
جرب Restock، وأخبرنا برأيك، وشاركنا ما ستبنيه بناءً عليه!
