ساخت چت‌بات هوشمند با API ChatGPT: آموزش گام‌به‌گام + کد کامل

ساخت چت‌بات با ChatGPT API

فهرست مطلب

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

چرا ساخت چت‌بات با ChatGPT API به‌صرفه‌تر از قبل شده است؟

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

پیش‌نیازهای ساخت چت‌بات با ChatGPT API

قبل از نوشتن اولین خط کد، چند چیز ساده نیاز دارید که خوشبختانه گرفتن همه آن‌ها چند دقیقه بیشتر طول نمی‌کشد.

گرفتن کلید API از پلتفرم OpenAI

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

نصب کتابخانه‌های لازم در پایتون

برای ارتباط با API، کافی است کتابخانه رسمی پایتون را نصب کنید. این کار را می‌توانید با یک دستور ساده در ترمینال انجام دهید:

pip install openai python-dotenv

کتابخانه دوم یعنی python-dotenv هم به شما کمک می‌کند کلید API را از یک فایل امن بخوانید، بدون این‌که نگران فاش شدن آن در کدتان باشید.

آشنایی با ساختار پیام‌ها (Messages) در API چت

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

نقش system، user و assistant چیست؟

هر پیام در این ساختار، یک نقش (role) دارد. پیام با نقش system، شخصیت و قوانین کلی رفتار ربات را تعیین می‌کند؛ مثلاً این‌که ربات مودب باشد یا فقط به فارسی پاسخ دهد. پیام با نقش user همان حرفی است که کاربر تایپ می‌کند و پیام با نقش assistant، پاسخی است که قبلاً از مدل دریافت شده. وقتی این سه نوع پیام را کنار هم در یک لیست می‌چینید، عملاً یک مکالمه کامل را برای مدل بازسازی می‌کنید.

آموزش گام‌به‌گام ساخت اولین چت‌بات

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

گام اول: اتصال به API و ارسال اولین پیام

ساده‌ترین حالت ممکن، فرستادن یک پیام تکی و گرفتن پاسخ است. کد زیر دقیقاً همین کار را انجام می‌دهد:

import os
from openai import OpenAI

client = OpenAI(api_key=os.getenv("OPENAI_API_KEY"))

response = client.chat.completions.create(
    model="gpt-5.5",
    messages=[
        {"role": "system", "content": "تو یک دستیار فارسی‌زبان مودب و کمک‌کننده هستی."},
        {"role": "user", "content": "سلام! می‌تونی خودتو معرفی کنی؟"}
    ]
)

print(response.choices[0].message.content)

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

گام دوم: نگه‌داشتن حافظه مکالمه برای چت چندمرحله‌ای

برای این‌که چت‌بات شما مکالمه را به خاطر بسپارد، باید هر پیام جدید کاربر و هر پاسخ مدل را به یک لیست اضافه کنید و این لیست را در هر درخواست دوباره ارسال کنید. به این ترتیب، مدل می‌تواند به سؤالاتی که به مکالمه قبلی اشاره دارند هم پاسخ درستی بدهد.

گام سوم: ساخت حلقه چت تعاملی در ترمینال

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

کد کامل چت‌بات هوشمند با پایتون

در ادامه، نسخه کامل و آماده اجرای چت‌بات را می‌بینید که هم حافظه مکالمه دارد و هم مدیریت خطای ساده برای آن در نظر گرفته شده است:

import os
from openai import OpenAI, APIConnectionError, RateLimitError, AuthenticationError
from dotenv import load_dotenv

load_dotenv()

client = OpenAI(api_key=os.getenv("OPENAI_API_KEY"))

conversation = [
    {
        "role": "system",
        "content": "تو یک دستیار فارسی‌زبان، صبور و دوستانه هستی که پاسخ‌های کوتاه و مفید می‌دهی."
    }
]

