Function calling (LLM) (FA)

From Systems analysis Wiki
Jump to navigation Jump to search

Function Calling (فراخوانی توابع) — مکانیزمی در مدل‌های زبانی بزرگ (LLM) است که به مدل اجازه می‌دهد از طریق تولید داده‌های ساختاریافته (معمولاً JSON) برای فراخوانی توابع، به‌جای پاسخ متنی مستقیم، با ابزارها و API های خارجی تعامل داشته باشد[1].

به عبارت دیگر، مدل بر اساس درخواست کاربر تشخیص می‌دهد که کدام تابع از مجموعه پیشنهادی باید فراخوانی شود و با چه پارامترهایی. این مکانیزم حوزه کاربرد LLM را گسترش می‌دهد و به آن‌ها امکان می‌دهد به‌عنوان رابطی میان زبان طبیعی و اقدامات عملی عمل کنند. این امر امکان یکپارچه‌سازی هوش مصنوعی با سیستم‌های خارجی را فراهم می‌کند: مدل می‌تواند داده‌های به‌روز را استعلام کند، عملیات انجام دهد یا از سرویس‌ها استفاده کند، که در ساخت دستیارهای هوشمند و عامل‌های خودمختار بسیار ارزشمند است. استفاده از ابزارهای خارجی همچنین با مراجعه به منابع معتبر، خطر توهم‌زایی (واقعیت‌های ساختگی) را کاهش می‌دهد[2].

تاریخچه و رویکردهای پیاده‌سازی

رویکردهای اولیه (prompting و Toolformer)

ایده آموزش مدل‌های زبانی برای فراخوانی ابزارها در سال‌های ۲۰۲۲–۲۰۲۳ شکل گرفت. رویکردهای اولیه بر فناوری‌های prompting پیچیده متکی بودند. به‌عنوان مثال، در سال ۲۰۲۲ طرح ReAct پیشنهاد شد که در آن مدل در طول گفتگو میان استدلال و اقدام (فراخوانی ابزارها) که در یک متن رمزگذاری شده بودند، تناوب برقرار می‌کرد.

گامی کلیدی ظهور مدل Toolformer بود که توسط پژوهشگران Meta در اوایل ۲۰۲۳ معرفی شد. Toolformer نشان داد که LLM ها را می‌توان به‌طور ویژه fine-tune کرد تا به‌طور مستقل ابزارهای خارجی (ماشین‌حساب، موتور جستجو، تقویم) را با راهنمایی‌های متنی فراخوانی کنند و token های ویژه فراخوانی API را در متن تولیدشده درج نمایند[3].

پشتیبانی رسمی و توسعه

شرکت OpenAI نقطه عطف مهمی را رقم زد که در ژوئن ۲۰۲۳ پشتیبانی از Function Calling را به‌صورت رسمی در API های خود برای مدل‌های GPT-3.5 و GPT-4 پیاده‌سازی کرد[4]. نسخه‌های جدید مدل‌ها fine-tune شدند تا موقعیت‌هایی را که درخواست کاربر متضمن مراجعه به یک تابع خارجی است شناسایی کنند و یک JSON object دقیقاً ساختاریافته با آرگومان‌ها تولید نمایند. OpenAI این قابلیت را «روشی جدید برای اتصال مطمئن GPT به ابزارها و API های خارجی» نامید.

ابتکارات متن‌باز

پس از پیاده‌سازی‌های تجاری، مدل‌های متن‌باز fine-tune شده برای تولید فراخوانی‌های صحیح توابع پدید آمدند.

  • Gorilla: پروژه UC Berkeley، نسخه fine-tune شده LLaMA که قادر است فراخوانی‌هایی به هزاران API مختلف تشکیل دهد. برای ارزیابی چنین مدل‌هایی، benchmark ای به نام Berkeley Function-Calling Leaderboard ایجاد شد[5].
  • ToolAlpaca، ToolLLaMA، Hermes: مجموعه‌ای از مدل‌های متن‌باز fine-tune شده بر نمونه‌های مصنوعی فراخوانی توابع که اغلب توسط مدل‌های قدرتمندتر تولید شده‌اند.

مکانیزم کار

فرآیند استفاده از Function Calling معمولاً شامل چند مرحله است:

  1. تعریف توابع. توسعه‌دهنده از پیش مجموعه‌ای از توابع در دسترس مدل (مثلاً API های خارجی) را تعریف می‌کند و signature ها و هدف آن‌ها را معمولاً در قالب JSON Schema توصیف می‌کند.
  2. تحلیل درخواست. در طول گفتگو، مدل قصد کاربر را تحلیل می‌کند و به‌طور مستقل تصمیم می‌گیرد که آیا برای پاسخ باید یکی از توابع تعریف‌شده فراخوانی شود.
  3. تولید فراخوانی. اگر اقدامی لازم باشد، LLM به‌جای متن معمولی، یک خروجی ساختاریافته ویژه (مثلاً JSON با نام تابع و آرگومان‌ها) تولید می‌کند. اگر فراخوانی لازم نباشد، مدل یک پاسخ متنی معمولی بازمی‌گرداند.
  4. اجرای تابع. برنامه خارجی (پوسته چت‌بات یا عامل) JSON را دریافت می‌کند، فراخوانی واقعی تابع مشخص‌شده را با پارامترهای پیشنهادی اجرا می‌کند و نتیجه را به مدل بازمی‌گرداند.
  5. شکل‌گیری پاسخ نهایی. مدل از داده‌های دریافتی برای تولید پاسخ نهایی به کاربر استفاده می‌کند[4].

