ساخت دستیار هوش مصنوعی با پایتون – از صفر تا صد با مثال و کد

۲۳
۱۴۰۵/۰۳/۳۱
۳۳ دقیقه
PDF
آموزش متنی جامع
امکان دانلود نسخه PDF

برای اجرای این پروژه از API-های ارائه شده توسط «مدل‌های زبانی بزرگ» یا همان LLM-ها کمک می‌گیریم. هر کدام از برنامه نویسان پایتون می‌توانند دستیار شخصی هوش مصنوعی خود را بسازند. اما ساخت دستیار هوش مصنوعی از صفر به تکنولوژی بالا، مهارت زیاد، سخت‌افزار بسیار قدرتمند و داده‌های مرجع خیلی بزرگی نیاز دارد. بنابراین بهترین روش کمک گرفتن از API-هایی است که توسط مدل‌های زبانی بزرگ در اختیار برنامه نویسان قرار می‌گیرند. وجود دستیار هوش مصنوعی در گروه‌ها و چت‌های شبکه‌های اجتماعی کمک خیلی زیادی به افراد می‌کند که با سرعت هرچه بیشتر پاسخ سوالات خود را پیدا کنند. این ابزارها می‌توانند وظایف مختلفی مانند طراحی تصویر، کمک به مدیریت گروه و غیره را برعهده بگیرند.

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

در این مطلب از مجله فرادرس، روش ساخت دستیار هوش مصنوعی با پایتون را بررسی می‌کنیم. برای این کار اول سرور پایتونی درست می‌کنیم که با API یکی از LLM-های ساخته شده توسط شرکت آنتروپیک ارتباط برقرار کند. سپس این سرور به SDK-های چت در بخش فرانت‌اند متصل می‌کنیم. در نتیجه کاربران می‌توانند «عامل هوش مصنوعی» (AI Agent) را برای گروه یا کانال مورد نظر خود راه‌اندازی و متوقف کنند.

روش ساخت دستیار هوش مصنوعی با پایتون چیست؟

ساخت دستیارهای هوش مصنوعی حرفه‌ای و کامل، پروژه‌ای بسیار چالش‌برانگیز است. به وجود آوردن قابلیت‌هایی مانند «پاسخ‌های جریانی» (Streaming Responses)، «کامپوننت‌های جدولی» (Table Componen) و تولید کد، به پیاده‌سازی‌های پیچیده در SDK-ها و بخش بک‌اند نیاز دارند.

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

  1. در این تکنیک API چت را از طریق سرور بک‌اند (این سرور را می‌توان با NodeJS یا Python ساخت) به ارائه‌دهندگان خارجی «مدل‌های زبانی بزرگ» (Large Language Model | LLM) متصل می‌کنیم.
  2. پس از راه‌اندازی، عامل هوش مصنوعی به کانال یا گروه مورد نظر ملحق می‌شود.
  3. پیام‌های جدید شرکت‌کنندگان در چت را دریافت می‌کند.
  4. آن‌ها را برای تولید پاسخ‌های هوش مصنوعی به LLM ارسال می‌کند.
  5. در پایان هم پاسخ‌های گرفته شده از LLM را به فضای چت برمی‌گرداند.
روش ساخت دستیار هوش مصنوعی با پایتون
روش ساخت دستیار هوش مصنوعی با پایتون

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

برای نصب اپلیکیشن رایگان مجله فرادرس، کلیک کنید.

ایجاد پروژه جدید برای ساخت دستیار هوش مصنوعی با پایتون

اول از همه دایرکتوری جدیدی برای پروژه خود می‌سازیم و وارد آن می‌شویم. به طور کل بهتر است که هر پروژه در دایرکتوری و فضای مجازی مختص به خودش ثبت شود.

از آن‌جا که می‌خواهیم برنامه دستیار هوش مصنوعی را به صورت ایزوله توسعه بدهیم از ماژول Virtualenv در پایتون استفاده خواهیم کرد. با این کار، پروژه فعلی با سایر پروژه‌های موجود در کامپیوتر تداخل پیدا نمی‌کند. در کادر پایین، کدهای مربوط به ساخت محیط مجازی پایتون با نام env  را نوشته‌ایم.

