این روزها همهجا میشنوی: «ایجنت». ایجنت ساختم، ایجنت بسازیم، این ایجنته، اون ایجنته. یهکم گیجکننده شده. تو این مقاله خیلی ساده و بدون پیچوندن میگم ایجنت دقیقاً چیه — و میبینی که از یه ایدهی خیلی ساده ساخته شده: Function Calling.
ایجنت در واقع چیه؟
ایجنت همون هوش مصنوعیه که باهاش چت میکنی — مثل ChatGPT یا Claude — ولی وقتی از حالتِ «فقط پرسش و پاسخ» در میاد و میتونه واقعاً یه کاری انجام بده، تبدیل میشه به ایجنت. مثلاً توی Claude Code میگی «یه بازی اسنیک برام بساز»، و خودش میره یه فایل جدید میسازه، توش کد مینویسه، دستور توی ترمینال اجرا میکنه. این «کار انجام دادن» همون چیزیه که چتِ معمولی رو تبدیل به ایجنت میکنه.
مگه هوش مصنوعی فقط متنه؟ پس چطور کار انجام میده؟
نکتهی کلیدی همینه. یه مدل زبانی (LLM) خودش فقط متن میگیره و متن میده — ورودی متن، خروجی متن. پس چطور یه فایل میسازه یا دستور اجرا میکنه؟
جواب اینه که خودِ مدل این کارو نمیکنه؛ یه نرمافزار دورش نوشته شده (همون «ایجنت» — مثل Claude Code یا OpenCode) که خروجیِ متنیِ مدل رو میخونه، دنبال یه الگوی خاص میگرده، و اگه دید مدل اون الگو رو تولید کرده، میره واقعاً یه فانکشن رو اجرا میکنه. به این میگن Function Calling. یعنی مدل توی جوابش یه «دستور» میذاره، نرمافزار اون دستورو از متن درمیاره، اجراش میکنه، و نتیجه رو برمیگردونه.
دو روش فانکشنکالینگ
برای این کار دو روش داریم:
۱) Prompt-based (Tool Use): سادهترین روش. توی سیستمپرامپتِ مدل بهش یاد میدی: «هر وقت خواستی یه فایل ذخیره کنی، این ساختار رو توی جوابت بذار» (مثلاً یه JSON با اسم فایل و مسیر و محتوا). بعد نرمافزار، خروجیِ مدل رو میگرده؛ تا اون ساختارو دید، از جوابِ نمایشدادهشده حذفش میکنه و بهجاش واقعاً فانکشن ذخیرهی فایل رو صدا میزنه. هرچی مثال (example) بیشتری بهش بدی، بهتر کار میکنه — چون برمیگرده به همون بحثِ context window و اینکه هوش مصنوعی شبیهِ یه auto-complete هست و متنهای مشابه رو بهتر تکرار میکنه. مزیت بزرگش: چون همهچی روی prompt سواره، میتونی راحت مدل رو عوض کنی و باز کار میکنه.
۲) Native function calling (Schema-based): اینجا فانکشنها رو طبق ساختارِ خودِ ارائهدهنده (مثلاً OpenAI) توی خودِ درخواست تعریف میکنی، و مدل برای فانکشنکالینگ fine-tune شده. معمولاً بهتر و دقیقتر کار میکنه، ولی به مدل وابستهست — ساختار OpenAI با Claude فرق داره، پس با عوضکردنِ مدل باید کدتو هم عوض کنی.
چرا همون مدل توی Cursor با Claude Code فرق میکنه؟
شاید دیده باشی یه مدلِ یکسان (مثلاً Claude) توی Cursor یهجور جواب میده و توی Claude Code یهجور دیگه. دلیلش سیستمپرامپته: هر ایجنت قبل از پیامِ تو، یه پرامپتِ مفصل (گاهی صدها خط) به مدل تزریق میکنه که بهش میگه چطور رفتار کنه و از ابزارها استفاده کنه. توی پروژههات هم میتونی یه فایل CLAUDE.md بسازی و قانونها و معماری پروژه رو توش بنویسی تا مدل رعایت کنه.
MCP و Skill هم دقیقاً همینن
اگه دنبال MCP و Skill بودی، خبر خوب: اونها هم دقیقاً همین ساختارِ فانکشنکالینگن — یهسری «قانون» که به مدل میگه «اگه خواستی فلان کارو بکنی، این متد رو صدا بزن». MCP در واقع همین فانکشنکالینگه با یه لایهی استانداردِ اتصال.
هشدار: کانتکستویندوزتو شلوغ نکن
چون MCPها و Skillها جذابن، وسوسه میشی همهشونو نصب کنی. ولی هر کدوم یه عالمه توضیح به سیستمپرامپت اضافه میکنن و کانتکستویندوز رو پر میکنن. اون اوایل خودم رفتم هر MCP که دیدم نصب کردم؛ نتیجه این شد که نصف کانتکست پر شد از توضیحاتِ ابزارهای نامرتبط و مدل گیج میزد. پس فقط همونایی رو فعال کن که واقعاً برای اون پروژه لازمن.
کدوم مدل بهتر فانکشنکال میکنه؟
همهی مدلها تو این کار خوب نیستن. مدلهای ضعیفتر و ارزونتر ممکنه فانکشن رو اصلاً صدا نزنن (میگه «ذخیره کردم» ولی نکرده)، یا اشتباه صداش بزنن. توی لیدربوردهای فانکشنکالینگ، مدلهای Claude (آنتروپیک) معمولاً بالاترن، بعد Gemini و بعد GPT. برای کارهای جدی، یه مدلِ state-of-the-art مثل Opus یا Gemini ۳.۵ Flash انتخابِ امنتریه.
سوییچ بین مدلها: روترها
چون native function calling به مدل وابستهست، اگه بخوای راحت بین مدلها جابهجا شی، یه Router کمکت میکنه — مثل OpenRouter یا AI Pass. یه بار تعریف میکنی، و روتر پشتصحنه درخواستت رو برای هر مدل به شکلِ درست میفرسته.
ایجنتهای صوتی و آینده
همهچی داره ایجنتیک میشه. ایجنتهای صوتی (voice / realtime) هم پشتصحنه همین فانکشنکالینگن، فقط یه لایهی صدا روشونه. آواتارها (مثل HeyGen) هم یه لایهی تصویر روی همون ایجنت اضافه میکنن. ولی قلبِ همهشون یه چیزه: هوش مصنوعیای که یه ساختارِ مشخص رو دقیق دنبال میکنه تا یه فانکشن واقعی اجرا بشه.
خلاصه: ایجنت یعنی چت + توانایی انجامِ کار، و کلِ این جادو اسمش Function Calling ئه. توی ویدیوی بعدی با هم یه ایجنت واقعی میسازیم. اگه دوست داری این رو زنده و با مثال ببینی، ویدیوش رو از پایین تماشا کن. 🙌


دیدگاهتان را بنویسید