Dataphile
یه برنامه وجود داره به نام Everything که احتمالا باهاش آشنا باشید. کل فایل های سیستم رو index میکنه و میتونید با سرعت خیلی بالایی بین فایل هاتون جستجو انجام بدید. من خیلی ساله میشناسمش و از زمانی که باهاش آشنا شدم، دیگه نتونستم بدون این با سیستم کار کنم. از…
اگر خواستید استفاده کنید، توجه کنید که این ابزار برای سیستم عامل ویندوز است.
👍16🤔1
بهتازگی دکتر Antonio Gulli، مدیر ارشد دفتر CTO گوگل در زوریخ، پیشنویس کتاب خود را بهصورت رایگان در دسترس عموم قرار داده است:
لینک کتاب
نام کتاب Agentic Design Patterns است. هدف آن آموزش الگوهای طراحی متداول در سیستمهای مبتنی بر ایجنت است. من بهطور گذرا نگاهی به محتوای آن انداختم. هر فصل علاوه بر بخشهای نظری، یک مثال عملی با LangChain و یک مثال با Google ADK (فریمورک گوگل برای توسعه ایجنتها) هم ارائه میدهد.
به همین دلیل تصمیم گرفتم کتاب را با دقت بیشتری بخوانم و برای تشویق شما دوستان، پس از مطالعه هر فصل خلاصهای از نکات کلیدی آن را به زبان ساده در همین کانال به اشتراک بگذارم.
به این ترتیب اگر علاقهمند باشید، میتوانید همراه من این کتاب را بخوانید و پیش بروید. فکر میکنم تجربه جالبی باشد.
#همخوانی_کتاب
@golemcourse
لینک کتاب
نام کتاب Agentic Design Patterns است. هدف آن آموزش الگوهای طراحی متداول در سیستمهای مبتنی بر ایجنت است. من بهطور گذرا نگاهی به محتوای آن انداختم. هر فصل علاوه بر بخشهای نظری، یک مثال عملی با LangChain و یک مثال با Google ADK (فریمورک گوگل برای توسعه ایجنتها) هم ارائه میدهد.
به همین دلیل تصمیم گرفتم کتاب را با دقت بیشتری بخوانم و برای تشویق شما دوستان، پس از مطالعه هر فصل خلاصهای از نکات کلیدی آن را به زبان ساده در همین کانال به اشتراک بگذارم.
به این ترتیب اگر علاقهمند باشید، میتوانید همراه من این کتاب را بخوانید و پیش بروید. فکر میکنم تجربه جالبی باشد.
#همخوانی_کتاب
@golemcourse
Google Docs
Agentic Design Patterns
Agentic Design Patterns 👉 🧠 ✅ I’m excited to share that my new book, "Agentic Design Patterns: A Hands-On Guide to Intelligent AI Agents," is officially out! 👉 🧠 ✅ In a field moving at lightning speed, this book focuses on the durable, fundamental patterns…
❤44👍11🤔1
کتاب Agentic Design Patterns در فصل اول با الگویی به نام Prompt Chaining (که به آن Pipeline هم گفته میشود) آغاز میکند. مدلهای زبان بزرگ یا به طور کلیتر ایجنتها، معمولاً برای انجام کارهای کوچک و خوشتعریف مناسب هستند. به محض اینکه پرامپت پیچیده شود یا چند کار مختلف از آنها بخواهیم، کارایی و کیفیت خروجی کاهش پیدا میکند.
ایدهی اصلی این است که بهجای سپردن همهی کارها در قالب یک پرامپت به ایجنت، مسئله را به مجموعهای از وظایف کوچک و ریزدانه تقسیم کنیم. سپس برای هر وظیفه یک ایجنت جداگانه تعریف کنیم، بهطوریکه خروجی ایجنت اول، ورودی ایجنت دوم باشد، خروجی ایجنت دوم به ایجنت سوم منتقل شود و همینطور ادامه پیدا کند.
برای مثال، فرض کنید میخواهیم در یک بلاگ، پستی دربارهی موضوع دلخواه بنویسیم. میتوانیم سه ایجنت تعریف کنیم:
- ایجنت اول ساختار پست شامل تیتر و بخشها (Outline) را تولید کند.
- ایجنت دوم با دریافت این ساختار، متن اصلی پست را بنویسد.
- ایجنت سوم متن نوشتهشده را ویرایش و روانسازی کند.
اما این الگو در کد چطور پیادهسازی میشود؟ فریمورک Google ADK یک ورکفلو به نام SequentialAgent دارد که ایجنتها را به ترتیب اجرا میکند. مثلاً قطعهکد زیر سه ایجنت کدنویس، بازبین کد و ریفکتورکننده کد را پشت سر هم فراخوانی میکند:
#همخوانی_کتاب
@golemcourse
ایدهی اصلی این است که بهجای سپردن همهی کارها در قالب یک پرامپت به ایجنت، مسئله را به مجموعهای از وظایف کوچک و ریزدانه تقسیم کنیم. سپس برای هر وظیفه یک ایجنت جداگانه تعریف کنیم، بهطوریکه خروجی ایجنت اول، ورودی ایجنت دوم باشد، خروجی ایجنت دوم به ایجنت سوم منتقل شود و همینطور ادامه پیدا کند.
برای مثال، فرض کنید میخواهیم در یک بلاگ، پستی دربارهی موضوع دلخواه بنویسیم. میتوانیم سه ایجنت تعریف کنیم:
- ایجنت اول ساختار پست شامل تیتر و بخشها (Outline) را تولید کند.
- ایجنت دوم با دریافت این ساختار، متن اصلی پست را بنویسد.
- ایجنت سوم متن نوشتهشده را ویرایش و روانسازی کند.
اما این الگو در کد چطور پیادهسازی میشود؟ فریمورک Google ADK یک ورکفلو به نام SequentialAgent دارد که ایجنتها را به ترتیب اجرا میکند. مثلاً قطعهکد زیر سه ایجنت کدنویس، بازبین کد و ریفکتورکننده کد را پشت سر هم فراخوانی میکند:
SequentialAgent(
sub_agents=[CodeWriterAgent, CodeReviewerAgent, CodeRefactorerAgent]
)
#همخوانی_کتاب
@golemcourse
Telegram
Golem Course
بهتازگی دکتر Antonio Gulli، مدیر ارشد دفتر CTO گوگل در زوریخ، پیشنویس کتاب خود را بهصورت رایگان در دسترس عموم قرار داده است:
لینک کتاب
نام کتاب Agentic Design Patterns است. هدف آن آموزش الگوهای طراحی متداول در سیستمهای مبتنی بر ایجنت است. من بهطور…
لینک کتاب
نام کتاب Agentic Design Patterns است. هدف آن آموزش الگوهای طراحی متداول در سیستمهای مبتنی بر ایجنت است. من بهطور…
👍25❤6🐳2
فصل دوم کتاب Agentic Design Patterns به معرفی الگوی Routing میپردازد. این الگو امکان اضافه کردن رفتار انتخابی (Condition) به سیستم را فراهم میکند.
برای مثال، فرض کنید کاربر در یک چتبات پیامی به ایجنت ارسال میکند. بر اساس محتوای پیام، ایجنت تصمیم میگیرد چه واکنشی نشان دهد:
اگر پیام مربوط به پشتیبانی باشد، آن را به ایجنت دیگری که متخصص ارتباط با مشتری است محول میکند.
اگر پیام به امور حسابداری ارتباط داشته باشد، ایجنت ممکن است ابزار اتصال به پایگاه داده را فراخوانی کند.
به طور خلاصه، یک ایجنت هماهنگکننده وجود دارد که تشخیص میدهد کار باید به کدام ایجنت یا ابزار سپرده شود. به همین دلیل این الگو را Routing مینامند.
مزیت این روش چیست؟ به جای آنکه یک مسیر از پیشتعیینشده وجود داشته باشد، مسیر پاسخدهی به کاربر به صورت پویا و بر اساس محتوای ورودی انتخاب میشود.
#همخوانی_کتاب
@golemcourse
برای مثال، فرض کنید کاربر در یک چتبات پیامی به ایجنت ارسال میکند. بر اساس محتوای پیام، ایجنت تصمیم میگیرد چه واکنشی نشان دهد:
اگر پیام مربوط به پشتیبانی باشد، آن را به ایجنت دیگری که متخصص ارتباط با مشتری است محول میکند.
اگر پیام به امور حسابداری ارتباط داشته باشد، ایجنت ممکن است ابزار اتصال به پایگاه داده را فراخوانی کند.
به طور خلاصه، یک ایجنت هماهنگکننده وجود دارد که تشخیص میدهد کار باید به کدام ایجنت یا ابزار سپرده شود. به همین دلیل این الگو را Routing مینامند.
مزیت این روش چیست؟ به جای آنکه یک مسیر از پیشتعیینشده وجود داشته باشد، مسیر پاسخدهی به کاربر به صورت پویا و بر اساس محتوای ورودی انتخاب میشود.
#همخوانی_کتاب
@golemcourse
Telegram
Golem Course
بهتازگی دکتر Antonio Gulli، مدیر ارشد دفتر CTO گوگل در زوریخ، پیشنویس کتاب خود را بهصورت رایگان در دسترس عموم قرار داده است:
لینک کتاب
نام کتاب Agentic Design Patterns است. هدف آن آموزش الگوهای طراحی متداول در سیستمهای مبتنی بر ایجنت است. من بهطور…
لینک کتاب
نام کتاب Agentic Design Patterns است. هدف آن آموزش الگوهای طراحی متداول در سیستمهای مبتنی بر ایجنت است. من بهطور…
👍10❤8
فصل سوم کتاب Agentic Design Patterns به الگوی Parallelization میپردازد. در این الگو، درخواستها بهطور همزمان و موازی به چند ایجنت ارسال میشوند، زیرا تسکی که قرار است انجام شود، قابلیت شکستهشدن به بخشهای کوچکتر و مستقل را دارد. وظیفهی ایجنت اصلی در اینجا تجمیع نتایج است.
برای مثال، قابلیت جستوجوی عمیق را در نظر بگیرید. جستوجوی یک موضوع خاص و خلاصهسازی آن میتواند بهطور مستقل توسط یک ایجنت انجام شود، در حالیکه ایجنت دیگری روی موضوع دیگری کار کند. فرض کنید قصد داریم وضعیت بازار سهام یک شرکت را بررسی کنیم:
یک ایجنت صورتحسابهای مالی شرکت را تحلیل میکند.
ایجنت دیگر خبرهای مرتبط با شرکت در یک ماه گذشته را مرور میکند.
ایجنت سوم شاخصهای سهام آن شرکت در بورس را بررسی میکند.
در نهایت، هر یک از این ایجنتها نتایج خود را برای ایجنت اصلی ارسال میکنند و ایجنت اصلی وظیفهی ترکیب و ارائهی خروجی نهایی را بر عهده دارد.
نکتهای که باید به آن توجه داشت این است که هرچند نام این الگو «موازیسازی» است، در عمل (بهویژه به دلیل استفاده از زبان پایتون در اکثر کتابخانهها) این فراخوانیها معمولاً بهصورت async در یک event loop اجرا میشوند. این موضوع از لحاظ کارایی مشکلی ایجاد نمیکند، زیرا بیشتر این فراخوانیها از نوع IO-bound هستند.
در کتابخانههایی مانند Google ADK میتوان این الگو را به شکل زیر پیادهسازی کرد.
#همخوانی_کتاب
@golemcourse
برای مثال، قابلیت جستوجوی عمیق را در نظر بگیرید. جستوجوی یک موضوع خاص و خلاصهسازی آن میتواند بهطور مستقل توسط یک ایجنت انجام شود، در حالیکه ایجنت دیگری روی موضوع دیگری کار کند. فرض کنید قصد داریم وضعیت بازار سهام یک شرکت را بررسی کنیم:
یک ایجنت صورتحسابهای مالی شرکت را تحلیل میکند.
ایجنت دیگر خبرهای مرتبط با شرکت در یک ماه گذشته را مرور میکند.
ایجنت سوم شاخصهای سهام آن شرکت در بورس را بررسی میکند.
در نهایت، هر یک از این ایجنتها نتایج خود را برای ایجنت اصلی ارسال میکنند و ایجنت اصلی وظیفهی ترکیب و ارائهی خروجی نهایی را بر عهده دارد.
نکتهای که باید به آن توجه داشت این است که هرچند نام این الگو «موازیسازی» است، در عمل (بهویژه به دلیل استفاده از زبان پایتون در اکثر کتابخانهها) این فراخوانیها معمولاً بهصورت 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."
)
#همخوانی_کتاب
@golemcourse
👍15❤1
در فصل چهارم کتاب Agentic Design Patterns با الگوی Reflection آشنا میشویم. ایدهی اصلی این الگو ارزیابی خروجی یک ایجنت توسط ایجنتی دیگر است. یعنی از یک ایجنت برای بررسی، نقد و بهبود خروجی ایجنت دیگر استفاده میکنیم. به همین دلیل در اینجا با یک حلقه روبهرو هستیم.
برای مثال، فرض کنید میخواهیم سیستمی برای تولید محتوا طراحی کنیم. در این سیستم، یک ایجنت متخصص تولید محتوا تعریف میکنیم و ایجنت دیگری به عنوان ارزیاب در نظر میگیریم. ایجنت ارزیاب خروجی ایجنت تولیدکننده را از نظر کیفیت بررسی کرده و به آن بازخورد میدهد. سپس ایجنت تولیدکنندهی محتوا بازخورد دریافتی را اعمال میکند و تلاش میکند خروجی خود را بهبود ببخشد. این روند میتواند تا زمانی تکرار شود که ایجنت ارزیاب رضایت پیدا کند یا اینکه یک تعداد تکرار بیشینه تعریف کنیم تا سیستم در حلقهی بینهایت گرفتار نشود.
در Google ADK معمولاً این الگو به شکل زیر پیادهسازی میشود:
این یکی از الگوهایی است که شخصاً خیلی دوستش دارم. بارها در کار از آن استفاده کردهام و تأثیرش را در خروجی بهخوبی دیدهام.
#همخوانی_کتاب
@golemcourse
برای مثال، فرض کنید میخواهیم سیستمی برای تولید محتوا طراحی کنیم. در این سیستم، یک ایجنت متخصص تولید محتوا تعریف میکنیم و ایجنت دیگری به عنوان ارزیاب در نظر میگیریم. ایجنت ارزیاب خروجی ایجنت تولیدکننده را از نظر کیفیت بررسی کرده و به آن بازخورد میدهد. سپس ایجنت تولیدکنندهی محتوا بازخورد دریافتی را اعمال میکند و تلاش میکند خروجی خود را بهبود ببخشد. این روند میتواند تا زمانی تکرار شود که ایجنت ارزیاب رضایت پیدا کند یا اینکه یک تعداد تکرار بیشینه تعریف کنیم تا سیستم در حلقهی بینهایت گرفتار نشود.
در 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,
)
این یکی از الگوهایی است که شخصاً خیلی دوستش دارم. بارها در کار از آن استفاده کردهام و تأثیرش را در خروجی بهخوبی دیدهام.
#همخوانی_کتاب
@golemcourse
👍13❤3
Forwarded from MetaPage
این کانال با هدف همخوانی کتابهای حوزه فناوری، بهویژه کتابهای مرتبط با هوش مصنوعی ایجاد شده است. گاهی یک کتاب را بهطور کامل و فصلبهفصل مطالعه میکنیم و نکات مهم و ارزشمند آن را در اینجا منتشر میکنیم. گاهی هم ممکن است تنها یک فصل از یک کتاب به دلیل اهمیتش بررسی و همخوانی شود.
مدیریت کانال در حال حاضر بر عهده دو نفر است و احتمال دارد در آینده افراد دیگری نیز به این مجموعه بپیوندند:
۱. محمد طلایی
۲. علیرضا آقامحمدی
برای سهولت در جستوجوی کتابها و فصلهای همخوانی شده، از هشتگهایی با الگوی زیر استفاده میکنیم
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
❤15👍3
MetaPage
این کانال با هدف همخوانی کتابهای حوزه فناوری، بهویژه کتابهای مرتبط با هوش مصنوعی ایجاد شده است. گاهی یک کتاب را بهطور کامل و فصلبهفصل مطالعه میکنیم و نکات مهم و ارزشمند آن را در اینجا منتشر میکنیم. گاهی هم ممکن است تنها یک فصل از یک کتاب به دلیل اهمیتش…
برای جلوگیری از شلوغ شدن کانال فعلی، یک کانال جداگانه مخصوص همخوانی کتاب ایجاد کردیم. بنابراین ادامه پستهای خواندن کتاب Agentic Design Patterns در کانال مذکور قرار میگیره. ☝️
❤16👍5
Forwarded from MetaPage
یکی از مسائلی که اگر با مدلهای زبانی بزرگ (LLMها) یا ایجنتها کار کرده باشید حتماً با آن روبهرو شدهاید و احتمالاً گاهی هم آزارتان داده این است که وقتی از مدل خروجی را در قالب JSON میخواهید، همیشه دقیقاً همانطور تحویلتان نمیدهد.
گاهی ابتدای خروجی یا انتهای آن ``` یا ```json میگذارد، گاهی هم ساختار JSON را درست رعایت نمیکند و چیزی کم یا زیاد دارد که رفع کردن آن آزاردهنده است.
یکی از راهحلهایی که ما در شرکت چند ماهی است از آن استفاده میکنیم و نتیجهی خیلی خوبی هم گرفتهایم، استفاده از کتابخانهی json_repair است.
این کتابخانه خروجی مدل را میگیرد و اگر مشکل داشته باشد، آن را بهصورت خودکار اصلاح میکند.
ممکن است بپرسید خودمان نمیتوانیم چنین کدی بنویسیم؟
چرا، میشود. اما نکتهی جالب در مورد این کتابخانه این است که از دید نظری به مسئله نگاه کرده است. اگر درس نظریهی زبانها و ماشینها را گذرانده باشید، میدانید که هر زبانی از جمله ساختار JSON را میتوان با یک گرامر (Grammar) توصیف کرد.
این کتابخانه هم دقیقاً از همین ایده استفاده کرده: سعی میکند خروجی مدل را طوری اصلاح کند که با گرامر JSON سازگار شود.
در پست قبلی دربارهی Guardrails و بهویژه قابلیت Callbackها صحبت کردیم. یکی از بهترین جاها برای فراخوانی این کتابخانه، همین Callbackها هستند.
راستی، این پست آخرین مطلب از بررسی کتاب Agentic Design Patterns است. باقی فصلهای کتاب مذکور به نظرم چندان ارزش بررسی بیشتر ندارد و کتابهای موجود دیگر بهتر آن مطالب را بیان میکنند.
ادامه پستهای این کانال بررسی کتابهای دیگر خواهد بود.
#ADP_AG_CH_18
@metapageai
گاهی ابتدای خروجی یا انتهای آن ``` یا ```json میگذارد، گاهی هم ساختار JSON را درست رعایت نمیکند و چیزی کم یا زیاد دارد که رفع کردن آن آزاردهنده است.
یکی از راهحلهایی که ما در شرکت چند ماهی است از آن استفاده میکنیم و نتیجهی خیلی خوبی هم گرفتهایم، استفاده از کتابخانهی json_repair است.
این کتابخانه خروجی مدل را میگیرد و اگر مشکل داشته باشد، آن را بهصورت خودکار اصلاح میکند.
ممکن است بپرسید خودمان نمیتوانیم چنین کدی بنویسیم؟
چرا، میشود. اما نکتهی جالب در مورد این کتابخانه این است که از دید نظری به مسئله نگاه کرده است. اگر درس نظریهی زبانها و ماشینها را گذرانده باشید، میدانید که هر زبانی از جمله ساختار JSON را میتوان با یک گرامر (Grammar) توصیف کرد.
این کتابخانه هم دقیقاً از همین ایده استفاده کرده: سعی میکند خروجی مدل را طوری اصلاح کند که با گرامر JSON سازگار شود.
در پست قبلی دربارهی Guardrails و بهویژه قابلیت Callbackها صحبت کردیم. یکی از بهترین جاها برای فراخوانی این کتابخانه، همین Callbackها هستند.
راستی، این پست آخرین مطلب از بررسی کتاب Agentic Design Patterns است. باقی فصلهای کتاب مذکور به نظرم چندان ارزش بررسی بیشتر ندارد و کتابهای موجود دیگر بهتر آن مطالب را بیان میکنند.
ادامه پستهای این کانال بررسی کتابهای دیگر خواهد بود.
#ADP_AG_CH_18
@metapageai
GitHub
GitHub - mangiucugna/json_repair: A python module to repair invalid JSON from LLMs
A python module to repair invalid JSON from LLMs. Contribute to mangiucugna/json_repair development by creating an account on GitHub.
❤9👍7