قبل از ادامه کار باید محیط مجازی ساخته شده را فعال کنیم. به این منظور دستور زیر را در خط فرمان ویندوز نوشته و دکمه Enter را فشار می‌دهیم.

اگر از سیستم عامل لینوکس یا macOS استفاده می‌کنید باید دستور خود را به شکل پایین بنویسید.

اکنون باید ببینید که تمام خطوط ترمینال با عبارت (env)  شروع می‌شوند. این علامت، نشان‌دهنده آن است که محیط مجازی فعال شده و در حال کار در داخل آن هستیم. از این به بعد، تمام پکیج‌های پایتونی که نصب می‌کنیم در این محیط به صورت ایزوله نگهداری خواهند شد.

نصب وابستگی‌ها برای ساخت دستیار هوش مصنوعی با پایتون

برای اجرای این پروژه به چندین پکیج و کتابخانه مختلف نیاز داریم. به مجموعه ابزارهای مورد نیاز برای راه‌اندازی و اجرای پروژه‌ها «وابستگی» (Dependency) گفته می‌شود. برای نصب وابستگی‌های هر پروژه با کمک pip در پایتون (به طور خاص پروژه‌های تعریف شده در گیت‌هاب) دو روش وجود دارد.

  1. هم می‌توانیم آن‌ها را یک به یک به صورت جداگانه نصب کنیم.
  2. و هم اینکه با کمک فایل requirements.txt همه را یکباره نصب بکنیم.

نکته: البته فایل requirements.txt باید از قبل توسط توسعه‌دهنده دیگری تکمیل شده باشد. به طور معمول تمام پروژه‌های حرفه‌ای گیت‌هاب دارای فایل requirements.txt هستند.

هوش مصنوعی با کمک پایتون به کامپیوتر متصل شده است.

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

برای اجرای این پروژه لازم است که پکیج‌های معرفی شده در کد بالا را بر روی سیستم نصب کنیم. در فهرست پایین، تمام این پکیج‌ها را معرفی کرده‌ایم.

  • fastapi: فریم‌ورک FastAPI کتابخانه‌‌ بک‌اند سبک اما قدرتمندی است که برای ساخت API به کار برده می‌شود. با کمک این فریم‌ورک بدون نیاز به نوشتن حجم زیادی از کدهای تکراری و اضافی به شکل بسیار آسان‌تری سرور خود را راه‌اندازی می‌کنیم.
  • stream-chat: برای مدیریت دستیار هوش مصنوعی، پیاده‌سازی سیستم چت و همچنین ارسال پیام‌ها و رویدادها از بسته سمت سرور پایتون به نام «Stream Chat» استفاده می‌کنیم.
  • python-dotenv: این پکیج به مخفی نگه داشتن اطلاعات محرمانه کمک می‌کند. به این صورت که آن‌ها را در فایل .env  ذخیره می‌کنیم. سپس با کمک بسته محبوب «Dotenv» این اطلاعات را در محیط کار بارگذاری می‌کنیم. با کمک این پکیج داده‌های حساس ایمن می‌مانند و از دید افراد کنجکاو دور خواهند بود.
  • anthropic: این پکیج، «کیت توسعه نرم‌افزار» (SDK) رسمی پایتون از Anthropic است. anthropic به برنامه نویسان اجازه می‌دهد به ساده‌ترین و مستقیم‌ترین شکل ممکن با سرویس‌های مدل زبانی بزرگ این شرکت تعامل داشته باشند.
کتابخانهکاربرد
FastAPIساخت API و مدیریت بک‌اند سبک و سریع
Stream Chatمدیریت چت، پیام‌ها و رویدادهای کانال
Python Dotenvمدیریت امن اطلاعات حساس در فایل .env
Anthropicاتصال به مدل‌های زبانی Claude و استفاده از LLM

موراد معرفی شده در فهرست بالا تمام بسته‌هایی هستند که به آن‌ها نیاز داریم. پس از نصب آن‌ها، می‌توانیم پیاده‌سازی پروژه را آغاز کنیم.

