این کانال با هدف همخوانی کتابهای حوزه فناوری، بهویژه کتابهای مرتبط با هوش مصنوعی ایجاد شده است. گاهی یک کتاب را بهطور کامل و فصلبهفصل مطالعه میکنیم و نکات مهم و ارزشمند آن را در اینجا منتشر میکنیم. گاهی هم ممکن است تنها یک فصل از یک کتاب به دلیل اهمیتش بررسی و همخوانی شود.
مدیریت کانال در حال حاضر بر عهده دو نفر است و احتمال دارد در آینده افراد دیگری نیز به این مجموعه بپیوندند:
۱. محمد طلایی
۲. علیرضا آقامحمدی
برای سهولت در جستوجوی کتابها و فصلهای همخوانی شده، از هشتگهایی با الگوی زیر استفاده میکنیم
NNN_AA_CH_XXX
در این الگو:
بخش NNN شامل حروف اختصاری نام کتاب است (برای مثال Agentic Design Patterns به شکل ADP نوشته میشود).
بخش AA حروف ابتدایی نام و نام خانوادگی نویسنده کتاب
بخش CH مخفف کلمه فصل.
بخش XXX شماره فصلی است که همخوانی شده است.
@metapageai
مدیریت کانال در حال حاضر بر عهده دو نفر است و احتمال دارد در آینده افراد دیگری نیز به این مجموعه بپیوندند:
۱. محمد طلایی
۲. علیرضا آقامحمدی
برای سهولت در جستوجوی کتابها و فصلهای همخوانی شده، از هشتگهایی با الگوی زیر استفاده میکنیم
NNN_AA_CH_XXX
در این الگو:
بخش NNN شامل حروف اختصاری نام کتاب است (برای مثال Agentic Design Patterns به شکل ADP نوشته میشود).
بخش AA حروف ابتدایی نام و نام خانوادگی نویسنده کتاب
بخش CH مخفف کلمه فصل.
بخش XXX شماره فصلی است که همخوانی شده است.
@metapageai
❤11
بهتازگی دکتر Antonio Gulli، مدیر ارشد دفتر CTO گوگل در زوریخ، پیشنویس کتاب خود را بهصورت رایگان در دسترس عموم قرار داده است:
لینک کتاب
نام کتاب Agentic Design Patterns است. هدف آن آموزش الگوهای طراحی متداول در سیستمهای مبتنی بر ایجنت است. من بهطور گذرا نگاهی به محتوای آن انداختم. هر فصل علاوه بر بخشهای نظری، یک مثال عملی با LangChain و یک مثال با Google ADK (فریمورک گوگل برای توسعه ایجنتها) هم ارائه میدهد.
به همین دلیل تصمیم گرفتم کتاب را با دقت بیشتری بخوانم و برای تشویق شما دوستان، پس از مطالعه هر فصل خلاصهای از نکات کلیدی آن را به زبان ساده در همین کانال به اشتراک بگذارم.
به این ترتیب اگر علاقهمند باشید، میتوانید همراه من این کتاب را بخوانید و پیش بروید. فکر میکنم تجربه جالبی باشد.
#ADP_AG
@metapageai
لینک کتاب
نام کتاب Agentic Design Patterns است. هدف آن آموزش الگوهای طراحی متداول در سیستمهای مبتنی بر ایجنت است. من بهطور گذرا نگاهی به محتوای آن انداختم. هر فصل علاوه بر بخشهای نظری، یک مثال عملی با LangChain و یک مثال با Google ADK (فریمورک گوگل برای توسعه ایجنتها) هم ارائه میدهد.
به همین دلیل تصمیم گرفتم کتاب را با دقت بیشتری بخوانم و برای تشویق شما دوستان، پس از مطالعه هر فصل خلاصهای از نکات کلیدی آن را به زبان ساده در همین کانال به اشتراک بگذارم.
به این ترتیب اگر علاقهمند باشید، میتوانید همراه من این کتاب را بخوانید و پیش بروید. فکر میکنم تجربه جالبی باشد.
#ADP_AG
@metapageai
❤12
کتاب Agentic Design Patterns در فصل اول با الگویی به نام Prompt Chaining (که به آن Pipeline هم گفته میشود) آغاز میکند. مدلهای زبان بزرگ یا به طور کلیتر ایجنتها، معمولاً برای انجام کارهای کوچک و خوشتعریف مناسب هستند. به محض اینکه پرامپت پیچیده شود یا چند کار مختلف از آنها بخواهیم، کارایی و کیفیت خروجی کاهش پیدا میکند.
ایدهی اصلی این است که بهجای سپردن همهی کارها در قالب یک پرامپت به ایجنت، مسئله را به مجموعهای از وظایف کوچک و ریزدانه تقسیم کنیم. سپس برای هر وظیفه یک ایجنت جداگانه تعریف کنیم، بهطوریکه خروجی ایجنت اول، ورودی ایجنت دوم باشد، خروجی ایجنت دوم به ایجنت سوم منتقل شود و همینطور ادامه پیدا کند.
برای مثال، فرض کنید میخواهیم در یک بلاگ، پستی دربارهی موضوع دلخواه بنویسیم. میتوانیم سه ایجنت تعریف کنیم:
- ایجنت اول ساختار پست شامل تیتر و بخشها (Outline) را تولید کند.
- ایجنت دوم با دریافت این ساختار، متن اصلی پست را بنویسد.
- ایجنت سوم متن نوشتهشده را ویرایش و روانسازی کند.
اما این الگو در کد چطور پیادهسازی میشود؟ فریمورک Google ADK یک ورکفلو به نام SequentialAgent دارد که ایجنتها را به ترتیب اجرا میکند. مثلاً قطعهکد زیر سه ایجنت کدنویس، بازبین کد و ریفکتورکننده کد را پشت سر هم فراخوانی میکند:
#ADP_AG_CH_1
@metapageai
ایدهی اصلی این است که بهجای سپردن همهی کارها در قالب یک پرامپت به ایجنت، مسئله را به مجموعهای از وظایف کوچک و ریزدانه تقسیم کنیم. سپس برای هر وظیفه یک ایجنت جداگانه تعریف کنیم، بهطوریکه خروجی ایجنت اول، ورودی ایجنت دوم باشد، خروجی ایجنت دوم به ایجنت سوم منتقل شود و همینطور ادامه پیدا کند.
برای مثال، فرض کنید میخواهیم در یک بلاگ، پستی دربارهی موضوع دلخواه بنویسیم. میتوانیم سه ایجنت تعریف کنیم:
- ایجنت اول ساختار پست شامل تیتر و بخشها (Outline) را تولید کند.
- ایجنت دوم با دریافت این ساختار، متن اصلی پست را بنویسد.
- ایجنت سوم متن نوشتهشده را ویرایش و روانسازی کند.
اما این الگو در کد چطور پیادهسازی میشود؟ فریمورک Google ADK یک ورکفلو به نام SequentialAgent دارد که ایجنتها را به ترتیب اجرا میکند. مثلاً قطعهکد زیر سه ایجنت کدنویس، بازبین کد و ریفکتورکننده کد را پشت سر هم فراخوانی میکند:
SequentialAgent(
sub_agents=[CodeWriterAgent, CodeReviewerAgent, CodeRefactorerAgent]
)
#ADP_AG_CH_1
@metapageai
❤10
فصل دوم کتاب Agentic Design Patterns به معرفی الگوی Routing میپردازد. این الگو امکان اضافه کردن رفتار انتخابی (Condition) به سیستم را فراهم میکند.
برای مثال، فرض کنید کاربر در یک چتبات پیامی به ایجنت ارسال میکند. بر اساس محتوای پیام، ایجنت تصمیم میگیرد چه واکنشی نشان دهد:
اگر پیام مربوط به پشتیبانی باشد، آن را به ایجنت دیگری که متخصص ارتباط با مشتری است محول میکند.
اگر پیام به امور حسابداری ارتباط داشته باشد، ایجنت ممکن است ابزار اتصال به پایگاه داده را فراخوانی کند.
به طور خلاصه، یک ایجنت هماهنگکننده وجود دارد که تشخیص میدهد کار باید به کدام ایجنت یا ابزار سپرده شود. به همین دلیل این الگو را Routing مینامند.
مزیت این روش چیست؟ به جای آنکه یک مسیر از پیشتعیینشده وجود داشته باشد، مسیر پاسخدهی به کاربر به صورت پویا و بر اساس محتوای ورودی انتخاب میشود.
#ADP_AG_CH_2
@metapageai
برای مثال، فرض کنید کاربر در یک چتبات پیامی به ایجنت ارسال میکند. بر اساس محتوای پیام، ایجنت تصمیم میگیرد چه واکنشی نشان دهد:
اگر پیام مربوط به پشتیبانی باشد، آن را به ایجنت دیگری که متخصص ارتباط با مشتری است محول میکند.
اگر پیام به امور حسابداری ارتباط داشته باشد، ایجنت ممکن است ابزار اتصال به پایگاه داده را فراخوانی کند.
به طور خلاصه، یک ایجنت هماهنگکننده وجود دارد که تشخیص میدهد کار باید به کدام ایجنت یا ابزار سپرده شود. به همین دلیل این الگو را Routing مینامند.
مزیت این روش چیست؟ به جای آنکه یک مسیر از پیشتعیینشده وجود داشته باشد، مسیر پاسخدهی به کاربر به صورت پویا و بر اساس محتوای ورودی انتخاب میشود.
#ADP_AG_CH_2
@metapageai
❤9👍1
فصل سوم کتاب Agentic Design Patterns به الگوی Parallelization میپردازد. در این الگو، درخواستها بهطور همزمان و موازی به چند ایجنت ارسال میشوند، زیرا تسکی که قرار است انجام شود، قابلیت شکستهشدن به بخشهای کوچکتر و مستقل را دارد. وظیفهی ایجنت اصلی در اینجا تجمیع نتایج است.
برای مثال، قابلیت جستوجوی عمیق را در نظر بگیرید. جستوجوی یک موضوع خاص و خلاصهسازی آن میتواند بهطور مستقل توسط یک ایجنت انجام شود، در حالیکه ایجنت دیگری روی موضوع دیگری کار کند. فرض کنید قصد داریم وضعیت بازار سهام یک شرکت را بررسی کنیم:
یک ایجنت صورتحسابهای مالی شرکت را تحلیل میکند.
ایجنت دیگر خبرهای مرتبط با شرکت در یک ماه گذشته را مرور میکند.
ایجنت سوم شاخصهای سهام آن شرکت در بورس را بررسی میکند.
در نهایت، هر یک از این ایجنتها نتایج خود را برای ایجنت اصلی ارسال میکنند و ایجنت اصلی وظیفهی ترکیب و ارائهی خروجی نهایی را بر عهده دارد.
نکتهای که باید به آن توجه داشت این است که هرچند نام این الگو «موازیسازی» است، در عمل (بهویژه به دلیل استفاده از زبان پایتون در اکثر کتابخانهها) این فراخوانیها معمولاً بهصورت async در یک event loop اجرا میشوند. این موضوع از لحاظ کارایی مشکلی ایجاد نمیکند، زیرا بیشتر این فراخوانیها از نوع IO-bound هستند.
در کتابخانههایی مانند Google ADK میتوان این الگو را به شکل زیر پیادهسازی کرد.
#ADP_AG_CH_3
@metapageai
برای مثال، قابلیت جستوجوی عمیق را در نظر بگیرید. جستوجوی یک موضوع خاص و خلاصهسازی آن میتواند بهطور مستقل توسط یک ایجنت انجام شود، در حالیکه ایجنت دیگری روی موضوع دیگری کار کند. فرض کنید قصد داریم وضعیت بازار سهام یک شرکت را بررسی کنیم:
یک ایجنت صورتحسابهای مالی شرکت را تحلیل میکند.
ایجنت دیگر خبرهای مرتبط با شرکت در یک ماه گذشته را مرور میکند.
ایجنت سوم شاخصهای سهام آن شرکت در بورس را بررسی میکند.
در نهایت، هر یک از این ایجنتها نتایج خود را برای ایجنت اصلی ارسال میکنند و ایجنت اصلی وظیفهی ترکیب و ارائهی خروجی نهایی را بر عهده دارد.
نکتهای که باید به آن توجه داشت این است که هرچند نام این الگو «موازیسازی» است، در عمل (بهویژه به دلیل استفاده از زبان پایتون در اکثر کتابخانهها) این فراخوانیها معمولاً بهصورت async در یک event loop اجرا میشوند. این موضوع از لحاظ کارایی مشکلی ایجاد نمیکند، زیرا بیشتر این فراخوانیها از نوع IO-bound هستند.
در کتابخانههایی مانند Google ADK میتوان این الگو را به شکل زیر پیادهسازی کرد.
parallel_research_agent = ParallelAgent(
name="ParallelWebResearchAgent",
sub_agents=[researcher_agent_1, researcher_agent_2, researcher_agent_3],
denoscription="Runs multiple research agents in parallel to gather information."
)
#ADP_AG_CH_3
@metapageai
❤9
در فصل چهارم کتاب Agentic Design Patterns با الگوی Reflection آشنا میشویم. ایدهی اصلی این الگو ارزیابی خروجی یک ایجنت توسط ایجنتی دیگر است. یعنی از یک ایجنت برای بررسی، نقد و بهبود خروجی ایجنت دیگر استفاده میکنیم. به همین دلیل در اینجا با یک حلقه روبهرو هستیم.
برای مثال، فرض کنید میخواهیم سیستمی برای تولید محتوا طراحی کنیم. در این سیستم، یک ایجنت متخصص تولید محتوا تعریف میکنیم و ایجنت دیگری به عنوان ارزیاب در نظر میگیریم. ایجنت ارزیاب خروجی ایجنت تولیدکننده را از نظر کیفیت بررسی کرده و به آن بازخورد میدهد. سپس ایجنت تولیدکنندهی محتوا بازخورد دریافتی را اعمال میکند و تلاش میکند خروجی خود را بهبود ببخشد. این روند میتواند تا زمانی تکرار شود که ایجنت ارزیاب رضایت پیدا کند یا اینکه یک تعداد تکرار بیشینه تعریف کنیم تا سیستم در حلقهی بینهایت گرفتار نشود.
در Google ADK معمولاً این الگو به شکل زیر پیادهسازی میشود:
این یکی از الگوهایی است که شخصاً خیلی دوستش دارم. بارها در کار از آن استفاده کردهام و تأثیرش را در خروجی بهخوبی دیدهام.
#ADP_AG_CH_4
@metapageai
برای مثال، فرض کنید میخواهیم سیستمی برای تولید محتوا طراحی کنیم. در این سیستم، یک ایجنت متخصص تولید محتوا تعریف میکنیم و ایجنت دیگری به عنوان ارزیاب در نظر میگیریم. ایجنت ارزیاب خروجی ایجنت تولیدکننده را از نظر کیفیت بررسی کرده و به آن بازخورد میدهد. سپس ایجنت تولیدکنندهی محتوا بازخورد دریافتی را اعمال میکند و تلاش میکند خروجی خود را بهبود ببخشد. این روند میتواند تا زمانی تکرار شود که ایجنت ارزیاب رضایت پیدا کند یا اینکه یک تعداد تکرار بیشینه تعریف کنیم تا سیستم در حلقهی بینهایت گرفتار نشود.
در Google ADK معمولاً این الگو به شکل زیر پیادهسازی میشود:
content_creation_workflow = LoopAgent(
name="CCWorkflow",
denoscription="Iterates between Content Creator and Critic agents until the results are approved.",
sub_agents=[cc_agent, critic_agent, CheckApprovalStatus(name="ApprovalChecker")],
max_iterations=3,
)
این یکی از الگوهایی است که شخصاً خیلی دوستش دارم. بارها در کار از آن استفاده کردهام و تأثیرش را در خروجی بهخوبی دیدهام.
#ADP_AG_CH_4
@metapageai
❤10👍1