آموزش Agent-بخش 7(اقدامات): توانمندسازی Agent برای تعامل با محیط خود

در این بخش باید به بررسی گامهای عملی تعامل یک Agent هوش مصنوعی با محیط خود بپردازم. موضوعات اصلی شامل نحوه نمایش اقدامات یا Actionها (با استفاده از JSON یا کد)، اهمیت رویکرد توقف و پردازش خروجی (stop and parse)، و معرفی انواع مختلف Agentها میشود.
اقدامات (Actionها)، گامهای مشخصی هستند که یک Agent هوش مصنوعی برای تعامل با محیط خود برمیدارد.
چه جستجو در وب برای یافتن اطلاعات باشد یا کنترل یک دستگاه فیزیکی، هر اقدام یک عملیات عمدی است که توسط Agent اجرا میشود.
برای مثال، یک Agent که در خدمات مشتری کمک میکند ممکن است دادههای مشتری را بازیابی کند، مقالات پشتیبانی ارائه دهد، یا مسائل را به یک نماینده انسانی منتقل کند.
انواع اقدامات Agent
انواع مختلفی از Agentها وجود دارند که به روشهای متفاوتی اقدام میکنند:
نوع Agent | توضیحات |
---|---|
JSON Agent | اقدامی که باید انجام شود در قالب JSON مشخص میشود. |
Code Agent | Agent یک بلوک کد مینویسد که به صورت خارجی تفسیر میشود. |
Function-calling Agent | زیرمجموعهای از JSON Agent است که برای تولید یک پیام جدید برای هر اقدام (Action) فاینتیون شده است. |
خود اقدامات (Actionها) میتوانند اهداف متعددی داشته باشند:
نوع اقدام | توضیحات |
---|---|
جمعآوری اطلاعات | انجام جستجوهای وب، پرسوجو از پایگاههای داده، یا بازیابی اسناد. |
استفاده از ابزار | انجام فراخوانیهای API، اجرای محاسبات و اجرای کد. |
تعامل با محیط | دستکاری رابطهای دیجیتال یا کنترل دستگاههای فیزیکی. |
ارتباطات | تعامل با کاربران از طریق چت یا همکاری با سایر Agentها. |
یک بخش حیاتی از یک Agent، توانایی STOP کردن تولید توکنهای جدید هنگام تکمیل یک اقدام است، و این برای تمام قالبهای Agent صادق است: JSON، کد یا function-calling. این کار از خروجیهای ناخواسته جلوگیری کرده و اطمینان میدهد که پاسخ Agent واضح و دقیق است.
LLM فقط متن را پردازش میکند و از آن برای توصیف اقدامی که میخواهد انجام دهد و پارامترهایی که باید به ابزار ارائه شود، استفاده میکند.
رویکرد Stop and Parse
یکی از روشهای کلیدی برای پیادهسازی اقدامات، رویکرد Stop and Parse است. این روش اطمینان میدهد که خروجی Agent ساختاریافته و قابل پیشبینی است:
- تولید در قالبی ساختاریافته:
Agent اقدام موردنظر خود را در قالبی مشخص و از پیش تعیینشده (JSON یا کد) خروجی میدهد. - توقف تولید بیشتر:
پس از تکمیل اقدام، Agent از تولید توکنهای اضافی متوقف میشود. این از خروجی اضافی یا اشتباه جلوگیری میکند. - پردازش یا parse کردن خروجی:
یک parser خارجی، عملیات قالببندیشده را خوانده، ابزار مناسب را تعیین کرده و پارامترهای موردنیاز را استخراج میکند.
برای مثال، Agentی که نیاز به بررسی وضعیت آب و هوا دارد ممکن است خروجی دهد:
Thought: I need to check the current weather for New York. Action : { "action": "get_weather", "action_input": {"location": "New York"} }
سپس این فریمورک بهراحتی میتواند نام function موردنظر برای فراخوانی و آرگومانهای مربوطه را پردازش کند.
این فرمت واضح و قابل خواندن توسط ماشین، میزان خطاها را به حداقل رسانده و به ابزارهای خارجی امکان میدهد تا فرمان agent را بهدرستی پردازش کنند.
توجه: Function-calling agents بهطور مشابه عمل میکنند و هر عملیات را به شکلی ساختاردهی میکنند که یک function مشخص با آرگومانهای صحیح فراخوانی شود. در پست آینده، بهصورت عمیقتر به این نوع agents خواهیم پرداخت.
Code Agents
یک رویکرد جایگزین، استفاده از Code Agents است. ایده اصلی این است که بهجای خروجی دادن یک JSON object ساده، یک Code Agent یک بلوک کد اجرایی تولید میکند—معمولاً به زبانی سطح بالا مانند Python.
این رویکرد چندین مزیت ارائه میدهد:
- بیانپذیری (Expressiveness): کد بهطور طبیعی میتواند منطق پیچیده را شامل حلقهها (loops)، شرطها (conditionals) و توابع تودرتو (nested functions) نمایش دهد، که انعطافپذیری بیشتری نسبت به JSON فراهم میکند.
- ماژولار بودن و قابلیت استفاده مجدد (Modularity and Reusability): کد تولیدشده میتواند شامل توابع (functions) و ماژولها (modules) باشد که در اقدامات یا وظایف مختلف قابل استفاده مجدد هستند.
- قابلیت اشکالزدایی بهتر (Enhanced Debuggability): با استفاده از یک syntax برنامهنویسی مشخص، یافتن و اصلاح خطاهای کد معمولاً آسانتر است.
- یکپارچگی مستقیم (Direct Integration): Code Agents میتوانند مستقیماً با کتابخانههای خارجی (external libraries) و APIها ادغام شده و عملیات پیچیدهتری مانند پردازش داده یا تصمیمگیری در لحظه (real-time decision making) را انجام دهند.
برای مثال، یک Code Agent که مسئول دریافت وضعیت آبوهوا است، ممکن است قطعه کد Python زیر را تولید کند:
# Code Agent Example: Retrieve Weather Information def get_weather(city): import requests api_url = f"https://api.weather.com/v1/location/{city}?apiKey=YOUR_API_KEY" response = requests.get(api_url) if response.status_code == 200: data = response.json() return data.get("weather", "No weather information available") else: return "Error: Unable to fetch weather data." # Execute the function and prepare the final answer result = get_weather("New York") final_answer = f"The current weather in New York is: {result}" print(final_answer)
در این مثال، Code Agent مراحل زیر را انجام میدهد:
- دریافت دادههای آبوهوا از طریق یک API call،
- پردازش response،
- و استفاده از تابع
print()
برای نمایش نتیجه نهایی.
این روش همچنین از رویکرد Stop and Parse پیروی میکند، به این صورت که بلوک کد را بهوضوح مشخص میکند و زمان اتمام اجرای آن را مشخص مینماید (در اینجا، با چاپ مقدار final_answer
).
تا اینجا ما آموختیم که Actions پلی میان منطق داخلی یک Agent و تعاملات آن با دنیای واقعی ایجاد میکنند، به این صورت که وظایف را بهطور واضح و ساختاریافته اجرا میکنند—چه از طریق JSON، کد، یا Function Calls.
این اجرای هدفمند تضمین میکند که هر Action دقیق بوده و برای پردازش خارجی از طریق رویکرد Stop and Parse آماده است.
در بخش بعدی، Observationها را بررسی خواهیم کرد تا ببینیم چگونه Agents بازخوردهای محیط خود را دریافت و یکپارچهسازی میکنند.
پس از آن، سرانجام آماده خواهیم شد تا اولین Agent خود را بسازیم!
منبع: https://huggingface.co/learn/agents-course/unit1/actions
دیدگاهتان را بنویسید