یادگیری کار با هوش مصنوعی در پایتون توسط فرادرس

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

مجموعه آموزش هوش مصنوعی با پایتون – مقدماتی تا پیشرفته
با کلیک بر روی تصویر بالا می‌توانید به صفحه اصلی مجموعه فیلم‌های آموزش هوش مصنوعی با پایتون از دوره‌های مقدماتی تا پیشرفته هدایت شوید.

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

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

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

راه‌اندازی فایل محیط کار

قبل از اجرای پروژه، لازم است که کلید‌های API تمام سرویس‌های مورد استفاده خود را به شکل درست ثبت بکنیم. در برنامه فعلی هم اول باید فایلی به نام .env  بسازید. سپس مطابق با الگوی زیر این موارد را ذخیره کنید.

نکته ۱: توجه کنید که در این پروژه از Anthropic کمک می‌گیریم. در صورت تمایل می‌توانید از ارائه دهنده‌های دیگری مانند «OpenAI» یا «Gemini» هم کمک بگیرید.

نکته ۲: برای گرفتن کلید API از آنتروپیک باید به سایت رسمی این شرکت رفته و در آن ثبت نام بکنید. بعد از ورود به داشبورد خودتان در بخش راست صفحه گزینه «API Keys» وجود دارد. بعد از کلیک بر روی آن و رفتن به این بخش باید روی دکمه «Create Key» کلیک کنید.

  • لینک ساخت اکانت در سایت آنتروپیک (+)

نکته ۳: دو کلید بعدی مربوط به خود Anthropic نیستند. این موارد باید از سایت رسمی پکیج Stream Chat گرفته بشوند. اول ثبت نام کرده و وارد محیط کاربری خود بشوید. سپس باید App جدیدی ایجاد کنید. داخل Dashboard این موارد را می‌بینید. بر روی دکمه مخصوص کپی کلیک کرده و هر کدام را در جایگاه درست خودش در فایل .env  پیست بکنید.

  • لینک ساخت اکانت در سایت رسمی Stream (+)

نکته ۴: در داخل فایل .env  نباید کدها یا کلیدهای خود را داخل کوتیشن معمولی ''  یا دوبل ""  قرار بدهید. کلیدهای مورد نظر را فقط به صورت ساده و بدون فاصله در مقابل عملگر =  بنویسید.

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

سه مورد از LLM-های مناسب برای روش ساخت دستیار هوش مصنوعی با پایتون
سه مورد از LLM-های مناسب برای روش ساخت دستیار هوش مصنوعی با پایتون

اضافه کردن و حذف عامل‌های هوش مصنوعی

به طور قرار دادی برای پیاده‌سازی بیشتر پروژه‌های پایتون، ابتدا باید فایلی با نام main.py  در پوشه اصلی پروژه ایجاد کرده و آن را در ویرایشگر کد خود، برای مثال «Visual Studio Code» باز کنیم.

سپس با اضافه کردن قطعه کد زیر به فایل، اولین دستورات مربوط به بک‌اند FastAPI را می‌نویسیم.

همین‌طور که مشاهده می‌کنید برای راه‌اندازی این ربات باید بتوانیم با API-ها در پایتون کار کنیم. ساخت API در پایتون ساده است. اما نکات و زیره‌کاری‌های فنی خودش را دارد. در صورت نیاز به کمک در یادگیری این مهارت، پیشنهاد می‌کنیم که مطلب مربوط به آن را در مجله فرادرس مطالعه کنید.

