برنامه نویسی

ساخت برنامه های چت با GPT-3.5-turbo OpenAI با استفاده از Streamlit، Chainlit و Gradio

در این پست، نحوه ایجاد برنامه های چت با استفاده از GPT-3.5-turbo OpenAI در سه پلتفرم مختلف: Streamlit، Chainlit و Gradio را به شما آموزش می دهم. من کد کامل هر پلتفرم را ارائه خواهم کرد و نحوه عملکرد آن را توضیح خواهم داد.

معرفی

برنامه های چت به بخشی جدایی ناپذیر از برنامه های کاربردی وب مدرن تبدیل شده اند و به کاربران پشتیبانی و اطلاعات فوری ارائه می دهند. با مدل قدرتمند GPT-3.5-turbo OpenAI، ساخت یک چت بات هوشمند ساده تر از همیشه است. من نحوه ایجاد یک رابط چت را با استفاده از سه کتابخانه محبوب پایتون نشان خواهم داد: Streamlit، Chainlit و Gradio.

پیش نیازها

قبل از شروع، مطمئن شوید که موارد زیر را دارید:

  • پایتون روی سیستم شما نصب شده است
  • یک کلید OpenAI API (شما می توانید با ثبت نام در وب سایت OpenAI یکی را دریافت کنید)

کارکرد مشترک

من از یک تابع مشترک برای تعامل با OpenAI GPT-3.5-turbo API استفاده خواهم کرد. این تابع در هر سه پیاده سازی استفاده خواهد شد.

کتابخانه های مورد نیاز را نصب کنید:

pip install openai
pip install streamlit
pip install chainlit
pip install gradio
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

کتابخانه OpenAI را وارد کنید

import openai
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

این خط وارد می کند openai کتابخانه، که برای تعامل با API OpenAI مورد نیاز است. این کتابخانه توابعی را برای برقراری تماس های API با مدل های زبان OpenAI فراهم می کند.

کلید OpenAI API را تنظیم کنید

openai.api_key = "sk-xxxxxxxxxxxxxxxxxxxxxxxxxx"
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

این خط کلید API مورد نیاز برای احراز هویت با API OpenAI را تنظیم می کند. کلید API یک شناسه منحصر به فرد است که امکان دسترسی به خدمات OpenAI را فراهم می کند. جایگزین کردن "sk-xxxxxxxxxxxxxxxxxxxxxxxxxx" با کلید OpenAI API واقعی شما.

تابعی را برای دریافت پاسخ از مدل OpenAI تعریف کنید

def get_response(text):
    response = openai.chat.completions.create(
        model="gpt-3.5-turbo",
        messages=[{"role":"user","content":text}]
    )
    return response.choices[0].message.content.strip()
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

