ساخت اولین دستیار هوش مصنوعی شخصی با پایتون: فراتر از ChatGPT
استفاده از ابزارهای هوش مصنوعی عمومی مانند ChatGPT بسیار راحت است. کافیست سوالتان را بپرسید و پاسخی دریافت کنید. اما اگر نیازهای شما کمی خاصتر باشد چطور؟ اگر بخواهید یک دستیار هوش مصنوعی بسازید که دقیقاً مطابق با نیازهای شما کار کند، دادههای شما را بفهمد و با سیستمهای دیگرتان ادغام شود؟ در این مقاله، یاد میگیریم چگونه با استفاده از پایتون، اولین دستیار هوش مصنوعی شخصی خود را بسازیم. این دستیار، فراتر از تواناییهای ابزارهای آماده عمل خواهد کرد.
چرا دستیار هوش مصنوعی شخصی؟ فراتر از ابزارهای آماده
ابزارهای هوش مصنوعی عمومی مانند ChatGPT تواناییهای شگفتانگیزی دارند. آنها میتوانند متن بنویسند، کد تولید کنند، به سوالات پاسخ دهند و حتی خلاق باشند. اما این ابزارها برای همه طراحی شدهاند. این یعنی ممکن است در درک نیازهای بسیار خاص شما یا کار با دادههای منحصر به فردتان محدودیت داشته باشند.
ساخت یک دستیار هوش مصنوعی شخصی به شما کنترل کامل میدهد. شما تصمیم میگیرید دستیارتان چه کاری انجام دهد، چگونه دادهها را پردازش کند و با چه سیستمهایی ارتباط برقرار کند. این سفارشیسازی به معنای دقت بیشتر، کارایی بالاتر و در نهایت، ابزاری است که واقعاً به شما کمک میکند. در این مقاله، مراحل ساخت یک دستیار ساده با پایتون را مرور میکنیم.
پیشنیازها: پایتون و کتابخانههای کلیدی
برای ساخت دستیار هوش مصنوعی شخصی خود، نیاز به آشنایی با زبان برنامهنویسی پایتون دارید. اگر مفاهیم پایهای مانند متغیرها، توابع، حلقهها و کلاسها برای شما آشناست، مسیر هموارتری خواهید داشت.
کتابخانههای کلیدی که به آنها نیاز خواهید داشت عبارتند از:
openai: این کتابخانه به شما امکان میدهد تا با مدلهای زبانی قدرتمند OpenAI مانند GPT-4 تعامل داشته باشید.requests: برای ارسال درخواست به APIها و دریافت پاسخ از سرویسهای مختلف وب کاربرد دارد.dotenv: این کتابخانه به شما کمک میکند تا اطلاعات حساس مانند کلیدهای API را به صورت امن مدیریت کنید.
نصب این کتابخانهها ساده است. کافیست ترمینال یا خط فرمان خود را باز کرده و دستور زیر را اجرا کنید:
pip install openai python-dotenv
گام اول: تعریف وظیفه و جمعآوری داده (در صورت نیاز)
قبل از نوشتن هر خط کدی، باید دقیقاً بدانید دستیار شما قرار است چه کاری انجام دهد. آیا میخواهید متون طولانی را خلاصه کند؟ آیا قرار است به سوالات تخصصی در یک حوزه خاص پاسخ دهد؟ یا شاید وظیفه آن، دستهبندی خودکار ایمیلها باشد؟
مثال: فرض کنید میخواهیم دستیاری بسازیم که مقالات خبری را دریافت کرده و خلاصهای از آنها را ارائه دهد. وظیفه مشخص است: خلاصهسازی متن.
اگر دستیار شما نیاز به دانش خاصی دارد که در مدلهای زبانی عمومی به طور کامل وجود ندارد، باید دادههای لازم را جمعآوری کنید. این دادهها میتوانند فایلهای متنی، صفحات وب، یا حتی پایگاه داده باشند.
مثال: برای دستیار خلاصهساز، نیازی به جمعآوری داده جدید نیست، زیرا مدلهای زبانی با حجم عظیمی از متون عمومی آموزش دیدهاند. اما اگر میخواستیم دستیاری بسازیم که به سوالات تخصصی در مورد تاریخچه یک شرکت خاص پاسخ دهد، نیاز داشتیم مقالات، گزارشها و اسناد مربوط به آن شرکت را جمعآوری کنیم.
ساختاردهی این دادهها برای پردازش بعدی بسیار مهم است. معمولاً دادهها را در قالب فایلهای متنی منظم یا ساختارهای دادهای مانند JSON ذخیره میکنیم.
ساخت هسته دستیار: تعامل با مدلهای زبانی
حالا که وظیفه را مشخص کرده و دادهها را آماده کردهایم (اگر لازم بود)، وقت آن است که هسته اصلی دستیار را بسازیم. این بخش شامل تعامل با مدلهای زبانی بزرگ (LLMs) است.
ابتدا، باید کلید API خود را مدیریت کنیم. فایل .env را در پوشه پروژه خود ایجاد کرده و کلید API خود را به شکل زیر در آن قرار دهید:
OPENAI_API_KEY='your-openai-api-key'
سپس، در کد پایتون خود، این کلید را بارگذاری کرده و از کتابخانه openai برای ارسال درخواست استفاده کنید.
import openai
import os
from dotenv import load_dotenv
# بارگذاری متغیرهای محیطی از فایل .env
load_dotenv()
openai.api_key = os.getenv("OPENAI_API_KEY")
def ask_gpt(prompt):
"""
یک پرامپت به مدل زبانی ارسال کرده و پاسخ را دریافت میکند.
"""
try:
response = openai.chat.completions.create(
model="gpt-3.5-turbo", # یا مدل دیگر مورد نظرتان
messages=[
{"role": "system", "content": "شما یک دستیار مفید هستید."},
{"role": "user", "content": prompt}
],
temperature=0.7, # میزان خلاقیت پاسخ (بین 0 تا 1)
max_tokens=150 # حداکثر طول پاسخ
)
return response.choices[0].message.content
except Exception as e:
return f"خطا در ارتباط با API: {e}"
# مثال استفاده و نمایش خروجی
print("--- مثال تعامل با مدل زبانی ---")
user_question = "لطفاً در مورد تاریخچه هوش مصنوعی توضیح کوتاهی بده."
print(f"سوال کاربر: {user_question}")
answer = ask_gpt(user_question)
print(f"پاسخ دستیار:\n{answer}")
print("----------------------------------\n")
در این کد:
model: مشخص میکند از کدام مدل زبانی استفاده شود.messages: شامل مکالمه است. نقش "system" برای تنظیم رفتار کلی دستیار و نقش "user" برای پیام کاربر است.temperature: هرچه این عدد بالاتر باشد، پاسخ خلاقانهتر و غیرقابل پیشبینیتر خواهد بود. برای کارهای دقیقتر، بهتر است این عدد را پایین نگه دارید.max_tokens: حداکثر تعداد توکن (کلمه یا بخشی از کلمه) که مدل در پاسخ تولید میکند.
افزودن قابلیتهای سفارشی: فراتر از پاسخ ساده
هسته اصلی به ما یک پاسخ از مدل زبانی میدهد. اما چگونه این پاسخ را برای وظیفه خاص خود مفید کنیم؟
مثال ۱: خلاصهسازی متن
برای دستیار خلاصهساز، میتوانیم تابعی بنویسیم که متن ورودی را دریافت کرده، یک پرامپت مناسب برای خلاصهسازی به مدل زبانی ارسال کند و سپس خلاصه را برگرداند.
def summarize_text(text):
"""
متن ورودی را دریافت کرده و خلاصهای از آن را با استفاده از مدل زبانی برمیگرداند.
"""
prompt = f"لطفاً متن زیر را خلاصه کن:\n\n{text}"
return ask_gpt(prompt)
# مثال استفاده و نمایش خروجی
print("--- مثال خلاصهسازی متن ---")
article = """
هوش مصنوعی (AI) شاخهای از علوم کامپیوتر است که به ساخت ماشینهای هوشمند میپردازد.
این ماشینها قادر به انجام وظایفی هستند که معمولاً به هوش انسانی نیاز دارند،
مانند یادگیری، حل مسئله، درک زبان و تشخیص الگو.
پیشرفتهای اخیر در یادگیری عمیق و قدرت محاسباتی، باعث شده است که AI
در حوزههای مختلفی از جمله پزشکی، حملونقل، سرگرمی و خدمات مشتریان کاربرد پیدا کند.
با این حال، چالشهای اخلاقی و فنی همچنان در مسیر توسعه AI وجود دارد.
"""
print(f"متن اصلی:\n{article}")
summary = summarize_text(article)
print(f"خلاصه مقاله:\n{summary}")
print("-----------------------------\n")
مثال ۲: پاسخ به سوال با استفاده از اطلاعات خاص (RAG ساده)
فرض کنید میخواهیم دستیار ما به سوالات مربوط به یک سند خاص پاسخ دهد. ابتدا باید محتوای آن سند را در دسترس قرار دهیم.
def get_answer_from_document(question, document_content):
"""
با استفاده از محتوای یک سند، به سوال کاربر پاسخ میدهد.
"""
prompt = f"با استفاده از اطلاعات زیر، به سوال کاربر پاسخ بده:\n\n{document_content}\n\nسوال کاربر: {question}"
return ask_gpt(prompt)
# مثال استفاده و نمایش خروجی
print("--- مثال پاسخ به سوال با اطلاعات خاص (RAG) ---")
company_info_file = "company_data.txt"
# فرض میکنیم این فایل حاوی اطلاعات زیر است:
# "شرکت نوآوران پارس در سال ۱۴۰۱ با سرمایه اولیه ۱۰۰ میلیون تومان تاسیس شد.
# سود خالص این شرکت در سال ۱۴۰۲ مبلغ ۵۰۰ میلیون تومان بوده است.
# تیم اصلی شرکت شامل ۵ نفر متخصص است."
# برای اجرای این مثال، فایل company_data.txt را با محتوای فوق ایجاد کنید.
try:
with open(company_data_file, "r", encoding="utf-8") as f:
company_data = f.read()
user_question = "سود خالص شرکت نوآوران پارس در سال ۱۴۰۲ چقدر بود؟"
print(f"اطلاعات سند:\n{company_data}")
print(f"سوال کاربر: {user_question}")
answer = get_answer_from_document(user_question, company_data)
print(f"پاسخ دستیار:\n{answer}")
except FileNotFoundError:
print(f"خطا: فایل '{company_data_file}' یافت نشد. لطفاً آن را با اطلاعات نمونه ایجاد کنید.")
print("-------------------------------------------------\n")
این تکنیک، که به آن "Retrieval-Augmented Generation" (RAG) گفته میشود، به مدل زبانی اجازه میدهد تا بر اساس اطلاعات خاصی که شما در اختیارش قرار میدهید، پاسخ تولید کند. این کار دقت پاسخها را به طور چشمگیری افزایش میدهد.
برای ساخت برنامههای پیچیدهتر که شامل مدیریت جریان مکالمه، اتصال به منابع داده متعدد و اجرای ابزارهای خارجی هستند، کتابخانههایی مانند LangChain بسیار مفیدند. این فریمورکها ساختار و ابزارهای لازم برای توسعه برنامههای مبتنی بر LLM را فراهم میکنند و فرآیند ساخت برنامههای پیچیده را سادهتر میکنند.
قدم بعدی: توسعه و بهبود دستیار شما
دستیار اول شما ساخته شده است. اما این تازه شروع کار است. برای اینکه دستیار شما واقعاً کاربردی شود، نیاز به توسعه و بهبود مداوم دارد.
یکی از اولین قدمهای عملی برای کاربردیتر کردن دستیار، ساخت یک رابط خط فرمان (CLI) ساده است. این کار به شما اجازه میدهد تا دستورات را راحتتر وارد کرده و خروجی را در ترمینال مشاهده کنید. میتوانید از کتابخانه argparse در پایتون برای این منظور استفاده کنید.
ایدههایی برای توسعه بیشتر:
- حافظه مکالمه: دستیار شما باید بتواند تاریخچه مکالمات قبلی را به خاطر بسپارد تا بتواند در ادامه بحث، پاسخهای مرتبطتری بدهد.
- اتصال به APIهای دیگر: دستیار میتواند با APIهای دیگر مانند تقویم، ایمیل یا حتی سیستمهای مدیریت پروژه شما ادغام شود.
- پردازش صدا: با استفاده از کتابخانههایی مانند
SpeechRecognitionوpyttsx3، میتوانید دستیار خود را قادر به درک دستورات صوتی و پاسخ دادن با صدا کنید.
تست و ارزیابی مداوم عملکرد دستیار حیاتی است. ببینید در چه مواردی خوب عمل میکند و کجا نیاز به بهبود دارد. پرامپتهای خود را تنظیم کنید، پارامترهای مدل را تغییر دهید و در صورت نیاز، دادههای خود را بهروزرسانی کنید.
ساخت ابزارهای AI شخصی میتواند پیچیده باشد. این مسیر نیازمند یادگیری، آزمایش و گاهی اوقات، کمی هدایت تخصصی است. اگر در مسیر پیادهسازی ایدههایتان به راهنمایی عملی و بیطرف نیاز دارید، میتوانید با من یک جلسه مشاوره رزرو کنید. در این جلسه، میتوانیم نیازهای خاص شما را بررسی کرده و بهترین راهکارها را برای ساخت دستیار هوش مصنوعی شخصی خودتان ترسیم کنیم.