อาจจะเป็นความลับเพิ่ม 1 เวอร์ชันด้วยไฟล์ JSON (witht เขาถูกลบ) และ 1 กับที่ปรับใช้โดยไม่มีไฟล์ JSON แต่ตัวแปรความลับ)
การสมัครสมาชิก Chatbase ถูกยกเลิก (อีกทางเลือกหนึ่งสามารถใช้ LLM อื่น (อาจจะเป็น LLM Mistral ตั้งแต่ฟรี ???) ในวันที่ 24/1/2568
นอกจากนี้อาจจำเป็นต้องแยกเฉพาะไฟล์ที่จำเป็นสำหรับการปรับใช้ใน repo gitHub แยกต่างหากเพื่อป้องกันข้อผิดพลาด เพราะการเพิ่มไฟล์เบ็ดเตล็ดที่เพิ่มขึ้นอาจทำให้เกิดข้อผิดพลาดในการปรับใช้ !! (เหมือนกันสำหรับ '18 แอพคาราโอเกะเหตุการณ์ Streamlit 'ซึ่งตอนนี้มีข้อผิดพลาดเพราะฉันเพิ่มไฟล์เบ็ดเตล็ดพิเศษลงใน repo gitHub ... อ๊ะ ... )
อาจจะวางรูปของเว็บไซต์ streanlit, firebase, chatbase และ figma ด้วยและ
วางแผนที่จะเปลี่ยนจากการถ่ายโอนระหว่างหลักสูตรไปยังหลักสูตรเดียวเท่านั้น ... cuz เพื่อให้สามารถถ่ายโอนได้ระหว่างหลักสูตรเป็น ALR ที่ยากเกินไป
นี่เป็นโครงการที่ทำขึ้นเป็นส่วนหนึ่งของโครงการโอกาสการวิจัยระดับปริญญาตรีของมหาวิทยาลัย (UROP) ชื่อ 'UROP: Telegram Chatbot สำหรับโปรแกรมเมอร์มือใหม่เพื่อเรียนรู้การเข้ารหัส' ดูแลและริเริ่มโดยศาสตราจารย์ Oka Kurniawan (นี่คือบัญชี GitHub ของเขา)
นี่คือคำอธิบายของโครงการ UROP:
-
การเข้ารหัสการเรียนรู้สามารถปรับปรุงได้อย่างมีนัยสำคัญเมื่อผู้เรียนมีข้อเสนอแนะทันทีและเป็นส่วนตัว จำนวนผู้เรียนสำหรับการเข้ารหัสทำให้เป็นไปไม่ได้สำหรับผู้สอนของมนุษย์ที่จะให้ข้อเสนอแนะในทันทีและเป็นส่วนตัวแก่ผู้เรียน การเพิ่มขึ้นของ AI ทำให้เรามีความเป็นไปได้ที่จะสร้างครูสอนพิเศษ Chatbot ที่สามารถสนับสนุนผู้เรียนได้ทุกที่ทุกเวลา วัตถุประสงค์ของโครงการนี้คือการสร้าง Telegram Chatbot ซึ่งผู้เรียนสามารถได้รับคำติชมที่เกี่ยวข้องกับหลักสูตรการเข้ารหัสของพวกเขา ข้อเสนอแนะควรมีความถูกต้องตามที่สะท้อนอยู่ในบันทึกย่อหรือปัญหาผู้สอน
chatbot สามารถใช้สำหรับสถาบันใด ๆ ที่สอนการเขียนโปรแกรม
-
โครงการนี้ประกอบด้วยที่เก็บ GitHub 2 แห่ง:
ที่เก็บ GitHub นี้เป็นโฮสต์รหัสสำหรับเว็บแอปพลิเคชัน StreamLit สำหรับ Telegram Chatbot ด้วย Chatbase Custom GPT LLM Model API และฐานข้อมูลเรียลไทม์ของ Firebase (API)
วิธีการพัฒนาโครงการ UROP นี้แบ่งออกเป็น 2 องค์ประกอบ:
Bot Telegram Bot ของโครงการนี้, รุ่น GPT LLM แบบกำหนดเอง, แอปพลิเคชันเว็บไซต์ของ Streamlit (Python Framework) และลิงก์ Firebase (API):
นี่คือไดเรกทอรีเพื่ออธิบายวัตถุประสงค์ของแต่ละไฟล์ในที่เก็บนี้:
ไฟล์ที่จำเป็นในการสร้างเว็บแอปพลิเคชัน StreamLit สำหรับ Telegram Chatbot ด้วย Chatbase Custom GPT LLM Model API และฐานข้อมูลเรียลไทม์ของ Firebase (API)
ไฟล์เพิ่มเติมที่ไม่ได้เป็นส่วนหนึ่งของการสร้างเว็บแอปพลิเคชัน Streamlit สำหรับ Telegram Chatbot ด้วย Chatbase GPT LLM Model API และฐานข้อมูลเรียลไทม์ของ Firebase (API) แต่รวมถึงการทำซ้ำ/รุ่นที่ผ่านมา
ไฟล์เพิ่มเติมที่ไม่ได้เป็นส่วนหนึ่งของการสร้างเว็บแอปพลิเคชัน Streamlit สำหรับ Telegram Chatbot ด้วย Chatbase Custom GPT LLM Model API และฐานข้อมูลเรียลไทม์ของ Firebase (API) แต่รวมถึงการเรียนรู้การเรียนรู้ของเทคโนโลยีที่จำเป็นในโครงการนี้
กระบวนการปรับใช้ของเว็บแอปพลิเคชัน Streamlit สำหรับ Telegram Chatbot ด้วย Chatbase Custom GPT LLM Model API และฐานข้อมูลเรียลไทม์ของ Firebase (API) บน Cloud StreamLit
1. '. Streamlit' โฟลเดอร์
ฉัน. ไฟล์ 'config.toml'
ไฟล์ Python หลักสำหรับแอปพลิเคชันเว็บ Streamlit สำหรับ Telegram Chatbot ด้วยฐานข้อมูล API ของ GPT LLM ที่กำหนดเองและ Firebase (API) แบบเรียลไทม์ของตัวเอง
2. ไฟล์ 'readme.md'
ไฟล์ 'readme.md'
3. ไฟล์ 'firebase_key.json'
{
"type" : "service_account" ,
"project_id" : "urop-telegram-chatbot" ,
"private_key_id" : "d370c3cff86ea75089c60973d19105f90d84fdc7" ,
"private_key" : "-----BEGIN PRIVATE KEY----- n MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQC2Yqgt09bJB335 n bN61dlqWY0yFcLv8DPqvHKtpUqzSAvQGdK00zaPlezkd4SKGfohd8z4o0srpUPt9 n 0fLhIPJJJhTjRN7rZpvJOPWiECQfHFXc2OJhOdabDnJoIeth+29RfD5D4t2HUdWO n /OiSKJfNYNAf2sKELJLlPOnXwpa/wfzNhHap50WLjed8OzF+Y57ucFHut/USlsWp n 3uiRdjHod3Sfs0eL+jKfeOdkni7o/E1ytN1Ascvc1OLpbi9h6GyoLLZf8g2O1Nyn n fe26tfRnkYvT1viErxnhQBGUh3hz3SVIsZ4FYyVrlWVwH+U8CJg2foBtbtOZjmEK n PNAC0fi3AgMBAAECggEATMs0iftA3CtJ6Rxkl55qXRkZbrQ9is7CPLpDGFlFyDWT n HybAiVOu12Cvd3vEiEG91GUnfpPm+R9ujRc5/33aVl9w+xKUFCUDolHX5zGJrAnH n w3IUu6BZUrdeB6eEjyCJyhMYuofLA/+6fnbRzDzIUiMZ7tezAGkuPtSLl5vo0ns5 n 1Mw13sSlssc3bjd+bCa23xDamzKWpMFlHJztnbsRVjKXfzMx2f45+snT1Lqo4kk/ n cCpM8QFlMHxLgei7JOKSkEj6LYM9Xn1dRmPJGGSAtlx/2W0/DFrVD4GCLXReKNsz n 4afFN42cZB88pKT/8YB3KoH3o/wA79k4AdsagccGbQKBgQDz3p5Yi1YgvmxWPKxd n pO1cYek2itrpH9YUZirehU01rrdHJvyufFVEoUHoeoXcDHVt++1iHZvZPwt/ZgZq n P2tM5XWY1hlgdDgOb5J2td8jdMJuKBkzGLpnSg0qSEVlsBEsJhajvGIzBIz2Ervk n hz1F3pIwXDZNEFS5ywMrW55WgwKBgQC/dRym9V3g0Y6g2mjAqIANRZ605R3MZpst n N5r9GFSBB/JXo22shLCA0/RL0A3Q8aGblVv9VwHVOi1qaeU8DIcQqJvdKfspIi0J n L8mp3ZraGzknCEHkj0oKGqNCE2Nsfx+dQ6du+u7UOecb22pjqV2UeL6gMerAMf16 n X1ZTL7hevQKBgFyIVObd/9Euz+as4O4rXVEXaakjaMraJJ3a4ltKkzBSWgKqfWgr n jyMaWOrASrhjFc+krr7y4ya8cD1n1flMlQc5bbSPUFOz5W080oMuoTtP21J27pDf n yiLVC0fG4mYiN3HcBe0c1tnq2R2poBenZQ101V16L7RwBOX2bP5vphXHAoGBALX1 n CncOqNr6rm/nQzkeqxxx9yR6v7g8J+xwdWdm0SEUOVjbJGeab9jwF7RZllfm3S1t n ZNC/+Sj6MqF45PkN+ut1IzStKltsdJrPhPxgdUQmLUoQSfd7yuURbellXc+GfbhL n zPvnlkWyhhduj40KMLrjil/bMPzaRcogg31p0/KNAoGBAKNTzPgZSif0PGXPEvhK n zEi5ojwvC9iOIKvmjgXLu+e0zAI27PiiryrfrpQW6CK7RpK9KO2lQ2NUdyOi0MVI n kqMGPLzjVwBKtWMhIwvaZxFJBvCNIg6nE5RSKoXFSYKWqmLPp+2ydPLXGPgAzNL/ n /7+TBiy9OmEkqIbNmwzgiYgR n -----END PRIVATE KEY----- n " ,
"client_email" : "firebase-adminsdk-rvtdl@urop-telegram-chatbot.iam.gserviceaccount.com" ,
"client_id" : "108928779375842545414" ,
"auth_uri" : "https://accounts.google.com/o/oauth2/auth" ,
"token_uri" : "https://oauth2.googleapis.com/token" ,
"auth_provider_x509_cert_url" : "https://www.googleapis.com/oauth2/v1/certs" ,
"client_x509_cert_url" : "https://www.googleapis.com/robot/v1/metadata/x509/firebase-adminsdk-rvtdl%40urop-telegram-chatbot.iam.gserviceaccount.com" ,
"universe_domain" : "googleapis.com"
}ไฟล์นี้แสดงถึงคีย์ Authetication เห็นได้ชัดว่าเมื่อเข้าถึง APIs (เช่น Firebase API) คุณจะต้องมีคีย์การตรวจสอบความถูกต้องซึ่งเป็นสิ่งที่ไฟล์นี้คือเพื่อให้แน่ใจว่าผู้ใช้ที่ได้รับอนุญาตเท่านั้นสามารถเข้าถึง API ได้ อ้างถึงวิดีโอนี้เพื่อทำความเข้าใจว่าคีย์การรับรองความถูกต้องของ Firebase API ใช้กับรหัส Python ของคุณอย่างไร: https://www.youtube.com/watch?v=s-ga8c3tovy&t=336s (รหัสแรกกับ Hala)
4. 'ข้อกำหนด. txt' ไฟล์
streamlit == 1.27 . 2
streamlit_autorefresh == 1.0 . 1
firebase_admin == 6.2 . 0นี่คือไฟล์บังคับตามการปรับใช้แอปพลิเคชันเว็บ Streamlit สำหรับ Telegram Chatbot ด้วย CHATBASE Custom GPT LLM Model API และ Firebase (API) ของฐานข้อมูลเรียลไทม์ในเว็บแอปพลิเคชันที่มีความถี่ต่ำกว่า Telegram chatbot รวมเข้ากับฐานข้อมูล REALTIME GPT LLM ที่กำหนดเองและ Firebase (API) บนคลาวด์ Streamlit 'สำหรับข้อมูลเพิ่มเติมเกี่ยวกับกระบวนการปรับใช้ของเว็บแอปพลิเคชันที่มีความคล่องตัว https://docs.streamlit.io/streamlit-community-cloud/deploy-your-app (Streamlit Cloud) ซึ่งช่วยให้คุณสามารถบอก Streamlit (Python Framework) เพื่อดาวน์โหลด Libraries/Framework/Framework/แพ็คเกจที่ระบุไว้ในไฟล์ Chatbase Custom GPT LLM Model API และฐานข้อมูลเรียลไทม์ของ Firebase (API)
เห็นได้ชัดว่าไฟล์ 'txt.txt' เป็นวิธีปฏิบัติทั่วไปในแพลตฟอร์มการปรับใช้ต่างๆใน Python ไม่ใช่แค่สำหรับคลาวด์ Streamlit ไม่ว่าคุณจะปรับใช้แอปพลิเคชันของคุณบนแพลตฟอร์มเช่น Heroku, AWS, Vercel หรืออื่น ๆ โดยระบุการพึ่งพาในไฟล์ 'txt' txt 'ช่วยให้แพลตฟอร์มเข้าใจและติดตั้งแพ็คเกจที่จำเป็น
5. ไฟล์ 'StreamLit_Web_Application.py'
ไฟล์ Python หลักสำหรับแอปพลิเคชันเว็บ Streamlit สำหรับ Telegram Chatbot ด้วยฐานข้อมูล API ของ GPT LLM ที่กำหนดเองและ Firebase (API) แบบเรียลไทม์ของตัวเอง
แหล่งที่มา:
ฉันได้ติดป้ายเวอร์ชันของแต่ละไฟล์พร้อมกับคำอธิบายสั้น ๆ เกี่ยวกับความแตกต่างระหว่างเวอร์ชันในชื่อไฟล์ นี่คือคำอธิบายที่ซับซ้อนมากขึ้นเกี่ยวกับความแตกต่างในเวอร์ชัน:
ทำไมฉันถึงเลือกฐานข้อมูลเรียลไทม์ของ Firebase แทนฐานข้อมูล MySQL?
ด้วยความรู้ที่เรียนรู้เมื่อเร็ว ๆ นี้เกี่ยวกับ MySQL ฉันต้องการลองใช้ฐานข้อมูล MySQL ในโครงการนี้ อย่างไรก็ตามฉันตระหนักว่าแพลตฟอร์มโฮสติ้งฐานข้อมูลจำนวนมากเช่นฐานข้อมูล Azure และ Amazon Web Services ต้องการข้อมูลการเรียกเก็บเงินของคุณเพื่อเริ่มโฮสต์ฐานข้อมูล MySQL บนพวกเขา ฉันไม่ต้องการเสี่ยงต่อการถูกคิดค่าใช้จ่ายมากเกินไปเพราะฉันมักจะไม่รักษาแอปพลิเคชันที่สร้างขึ้นเนื่องจากฉันสร้างขึ้นเพื่อการศึกษาและไม่ใช่เพื่อการผลิต ดังนั้นฉันจึงตัดสินใจใช้ฐานข้อมูล Relational/NOSQL RealTime ของ Firebase แทนเนื่องจากเป็นแพลตฟอร์มโฮสติ้งฐานข้อมูลเดียวที่ไม่ต้องการข้อมูลการเรียกเก็บเงิน
เนื่องจากฉันขาดความรู้ในเทคโนโลยีที่จำเป็นบางอย่างที่ใช้ในเว็บแอปพลิเคชัน Streamlit สำหรับ Telegram Chatbot ที่รวมเข้ากับฐานข้อมูล Realtime ของ Chatbase Custom GPT LLM และ Firebase (API) ฉันต้องเรียนรู้ก่อนซึ่งรวมถึง::
การเรียนรู้ทางวิศวกรรมที่รวดเร็ว (จากหลักสูตรวิศวกรรมที่รวดเร็วโดย deeplearning.ai โดยความร่วมมือกับ OpenAI (ใช้ CHATGPT เป็น LLM)))
ประกอบด้วยการเดินทางการเรียนรู้ของฉันเกี่ยวกับกระบวนทัศน์ทางวิศวกรรมที่รวดเร็ว (หลักสูตรออนไลน์ที่ฉันเรียนรู้กระบวนทัศน์ทางวิศวกรรมที่รวดเร็วจาก: https://www.deeplearning.ai/short-courses/chatgpt-prompt-ensenering-for-developers/ โดย Deeplearning.ai
วิศวกรรมที่รวดเร็วคืออะไร?
วิศวกรรมที่รวดเร็วเป็นกระบวนการของการเขียน/การปรับแต่ง AI ที่เกิดขึ้นพร้อมกันเพื่อปรับปรุงความแม่นยำและประสิทธิผลและได้รับผลลัพธ์ที่ต้องการจากโมเดล AI
พรอมต์คืออะไร?
พรอมต์ AI (รวมถึงแบบจำลองภาษาขนาดใหญ่ (LLM)) เป็นคำถามคำสั่งหรือคำสั่งที่คุณป้อนเข้าไปในโมเดล AI (รวมถึงโมเดลภาษาขนาดใหญ่ (LLM)) เพื่อเริ่มต้นการตอบสนองหรือการกระทำการควบคุมพลังของการประมวลผลภาษาธรรมชาติ (NLP)
(หมายเหตุ: OpenAI GPT Model API (Python Framework) ต้องมีการสมัครสมาชิกรายเดือน: รหัสในบทช่วยสอนนี้จำเป็นต้องใช้ Openai GPT Model API (เฟรมเวิร์ก Python) เพื่อให้ได้รับการตอบกลับจาก CHATGPT (Python Framework) การเข้าถึงซึ่งต้องใช้การชำระเงิน
ดังนั้น 'เอาต์พุต' ส่วนใหญ่จากรหัสในบทช่วยสอนนี้จะเป็นเอาต์พุตจำลองที่แสดงในวิดีโอในบทช่วยสอนนี้เขียนในไฟล์สมุดบันทึก Jupyter)
แหล่งที่มา:
Figma เรียนรู้
ประกอบด้วยการเรียนรู้การเรียนรู้ของฉันในรูปของฉัน (เพลย์ลิสต์ YouTube หลักที่ฉันได้เรียนรู้กระบวนทัศน์ทางวิศวกรรมที่รวดเร็วจาก: https://www.youtube.com/playlist?list=plkid0a0xcibuyx3c_nyn13w9z_kkiia2m
Figma คืออะไร?
Figma เป็นเว็บแอปพลิเคชันที่ทำงานร่วมกันสำหรับการออกแบบอินเตอร์เฟสพร้อมคุณสมบัติออฟไลน์เพิ่มเติมที่เปิดใช้งานโดยแอปพลิเคชันเดสก์ท็อปสำหรับ MacOS และ Windows ชุดคุณลักษณะของ FIGMA มุ่งเน้นไปที่การออกแบบผู้ใช้ (UI) และการออกแบบประสบการณ์ผู้ใช้ (UX) โดยเน้นการทำงานร่วมกันแบบเรียลไทม์โดยใช้เครื่องมือแก้ไขกราฟิกเวกเตอร์และเครื่องมือสร้างต้นแบบที่หลากหลาย
กฎที่สำคัญเกี่ยวกับ Figma คือคุณไม่ควรเริ่มต้นอะไรตั้งแต่เริ่มต้น! อย่าลืมรับจากการอ้างอิงและคัดลอกจากเทมเพลตเว็บไซต์ที่มีอยู่เพื่อเพิ่มคุณภาพและเวลาการสร้างของต้นแบบเว็บไซต์! (ตามที่แนะนำจากวิดีโอ YouTube ของ AJ & Smart)
แหล่งที่มา:
Streamlit Cloud คืออะไร?
จากเว็บไซต์ Streamlit Cloud อย่างเป็นทางการ: 'Streamlit Cloud เป็นผลิตภัณฑ์ใหม่ที่ให้คุณสร้างปรับใช้และแบ่งปันข้อมูลจากแอปพลิเคชันเว็บ Streamlit ในไม่กี่นาที'
จริงๆแล้วเอกสารเกี่ยวกับวิธีการปรับใช้แอปพลิเคชันเว็บ Streamlit (Python Framework) บน Streamlit Cloud (ลิงก์: https://docs.streamlit.io/streamlit-community-cloud/deploy-our-app) อธิบายอย่างชัดเจน เมื่อปรับใช้อย่างถูกต้องแล้วฉันได้รับลิงก์ 'streamlit.io' โดยตรงไปยังแอปพลิเคชันเว็บ Streamlit ซึ่งฉันสามารถแบ่งปันกับผู้อื่นเพื่อลองใช้แอปพลิเคชันเว็บสตรีม
การจัดการข้อมูลที่ละเอียดอ่อนเป็น 'ความลับ'/ตัวแปรสภาพแวดล้อม บน Streamlit Cloud:
เมื่อฉันพยายามผลักปุ่มส่วนตัวของฐานข้อมูล Firebase Realtime หรือ Chatbase Custom GPT LLM Model API Private Model ลงในที่เก็บ GitHub นี้โดยตรงฉันยังคงได้รับคำเตือนด้านความปลอดภัยว่า 'ความลับ' ของฉันถูกเปิดเผยจาก GitHub ฉันไม่สนใจเรื่องนี้ในตอนแรก แต่มันก็กลายเป็นปัญหาเมื่อคีย์ส่วนตัวของฐานข้อมูล Firebase เรียลไทม์ยังคงรีเซ็ตและถูกยกเลิกเมื่อใดก็ตามที่ตรวจพบคีย์ส่วนตัวเพื่อเปิดเผยต่อสาธารณะ ที่เก็บ GitHub อีกครั้ง
ดังนั้นฉันพบว่าแพลตฟอร์มการปรับใช้ต่าง ๆ ไม่เพียง แต่สำหรับคลาวด์ที่มีความคล่องตัวไม่ว่าคุณจะปรับใช้แอปพลิเคชันของคุณบนแพลตฟอร์มเช่น Heroku, AWS, Vercel หรืออื่น ๆ คุณสามารถเพิ่ม ตัวแปร 'ความลับ'/สภาพแวดล้อม ได้โดยตรงบนแอปพลิเคชันที่ปรับใช้บนแพลตฟอร์มการปรับใช้
โดยเฉพาะสำหรับระบบคลาวด์ Streamlit คุณสามารถเพิ่ม 'ความลับ'/ตัวแปรสภาพแวดล้อม โดยตรงบนแอปพลิเคชันที่ปรับใช้บน Streamlit Cloud และเรียนรู้วิธีการใช้ ตัวแปร 'ความลับ'/สภาพแวดล้อม ที่เพิ่มเข้ามาเหล่านี้ในแอปพลิเคชันที่ปรับใช้บนคลาวด์ Streamlit ในรหัสโดยทำตามเอกสารนี้
นี่คือตัวอย่างของวิธีที่ฉันทำในเว็บแอปพลิเคชัน Streamlit นี้สำหรับ Telegram Chatbot ด้วย Chatbase Custom GPT LLM Model API และฐานข้อมูลเรียลไทม์ของ Firebase (API) บน Cloud StreamLit:
fb_credentials = json.loads(st.secrets['FIREBASE_DB_CONVERSATIONS'])
if "conversations" not in firebase_admin._apps:
# Initialize Firebase
credentials_object_conversations = firebase_admin.credentials.Certificate(fb_credentials)
firebase_admin.initialize_app(credentials_object_conversations, {
'databaseURL': 'https://urop-telegram-chatbot-default-rtdb.asia-southeast1.firebasedatabase.app/'
}, name='conversations')
# Get a reference to the database
reference_to_database_conversations = db.reference('/', app=firebase_admin.get_app('conversations'))
แหล่งที่มา: