ساخت برنامه های چت با 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 را برمی گرداند.
-
تعریف تابع:
def get_response(text):
- این تابعی را به نام تعریف می کند
get_response
که یک پارامتر واحد را می پذیردtext
.
- این تابعی را به نام تعریف می کند
-
ایجاد درخواست API:
response = openai.chat.completions.create(...)
- این خط یک درخواست API به OpenAI برای ایجاد یک تکمیل بر اساس متن ورودی داده شده می دهد.
- را
model
پارامتر مشخص می کند که از کدام مدل استفاده شود، در این مورد،"gpt-3.5-turbo"
. - را
messages
پارامتر لیستی از اشیاء پیام است. هر شی باید دارای یکrole
وcontent
. در اینجا، نشان می دهد که کاربر در حال ارائه یک ورودی متن است.
-
پاسخ بازگشت:
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)
این بلوک قسمت اصلی اسکریپت است که در صورت اجرای مستقیم اسکریپت اجرا می شود.
-
بررسی کنید که آیا اسکریپت اصلی است یا خیر:
if __name__ == "__main__":
- این بررسی می کند که آیا اسکریپت به عنوان ماژول اصلی اجرا می شود یا خیر. اگر اینطور باشد، کد داخل این بلوک اجرا می شود.
-
حلقه بی نهایت:
while True:
- این یک حلقه نامتناهی ایجاد می کند که تا زمانی که به صراحت از آن خارج نشود به کار خود ادامه می دهد.
-
دریافت ورودی کاربر:
user_input = input("You: ")
- این از کاربر درخواست ورودی می کند و آن را در قسمت ذخیره می کند
user_input
متغیر.
- این از کاربر درخواست ورودی می کند و آن را در قسمت ذخیره می کند
-
بررسی وضعیت خروج:
if user_input.lower() in ["bye", "exit"]:
- این بررسی می کند که آیا ورودی کاربر “بای” یا “خروج” است (در هر صورت). اگر اینطور باشد، حلقه می شکند و برنامه به پایان می رسد.
-
دریافت پاسخ از OpenAI:
response = get_response(user_input)
- این به نام
get_response
عملکرد با ورودی کاربر برای دریافت پاسخ از مدل OpenAI.
- این به نام
-
چاپ پاسخ چت بات:
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}")
توضیح
-
واردات کتابخانه ها: وارد كردن
streamlit
وopenai
. - کلید OpenAI API: کلید OpenAI API خود را تنظیم کنید.
- تابع get_response: تابعی را برای ارسال ورودی کاربر به OpenAI API و بازگرداندن پاسخ تعریف کنید.
-
رابط کاربری ساده: یک رابط کاربری ساده با کادر ورودی متن و یک دکمه ایجاد کنید. هنگامی که دکمه کلیک می شود، ورودی کاربر به آن ارسال می شود
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()
توضیح
-
واردات کتابخانه ها: وارد كردن
chainlit
وopenai
. - کلید OpenAI API: کلید OpenAI API خود را تنظیم کنید.
- تابع get_response: برای دریافت پاسخ از OpenAI، همان تابع را تعریف کنید.
-
رویداد با نور زنجیر: استفاده کنید
@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()
توضیح
-
واردات کتابخانه ها: وارد كردن
gradio
وopenai
. - کلید OpenAI API: کلید OpenAI API خود را تنظیم کنید.
- تابع get_response: برای دریافت پاسخ از OpenAI، همان تابع را تعریف کنید.
-
رابط 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 را نشان دادم. هر پلتفرم نقاط قوت خود را دارد و شما می توانید یکی را انتخاب کنید که به بهترین وجه با نیازهای شما مطابقت دارد. با حداقل کد، می توانید یک رابط چت قدرتمند و تعاملی برای کاربران خود ایجاد کنید.
کد نویسی مبارک 😀