آموزش هوش مصنوعی

ایجنت هوش مصنوعی چطور کار می‌کند؟ چرخه فکر، اقدام و مشاهده

متوسط مطالعه در ۹ دقیقه
mahdyar

ایجنت هوش مصنوعی چطور کار می‌کند؟ تا اینجا دیدیم ایجنت مغزی از جنس مدل زبانی دارد و ابزارهایی برای اقدام. اما این دو چطور کنار هم کار می‌کنند؟ مدل از کجا می‌فهمد کی ابزار را صدا بزند و کی جواب نهایی را بدهد؟

پاسخ یک چرخه‌ی ساده اما قدرتمند است: فکر، اقدام، مشاهده. در این قسمت از مجموعه‌ی «از پرامپت تا دستیار هوش مصنوعی» این چرخه را با مثال یک ایجنت هواشناسی قدم‌به‌قدم دنبال می‌کنیم و بعد نسخه‌ی ساده‌اش را با پایتون می‌نویسیم.

سه جزء اصلی چرخه‌ی ایجنت

کار ایجنت یک چرخه‌ی پیوسته است. هر دور این چرخه سه مرحله دارد که به ترتیب اجرا می‌شوند:

  1. فکر (Thought): بخش مدل زبانی ایجنت تصمیم می‌گیرد قدم بعدی چه باشد.
  2. اقدام (Action): ایجنت ابزاری را با ورودی‌های مشخص فراخوانی می‌کند.
  3. مشاهده (Observation): مدل نتیجه‌ی ابزار را می‌بیند و درباره‌اش فکر می‌کند.

این سه مرحله در یک حلقه‌ی مداوم کار می‌کنند. اگر بخواهیم با زبان برنامه‌نویسی بگوییم، ایجنت یک حلقه‌ی while است که تا رسیدن به هدف ادامه می‌دهد.

چرخه‌ی ایجنت در پیام سیستمی

در بسیاری از فریم‌ورک‌های ایجنت، قواعد این چرخه مستقیم در پیام سیستمی نوشته می‌شود. این کار تضمین می‌کند مدل در هر دور از یک منطق مشخص پیروی کند. پیام سیستمی یک ایجنت ساده سه بخش دارد.

رفتار، ابزارها و قالب چرخه

بخش اول رفتار کلی ایجنت را تعریف می‌کند؛ مثلاً «تو دستیاری هستی که دقیق و روشن پاسخ می‌دهد». بخش دوم فهرست ابزارهای در دسترس را با همان قالبی می‌آورد که در قسمت قبل با دکوراتور @tool ساختیم.

بخش سوم خود چرخه است. از مدل خواسته می‌شود قدم‌به‌قدم فکر کند. ابتدا با Thought: وضعیت را بسنجد. بعد اگر لازم بود، با Action: و یک JSON ابزار را صدا بزند. وقتی به پاسخ رسید، آن را با پیشوند Final Answer: بنویسد.

پیام سیستمی کامل چنین ایجنتی را در تصویر زیر می‌بینید.

پیام سیستمی ایجنت هوش مصنوعی با ابزار ماشین‌حساب و قواعد چرخه فکر، اقدام و مشاهده

چرا قالب ثابت مهم است؟

برنامه‌ای که دور مدل را گرفته، باید خروجی مدل را بخواند و بفهمد مدل می‌خواهد ابزاری را اجرا کند یا کارش تمام شده است. اگر قالب ثابت نباشد، این تشخیص غیرممکن می‌شود.

پیشوندهای ثابتی مثل Action: و Final Answer: کار برنامه را ساده می‌کنند. برنامه فقط دنبال این نشانه‌ها می‌گردد و بر اساسشان تصمیم می‌گیرد ابزار را اجرا کند یا پاسخ را به کاربر تحویل دهد.

مثال؛ ایجنت هواشناسی قدم‌به‌قدم

با یک مثال ساده، چرخه را از نزدیک ببینیم. ایجنتی به نام آلفرد داریم که یک ابزار دارد: get_weather که هوای یک شهر را از یک API می‌گیرد. کاربر می‌پرسد «هوای نیویورک الان چطور است؟».

فکر؛ استدلال درونی

آلفرد با دریافت پرسش، اول فکر می‌کند. استدلال درونی‌اش ممکن است این باشد: «کاربر هوای فعلی نیویورک را می‌خواهد. من ابزاری دارم که داده‌ی هوا را می‌گیرد. پس اول باید این ابزار را صدا بزنم.»

این قدم نشان می‌دهد ایجنت مسئله را به گام‌های کوچک‌تر می‌شکند. در این مثال اولین گام، جمع‌آوری داده‌ی لازم است. ایجنت به‌جای حدس‌زدن، برنامه می‌ریزد اطلاعات واقعی را بیاورد.

اقدام؛ فراخوانی ابزار

بر اساس این فکر، آلفرد یک فرمان JSON آماده می‌کند که ابزار هواشناسی را صدا می‌زند:

json
{
  "action": "get_weather",
  "action_input": {"location": "New York"}
}

این فرمان دقیقاً مشخص می‌کند کدام ابزار صدا زده شود و چه ورودی‌ای بگیرد. ابزار واقعی را برنامه اجرا می‌کند، نه مدل؛ همان تقسیم کاری که در قسمت function calling دیدیم.

تصویر زیر همین لحظه را نشان می‌دهد؛ ایجنت فرمان JSON را برای API هواشناسی می‌فرستد.

مرحله اقدام در چرخه ایجنت هوش مصنوعی و ارسال فرمان JSON به API هواشناسی

مشاهده؛ بازخورد محیط

پس از اجرای ابزار، آلفرد یک مشاهده دریافت می‌کند؛ مثلاً «هوای فعلی نیویورک: نیمه‌ابری، ۱۵ درجه، رطوبت ۶۰ درصد». این مشاهده به پرامپت اضافه می‌شود و زمینه‌ی تازه‌ای برای فکر بعدی می‌سازد.

مشاهده در واقع بازخورد دنیای واقعی است. هم تأیید می‌کند اقدام موفق بوده و هم جزئیات لازم را می‌آورد. اگر ابزار خطا داده بود، همین مشاهده به ایجنت می‌گفت باید روش دیگری امتحان کند.

فکر دوباره و پاسخ نهایی

حالا آلفرد با داده‌ی تازه دوباره فکر می‌کند: «داده‌ی هوای نیویورک را دارم؛ می‌توانم جواب را بنویسم.» و پاسخ نهایی را با قالب خواسته‌شده تولید می‌کند: «هوای فعلی نیویورک نیمه‌ابری است، با دمای ۱۵ درجه و رطوبت ۶۰ درصد.»

این پاسخ نهایی به کاربر برمی‌گردد و حلقه بسته می‌شود. کل این مسیر برای کاربر فقط چند ثانیه طول می‌کشد، اما پشت صحنه دو دور فکر، یک اقدام و یک مشاهده اتفاق افتاده است.

چرخه‌ی ReAct و درس‌های آن

این مثال ایده‌ی اصلی چرخه‌ی ReAct را نشان می‌دهد؛ ترکیب استدلال (Reasoning) و اقدام (Acting). تعامل فکر، اقدام و مشاهده به ایجنت اجازه می‌دهد کارهای پیچیده را مرحله‌به‌مرحله حل کند. سه درس کلیدی از این چرخه می‌گیریم:

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

همین سه ویژگی ایجنت را از یک فراخوانی ساده‌ی مدل متمایز می‌کند. ایجنت فقط جواب نمی‌دهد؛ بر اساس نتیجه‌ی کارش مسیرش را تنظیم می‌کند.

پیاده‌سازی حلقه‌ی ایجنت با پایتون

حالا ببینیم این چرخه در کد چه شکلی دارد. نسخه‌ی زیر ساده شده است، اما منطق اصلی همه‌ی فریم‌ورک‌های ایجنت همین است.

حلقه‌ی while با سقف قدم

تابع call_model متن گفت‌وگو را به مدل می‌فرستد و خروجی را برمی‌گرداند. tools هم دیکشنری ابزارهای در دسترس است:

python
import json, re

def run_agent(question, system_prompt, tools, call_model, max_steps=6):
    transcript = f"{system_prompt}\n\nQuestion: {question}\n"
    for _ in range(max_steps):
        output = call_model(transcript, stop=["Observation:"])
        transcript += output
        if "Final Answer:" in output:
            return output.split("Final Answer:")[-1].strip()
        action = json.loads(re.search(r"Action:\s*(\{.*\})", output, re.S).group(1))
        result = tools[action["action"]](**action["action_input"])
        transcript += f"\nObservation: {result}\n"
    return "به سقف قدم‌ها رسیدم و پاسخ قطعی پیدا نکردم."

در هر دور، مدل فکر و اقدامش را می‌نویسد. اگر پاسخ نهایی داد، حلقه تمام می‌شود. وگرنه برنامه ابزار را اجرا می‌کند و نتیجه را با برچسب Observation: به متن اضافه می‌کند تا دور بعد شروع شود.

دو نکته‌ی حیاتی در کد

نکته‌ی اول پارامتر stop است. بدون آن، مدل ممکن است بعد از نوشتن Action: خودش ادامه دهد و یک مشاهده‌ی ساختگی هم بنویسد. یعنی نتیجه‌ی ابزار را حدس بزند، بی‌آنکه ابزار اجرا شده باشد. توقف تولید پیش از Observation: این خطر را از بین می‌برد.

نکته‌ی دوم max_steps است. اگر ابزاری مدام خطا بدهد یا مدل در یک دور تکراری گیر کند، حلقه بی‌پایان می‌شود و هزینه بالا می‌رود. سقف قدم‌ها یک ترمز ایمنی ساده اما ضروری است. در کد واقعی خطاهای JSON نامعتبر و ابزار ناموجود را هم مدیریت کنید.

تمرین عملی؛ یک دور کامل روی کاغذ

پیش از نوشتن کد، چرخه را برای دستیار پروژه‌ی مشترک روی کاغذ اجرا کنید. کاربر می‌پرسد: «یک دوره‌ی پایتون مبتدی می‌خواهم که هنوز ظرفیت داشته باشد.» با سه ابزاری که در قسمت قبل تعریف کردیم:

  1. فکر اول ایجنت را بنویسید؛ قدم اول چیست؟
  2. اقدام را به شکل JSON بنویسید و یک مشاهده‌ی فرضی برایش در نظر بگیرید.
  3. دورهای بعدی را تا رسیدن به Final Answer ادامه دهید.

بشمارید چند دور لازم شد. اگر بیش از چهار دور بود، فکر کنید آیا یک ابزار ترکیبی، مثلاً جستجو همراه فیلتر ظرفیت، مسیر را کوتاه‌تر می‌کند یا نه.

سخن پایانی

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

در قسمت یازدهم همین حلقه را از صفر و بدون فریم‌ورک با یک مدل واقعی می‌سازیم.

این آموزش بر پایه‌ی بخش Understanding AI Agents through the Thought-Action-Observation Cycle از دوره‌ی آزاد Agents Course در Hugging Face (مجوز Apache-2.0) به فارسی بازنویسی و تکمیل شده است.

پرسش‌های پرتکرار

چرخه فکر، اقدام و مشاهده چیست؟

روش کار پایه‌ی ایجنت‌ها است. مدل در مرحله‌ی فکر تصمیم می‌گیرد قدم بعدی چیست، در مرحله‌ی اقدام ابزاری را با ورودی مشخص فراخوانی می‌کند و در مرحله‌ی مشاهده نتیجه‌ی ابزار را می‌بیند. این چرخه تا رسیدن به پاسخ نهایی تکرار می‌شود.

ReAct یعنی چه؟

ReAct ترکیب دو کلمه‌ی Reasoning و Acting است؛ یعنی استدلال و اقدام به‌صورت یک‌درمیان. مدل ابتدا فکرش را می‌نویسد، بعد اقدام می‌کند و با دیدن نتیجه دوباره فکر می‌کند.

ایجنت از کجا می‌فهمد کارش تمام شده است؟

در پیام سیستمی از مدل خواسته می‌شود وقتی به پاسخ رسید، آن را با پیشوند مشخصی مثل Final Answer بنویسد. برنامه با دیدن این پیشوند حلقه را متوقف می‌کند. یک سقف برای تعداد قدم‌ها هم لازم است تا حلقه بی‌پایان نشود.

چرا مشاهده باید از ابزار بیاید و نه از مدل؟

اگر مدل خودش نتیجه‌ی ابزار را حدس بزند، پاسخ ساختگی می‌سازد. برای همین برنامه باید تولید متن را پیش از بخش Observation متوقف کند، ابزار را واقعاً اجرا کند و نتیجه‌ی واقعی را به گفت‌وگو اضافه کند.

دیدگاه‌ها

هنوز دیدگاهی ثبت نشده است. شروع‌کننده باشید — پرسش و اصلاح را با آغوش باز می‌پذیریم.

دیدگاه بگذارید

برای **پررنگ**، *مورب*، `کد` و لینک از Markdown استفاده کنید. لینک‌ها nofollow هستند.

پنج رقم داخل تصویر را وارد کنید. اعداد فارسی و انگلیسی پذیرفته می‌شوند.

تصویر کد امنیتی پنج‌رقمی

در حال دریافت کد امنیتی…

مهلت کد تمام شد. روی «کد جدید» بزنید.