def get_bot_reply(user_message):
    conversation.append({"role": "user", "content": user_message})
    try:
        response = client.chat.completions.create(
            model="gpt-5.5",
            messages=conversation,
            temperature=0.7
        )
        reply = response.choices[0].message.content
        conversation.append({"role": "assistant", "content": reply})
        return reply
    except AuthenticationError:
        return "کلید API نامعتبر است. لطفاً مقدار OPENAI_API_KEY را بررسی کنید."
    except RateLimitError:
        return "تعداد درخواست‌ها زیاد شده، لطفاً کمی صبر کنید و دوباره امتحان کنید."
    except APIConnectionError:
        return "ارتباط با سرور برقرار نشد. اتصال اینترنت خود را بررسی کنید."

if __name__ == "__main__":
    print("چت‌بات آماده است! برای خروج، کلمه 'خروج' را تایپ کنید.\n")
    while True:
        user_input = input("شما: ")
        if user_input.strip() == "خروج":
            print("چت‌بات: خداحافظ، روز خوبی داشته باشید!")
            break
        bot_reply = get_bot_reply(user_input)
        print(f"چت‌بات: {bot_reply}\n")

کافی است کلید API خود را در یک فایل با نام .env و در قالب OPENAI_API_KEY=کلید_شما ذخیره کنید و سپس این فایل پایتون را اجرا کنید. از همین لحظه، یک چت‌بات کاملاً کاربردی در اختیار دارید که می‌توانید پایه آن را برای پروژه‌های بزرگ‌تر هم گسترش دهید.

مدیریت خطاها و محدودیت‌های API

هیچ سرویسی همیشه بدون مشکل کار نمی‌کند و API چت هم از این قاعده مستثنا نیست. شناخت خطاهای رایج، به شما کمک می‌کند چت‌باتتان در برابر مشکلات احتمالی مقاوم‌تر باشد.

خطاهای رایج و راه‌حل آن‌ها

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

مدیریت هزینه و انتخاب مدل مناسب

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

نکاتی برای حرفه‌ای‌تر کردن چت‌بات

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

شخصی‌سازی رفتار ربات با system prompt

یکی از قدرتمندترین ابزارهای شما، همان پیام system در ابتدای مکالمه است. با تغییر این متن، می‌توانید لحن، حوزه تخصصی و حتی محدودیت‌های پاسخ‌دهی چت‌بات را کاملاً تغییر دهید؛ مثلاً آن را به یک مشاور پشتیبانی فروشگاه، یک معلم زبان یا یک دستیار فنی تبدیل کنید.

افزودن قابلیت ذخیره مکالمات

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

جمع‌بندی

همان‌طور که دیدید، ساخت چت‌بات با ChatGPT API نه‌تنها پیچیده نیست، بلکه با چند خط کد ساده پایتون قابل انجام است. نکته کلیدی، درک درست ساختار پیام‌ها و نگه‌داشتن حافظه مکالمه است؛ وقتی این دو مفهوم را یاد بگیرید، می‌توانید همین کد پایه را برای ساخت چت‌بات پشتیبانی، دستیار فروش یا هر ایده دیگری که در ذهن دارید، گسترش دهید.

سوالات متداول

۱. آیا برای ساخت این چت‌بات حتماً باید برنامه‌نویس حرفه‌ای باشم؟

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

۲. آیا استفاده از ChatGPT API هزینه دارد؟

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

۳. چطور می‌توانم این چت‌بات را روی یک سایت یا اپلیکیشن قرار دهم؟

همین منطق پایتون می‌تواند پشت یک API وب (مثلاً با فریم‌ورک Flask یا FastAPI) قرار بگیرد تا از طریق سایت یا اپلیکیشن با آن ارتباط برقرار شود.

۴. اگر چت‌بات پاسخ نادرست بدهد چه باید کرد؟

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

۵. آیا می‌توانم زبان چت‌بات را غیر از فارسی هم تنظیم کنم؟

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