توسعه ربات‌های چند‌مدلی با Django، GPT-4، Whisper و DALL-E

مقدمه
برنامه‌های کاربردی وب مدرن می‌توانند با ادغام هوش مصنوعی به سطح بعدی ارتقا یابند. این آموزش بر روی توسعه پیشرفته ربات‌های چند‌حالته تمرکز دارد که از پردازش زبان طبیعی، تولید تصویر و شناسایی گفتار بهره می‌برند. این ربات‌ها تجربه کاربری منحصر به فردی ارائه می‌دهند که کاربران را از طریق انواع روش‌های تعامل جذب می‌کنند.
این آموزش به بررسی توسعه یک ربات چند‌حالته با استفاده از Django و مدل زبان بزرگ GPT-4 OpenAI برای هوش مصنوعی مکالمه‌ای، Whisper برای رونویسی دقیق گفتار و DALL-E برای تولید تصاویر می‌پردازد. این آموزش نحوه ساخت یک برنامه وب که داستان‌هایی با تصاویری همراه تولید می‌کند را توضیح می‌دهد. کاربران می‌توانند تم داستان را از طریق صدا یا متن مشخص کنند و برنامه با داستانی تولید شده که با تصاویر بصری تزئین شده است، پاسخ دهد.
در پایان این آموزش، شما یک برنامه عملی خواهید داشت که قادر است ورودی‌های کاربر را در اشکال مختلف شامل متن، صدا و تصویر درک و به آن‌ها پاسخ دهد. این امر تعامل کاربر با برنامه را به طور قابل توجهی بهبود می‌بخشد و آن را شهودی‌تر و دسترسی‌پذیرتر می‌سازد.
توسعه ربات‌های چند‌حالته با Django، GPT-4، Whisper و DALL-E
۱ ادغام Whisper OpenAI برای شناسایی گفتار
۲ تولید پاسخ‌های متنی با GPT-4
۳ تولید تصاویر با DALL-E
۴ ترکیب حالات برای یک تجربه یکپارچه
پیش‌نیازها
برای تکمیل این آموزش، شما به موارد زیر نیاز خواهید داشت:
۱ درک پایه‌ای از Python و Django. اگر با Django آشنا نیستید، پیشنهاد می‌شود که آموزش “چگونه Django را نصب کنیم و محیط توسعه را تنظیم کنیم” را دنبال کنید.
۲ یک کلید API از OpenAI: این آموزش نیازمند تعامل با مدل‌های GPT-4 و DALL-E از OpenAI است که به یک کلید API از OpenAI نیاز دارند. شما می‌توانید با ایجاد یک حساب کاربری در OpenAI و سپس ایجاد یک کلید مخفی، کلید API را دریافت کنید.
۳ Whisper: به صفحه GitHub OpenAI Whisper مراجعه کنید برای مشاهده دستورالعمل‌های نصب دقیق و اطمینان از اینکه تنظیمات توسعه شما برای Whisper به درستی پیکربندی شده است.
۴ بسته Python OpenAI: اگر آموزش در پیش‌نیاز اول را دنبال کرده‌اید، باید یک محیط مجازی به نام env در داخل دایرکتوری به نام django-apps فعال داشته باشید.
توجه: مطمئن شوید که محیط مجازی شما فعال است و با مشاهده نام آن در پرانتز در ابتدای پیغام ترمینال خود آن را تایید کنید. اگر فعال نیست، می‌توانید آن را به صورت دستی با اجرای دستور زیر در ترمینال از دایرکتوری حاوی برنامه Django خود فعال کنید.
sammy@ubuntu:$ .env/bin/activate
پس از فعال شدن محیط خود، دستور زیر را برای نصب بسته Python OpenAI اجرا کنید:
(env)sammy@ubuntu:$ pip install openai
اگر اولین بار است که از کتابخانه OpenAI استفاده می‌کنید، باید آموزش “چگونه مدل‌های GPT OpenAI را در پروژه Django خود ادغام کنیم” را مرور کنید.
گام ۱ — ادغام OpenAI Whisper برای شناسایی گفتار
در این مرحله، شما OpenAI Whisper را در برنامه Django خود راه‌اندازی خواهید کرد تا به آن امکان بدهید تا گفتار را به متن تبدیل کند. Whisper یک مدل شناسایی گفتار قوی است که می‌تواند رونویسی‌های دقیقی ارائه دهد، که ویژگی حیاتی برای ربات چندحالته ما است. با ادغام Whisper، برنامه ما قادر خواهد بود ورودی‌های کاربر را که از طریق صدا ارائه می‌شود درک کند.
ابتدا مطمئن شوید که در دایرکتوری پروژه Django خود کار می‌کنید. با دنبال کردن آموزش‌های پیش‌نیاز، باید یک پروژه Django آماده برای این ادغام داشته باشید. ترمینال خود را باز کنید، به دایرکتوری پروژه Django خود بروید و مطمئن شوید که محیط مجازی شما فعال است:
sammy@ubuntu:$ cd path_to_your_django_project
sammy@ubuntu:$ source env/bin/activate
راه‌اندازی Whisper در برنامه Django شما
حالا کاری که باید انجام دهید این است که یک تابع ایجاد کنید که از Whisper برای تبدیل فایل‌های صوتی به متن استفاده کند. یک فایل Python جدید به نام whisper_transcribe.py ایجاد کنید.
(env)sammy@ubuntu:$ touch whisper_transcribe.py
فایل whisper_transcribe.py را در ویرایشگر متنی خود باز کرده و Whisper را وارد کنید. سپس، بیایید یک تابع تعریف کنیم که مسیر یک فایل صوتی را به عنوان ورودی بگیرد، از Whisper برای پردازش فایل استفاده کند و سپس رونویسی را بازگرداند:
import whisper  
model = whisper.load_model(“base”)
def transcribe_audio(audio_path):  
    result = model.transcribe(audio_path)  
    return result[“text”]
در این قطعه کد، شما از مدل “base” برای رونویسی استفاده می‌کنید. Whisper مدل‌های مختلفی دارد که برای نیازهای دقت و عملکرد مختلف طراحی شده‌اند. می‌توانید بر اساس نیاز خود با مدل‌های دیگر آزمایش کنید.
آزمایش رونویسی
برای آزمایش رونویسی، یک فایل صوتی را در دایرکتوری پروژه Django خود ذخیره کنید. مطمئن شوید که فایل در قالبی است که Whisper از آن پشتیبانی می‌کند (مثلاً MP3، WAV). حالا، فایل whisper_transcribe.py را با افزودن خطوط زیر در انتها تغییر دهید:
# برای اهداف آزمایشی
if __name__ == “__main__”:  
    print(transcribe_audio(“path_to_your_audio_file”))
حالا whisper_transcribe.py را با Python اجرا کنید تا رونویسی فایل صوتی خود را در ترمینال مشاهده کنید:
(env)sammy@ubuntu:$ python whisper_transcribe.py
اگر همه چیز به درستی تنظیم شده باشد، باید متن رونویسی‌شده را در ترمینال مشاهده کنید. این قابلیت به عنوان اساس تعاملات صوتی در ربات ما عمل خواهد کرد.
گام ۲ — تولید پاسخ‌های متنی با GPT-4
در این مرحله، شما از مدل GPT-4 برای تولید پاسخ‌های متنی بر اساس ورودی کاربر یا رونویسی گفتاری که در گام قبل به دست آمده، استفاده خواهید کرد. GPT-4 با مدل زبان بزرگی که دارد، می‌تواند پاسخ‌های منسجم و مرتبط با زمینه تولید کند، که آن را به انتخابی ایده‌آل برای برنامه ربات چندحالته ما تبدیل می‌کند.
قبل از ادامه، مطمئن شوید که بسته Python OpenAI در محیط مجازی شما همان‌طور که در پیش‌نیازها توضیح داده شده است نصب شده باشد. مدل GPT-4 برای دسترسی به یک کلید API نیاز دارد، بنابراین مطمئن شوید که کلید API خود را آماده دارید. می‌توانید کلید API OpenAI را به متغیرهای محیطی خود اضافه کنید تا نیازی به اضافه کردن آن به طور مستقیم در فایل Python نباشد:
(env)sammy@ubuntu:$ export OPENAI_KEY=“your-api-key”
راه‌اندازی تکمیل چت
به دایرکتوری برنامه Django خود بروید و یک فایل Python جدید به نام chat_completion.py ایجاد کنید. این اسکریپت مسئول برقراری ارتباط با مدل GPT-4 برای تولید پاسخ‌ها بر اساس ورودی متنی خواهد بود.
import os  
from openai import OpenAI  
client = OpenAI(api_key=os.environ[“OPENAI_KEY”])
def generate_story(input_text):  
    # فراخوانی API OpenAI برای تولید داستان  
    response = get_story(input_text)  
    # فرمت‌بندی و بازگشت پاسخ  
    return format_response(response)
