دمج آلة حاسبة ومفسر Python كأدوات يستخدمها الـ Agent لحل المسائل المعقدة

دقائق القراءة: 5

دمج آلة حاسبة ومفسر Python كأدوات يستخدمها الـ Agent لحل المسائل المعقدة

عندما نصل إلى مرحلة بناء العملاء الأذكياء (AI Agents)، نكتشف سريعاً أن النموذج اللغوي وحده لا يكفي دائماً. فـ LLM ممتاز في الفهم اللغوي، إعادة الصياغة، والتخطيط، لكنه ليس أفضل مكوّن لتنفيذ العمليات الحسابية الدقيقة أو تشغيل منطق برمجي متعدد الخطوات. هنا تظهر أهمية تزويد الـ Agent بأدوات خارجية مثل Calculator وPython REPL.

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

لماذا يحتاج الـ Agent إلى أدوات تنفيذية؟

المشكلة الأساسية أن النموذج اللغوي يتنبأ بالنص التالي، وليس آلة تنفيذ رياضي أو بيئة تشغيل شيفرة. لذلك قد يخطئ في:

  • العمليات الحسابية الطويلة أو المتداخلة.
  • تحويل الوحدات والنسب المئوية المركبة.
  • تحليل الجداول أو القوائم رقمياً.
  • تنفيذ منطق برمجي مثل الحلقات loops أو دوال التجميع.

لذلك نضيف أداتين متكاملتين:

  • Calculator: مناسبة للتعابير الرياضية المباشرة والسريعة.
  • Python Interpreter: مناسب للمشكلات الأعمق التي تتطلب متغيرات، دوال، تحليل بيانات، أو خطوات متعددة.

المعمارية الداخلية لتدفق العمل

داخل التطبيق، يمر الطلب عادة عبر خط معالجة واضح:

  1. استقبال سؤال المستخدم بصيغة طبيعية.
  2. تمريره إلى النموذج مع تعليمات تصف الأدوات المتاحة.
  3. قيام النموذج بقرار Tool Selection.
  4. استدعاء الأداة المناسبة مع مدخلات دقيقة.
  5. إرجاع ناتج التنفيذ إلى النموذج.
  6. صياغة الإجابة النهائية بلغة مفهومة ومختصرة.

هذا النمط قريب من مفهوم Reason + Act، حيث يفكر النموذج ثم يتصرف عبر الأداة. وعند دمجه لاحقاً مع نظام RAG أو مع تحليل ملفات Excel/CSV، نحصل على أنظمة أكثر واقعية للاستخدام الإنتاجي.

متى نستخدم Calculator ومتى نستخدم Python؟

آلة حاسبة للمهام السريعة

استخدم Calculator عندما تكون المدخلات عبارة عن تعبير حسابي واضح مثل:

  • حساب هامش الربح.
  • إيجاد نسبة مئوية.
  • تنفيذ معادلة واحدة أو معادلتين بسيطتين.

مفسر Python للمنطق المركب

استخدم Python REPL عندما يتطلب السؤال:

  • تعريف متغيرات وسيطة.
  • تنفيذ أكثر من خطوة حسابية.
  • فرز وتجميع البيانات.
  • تحليل قائمة أرقام أو محاكاة سيناريو.

إعداد بيئة العمل وبناء الأدوات

قبل التنفيذ، تأكد من إعداد البيئة كما شرحنا في تثبيت مكتبات Python الأساسية، ثم من تهيئة الاتصال بالنموذج كما في جلب مفاتيح API وكتابة أول سكربت اتصال.

المثال التالي يوضح بناء Agent باستخدام LangChain مع أداتين: آلة حاسبة ومفسر بايثون.

from langchain_openai import ChatOpenAI
from langchain.agents import initialize_agent, AgentType
from langchain.tools import Tool
from langchain_experimental.utilities import PythonREPL
from langchain.chains.llm_math.base import LLMMathChain
import os

llm = ChatOpenAI(
    model="gpt-4o-mini",
    temperature=0
)

math_chain = LLMMathChain.from_llm(llm=llm, verbose=True)
python_repl = PythonREPL()

calculator_tool = Tool(
    name="Calculator",
    func=math_chain.run,
    description="Useful for solving direct math expressions, percentages, equations, and precise arithmetic."
)

python_tool = Tool(
    name="Python_REPL",
    func=python_repl.run,
    description="Useful for running Python code for multi-step calculations, loops, data aggregation, and logic."
)

tools = [calculator_tool, python_tool]

agent = initialize_agent(
    tools=tools,
    llm=llm,
    agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION,
    verbose=True
)

question = """
A product costs 120 dollars.
It increased by 15%, then a discount of 8% was applied.
Finally, tax of 5% was added.
What is the final price?
"""

response = agent.run(question)
print(response)

في هذا المثال، النموذج يقرأ الوصف النصي لكل أداة، ثم يقرر هل تكفيه أداة Calculator أم يحتاج إلى Python_REPL. لذلك فإن جودة وصف الأداة Tool Description تؤثر مباشرة على جودة القرار.

كيف نصمم برومبت الوكيل بشكل احترافي؟

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

You are an AI agent with access to two tools: Calculator and Python_REPL.
Use Calculator for direct arithmetic.
Use Python_REPL for multi-step logic or programmatic analysis.
Always prefer the simplest correct tool.
Return a clear final answer with concise reasoning.

هذه التعليمات تساعد على تقليل الاستدعاءات العشوائية للأدوات، وتمنع النموذج من كتابة كود عندما تكفيه عملية حسابية بسيطة.

مثال عملي لمسألة معقدة تتطلب Python

لو طلب المستخدم تحليل أرباح شهرية وحساب المتوسط والانحراف عن الهدف، فغالباً ستكون أداة Python_REPL أنسب:

question = """
Monthly profits are:
[1200, 1350, 1280, 1600, 1420, 1510]
Calculate:
1) average profit
2) highest value
3) difference between average and target 1500
"""

response = agent.run(question)
print(response)

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

اعتبارات الأمان والموثوقية في بيئة الإنتاج

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

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

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

أفضل الممارسات عند دمج الأدوات مع الوكلاء

  • اكتب وصفاً دقيقاً لكل أداة حتى يحسن النموذج الاختيار.
  • اجعل temperature=0 في المهام الحساسة حسابياً.
  • افصل بين أدوات الحساب وأدوات جلب المعرفة مثل RAG.
  • أعد النتائج بصيغة منظمة، ويمكن لاحقاً استخدام Output Parsers إذا أردت مخرجات JSON.
  • اختبر حالات الفشل، مثل إدخال معادلات غامضة أو بيانات ناقصة.

الخلاصة الهندسية

دمج Calculator وPython Interpreter مع الـ Agent ليس مجرد تحسين جانبي، بل هو خطوة معمارية أساسية لتحويل النموذج من مولّد نصوص إلى نظام تنفيذي قادر على حل مسائل معقدة بدقة أعلى. الأول مناسب للحساب المباشر، والثاني مناسب للمنطق البرمجي متعدد المراحل. وعندما يختار الوكيل الأداة الصحيحة في الوقت الصحيح، نحصل على مزيج قوي يجمع بين الفهم اللغوي، التنفيذ الحتمي، والتفسير البشري الواضح.

في المشاريع المتقدمة، يمكن لاحقاً توسيع هذا النمط بضم أدوات أخرى مثل قواعد البيانات، البحث الدلالي عبر Vector Databases، أو خطوط RAG، ليصبح الـ Agent منصة قرار وتنفيذ متكاملة، لا مجرد واجهة دردشة ذكية.

2 comments

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *