جواب کوتاه: ReAct روشی است که به یک مدل زبانی مثل ChatGPT یاد میدهد قبل از هر کار فکر کند، بعد با یک ابزار (مثل جستجوی وب) اقدام کند و نتیجه را ببیند، و این چرخه را آنقدر تکرار کند تا به جواب درست برسد. بیشتر ایجنتهای هوش مصنوعی امروزی بر پایه همین ایده ساخته شدهاند.
در این آموزش از جریان AI، قدمبهقدم و به زبان ساده یاد میگیرید ReAct چیست، چرا به وجود آمد، چطور کار میکند و چطور میتوانید اولین ایجنت ReAct خودتان را بسازید. برای فهمیدن بیشتر بخشها نیازی به برنامهنویسی ندارید.
ReAct چیست؟ تعریف ساده در یک نگاه
ReAct یک الگوی معماری برای ایجنتهای هوش مصنوعی است که در آن مدل زبانی بهصورت چرخهای فکر میکند، یک اقدام انجام میدهد و نتیجه آن اقدام را مشاهده میکند، تا زمانی که به جواب نهایی برسد.
به زبان سادهتر، ReAct مدل زبانی را از یک «جوابدهنده» به یک «انجامدهنده» تبدیل میکند. مدل دیگر فقط از حافظهاش جواب نمیدهد، بلکه میتواند جستجو کند، حساب کند یا از ابزارهای دیگر کمک بگیرد.
توجه: ReAct در هوش مصنوعی هیچ ربطی به کتابخانه React.js در برنامهنویسی وب ندارد. فقط اسمهایشان شبیه است.
معنی اسم ReAct: ترکیب استدلال و عمل
اسم ReAct از ترکیب دو کلمه ساخته شده است:
- Re از Reasoning به معنی استدلال یا فکر کردن
- Act از Acting به معنی عمل کردن یا اقدام
ایده اصلی همین است: ایجنت نه فقط فکر میکند و نه فقط عمل میکند، بلکه این دو را یکی در میان انجام میدهد. هر فکر، اقدام بعدی را هدایت میکند و نتیجه هر اقدام، فکر بعدی را دقیقتر میکند.
ReAct از کجا آمد؟
ReAct اولین بار در مقالهای با عنوان ReAct: Synergizing Reasoning and Acting in Language Models معرفی شد. این مقاله را Shunyu Yao و همکارانش از دانشگاه Princeton و Google Research در اکتبر ۲۰۲۲ منتشر کردند و در کنفرانس ICLR 2023 ارائه شد.
نویسندگان نشان دادند وقتی مدل زبانی بین فکر کردن و استفاده از ابزار (در آن آزمایش، جستجو در ویکیپدیا) جابهجا میشود، کمتر دچار توهم (Hallucination) میشود و جوابهایش قابل ردیابیتر است. امروز تقریباً همه فریمورکهای ساخت ایجنت، مثل LangChain و LangGraph، این الگو را بهصورت آماده ارائه میکنند.
چرا ایجنت هوش مصنوعی (AI Agent) به ReAct نیاز دارد؟
مدل زبانی بهتنهایی فقط میتواند متن تولید کند؛ ReAct به آن دست و پا میدهد تا در دنیای واقعی کاری انجام دهد. تفاوت یک چتبات ساده با یک ایجنت هوش مصنوعی (AI Agent) دقیقاً همینجاست: ایجنت علاوه بر حرف زدن، اقدام هم میکند.
مدل زبانی تنها چه مشکلی دارد؟
فرض کنید از یک مدل زبانی بدون دسترسی به اینترنت بپرسید: «قیمت امروز دلار چند است؟» سه اتفاق ممکن است بیفتد:
- میگوید نمیداند، چون دانشش تا یک تاریخ مشخص است.
- عددی قدیمی را که در دادههای آموزشی دیده تکرار میکند.
- بدتر از همه، با اطمینان یک عدد ساختگی میگوید. به این حالت توهم (Hallucination) میگویند.
مشکل این نیست که مدل باهوش نیست. مشکل این است که ابزاری برای بررسی واقعیت ندارد و نمیتواند کاری فراتر از تولید متن انجام دهد.
چرا فقط فکر کردن کافی نیست؟
یکی از روشهای معروف برای بهتر کردن جواب مدلها این است که از آنها بخواهیم قدمبهقدم فکر کنند. اگر با تکنیک زنجیره تفکر (Chain of Thought) آشنا باشید، میدانید این کار دقت مدل را در مسائل منطقی و ریاضی بالا میبرد.
اما زنجیره تفکر یک محدودیت جدی دارد: همه استدلالها داخل ذهن مدل اتفاق میافتد. اگر یک قدم بر پایه اطلاعات غلط باشد، بقیه زنجیره هم غلط میشود و هیچ راهی برای بررسی آن وجود ندارد. ReAct این شکاف را پر میکند: مدل فکر میکند، با ابزار واقعیت را بررسی میکند و بر اساس نتیجه واقعی ادامه میدهد.
ReAct چگونه کار میکند؟ چرخه فکر، عمل، مشاهده
ایجنت ReAct در یک چرخه سهمرحلهای کار میکند: فکر (Thought)، عمل (Action) و مشاهده (Observation). این چرخه آنقدر تکرار میشود تا ایجنت به این نتیجه برسد که اطلاعات کافی دارد و جواب نهایی را بدهد.

ایجنت بعد از هر مشاهده دوباره فکر میکند؛ فقط وقتی اطلاعات کافی باشد، از چرخه خارج میشود و جواب نهایی را میدهد.
مرحله فکر (Thought): ایجنت چه برنامهای دارد؟
در این مرحله ایجنت وضعیت فعلی را بررسی میکند و تصمیم میگیرد قدم بعدی چیست. مثلاً با خودش میگوید: «برای جواب دادن به این سؤال، اول باید بفهمم فلان اطلاعات چیست.»
این فکر کردن مثل یادداشتی است که یک آدم قبل از شروع کار برای خودش مینویسد. همین یادداشتها باعث میشوند رفتار ایجنت قابل فهم و قابل بررسی باشد.
مرحله عمل (Action): استفاده از ابزارها
در مرحله عمل، ایجنت یکی از ابزارهایی (Tools) را که در اختیار دارد صدا میزند. ابزار هر چیزی است که کاری فراتر از تولید متن انجام دهد، مثلاً:
- جستجوی وب برای پیدا کردن اطلاعات بهروز
- ماشینحساب برای محاسبات دقیق
- یک API برای گرفتن اطلاعات آبوهوا یا قیمت
- خواندن یک فایل یا جستجو در پایگاه داده
ایجنت مشخص میکند کدام ابزار را با چه ورودیای اجرا کند؛ مثلاً ابزار جستجو با عبارت «میزبان المپیک ۲۰۲۸».
مرحله مشاهده (Observation): یادگیری از نتیجه
نتیجه ابزار به ایجنت برمیگردد و ایجنت آن را «مشاهده» میکند. حالا ایجنت با اطلاعات جدید دوباره به مرحله فکر برمیگردد و تصمیم میگیرد:
- اگر اطلاعات کافی است، جواب نهایی را میدهد و چرخه تمام میشود.
- اگر هنوز چیزی کم است، یک اقدام دیگر انجام میدهد و چرخه ادامه پیدا میکند.
مثال قدمبهقدم: ReAct در عمل با یک سؤال ساده
بهترین راه برای فهمیدن ReAct این است که فکرهای یک ایجنت را خطبهخط دنبال کنیم. فرض کنید ایجنت ما دو ابزار دارد: جستجوی وب و آبوهوا.
سؤال کاربر و اولین فکر ایجنت
کاربر میپرسد: «هوای امروز شهری که میزبان المپیک ۲۰۲6 است چطور است؟»
این سؤال در واقع دو سؤال است: اول اینکه میزبان کدام شهر است، و دوم اینکه هوای آن شهر چطور است. یک مدل زبانی معمولی ممکن است سعی کند هر دو را از حافظه جواب دهد، اما ایجنت ReAct سؤال را تکهتکه حل میکند:
Thought 1: باید اول بفهمم المپیک ۲۰۲6 در کدام شهر برگزار میشود.
Action 1: جستجوی وب ["میزبان المپیک ۲۰۲6"]
Observation 1: المپیک تابستانی ۲۰۲6 در لسآنجلس آمریکا برگزار میشود.
تکرار چرخه تا رسیدن به جواب
حالا ایجنت یک تکه از جواب را دارد و چرخه را ادامه میدهد:
Thought 2: میزبان لسآنجلس است. حالا باید هوای امروز لسآنجلس را بگیرم.
Action 2: آبوهوا ["Los Angeles"]
Observation 2: آفتابی، ۲۴ درجه سانتیگراد.
Thought 3: هر دو اطلاعات لازم را دارم و میتوانم جواب نهایی بدهم.
Final Answer: المپیک ۲۰۲6 در لسآنجلس برگزار میشود و هوای امروز آنجا آفتابی و حدود ۲۴ درجه است.
(عدد دما در این مثال فقط برای نمایش است.)
به سه نکته در این مثال دقت کنید:
- ایجنت سؤال پیچیده را به چند قدم ساده تبدیل کرد.
- خروجی هر ابزار، ورودی فکر بعدی شد؛ ایجنت تا جواب قدم اول را نداشت، سراغ قدم دوم نرفت.
- هر قدم قابل ردیابی است؛ اگر جواب غلط باشد، میتوانیم ببینیم دقیقاً کدام قدم اشتباه بوده.
از این مثال تا ایجنتهای واقعی
همین الگوی ساده، پایه بسیاری از ایجنتهای واقعی امروز است:
- دستیارهای جستجو و تحقیق که چند بار جستجو میکنند، نتایج را میخوانند و یک جمعبندی با منبع میدهند.
- ایجنتهای پشتیبانی مشتری که وضعیت سفارش را از سیستم شرکت میگیرند و بعد جواب میدهند.
- دستیارهای برنامهنویسی که کد را اجرا میکنند، خطا را میبینند و آن را اصلاح میکنند.
ایده «فکر کن، اقدام کن، نتیجه را ببین» امروز در محصولات بزرگ هم دیده میشود. برای نمونه، قابلیت Computer Use در ChatGPT 6 Astra به مدل اجازه میدهد خودش روی کامپیوتر کار انجام دهد، صفحه را ببیند و قدم بعدی را انتخاب کند؛ ایدهای بسیار نزدیک به چرخه ReAct.
مقایسه ReAct با سایر معماریهای AI Agent
ReAct تنها راه ساخت ایجنت نیست؛ انتخاب معماری به نوع کار، سرعت لازم و بودجه بستگی دارد. در ادامه ReAct را با دو معماری رایج دیگر مقایسه میکنیم.
ReAct در برابر CodeAct
تفاوت اصلی در شکل اقدام است:
- در ReAct، ایجنت در هر قدم معمولاً یک ابزار را با یک ورودی ساختاریافته (اغلب در قالب JSON) صدا میزند.
- در CodeAct، ایجنت بهجای صدا زدن تکتک ابزارها، یک قطعه کد (معمولاً پایتون) مینویسد و اجرا میکند. یک قطعه کد میتواند چند ابزار را با هم ترکیب کند، حلقه بزند و نتیجهها را پردازش کند.
به همین دلیل CodeAct در کارهای چندمرحلهای و محاسباتی معمولاً با قدمهای کمتری به جواب میرسد، اما به یک محیط امن برای اجرای کد نیاز دارد. مقاله کامل CodeAct بهزودی در جریان AI منتشر میشود.
ReAct در برابر Plan-and-Execute
- در ReAct، ایجنت قدمبهقدم تصمیم میگیرد و بعد از دیدن نتیجه هر قدم، قدم بعدی را انتخاب میکند.
- در Plan-and-Execute، ایجنت اول یک برنامه کامل مینویسد (مثلاً پنج مرحله) و بعد مراحل را یکییکی اجرا میکند.
Plan-and-Execute برای کارهای طولانی و قابل پیشبینی منظمتر و معمولاً ارزانتر است. ReAct در موقعیتهایی که نتیجه هر قدم مسیر بعدی را تغییر میدهد انعطاف بیشتری دارد.
جدول مقایسه کامل
| معماری | نحوه کار | استفاده از ابزار | انعطاف | هزینه و سرعت | مناسب برای |
| Chain-of-Thought | فقط استدلال مرحلهبهمرحله در یک پاسخ | ندارد | کم | ارزان و سریع | مسائل منطقی و ریاضی بدون نیاز به اطلاعات بیرونی |
| ReAct | چرخه فکر، اقدام و مشاهده | یک ابزار در هر قدم | زیاد | متوسط؛ هر قدم یک فراخوانی مدل | پرسشوپاسخ با جستجو، ایجنتهای عمومی و کارهای کوتاه |
| CodeAct | نوشتن و اجرای کد بهعنوان اقدام | چند ابزار در یک قطعه کد | خیلی زیاد | قدمهای کمتر، ولی نیاز به محیط اجرای امن | تحلیل داده، کارهای چندمرحلهای و محاسباتی |
| Plan-and-Execute | برنامهریزی کامل، سپس اجرا | در مرحله اجرا | متوسط | معمولاً ارزانتر در کارهای طولانی | کارهای طولانی با مراحل قابل پیشبینی |
قانون ساده انتخاب: اگر تازه شروع کردهاید، ReAct بهترین نقطه شروع است، چون ساده، قابل فهم و در همه فریمورکها آماده است.
پیادهسازی ReAct با پایتون (اختیاری، برای علاقهمندان به کدنویسی)
اگر برنامهنویس نیستید، میتوانید مستقیم به بخش بعد بروید. مفهوم ReAct را تا اینجا کامل یاد گرفتهاید.
در این بخش با کمتر از ۲۰ خط کد پایتون یک ایجنت ReAct واقعی میسازیم که میتواند در وب جستجو کند. از تابع آماده create_agent در کتابخانه LangChain استفاده میکنیم که چرخه فکر، اقدام و مشاهده را خودکار مدیریت میکند.
پیشنیازها و نصب
به سه چیز نیاز دارید:
- پایتون نسخه ۳.۱۰ یا بالاتر و آشنایی مقدماتی با آن. اگر میخواهید پایهتان را قویتر کنید، از آموزش یادگیری ماشین با پایتون شروع کنید.
- یک کلید API برای مدل زبانی (در این مثال OpenAI).
- یک کلید API برای ابزار جستجو (در این مثال You.com که نحوه گرفتن اعتبار رایگان You.com را در مقالات قبل شرح دادیم، استفاده کنید).
کتابخانهها را نصب و کلیدها را تنظیم کنید:
pip install -U langchain langchain-openai langchain-youdotcom langgraph
export OPENAI_API_KEY="کلید OpenAI شما"
export YDC_API_KEY="کلید You.com شما"
ساخت اولین ایجنت ReAct
ایجنت ما برای جستجوی وب به یک ابزار نیاز دارد. اگر هنوز کلید ندارید، دریافت API رایگان You.com را قدمبهقدم در جریان AI ببینید و همان کلید را اینجا استفاده کنید.
from langchain_openai import ChatOpenAI
from langchain_youdotcom import YouSearchTool
from langchain.agents import create_agent
llm = ChatOpenAI(model="gpt-5.6-terra")
tools = [YouSearchTool()]
agent = create_agent(
model=llm,
tools=tools,
system_prompt="تو یک دستیار پژوهشی هستی. برای سؤالهایی که اطلاعات بهروز لازم دارند، جستجو کن و جواب را به فارسی بده.",
)
result = agent.invoke(
{"messages": [{"role": "user", "content": "میزبان المپیک ۲۰۲۸ کدام شهر است و هوای امروزش چطور است؟"}]},
config={"recursion_limit": 10},
)
for message in result["messages"]:
message.pretty_print()
هر بخش کد دقیقاً به یکی از اجزای ReAct مربوط است:
| بخش کد | نقش در ReAct |
| llm | مغز ایجنت که در مرحله فکر تصمیم میگیرد |
| tools | ابزارهای مرحله عمل |
| create_agent | موتوری که چرخه فکر، عمل و مشاهده را میچرخاند |
| recursion_limit | ترمز ایمنی برای جلوگیری از حلقه بیپایان |
نام مدل را میتوانید با هر مدل دیگری که از Tool Calling پشتیبانی میکند عوض کنید؛ کد ایجنت تغییری نمیکند.
اجرا و خواندن خروجی
بعد از اجرا، pretty_print همه پیامهای چرخه را نشان میدهد. خروجی معمولاً این ترتیب را دارد:
- Human Message: سؤال شما
- AI Message با Tool Calls: ایجنت تصمیم گرفته جستجو کند (مرحله فکر و عمل)
- Tool Message: نتیجه جستجو (مرحله مشاهده)
- تکرار مراحل ۲ و ۳ در صورت نیاز
- AI Message نهایی: جواب کامل به فارسی
یک نکته مهم: در پیادهسازیهای امروزی، مدلها مرحله «فکر» را اغلب بهصورت داخلی انجام میدهند و مستقیم سراغ فراخوانی ابزار میروند. پس ممکن است متن Thought را جداگانه نبینید، اما چرخه ReAct همچنان در حال اجراست.
محدودیتها و خطاهای رایج ReAct
ReAct قدرتمند است، اما بینقص نیست. سه مشکل رایج و راهحل ساده هرکدام را در ادامه میبینید.
حلقه بیپایان و چگونگی جلوگیری از آن
گاهی ایجنت به جواب مطمئن نمیرسد و یک ابزار را بارها با ورودیهای تقریباً یکسان صدا میزند. نتیجه، چرخهای است که تمام نمیشود و فقط هزینه میسازد.
راهحل:
- برای تعداد قدمها سقف بگذارید. در کد بخش قبل، recursion_limit همین کار را میکند؛ اگر ایجنت از سقف عبور کند، اجرا با خطا متوقف میشود.
- در دستور سیستمی (System Prompt) صریح بنویسید که اگر بعد از چند تلاش جواب پیدا نشد، همین را صادقانه به کاربر بگوید.
هزینه و سرعت
هر دور چرخه یعنی یک فراخوانی جدید به مدل زبانی، و هر فراخوانی، کل تاریخچه گفتگو را دوباره به مدل میفرستد. بنابراین یک سؤال پنجقدمی ممکن است چند برابر یک سؤال معمولی توکن مصرف کند و چند ثانیه بیشتر طول بکشد.
راهحل:
- برای کارهای ساده که به ابزار نیاز ندارند، اصلاً از ایجنت استفاده نکنید.
- برای ایجنت، مدلی با تعادل مناسب قیمت و توانایی انتخاب کنید. برای انتخاب درست، مقایسه قیمت و کاربرد مدلهای GPT-5.6 را بخوانید.
- برای کارهای طولانی و قابل پیشبینی، معماری Plan-and-Execute را در نظر بگیرید.
خطای ابزار و توهم در استدلال
ابزارها هم خطا میکنند: جستجو نتیجه بیربط برمیگرداند، یک API از دسترس خارج میشود یا خروجی ناقص است. گاهی هم ایجنت نتیجه درست را اشتباه تفسیر میکند.
راهحل:
- توضیح هر ابزار را دقیق بنویسید؛ مدل فقط از روی همین توضیح میفهمد ابزار چه کاری میکند و چه ورودیای میخواهد.
- خطای ابزار را بهصورت یک پیام متنی قابل فهم به ایجنت برگردانید، نه اینکه برنامه متوقف شود. اینطوری ایجنت میتواند راه دیگری را امتحان کند.
- از ایجنت بخواهید منبع جوابش را ذکر کند تا بتوانید آن را بررسی کنید.
سؤالات متداول درباره ReAct
آیا ReAct یک فریمورک یا نرمافزار است؟
خیر. ReAct یک الگو یا روش طراحی است، نه یک نرمافزار. فریمورکهایی مثل LangChain و LangGraph این الگو را پیادهسازی کردهاند تا شما مجبور نباشید چرخه را از صفر بنویسید.
آیا برای ساخت ایجنت ReAct باید مدل را فاینتیون کنم؟
معمولاً نه. ReAct با پرامپتنویسی و تعریف ابزار روی مدلهای آماده کار میکند. اما اگر بخواهید مدل در یک حوزه تخصصی یا زبان فارسی دقیقتر عمل کند، فاینتیونینگ مدلهای زبانی قدم بعدی است.
آیا بدون کدنویسی میتوان ایجنت ReAct ساخت؟
بله. ابزارهای ساخت ایجنت بدون کد (No-Code) بسیاری از همین منطق را بهصورت بصری ارائه میکنند: ابزارها را انتخاب میکنید، دستور سیستمی را مینویسید و ایجنت چرخه را خودش اجرا میکند.
آیا ReAct با مدلهای رایگان یا متنباز هم کار میکند؟
بله، به شرطی که مدل از فراخوانی ابزار (Tool Calling) پشتیبانی کند یا بتواند از قالب متنی Thought و Action پیروی کند. مدلهای کوچکتر معمولاً بیشتر در انتخاب ابزار یا رعایت قالب اشتباه میکنند.
ReAct چه فرقی با یک چتبات معمولی دارد؟
چتبات معمولی فقط از دانش داخلیاش جواب میدهد. ایجنت ReAct میتواند قبل از جواب دادن جستجو کند، محاسبه کند یا از ابزارهای دیگر استفاده کند و جوابش را بر پایه اطلاعات واقعی بسازد.
جمعبندی: قدم بعدی در یادگیری ایجنتهای هوش مصنوعی
ReAct سادهترین و پرکاربردترین راه برای تبدیل یک مدل زبانی به یک ایجنت واقعی است. اگر فقط چهار نکته از این آموزش در ذهنتان بماند، اینها باشند:
- ReAct = فکر + عمل + مشاهده در یک چرخه تکرارشونده.
- ابزارها به ایجنت اجازه میدهند بهجای حدس زدن، واقعیت را بررسی کند و همین توهم را کم میکند.
- هر قدم قابل ردیابی است؛ پس اشکالیابی ایجنت ReAct ساده است.
- سقف قدمها و انتخاب درست مدل دو کلید کنترل هزینه و جلوگیری از حلقه بیپایان هستند.
قدم بعدی شما در جریان AI، آشنایی با معماری CodeAct است؛ جایی که ایجنت بهجای صدا زدن تکتک ابزارها، خودش کد مینویسد و اجرا میکند. اگر هم هنوز مطمئن نیستید کدام شاخه هوش مصنوعی برای شما مناسبتر است، نگاهی به انواع هوش مصنوعی و مسیرهای یادگیری بیندازید.
منابع
- ReAct: Synergizing Reasoning and Acting in Language Models (arXiv, 2022)
- مستندات LangGraph و You.com درباره ساخت ایجنت ReAct
- مرجع LangChain درباره create_react_agent و create_agent