این قطعه کد ابتدا کلید API لازم برای احراز هویت با خدمات OpenAI را تنظیم می‌کند. سپس تابع جداگانه‌ای به نام get_story را برای فراخوانی API OpenAI جهت تولید داستان فراخوانی می‌کند و سپس یک تابع دیگر به نام format_response برای فرمت‌بندی پاسخ از API.
حالا، بیایید بر روی تابع get_story تمرکز کنیم. آن را به این شکل در انتهای فایل chat_completion.py اضافه کنید:
def get_story(input_text):  
    # ساختن پرامپت سیستم. می‌توانید با پرامپت‌های مختلف آزمایش کنید.  
    system_prompt = f”””You are a story generator.  
    You will be provided with a description of the story the user wants.  
    Write a story using the description provided.”””  
    # فراخوانی API  
    response = client.chat.completions.create(  
        model=”gpt-4″,  
        messages=[  
            {“role”: “system”, “content”: system_prompt},  
            {“role”: “user”, “content”: input_text},  
        ],  
        temperature=0.8  
    )  
    # بازگشت پاسخ API  
    return response
در این تابع، ابتدا پرامپت سیستم را تنظیم می‌کنید که مدل را از وظیفه‌ای که باید انجام دهد آگاه می‌کند، و سپس از API ChatCompletion درخواست می‌کنید که داستانی بر اساس ورودی کاربر تولید کند.
در نهایت، می‌توانید تابع format_response را پیاده‌سازی کنید. آن را به این شکل در انتهای فایل chat_completion.py اضافه کنید:
def format_response(response):  
    # استخراج داستان تولید شده از پاسخ  
    story = response.choices[0].message.content  
    # حذف هرگونه متن یا فرمت ناخواسته  
    story = story.strip()  
    # بازگشت داستان فرمت‌بندی‌شده  
    return story
آزمایش پاسخ‌های تولید شده
برای آزمایش تولید متن، فایل chat_completion.py را با افزودن چند خط در انتها تغییر دهید:
# برای اهداف آزمایشی  
if __name__ == “__main__”:  
    user_input = “Tell me a story about a dragon”  
    print(generate_story(user_input))
حالا chat_completion.py را با Python اجرا کنید تا پاسخ تولید شده را در ترمینال مشاهده کنید:
(env)sammy@ubuntu:$ python chat_completion.py
با توجه به پرامپت، باید پاسخ خلاقانه‌ای از GPT-4 مشاهده کنید. با ورودی‌های مختلف آزمایش کنید تا پاسخ‌های متنوعی مشاهده کنید.
در مرحله بعد، شما تصاویر را به داستان‌های تولید شده اضافه خواهید کرد.
گام ۳ — تولید تصاویر با DALL-E
DALL-E برای ایجاد تصاویر دقیق از پرامپت‌های متنی طراحی شده است و به ربات چندحالته شما این امکان را می‌دهد که داستان‌ها را با خلاقیت بصری تقویت کند.
یک فایل Python جدید به نام image_generation.py در برنامه Django خود ایجاد کنید. این اسکریپت از مدل DALL-E برای تولید تصویر استفاده خواهد کرد:
(env)sammy@ubuntu:$ touch image_generation.py
بیایید یک تابع در image_generation.py ایجاد کنیم که یک پرامپت را به DALL-E ارسال کرده و تصویر تولید شده را دریافت کند:
import os  
from openai import OpenAI  
client = OpenAI(api_key=os.environ[“OPENAI_KEY”])
def generate_image(text_prompt):  
    response = client.images.generate(  
        model=”dall-e-3″,  
        prompt=text_prompt,  
        size=”1024×1024″,  
        quality=”standard”,  
        n=1,  
    )  
    image_url = response.data[0].url  
    return image_url