سادگی شروع کار در اینجا به وضوح مشخص است. راه‌اندازی اولیه تنها با یک خط کد انجام می‌شود. سپس بخشی به برنامه اضافه می‌کنیم تا بعد از اجرای فایل، سرور روی پورت 8001  در دسترس قرار بگیرد. در این مرحله سرور اجرا می‌شود، اما هنوز هیچ «نقطه پایانی»‌ (Endpoint) یا آدرس برای مقصد ارائه نمی‌کند، بنابراین باید این موضوع را هم اصلاح کنیم. اکنون باید آدرس مقصد‌های مورد نیاز را بررسی کنیم. در حال حاضر به دو آدرس زیر نیاز داریم.

  1. start-ai-agent: این نقطه پایانی باید از نوع درخواست POST باشد. زیرا باید کانال یا گروهی را مشخص کند که عامل هوش مصنوعی در آن راه‌اندازی می‌شوند. در این بخش، کاربر ربات را به کانال اضافه کرده و عامل هوش مصنوعی را مقداردهی اولیه می‌کنیم.
  2. stop-ai-agent: این Endpoint نیز باید از نوع درخواست POST باشد، زیرا کانالی را مشخص می‌کنیم که عامل هوش مصنوعی آن باید متوقف شود. در این مرحله، عامل هوش مصنوعی را پاک‌سازی کرده، کاربر ربات را از کانال حذف می‌کنیم و اتصال به بک‌اند Stream را می‌بندیم.

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

بیایید با نقطه پایانی مربوط به start-ai-agent  شروع کنیم. این نقطه پایانی را با استفاده از دکوراتور @  تعریف می‌کنیم. ابتدا باید با استفاده از «مقداردهی اولیه ناهمگام» (Async Initializer) اتصال به چت فعال را برقرار کرده و ربات را به کانال اضافه کنیم. پیش از تعریف خود نقطه پایانی، باید پارامترهای مورد نیاز آن را مشخص کنیم. FastAPI برای تعریف این مدل‌ها از «Pydantic» استفاده می‌کند. در این مطلب، مدل خود را StartAgentRequest  می‌نامیم و آن را به این شکل تعریف می‌کنیم.

توجه: می‌توانیم این کد را به ابتدای فایل «main.py» اضافه کنیم.

در پایین کدهای مربوط به تنظیم اندپوینت را نوشته‌ایم.

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

سپس متغیر bot_id  را درست می‌کنیم. این متغیر وظیفه به‌روزرسانی «شماره شناسه کانال» یا (Channel ID) را دارد. این شناسه باید به صورت تکرارپذیر تولید شود. با این کار از ساخته شده چند عامل هوش مصنوعی هر کانال مجزا جلوگیری می‌کنیم.

کد تابع کمکی ما به شکل زیر است.

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

نحوه عملکرد دستیار هوش مصنوعی در لپتاپ - ساخت دستیار هوش مصنوعی با پایتون

نکته ۱: باید آخرین فراخوانی را در یک بلوک «Try-Except» قرار دهیم، زیرا نمی‌توانیم ربات را به چند کانال مختلف اضافه کنیم. این موضوع یکی از محدودیت‌های پروژه است، زیرا SDK پایتون در حال حاضر از قابلیت «Watchers» پشتیبانی نمی‌کند. اگر به این قابلیت نیاز دارید، می‌توانید از SDK مربوط به «Node.js» استفاده کنید. بلوک «Try-Except» به خاطر این است که اگر اضافه کردن ربات با خطا مواجه شود، خطا را به صورت مناسب مدیریت کنیم. با کمک «Try-Except» اتصال به کلاینت را می‌بندیم و پاسخ مناسبی برمی‌گردانیم.

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

از آنجا که Node.js از Watchers برای تشخیص حضور عامل هوش مصنوعی در کانال استفاده می‌کند، باید نمونه‌های فرانت‌اند را تغییر دهیم تا به جای استفاده از Watchers، بررسی کنند که آیا عضو AI از قبل به کانال اضافه شده است یا نه. در ادامه، نمونه‌ای از پیاده‌سازی این موضوع در React با استفاده از هوک useEffect  آورده شده است. در مثال فرانت‌اند، این کد در فایل «MyChannelHeader.tsx» قرار می‌گیرد.

در مرحله بعد، نوبت به ساخت و مدیریت عامل‌های هوش مصنوعی می‌رسد. برای این کار، ابتدا باید عامل پایه را ایجاد کنیم. در حال حاضر فقط فایل اولیه را می‌سازیم و در فصل بعد آن را کامل‌تر توسعه می‌دهیم. به این منظور، فایل جدیدی با نام «AnthropicAgent.py» ایجاد می‌کنیم و کد زیر را در آن قرار می‌دهیم.