این بلوک یک تابع را تعریف می کند get_response که یک رشته می گیرد text به عنوان ورودی و پاسخ تولید شده توسط مدل OpenAI را برمی گرداند.

  1. تعریف تابع: def get_response(text):

    • این تابعی را به نام تعریف می کند get_response که یک پارامتر واحد را می پذیرد text.
  2. ایجاد درخواست API: response = openai.chat.completions.create(...)

    • این خط یک درخواست API به OpenAI برای ایجاد یک تکمیل بر اساس متن ورودی داده شده می دهد.
    • را model پارامتر مشخص می کند که از کدام مدل استفاده شود، در این مورد، "gpt-3.5-turbo".
    • را messages پارامتر لیستی از اشیاء پیام است. هر شی باید دارای یک role و content. در اینجا، نشان می دهد که کاربر در حال ارائه یک ورودی متن است.
  3. پاسخ بازگشت: return response.choices[0].message.content.strip()

    • این خط محتوای اولین پیام را از پاسخ استخراج می کند و هر فضای خالی اصلی یا انتهایی را با استفاده از آن حذف می کند .strip().
    • response.choices لیستی از تکمیل های احتمالی تولید شده توسط مدل است. در این مورد، اولین تکمیل (choices[0]، سپس به message و content از آن پیام

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

if __name__ == "__main__":
    while True:
        user_input = input("You: ")
        if user_input.lower() in ["bye", "exit"]:
            break
        response = get_response(user_input)
        print("Chatbot: ", response)
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

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

  1. بررسی کنید که آیا اسکریپت اصلی است یا خیر: if __name__ == "__main__":

    • این بررسی می کند که آیا اسکریپت به عنوان ماژول اصلی اجرا می شود یا خیر. اگر اینطور باشد، کد داخل این بلوک اجرا می شود.
  2. حلقه بی نهایت: while True:

    • این یک حلقه نامتناهی ایجاد می کند که تا زمانی که به صراحت از آن خارج نشود به کار خود ادامه می دهد.
  3. دریافت ورودی کاربر: user_input = input("You: ")

    • این از کاربر درخواست ورودی می کند و آن را در قسمت ذخیره می کند user_input متغیر.
  4. بررسی وضعیت خروج: if user_input.lower() in ["bye", "exit"]:

    • این بررسی می کند که آیا ورودی کاربر “بای” یا “خروج” است (در هر صورت). اگر اینطور باشد، حلقه می شکند و برنامه به پایان می رسد.
  5. دریافت پاسخ از OpenAI: response = get_response(user_input)

    • این به نام get_response عملکرد با ورودی کاربر برای دریافت پاسخ از مدل OpenAI.
  6. چاپ پاسخ چت بات: print("Chatbot: ", response)

    • این پاسخ را از چت بات به کنسول چاپ می کند.

این اسکریپت به طور موثر یک چت بات ساده با استفاده از مدل GPT-3.5-turbo OpenAI ایجاد می کند که امکان مکالمات مبتنی بر متن تعاملی را فراهم می کند.

توضیحات تصویر

ساخت برنامه های چت با GPT-3.5-turbo OpenAI با استفاده از Streamlit، Chainlit و Gradio.

1. اجرای Streamlit

Streamlit یک کتابخانه قدرتمند برای ایجاد برنامه های کاربردی وب با حداقل تلاش است. در زیر کد کامل یک برنامه چت Streamlit آمده است.

import streamlit as st
import openai

# Set your OpenAI API key
openai.api_key = "sk-xxxxxxxxxxxxxxxxxxxxxxxxxx"

# Function to get response from OpenAI
def get_response(text):
    response = openai.chat.completions.create(
        model="gpt-3.5-turbo",
        messages=[{"role": "user", "content": text}]
    )
    return response.choices[0].message.content.strip()

# Streamlit UI
st.title("Chat with OpenAI GPT-3.5-turbo")
user_input = st.text_input("You: ")

if st.button("Send"):
    if user_input:
        response = get_response(user_input)
        st.write(f"Chatbot: {response}")
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

توضیح

  1. واردات کتابخانه ها: وارد كردن streamlit و openai.
  2. کلید OpenAI API: کلید OpenAI API خود را تنظیم کنید.
  3. تابع get_response: تابعی را برای ارسال ورودی کاربر به OpenAI API و بازگرداندن پاسخ تعریف کنید.
  4. رابط کاربری ساده: یک رابط کاربری ساده با کادر ورودی متن و یک دکمه ایجاد کنید. هنگامی که دکمه کلیک می شود، ورودی کاربر به آن ارسال می شود get_response عملکرد، و پاسخ نمایش داده می شود.

2. اجرای Chainlit

Chainlit کتابخانه دیگری است که ایجاد برنامه های تحت وب را ساده می کند. در اینجا نحوه ایجاد یک برنامه چت با استفاده از Chainlit آورده شده است.

import chainlit as cl
import openai

# Set your OpenAI API key
openai.api_key = "sk-xxxxxxxxxxxxxxxxxxxxxxxxxx"

# Function to get response from OpenAI
def get_response(text):
    response = openai.chat.completions.create(
        model="gpt-3.5-turbo",
        messages=[{"role": "user", "content": text}]
    )
    return response.choices[0].message.content.strip()

@cl.on_message
async def main(message: str):
    response = get_response(message)
    await cl.Message(content=response).send()
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

توضیح

  1. واردات کتابخانه ها: وارد كردن chainlit و openai.
  2. کلید OpenAI API: کلید OpenAI API خود را تنظیم کنید.
  3. تابع get_response: برای دریافت پاسخ از OpenAI، همان تابع را تعریف کنید.
  4. رویداد با نور زنجیر: استفاده کنید @cl.on_message دکوراتور برای تعریف یک تابع ناهمزمان که پیام های دریافتی را پردازش می کند. هنگامی که یک پیام دریافت می شود، تابع یک پاسخ از OpenAI دریافت کرده و آن را پس می فرستد.

3. پیاده سازی Gradio

Gradio یک راه آسان برای ایجاد رابط های وب ارائه می دهد. در اینجا کد کامل یک برنامه چت Gradio آمده است.

import gradio as gr
import openai

# Set your OpenAI API key
openai.api_key = "sk-xxxxxxxxxxxxxxxxxxxxxxxxxx"

# Function to get response from OpenAI
def get_response(text):
    response = openai.chat.completions.create(
        model="gpt-3.5-turbo",
        messages=[{"role": "user", "content": text}]
    )
    return response.choices[0].message.content.strip()

# Gradio interface
def chat_interface(user_input):
    response = get_response(user_input)
    return response

iface = gr.Interface(
    fn=chat_interface,
    inputs=gr.inputs.Textbox(lines=2, placeholder="Enter your message here..."),
    outputs="text",
    title="Chat with OpenAI"
)

iface.launch()
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

توضیح

  1. واردات کتابخانه ها: وارد كردن gradio و openai.
  2. کلید OpenAI API: کلید OpenAI API خود را تنظیم کنید.
  3. تابع get_response: برای دریافت پاسخ از OpenAI، همان تابع را تعریف کنید.
  4. رابط Gradio: یک تابع را تعریف کنید chat_interface که ورودی کاربر را می گیرد و پاسخ را از OpenAI برمی گرداند. یک رابط Gradio با ورودی متن و خروجی متن ایجاد کنید، سپس آن را راه اندازی کنید.

اجرای برنامه ها

برای اجرای این برنامه ها، هر قطعه کد را در یک فایل پایتون جداگانه ذخیره کرده و اجرا کنید.

  • Streamlit: کد را در یک فایل ذخیره کنید، به عنوان مثال، streamlit_chat.py، و اجرا streamlit run streamlit_chat.py.
  • نور زنجیر: کد را در یک فایل ذخیره کنید، به عنوان مثال، chainlit_chat.py، و اجرا python chainlit_chat.py.
  • ساخته شده: کد را در یک فایل ذخیره کنید، به عنوان مثال، gradio_chat.py، و اجرا python gradio_chat.py.

هر دستور یک وب سرور محلی را راه اندازی می کند و می توانید از طریق URL ارائه شده به برنامه چت دسترسی داشته باشید.

می توانید مخزن کامل Github را پیدا کنید اینجا
اگر این پروژه را مفید می‌دانید، به آن یک ستاره ⭐ بدهید و آن را برای مشارکت یا به‌روز ماندن در نظر بگیرید!

نتیجه

در این پست، نحوه ایجاد یک برنامه چت با استفاده از GPT-3.5-turbo OpenAI در سه پلتفرم مختلف: Streamlit، Chainlit و Gradio را نشان دادم. هر پلتفرم نقاط قوت خود را دارد و شما می توانید یکی را انتخاب کنید که به بهترین وجه با نیازهای شما مطابقت دارد. با حداقل کد، می توانید یک رابط چت قدرتمند و تعاملی برای کاربران خود ایجاد کنید.

کد نویسی مبارک 😀


نوشته های مشابه

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

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

دکمه بازگشت به بالا