این تابع یک درخواست به مدل DALL-E ارسال می‌کند و پرامپت متنی، تعداد تصاویر تولید شده (n=1)، و اندازه تصاویر را مشخص می‌کند. سپس URL تصویر تولید شده را استخراج کرده و باز می‌گرداند.
آزمایش اسکریپت
برای نشان دادن نحوه استفاده از این تابع در پروژه Django خود، می‌توانید مثال زیر را در انتهای فایل image_generation.py اضافه کنید:
# برای اهداف آزمایشی  
if __name__ == “__main__”:  
    prompt = “Generate an image of a pet and a child playing in a yard.”  
    print(generate_image(prompt))
حالا image_generation.py را با Python اجرا کنید تا تصویری بر اساس پرامپت داده شده تولید کنید:
(env)sammy@ubuntu:$ python image_generation.py
اگر اسکریپت به درستی اجرا شود، URL تصویر تولید شده را در ترمینال مشاهده خواهید کرد. سپس می‌توانید با رفتن به این URL در مرورگر وب خود، تصویر را مشاهده کنید.
در مرحله بعد، شما شناسایی گفتار را همراه با تولید متن و تصویر برای ایجاد یک تجربه کاربری یکپارچه ترکیب خواهید کرد.
گام ۴ — ترکیب مولدها برای تجربه‌ای یکپارچه
در این گام، شما توابع توسعه یافته در مراحل قبلی را یکپارچه خواهید کرد تا یک تجربه کاربری بی‌وقفه ایجاد کنید.
برنامه وب شما قادر خواهد بود ورودی‌های متنی و صوتی از کاربران را پردازش کند، داستان‌ها را تولید کند و آنها را با تصاویر مرتبط همراه کند.
ایجاد نمای یکپارچه
ابتدا اطمینان حاصل کنید که پروژه Django شما سازماندهی شده است و فایل‌های whisper_transcribe.py، chat_completion.py و image_generation.py در دایرکتوری برنامه Django قرار دارند. اکنون یک نمای جدید ایجاد خواهید کرد که این اجزا را ترکیب می‌کند.
فایل views.py خود را باز کرده و ماژول‌ها و توابع مورد نیاز را وارد کنید. سپس نمای جدیدی به نام get_story_from_description ایجاد کنید:
import uuid
from django.core.files.storage import FileSystemStorage
from django.shortcuts import render
from .whisper_transcribe import transcribe_audio
from .chat_completion import generate_story
from .image_generation import generate_image
# views دیگر
def get_story_from_description(request):
    context = {}
    user_input = “”
    if request.method == “GET”:
        return render(request, “story_template.html”)
    else:
        if “text_input” in request.POST:
            user_input += request.POST.get(“text_input”) + “\n”
        if “voice_input” in request.FILES:
            audio_file = request.FILES[“voice_input”]
            file_name = str(uuid.uuid4()) + (audio_file.name or “”)
            FileSystemStorage(location=”/tmp”).save(file_name, audio_file)
            user_input += transcribe_audio(f”/tmp/{file_name}”)
        generated_story = generate_story(user_input)
        image_prompt = (
            f”Generate an image that visually illustrates the essence of the following story: {generated_story}”
        )
        image_url = generate_image(image_prompt)
        context = {
            “user_input”: user_input,
            “generated_story”: generated_story.replace(“\n”, “<br/>”),
            “image_url”: image_url,
        }
        return render(request, “story_template.html”, context)