برای مدیریت این فرآیند چندمرحله‌ای در طول آموزش مدل‌ها، از قالب‌های گفتگوی ویژه‌ای استفاده می‌شود؛ مثلاً قالب ChatML از OpenAI که در آن علاوه بر نقش‌های «کاربر» و «دستیار»، نقش «تابع» برای انتقال نتایج فراخوانی‌ها معرفی می‌شود.

کاربردها و مزایا

قابلیت فراخوانی توابع دامنه وظایف قابل حل با LLM را به‌طور چشمگیری گسترش می‌دهد.

  • یکپارچه‌سازی با API های خارجی. مدل می‌تواند با فراخوانی سرویس‌های خارجی به درخواست‌هایی که نیاز به اطلاعات به‌روز دارند پاسخ دهد (مثلاً برای دریافت آب‌وهوا، نرخ ارز، اخبار).
  • اتوماسیون اقدامات کاربر. LLM می‌تواند وظایف روتین را انجام دهد: ارسال ایمیل، ایجاد رویداد در تقویم، ثبت سفارش در فروشگاه‌های اینترنتی.
  • دسترسی به پایگاه‌های داده و تحلیل. درخواست‌های زبان طبیعی می‌توانند به فراخوانی‌های API داخلی یا پرس‌وجوهای SQL برای استخراج و تحلیل داده‌ها تبدیل شوند.
  • استخراج اطلاعات ساختاریافته. LLM می‌تواند خودش حقایق را از متن طولانی (مثلاً نام‌ها، تاریخ‌ها، آدرس‌ها) استخراج کند و آن‌ها را در قالب یک JSON array ساختاریافته مناسب برای پردازش برنامه‌ای بعدی بازگرداند.

مسائل امنیتی

Function Calling در عین گسترش قابلیت‌های مدل‌ها، خطرات جدیدی نیز به همراه دارد.

  • خروجی‌های تأییدنشده. تعامل مدل با ابزارهای خارجی باید به‌دقت محافظت شود. اگر مدل مقداری مخرب یا نادرست از API دریافت کند، ممکن است آن را در پاسخ درج کند یا بر اساس آن تابع دیگری فراخوانی کند که به عواقب غیرقابل‌پیش‌بینی منجر می‌شود.
  • حملات از طریق آرگومان‌های توابع. پژوهشگران آسیب‌پذیری‌هایی مختص حالت Function Calling کشف کردند. در سال ۲۰۲۵ حمله‌ای با عنوان «جنبه تاریک Function Calling» نمایش داده شد. ماهیت آن در پیشنهاد یک «تابع» ویژه به مدل است که در داخل آرگومان‌های آن یک دستورالعمل ممنوعه (jailbreak payload) پنهان شده است. مدل با پیروی از اصل فراخوانی تابع، آرگومان‌هایی حاوی محتوای ناقض قوانین تولید می‌کند و بدین‌ترتیب فیلترهای اعتدال را دور می‌زند. آزمایش‌ها موفقیت حمله را در بیش از ۹۰٪ موارد روی شش مدل مدرن از جمله GPT-4 و Claude نشان داد[2].

برای پیشگیری از چنین حوادثی، توصیه می‌شود تنها ابزارهای مورداعتماد در اختیار مدل قرار گیرند، تأیید کاربر قبل از اجرای اقدامات حیاتی پیاده‌سازی شود و از prompt های «دفاعی» ویژه و بررسی دقیق آرگومان‌ها برای محتوای خطرناک استفاده گردد.

پیوندها

  • اعلام رسمی Function Calling از OpenAI
  • صفحه پروژه Gorilla LLM
  • Apideck (2024). An Introduction to Function Calling and Tool Use. Apideck Blog.
  • LangChain (2025). Tool Calling (Documentation). LangChain Docs.
  • Mistral AI (2025). Function Calling – Documentation. Mistral Docs.
  • Hopsworks (2024). What is Function Calling with LLMs?. Hopsworks Dictionary.
  • Hopsworks (2024). Unlocking the Power of Function Calling with LLMs. Hopsworks Blog.
  • University of California, Berkeley (2025). Berkeley Function Calling Leaderboard V3. Online Resource.

منابع

  • Wu, Z. et al. (2025). The Dark Side of Function Calling: Pathways to Jailbreaking Large Language Models. ACL 2025.
  • OpenAI (2023). Function Calling and Other API Updates. OpenAI Blog.
  • Schick, T. et al. (2023). Toolformer: Language Models Can Teach Themselves to Use Tools. arXiv:2302.04761.
  • Patil, S. G. et al. (2023). Gorilla: Large Language Model Connected with Massive APIs. arXiv:2305.15334.
  • Liu, W. et al. (2024). ToolACE: Winning the Points of LLM Function Calling. arXiv:2409.00920.
  • Yao, S. et al. (2022). ReAct: Synergizing Reasoning and Acting in Language Models. arXiv:2210.03629.

یادداشت‌ها

  1. «What is Function Calling with LLMs?». Hopsworks. [۱]
  2. 2.0 2.1 Wu, Z. et al. «The Dark Side of Function Calling: Pathways to Jailbreaking Large Language Models». Proceedings of the 2025 Conference on Empirical Methods in Natural Language Processing, 2025. [۲]
  3. Schick, T. et al. «Toolformer: Language Models Can Teach Themselves to Use Tools». arXiv:2302.04761, 2023. [۳]
  4. 4.0 4.1 «Function calling and other API updates». OpenAI, 2023. [۴]
  5. «Gorilla: Large Language Model Connected to Massive APIs». University of California, Berkeley. [۵]