در این کلاس، ابتدا نمونه‌ای از کلاینت چت و کانال موردنظر را دریافت می‌کنیم. از این اطلاعات بعدا برای مدیریت پیام‌ها و ارتباط با کانال استفاده خواهیم کرد. سپس کلید API مربوط به Anthropic را از متغیرهای محیطی دریافت می‌کنیم. اگر این کلید وجود نداشته باشد، برنامه خطا اعلام می‌کند. در غیر این صورت، کلاینت AsyncAnthropic  را مقداردهی اولیه می‌کنیم. با این کار می‌توانیم با API ارتباط برقرار کنیم. در ادامه، متدی با نام dispose  تعریف می‌کنیم. این متد وظیفه بستن اتصال chat_client  را بر عهده دارد.

پس از انجام این کار، می‌توانیم به فایل main.py برگردیم و پیاده‌سازی نقطه پایانی مربوط به start-ai-agent  را ادامه دهیم. هر بار که عامل جدیدی ساخته می‌شود، آن را داخل دیکشنری مشخصی ذخیره می‌کنیم. با این کار، بعدا می‌توانیم به تمام عامل‌ها دسترسی داشته باشیم و آن‌ها را مدیریت کنیم.

قبل از تعریف کردن نقطه پایانی مربوط به start-ai-agent باید دیکشنری خود را مقداردهی اولیه کنیم.

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

اگر از قبل عامل هوش مصنوعی برای این کانال وجود داشته باشد، پیش از ایجاد عامل جدید باید آن را به شلک درست آزادساز یا غیر فعال کنیم. بنابراین نمونه‌ای جدید از AnthropicAgent  ایجاد کرده و چرخه عمر آن را مدیریت می‌کنیم. این کار از «نشت حافظه» (Memory Leak) جلوگیری می‌کند و اطمینان می‌دهد که برای هر ربات فقط یک عامل فعال وجود داشته باشد.

اتصال دستیار هوش مصنوعی با وب‌هوک به کمک پایتون به مدل زبانی بزرگ - ساخت دستیار هوش مصنوعی با پایتون

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

در کادر پایین، نسخه کد کامل شده برای آن را نوشته‌ایم.

با اجرای دستور پایین در خط فرمان می‌توانیم سرور طراحی شده خود را اجرا کنیم.

python main.py

اکنون می‌توانیم ایجنت‌های تعریف شده را به راحتی به کانال اضافه کرده یا از آن حذف کنیم. اما فعلا این ایجنت‌ها هیچ‌ کاری انجام نمی‌دهند. بنابراین لازم است که هنوز بر روی آن‌ها کارهای بیشتری را انجام دهیم.

گوش دادن به پیام‌ها با استفاده از وب‌هوک

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

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

برای انجام این کار، می‌توانیم از «وب‌هوک» (Webhook) استفاده کنیم. این وب‌هوک هر بار که پیام جدیدی ارسال شود، فعال خواهد شد. برای این منظور، نقطه پایانی با نام new-message  تعریف می‌کنیم. این بخش رویداد مربوط به پیام جدید را دریافت می‌کند و سپس عملیات مناسب را انجام می‌دهد.

ابتدا مدلی را برای این نقطه پایانی تعریف می‌کنیم.

در این برنامه از نوع optional استفاده می‌کنیم. زیرا ممکن است رویداد‌های مختلفی همراه با پارامتر‌های گوناگون روی بدهند. بعدا در زمان پیاده‌سازی، انواع رویداد‌های مختلف را بررسی می‌کنیم.

سپس اندپوینت پایه‌ای را تعریف می‌کنیم که باید به عنوان «وب‌هوک» (Webhook) ثبت بشود.

البته این کد در حال حاضر هیچ کاری انجام نمی‌دهد. اما می‌توانیم بررسی کنیم که آیا ثبت Webhook به درستی انجام شده است یا نه.