این نما ورودی متنی و/یا صوتی کاربر را دریافت می‌کند. اگر فایلی صوتی وجود داشته باشد، آن را با یک نام منحصر به فرد ذخیره می‌کند (با استفاده از کتابخانه uuid) و از تابع transcribe_audio برای تبدیل گفتار به متن استفاده می‌کند. سپس از تابع generate_story برای تولید یک پاسخ متنی و از تابع generate_image برای تولید یک تصویر مرتبط استفاده می‌کند. این خروجی‌ها به دیکشنری context ارسال می‌شود و سپس با استفاده از story_template.html رندر می‌شود.
ایجاد قالب
اکنون، یک فایل به نام story_template.html ایجاد کنید و محتوای زیر را به آن اضافه کنید:
<div style=”padding:3em; font-size:14pt;”>
    <form method=”post” enctype=”multipart/form-data”>
        {% csrf_token %}
        <textarea name=”text_input” placeholder=” Describe the story you would like” style=”width:30em;”></textarea>
        <br/><br/>
        <input type=”file” name=”voice_input” accept=”audio/*” style=”width:30em;”>
        <br/><br/>
        <input type=”submit” value=”Submit” style=”width:8em; height:3em;”>
    </form>
    <p>
        <strong>{{ user_input }}</strong>
    </p>
    {% if image_url %}
        <p>
            <img src=”{{ image_url }}” alt=”Generated Image” style=”max-width:80vw; width:30em; height:30em;”>
        </p>
    {% endif %}
    {% if generated_story %}
        <p>{{ generated_story | safe }}</p>
    {% endif %}
</div>
این فرم ساده به کاربران این امکان را می‌دهد که پرامپت‌های خود را از طریق متن یا با آپلود یک فایل صوتی ارسال کنند. سپس، متن و تصویر تولید شده توسط برنامه نمایش داده می‌شود.
ایجاد URL برای نما
حالا که نمای get_story_from_description آماده است، باید آن را از طریق ایجاد یک پیکربندی URL قابل دسترسی کنید.
فایل urls.py خود را در داخل برنامه Django باز کنید و یک الگو برای نمای get_story_from_description اضافه کنید:
from django.urls import path
from . import views
urlpatterns = [
    # الگوهای دیگر
    path(‘generate-story/’, views.get_story_from_description, name=’get_story_from_description’),
]
آزمایش تجربه یکپارچه
حالا می‌توانید به آدرس http://your_domain/generate-story/ در مرورگر وب خود مراجعه کنید. شما باید فرم تعریف شده در story_template.html را مشاهده کنید. سعی کنید یک پرامپت متنی از طریق فیلد ورودی متن ارسال کنید، یا یک فایل صوتی را با استفاده از ورودی فایل آپلود کنید. پس از ارسال، برنامه شما ورودی‌ها را پردازش کرده، یک داستان و یک تصویر همراه تولید کرده و آنها را در صفحه نمایش می‌دهد.
برای مثال، اینجا یک داستان نمونه برای پرامپت “Tell me a story about a pet and a child playing in a yard.” آورده شده است.
با تکمیل این مرحله، شما یک برنامه ساخته‌اید که به‌طور یکپارچه ورودی‌های کاربران را در انواع مختلف—متن، صدا و تصویر—پردازش و پاسخ می‌دهد.
نتیجه‌گیری:
در این آموزش، شما با استفاده از Django، یک ربات چندمنظوره توسعه داده‌اید که قابلیت ادغام با Whisper برای شناسایی گفتار، GPT-4 برای تولید متن و DALL-E برای تولید تصاویر را دارد. برنامه شما اکنون قادر است ورودی‌های کاربران را در فرمت‌های مختلف درک کرده و به آن‌ها واکنش نشان دهد.
برای توسعه بیشتر، پیشنهاد می‌شود که:
  1. نسخه‌های جایگزین مدل‌های Whisper، GPT و DALL-E را بررسی کنید.
  2. طراحی UI/UX برنامه خود را بهبود بخشید.
  3. قابلیت‌های ربات را با افزودن ویژگی‌های تعاملی بیشتر گسترش دهید.
برای امتیاز به این نوشته کلیک کنید!
[کل: 0 میانگین: 0]

نظرات کاربران

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

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