فصل ۱۲: دریافت داده از APIهای خارجی (مثل هواشناسی یا هوش مصنوعی)

""

مقدمه فصل

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

با API می‌توانیم امکانات نامحدودی به ربات اضافه کنیم، مثل:

  • گرفتن وضعیت آب‌وهوا
  • دریافت پاسخ از مدل‌های هوش مصنوعی (مثل GPT)
  • ترجمه متن
  • تبدیل واحدها
    و هر قابلیت دیگری که یک سرویس آنلاین ارائه دهد.

بخش ۱: API چیست؟

API یک درگاه ارتباطی بین برنامه ما و سرویس دیگر است.
ما یک درخواست (Request) می‌دهیم و یک پاسخ (Response) دریافت می‌کنیم.
این ارتباط معمولاً از طریق HTTP انجام می‌شود و داده‌ها بیشتر اوقات با فرمت JSON برمی‌گردند.

مثلاً:

https://api.open-meteo.com/v1/forecast?latitude=35.7&longitude=51.4&current_weather=true

با این آدرس می‌توانیم اطلاعات آب‌وهوای تهران را از API بگیریم.


بخش ۲: ابزار لازم

pip install requests

کتابخانه requests برای ارسال درخواست به API استفاده می‌شود.


بخش ۳: مثال اول – وضعیت آب‌وهوای تهران

import requests

url = "https://api.open-meteo.com/v1/forecast?latitude=35.7&longitude=51.4&current_weather=true"
response = requests.get(url)
data = response.json()

print("دمای فعلی تهران:", data["current_weather"]["temperature"], "°C")

بخش ۴: اتصال API هواشناسی به ربات

from telegram import Update
from telegram.ext import ApplicationBuilder, CommandHandler, ContextTypes
import requests

TOKEN = "توکن_ربات"

async def weather(update: Update, context: ContextTypes.DEFAULT_TYPE):
    url = "https://api.open-meteo.com/v1/forecast?latitude=35.7&longitude=51.4&current_weather=true"
    res = requests.get(url)
    data = res.json()
    temp = data["current_weather"]["temperature"]
    wind = data["current_weather"]["windspeed"]

    await update.message.reply_text(f"🌡 دمای فعلی تهران: {temp}°C\n💨 سرعت باد: {wind} km/h")

app = ApplicationBuilder().token(TOKEN).build()
app.add_handler(CommandHandler("weather", weather))
app.run_polling()

بخش ۵: مثال دوم – ارتباط با API یک مدل هوش مصنوعی

در این مثال با API مدل GPT کار می‌کنیم (می‌تواند ChatGPT، Claude یا هر مدل مشابه باشد).

۱. دریافت API Key

برای مثال، اگر از سرویس OpenAI استفاده می‌کنید:


۲. نمونه کد اتصال ربات به API GPT

import requests
from telegram import Update
from telegram.ext import ApplicationBuilder, CommandHandler, ContextTypes

TOKEN = "توکن_ربات"
API_KEY = "کلید_API_هوش_مصنوعی"

async def ai(update: Update, context: ContextTypes.DEFAULT_TYPE):
    # متن بعد از دستور /ai را می‌گیریم
    user_text = " ".join(context.args)
    if not user_text:
        await update.message.reply_text("لطفاً بعد از دستور /ai سوال خود را بنویسید.")
        return

    # درخواست به API مدل GPT
    url = "https://api.openai.com/v1/chat/completions"
    headers = {
        "Authorization": f"Bearer {API_KEY}",
        "Content-Type": "application/json"
    }
    payload = {
        "model": "gpt-3.5-turbo",
        "messages": [{"role": "user", "content": user_text}]
    }

    response = requests.post(url, headers=headers, json=payload)
    data = response.json()

    # پاسخ مدل را استخراج می‌کنیم
    answer = data["choices"][0]["message"]["content"]

    await update.message.reply_text(answer)

app = ApplicationBuilder().token(TOKEN).build()
app.add_handler(CommandHandler("ai", ai))
app.run_polling()

توضیح کد هوش مصنوعی:

  1. کاربر دستور /ai را به همراه یک سوال یا متن ارسال می‌کند.
  2. متن کاربر به API مدل GPT ارسال می‌شود.
  3. API یک متن پاسخ تولید می‌کند و ما آن را به کاربر برمی‌گردانیم.

مثال:

/ai یک متن درباره فواید ورزش بنویس

پاسخ:

ورزش منظم باعث بهبود سلامت قلب، افزایش انرژی، تقویت سیستم ایمنی و کاهش استرس می‌شود.

بخش ۶: نکات امنیتی و عملکردی APIهای هوش مصنوعی

  • API Key را هیچ‌وقت در کد عمومی قرار ندهید. آن را در فایل .env یا متغیر محیطی ذخیره کنید.
  • پاسخ‌های مدل را قبل از ارسال به کاربر بررسی کنید، مخصوصاً در پروژه‌های مهم.
  • برای درخواست‌های زیاد، استفاده از Queue و Rate Limit ضروری است.

بخش ۷: سوالات متداول

س: آیا می‌توان از مدل هوش مصنوعی برای پردازش عکس یا صدا هم استفاده کرد؟
ج: بله، بعضی APIها این قابلیت را دارند (مثل OpenAI’s Whisper برای صدا یا DALL·E برای تصویر).

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


بخش ۸: اشتباهات رایج

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

بخش ۹: نکات حرفه‌ای

  • نتایج AI را می‌توانید در دیتابیس ذخیره کنید تا در صورت درخواست مشابه، دوباره API را صدا نزنید.
  • می‌توانید با استفاده از دکمه‌های Inline در فصل ۱۰، حالت پرسش‌وپاسخ چندمرحله‌ای بسازید.
  • برای پاسخ سریع‌تر، از مدل‌های سبک‌تر استفاده کنید.
محمد وب‌سایت

دیدگاهتان را بنویسید

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