راه‌اندازی و تست وب‌هوک با Ngrok

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

  1. اول باید به سایت رسمی آن بروید (+)‌.
  2. سپس نسخه جدید و متناسب با سیستم عامل خود را دانلود کنید. نسخه ۶۴ بیتی مناسب ویندوز ۱۱ را به صورت آماده در انتهای مطلب قرار داده‌ایم.
  3. قرار دادن فایل اجرایی در دایرکتوری پروژه
  4. در وب‌سایت ثبت نام کنید.
  5. توکن رایگان Ngrok را دریافت کرده و با کمک کد ngrok config add-authtoken "YOUR_AUTHTOKEN" در سیستم خود (بدون علامت کوتیشن) آن را ثبت کنید.
مراحل فعال‌سازی Ngrok برای راه‌اندازی سرور محلی
مراحل فعال‌سازی Ngrok برای راه‌اندازی سرور محلی

بعد از ثبت‌نام و نصب آن روی سیستم، می‌توانیم سرور خود را با دستور زیر روی وب در دسترس قرار دهیم.

نکته: یادتان باشد که پورت 8001  را برای سرور پایتون تنظیم کرده‌ایم.

اجرای دستور بالا باعث تولید آدرس دامنه موقت یا نابودشدنی می‌شود. برای همین باید آدرس را در جای امنی کپی کنیم. آدرس مورد نظر شبیه به چیزی مانند مورد نوشته شده در کادر پایین است.

برای ثبت این مورد به عنوان فراخوانی برای رسیدن پیام‌های جدید، به داشبورد Stream و صفحه پروژه خود می‌رویم. سپس به بخش Webhooks اسکرول می‌کنیم (تصویر زیر را ببینید). دامنه‌ای را که همین حالا کپی کرده‌ایم در آن قرار می‌دهیم. باید عبارت /new-message  را نیز به انتهای آن اضافه کنیم. در این صورت مطمئن می‌شویم درخواست به نقطه پایانی ارسال می‌شود.

صفحه پروژه خود در داشبورد Stream

تمام رویدادها را به غیر از رویداد مربوط به «پیام» (Message) غیرفعال می‌کنیم. با انجام این کار، می‌توانیم پروژه را اجرا کنیم و در کانال پیام ارسال کنیم، در این صورت، درخواست در کنسول سرور نمایش داده می‌شود. خوب تا اینجا مشخص کردیم که «وب‌هوک» (Webhook) کار می‌کند و الان می‌توانیم خود LLM را پیاده‌سازی کنیم.

کسب مهارت برنامه نویسی به کمک هوش مصنوعی در فرادرس

تکنولوژی جدید و مدرن هوش مصنوعی، روزبه‌روز گسترش بیشتری پیدا می‌کند. هوش مصنوعی، می‌تواند به عنوان مشاور و معلم هم به کار برده شود. استفاده از ابزارهای هوشمند برای دستیابی به راه‌حل‌های جدید، به جذب بهتر پروژه‌های بازار کار کمک می‌کند. بنابراین می‌توانیم فرصت‌های شغلی بهتری را بدست بیاوریم. به همین دلیل، فرادرس مجموعه آموزشی را برای کمک به یادگیری برنامه نویسی با هوش مصنوعی ارائه داده است. با کمک فیلم‌های این مجموعه آموزشی، حتی افراد کاملا مبتدی هم می‌توانند برنامه نویسی یاد بگیرند. در واقع استفاده از هوش مصنوعی به عنوان معلم مجازی یکی از کاربردهای مهم این ابزار است.

در پایین، چند مورد از فیلم‌های این مجموعه آموزشی را معرفی کرده‌ایم.

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

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

در بخش بعد اتصال LLM به ربات نوشته شده را بررسی می‌کنیم.

دسترسی به LLM

در این فصل، بالاخره قابلیت LLM را به برنامه خود اضافه می‌کنیم. در این بخش می‌خواهیم از API-های Anthropic استفاده کنیم، اما در صورت تمایل می‌توانیم آن را با هر سرویس دیگری جایگزین کنیم. با این حال، قبل از پیاده‌سازیAnthropicAgent باید منطق مربوط به نقطه پایانی new-message  را با دستورات مورد نیاز تکمیل کنیم. بعد از انجام این کار به سراغ پیاده‌سازی یا طراحی دستیار هوش مصنوعی یا همان عامل می‌رویم.

  1. در داخل new-message، ابتدا بررسی می‌کنیم که آیا «cid» (شناسه کانال) را در درخواست دریافت کرده‌ایم یا نه.
  2. سپس bot_id  را می‌سازیم و بررسی می‌کنیم که آیا برای آن، عامل در حال اجرایی داریم یا نه.
  3. اگر وجود داشته باشد اما در حال حاضر مشغول پردازش درخواست نباشد، تابع handle_message  عامل را فراخوانی می‌کنیم. این تابع خودش بقیه کارها را انجام می‌دهد.
مراحل بررسی آمادگی سیستم برای دسترسی و استفاده از LLM به منظور ساخت دستیار هوش مصنوعی با پایتون
مراحل بررسی آمادگی سیستم برای دسترسی و استفاده از LLM به منظور ساخت دستیار هوش مصنوعی با پایتون

در کادر پایین، کد کامل این عملیات آورده شده است.

حالا به فایل «AnthropicAgent.py» برمی‌گردیم. در بخش‌های قبلی، مقداردهی اولیه ساده‌ای به آن اضافه کرده بودیم، اما حالا باید چند ویژگی دیگر نیز اضافه کنیم. در جدول پایین تصویر کلی از جریان کار را به صورت خلاصه ارائه کرده‌ایم.

مرحلهچه اتفاقی می‌افتدهدف
نقطه پایانی /new-messageدریافت پیام از کاربرشروع پردازش
ساخت bot_idتولید شناسه عاملپیدا کردن عامل درست
بررسی agentsچک کردن وجود و وضعیت عاملجلوگیری از پردازش تکراری
handle_messageارسال پیام به عاملشروع پردازش AI

در ادامه کار و با پیشرفت کدها فواید استفاده از این ویژگی‌ها مشخص می‌شود. این ویژگی‌ها را به تابع «__init__» اضافه می‌کنیم. در کادر زیر بخش مقداردهی اولیه کلاینت AsyncAnthropic را نوشته‌ایم.

در بخش بعد باید تابع handle_message  را برای مدیریت پیام‌ها بنویسیم. این تابع را از طریق اندپوینت new message  فراخوانی می‌کنیم. اما هنوز پیاده‌سازی نشده است. اول از همه امضای اصلی تابع را اضافه می‌کنیم. سپس مرحله به مرحله آن را تکمیل می‌کنیم.

با هر بار فراخوانی شدن ویژگی processing، مقدار آن را بر روی True  تنظیم می‌کنیم. با این روش می‌توانیم از انجام کارهای تکراری جلوگیری کنیم.

سپس بررسی می‌کنیم که آیا پیام از هوش مصنوعی ارسال شده است یا نه. چون نمی‌خواهیم AI با خودش صحبت کند، (اگر پیام از طرف عامل بود) باید آن را نادیده بگیریم. این کار را با استفاده از ویژگی ai_generated  انجام می‌دهیم.

حالا که می‌دانیم پیام از طرف کاربر است باید آن را پردازش کنیم. برای اینکه مرحله پردازش پیام (یا در واقع زمان صرف شده توسط عامل برای فکر کردن و تولید پاسخ) را به کاربران نشان دهیم، می‌خواهیم پیام خالی به کانال ارسال کنیم. همراه با این پیام یک event  نیز می‌فرستیم تا مشخص شود که عامل الان در حال فکر کردن برای تولید پاسخ است.

برای تولید پاسخ باکیفیت بهتر است که عامل را به مقدار کمی در جریان فضای گفتگو قرار دهیم. در اصطلاح گفته می‌شود که عامل را در جریان «زمینه» (Context) گفتگو قرار می‌دهیم. بنابراین اول پنج پیام آخر موجود در کانال را دریافت می‌کنیم.

در کادر پایین، کد مربوط به این کار را نوشته‌ایم.

سپس با وجود این پیام‌ها و با استفاده از SDK مربوط به anthropic شی anthropic_stream  می‌سازیم.

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

در آخرین مرحله باید رویدادهای دریافت شده از شی anthropic_stream  را مدیریت کنیم. برای رسیدن به این هدف دوباره امضای تابع را اضافه کرده و event_type را استخراج می‌کنیم. سپس انواع مختلف رویدادها و نحوه مدیریت هر کدام را بررسی خواهیم کرد.

چهار رویداد وجود دارد که باید آن‌ها را مدیریت کنیم:

  • content_block_start: این رویداد نشان می‌دهد که تولید پاسخ آغاز شده است.
  • content_block_delta: با این رویداد نشان می‌دهیم که بخش جدیدی از پاسخ دریافت شده است.
  • message_delta: رویداد message_delta نشان می‌دهد تغییری در پیام نهایی ایجاد شده است.
  • message_stop: این رویداد به زمانی مربوط است که تولید پاسخ به پایان رسیده باشد.
اتصال پایتون با وب هوک به LLM

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

فرض کنیم در زمان کار، داده‌های جدیدی از طرف کاربر انسانی ارسال شدند. در این صورت با استفاده از تابع update_message_partial  می‌خواهیم پیام را با آن بخش جدید به‌روزرسانی کنیم. با این حال، برای جلوگیری از ارسال بیش از حد پیام و شلوغ شدن کانال، این کار را فقط برای هر بیستمین «بخش» (Chunk) انجام می‌دهیم. این عدد، دلخواه است و در آینده می‌توان آن را تغییر داد. فقط باید توجه داشته باشیم که کانال بیش از حد با به‌روزرسانی‌ها اشباع نشود.

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

و در نهایت، هر وقت که تولید متوقف شد، به‌روزرسانی نهایی روی پیام انجام می‌دهیم و سپس رویداد ai_indicator.clear  را به کانال ارسال می‌کنیم.

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

رویدادمعنی ساده
content_block_startشروع تولید پاسخ
content_block_deltaدریافت تکه‌های جدید از پاسخ در حال تولید
message_deltaتغییر یا به‌روزرسانی در پیام نهایی
message_stopپایان کامل تولید پاسخ

نسخه کامل کدهای برنامه

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

ابتدا کدهای مربوط به فایل main.py را مشاهده می‌کنید.

سپس کدهای مربوط به فایل AnthropicAgent.py را به صورت کامل و بدون خطا در کادر زیر نوشته‌ایم.

برای اجرای این برنامه به فایل ngrok.exe هم نیاز دارید که می‌توانید آن را از اینجا (+) دانلود کنید. فقط توجه کنید که این فایل را در داخل دایرکتوری پروژه و کنار فایل‌های اصلی قرار بدهید. کلید‌های API پروژه از وب‌سایت‌های آنتروپیک و استریم چت را هم طبق دستورالعمل نوشته شده در بخش‌های بالایی دانلود کنید.

جمع‌بندی

در این مطلب از مجله فرادرس، روش اتصال سیستم چت به مدل‌های زبانی بزرگ (LLM) مانند Anthropic را بررسی کردیم. ابتدا یاد گرفتیم چگونه با استفاده از کتابخانه FastAPI و سایر ابزارهای موردنیاز، سرور پایتون را راه‌اندازی کنیم. سپس در بخش بک‌اند، کلاینتی برای «چت زنده» (Stream Chat) ساختیم. این کلاینت با کمک Webhook پیام‌های جدید کانال را دریافت و بررسی می‌کند.

در ادامه، این سیستم را به مدل هوش مصنوعی Anthropic متصل کردیم. به این ترتیب، پیام‌های کاربران برای مدل ارسال می‌شدند. سپس پاسخ‌های تولید شده دوباره در فضای چت نمایش داده می‌شوند. همچنین یاد گرفتیم چگونه رویدادهایی ارسال کنیم که وضعیت مدل هوش مصنوعی را به صورت به‌روز به اطلاع کاربر می‌رسانند. برای مثال، می‌توان به نمایش نشانگر «در حال تایپ بودن» هوش مصنوعی اشاره کرد.

بر اساس رای ۱ نفر
آیا این مطلب برای شما مفید بود؟
اگر پرسشی درباره این مطلب دارید، آن را با ما مطرح کنید.
منابع:
stream
PDF
مطالب مرتبط
نظر شما چیست؟

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *