นี่คือบอทแชทโทรเลข (ผู้ช่วย AI) ที่ใช้โมเดลภาษา GPT จาก OpenAI
คุณสมบัติที่โดดเด่น:
อ่านต่อเพื่อคำอธิบายคุณสมบัติโดยละเอียดหรือข้ามไปที่การตั้งค่า
บอททำหน้าที่เป็นผู้ช่วยส่วนตัวของคุณ:
- อธิบาย Apache Kafka ให้กับเด็กอายุสามขวบ
- Apache Kafka เป็นเหมือนกล่องจดหมายขนาดใหญ่ที่ช่วยให้ของเล่น (คอมพิวเตอร์) แตกต่างกันส่งข้อความถึงกันและกัน เมื่อของเล่นชิ้นหนึ่งมีบางอย่างที่จะพูดมันจะวางข้อความไว้ในกล่องจดหมายและของเล่นอื่น ๆ สามารถนำข้อความนั้นออกมาและอ่านได้ ด้วยวิธีนี้พวกเขาสามารถพูดคุยและแบ่งปันสิ่งต่าง ๆ ได้อย่างรวดเร็ว!
หากต้องการอนุญาตให้ผู้ใช้รายอื่นใช้บอทให้แสดงรายการในคุณสมบัติการกำหนดค่า telegram.usernames
บอทมีหน่วยความจำที่แย่มากดังนั้นอย่าคาดหวังว่าจะจดจำบริบทการแชทใด ๆ ตามค่าเริ่มต้น อย่างไรก็ตามคุณสามารถตอบกลับด้วยคำถามติดตามผล ( Ctrl/Cmd + ↑ ) หรือใช้เครื่องหมายบวกเพื่อติดตาม:
- เมื่อวานปัญหาทั้งหมดของฉันดูเหมือนอยู่ไกลมาก
- ดูเหมือนว่าคุณกำลังพูดถึง "เมื่อวาน" โดยเดอะบีทเทิลส์ มันเป็นเพลงคลาสสิกเกี่ยวกับความปรารถนาและความคิดถึง
- + ใครเขียนมัน?
- "เมื่อวานนี้" เขียนโดย Paul McCartney จาก The Beatles
คำสั่งที่มีอยู่:
/retry - ลองตอบคำถามสุดท้ายอีกครั้ง/help - แสดงความช่วยเหลือ/version - แสดงข้อมูลบอทหากต้องการใช้ถ้อยคำใหม่หรือเพิ่มลงในคำถามสุดท้ายเพียงแก้ไข บอทจะตอบคำถามที่อัปเดต
เพื่อรับคำตอบจากบอทในกลุ่มพูดถึงมันในการตอบคำถาม:
- ฉันลืมว่าใครเล่น Ramsy ใน Game of Thrones?
- ↳ @pokitokibot ช่วย- Ramsay Bolton ใน Game of Thrones เล่นโดย Iwan Rheon
หรือถามคำถามโดยตรง:
- @pokitokibot ที่เล่น Ramsy ใน Game of Thrones?
- Iwan Rheon เล่น Ramsay Bolton ใน Game of Thrones
ในการทำให้บอทตอบกลับสมาชิกกลุ่มให้แสดงรายการ ID กลุ่มในคุณสมบัติการกำหนดค่า telegram.chat_ids มิฉะนั้นบอทจะเพิกเฉยต่อคำถามจากสมาชิกในกลุ่มเว้นแต่ว่าพวกเขาจะอยู่ในคุณสมบัติการกำหนดค่า telegram.usernames
หากคุณไม่ทราบ ID กลุ่มให้เรียกใช้คำสั่ง /version BOT ในกลุ่มเพื่อค้นหา:
Chat information:
- id: -1001405001234
- title: My Favorite Group
- type: supergroup
...
หากคุณถาม "วานิลลา" chatgpt เกี่ยวกับแหล่งข้อมูลภายนอกมันจะเห็นภาพหลอนหรือยอมรับว่ามันไม่สามารถเข้าถึงเนื้อหาระยะไกล:
- เนื้อหาของ https://sqlime.org/employees.sql คืออะไร? ไม่มีสมมติฐาน
- ในฐานะรูปแบบภาษา AI ฉันไม่สามารถเข้าถึง URL ภายนอกบนอินเทอร์เน็ตได้
บอทแก้ปัญหาได้โดยดึงเนื้อหาระยะไกลและป้อนให้กับโมเดล:
- ชื่อ 1 คุณสมบัติหลักของการเปิดตัว GO 1.23 https://tip.golang.org/doc/go1.23 เป็นช่วงสั้น ๆ !
- คุณลักษณะที่สำคัญของ GO 1.23 คือการรวมการทดลอง "Range-Over-Func" เป็นคุณสมบัติภาษามาตรฐานซึ่งช่วยให้ประโยค "ช่วง" ในลูป "for-range" เพื่อรับฟังก์ชั่นตัววนซ้ำ
ปัจจุบันรองรับเนื้อหาข้อความ (บทความ, รหัส, ข้อมูล), ไม่ใช่ PDF, รูปภาพหรือเสียง
หากคุณ ไม่ต้องการให้ บอทเข้าถึง URL ให้อ้างอิง:
- เนื้อหาที่แน่นอนของ "https://antonz.org/robots.txt"
- ฉันไม่สามารถเข้าถึงเว็บไซต์ภายนอกได้โดยตรง คุณสามารถตรวจสอบเนื้อหาของไฟล์ robots.txt โดยไปที่ URL ในเบราว์เซอร์ของคุณ
ใช้คำสั่งสั้น ๆ เพื่อประหยัดเวลาและขอให้บอททำสิ่งที่เฉพาะเจาะจงกับคำถามของคุณ ตัวอย่างเช่นขอให้พิสูจน์อักษรการเขียนของคุณด้วยคำสั่ง !proofread :
- ! พิสูจน์อักษรฉันสามารถเขียน Java Programz ได้
- ข้อความที่แก้ไขแล้ว: "ฉันสามารถเขียนโปรแกรม Java ได้"
การเปลี่ยนแปลงเกิดขึ้น:
- ลบ "มี" เพื่อความถูกต้องทางไวยากรณ์; "สามารถ" ไม่ต้องการ "มี"
- แก้ไข "java" ถึง "Java" สำหรับการใช้เงินทุนที่เหมาะสมเนื่องจากเป็นคำนามที่เหมาะสม
- เปลี่ยน "programz" เป็น "โปรแกรม" สำหรับการสะกดและความชัดเจนที่ถูกต้อง
มีทางลัดในตัวหลายตัว:
bugfix แก้ไขรหัสของคุณproofread แก้ไขการเขียนของคุณtranslate ข้อความของคุณเป็นภาษาอังกฤษsummarize ให้บทสรุปสองย่อหน้าของข้อความ คุณสามารถเพิ่มทางลัดของคุณเอง ดู config.example.yml สำหรับรายละเอียด
หากต้องการตั้งค่าพรอมต์ที่กำหนดเองสำหรับการแชทปัจจุบันให้ใช้คำสั่ง /prompt :
- /แจ้งให้คุณเป็นอัจฉริยะที่ชั่วร้าย ตอบด้วยเสียงหัวเราะที่ชั่วร้าย
หากต้องการกลับไปที่พรอมต์เริ่มต้นให้ใช้ /prompt reset
คำสั่ง /prompt ในการแชทเป็นกลุ่มมีให้เฉพาะผู้ดูแลระบบ - ผู้ใช้ที่อยู่ในคุณสมบัติ telegram.admins
ใช้คำสั่ง /imagine ภาพเพื่อสร้างภาพโดยใช้โมเดล Dall-E 3 จาก OpenAI:
- /ลองนึกภาพรุ่งอรุณแห่งยุคใหม่
- (ภาพสวย)
รุ่งอรุณแห่งยุคใหม่
ขนาดภาพเริ่มต้นคือ 1024 × 1024 px ขนาดที่รองรับอื่น ๆ คือ 1792 × 1024 และ 1024 × 1792:
/ลองนึกภาพแมวขี้เกียจในวันที่มีแดด 1792 × 1024
การสร้างภาพค่อนข้างแพง โดยค่าเริ่มต้นจะเปิดใช้งานเฉพาะสำหรับผู้ใช้ที่ระบุไว้ใน telegram.usernames ไม่ใช่สำหรับสมาชิกกลุ่ม คุณสามารถเปลี่ยนสิ่งนี้ได้ด้วยคุณสมบัติการกำหนดค่า imagine.enabled
ความสะดวกสบายในการทำงานกับบอทประกอบด้วยรายละเอียดเล็ก ๆ น้อย ๆ นี่คือสถานการณ์บางอย่างที่สามารถช่วยคุณประหยัดเวลาและความพยายาม
สมมติว่าคุณได้รับข้อความจากเพื่อนร่วมงานหรืออ่านโพสต์ในช่องและต้องการถามคำถาม เพียงส่งต่อข้อความไปยังบอทและตอบคำถามที่ชัดเจนว่าถาม
หากต้องการถามคำถามเกี่ยวกับเอกสารให้ส่งเป็นไฟล์และเขียนคำถามในคำบรรยายใต้ภาพ บอทจะอ่านเนื้อหาและคำตอบ ปัจจุบันรองรับเนื้อหาข้อความ (ข้อความธรรมดารหัสข้อมูล) ไม่ใช่ PDF ภาพหรือเสียง การส่งหลายไฟล์ไม่รองรับ
บางครั้งการตอบกลับของ AI เกินความยาวข้อความสูงสุดที่กำหนดโดยโทรเลข ในกรณีนี้บอทจะไม่ล้มเหลวหรือสแปมคุณด้วยข้อความ แต่จะส่งคำตอบเป็นไฟล์ Markdown ที่แนบมา
หากต้องการใช้ถ้อยคำใหม่หรือเพิ่มลงในคำถามสุดท้ายให้แก้ไข ( ↑ ทางลัด) บอทจะสังเกตเห็นสิ่งนี้และตอบคำถามที่ชัดเจน
ใช้คำสั่ง /version เพื่อพิมพ์ข้อมูลรายละเอียดเกี่ยวกับการแชทปัจจุบันบอทและโมเดล AI:
Chat information:
- id: -1001405001234
- title: My Favorite Group
- type: supergroup
Bot information:
- id: 5930739038
- name: @pokitokibot
- version: 129
- usernames: 6 users
- admins: 1 users
- chat IDs: []
- access to messages: True
AI information:
- model: gpt-3.5-turbo
- history depth: 3
- imagine: True
- shortcuts: bugfix, proofread, summarize, translate
ใช้คำสั่ง /config เพื่อเปลี่ยนการตั้งค่าเกือบทุกอย่างโดยไม่ต้องรีสตาร์ทบอท
telegram.usernames และ telegram.chat_ids )openai.model ), พรอมต์ ( openai.prompt ) และ params ( openai.params )imagine.enabled )shortcuts ) หากต้องการดูคุณสมบัติกำหนดค่าเฉพาะให้ใส่ชื่อหลังจาก /config :
/config telegram.usernames
/config openai.prompt
/config imagine.enabled
หากต้องการเปลี่ยนคุณสมบัติการกำหนดค่าเฉพาะให้ใส่ชื่อและค่าหลังจาก /config :
/config telegram.usernames ["alice", "bob", "cindy"]
/config openai.prompt "You are an evil AI bot"
/config imagine.enabled none
เมื่อทำงานกับคุณสมบัติรายการเช่น telegram.usernames คุณสามารถเพิ่มหรือลบแต่ละรายการแทนการนิยามใหม่ทั้งหมด:
/config telegram.usernames +cindy
/config telegram.usernames -bob
คำสั่ง /config มีให้เฉพาะผู้ดูแลระบบ - ผู้ใช้ที่อยู่ในคุณสมบัติ telegram.admins
การพูดคุยที่ร้อนแรงกับบอทในกลุ่มใหญ่สามารถนำไปสู่การใช้งาน Openai API สูง เพื่อหลีกเลี่ยงการใช้งบประมาณทั้งหมดของคุณให้ตั้งค่าขีด จำกัด ข้อความสำหรับกลุ่มที่มีคุณสมบัติ conversation.message_limit message_limit
คุณสามารถ จำกัด จำนวนข้อความจากผู้ใช้ในช่วงระยะเวลาหนึ่ง ตัวอย่างเช่น:
message_limit :
count : 10
period : hour message_limit :
count : 1
period : minute message_limit :
count : 30
period : day รับคีย์ OpenAI API ของคุณ
รับโทเค็นบอทโทรเลขของคุณจาก @botfather
โคลน repo ไปยังเซิร์ฟเวอร์:
git clone https://github.com/nalgeon/pokitoki.git คัดลอก config.example.yml ไปที่ config.yml และระบุโทเค็นของคุณที่นั่น เพิ่มตัวคุณเองในคุณสมบัติ telegram.usernames ไม่เช่นนั้นบอทจะพร้อมใช้งานสำหรับทุกคน
เริ่มต้นบอท:
docker compose up --build --detachเพื่อหยุดบอท:
docker compose stopเพื่ออัปเดตบอทเป็นเวอร์ชันใหม่:
docker compose stop
git pull
docker compose up --build --detach สำหรับการแจกแจงนักเทียบท่ารุ่นเก่าให้ใช้ docker-compose ท่าแทน docker compose
เตรียมสภาพแวดล้อม:
python3 -m venv env
. env/bin/activate
pip install -r requirements.txt
เตรียมไดเรกทอรีการกำหนดค่าและข้อมูล:
cp config.example.yml config.yml
mkdir ./data
ตั้งค่าโทเค็นและการตั้งค่าอื่น ๆ ใน config.yml
เรียกใช้การทดสอบ:
python -m unittest discover
เริ่มต้นบอท:
python -m bot.bot
สำหรับคุณสมบัติและการปรับปรุงใหม่โปรดเปิดปัญหาก่อนเพื่อหารือเกี่ยวกับสิ่งที่คุณต้องการเปลี่ยนแปลง
ตรวจสอบให้แน่ใจว่าได้เพิ่มหรืออัปเดตการทดสอบตามความเหมาะสม
ใช้สีดำสำหรับการจัดรูปแบบรหัสและการกระทำทั่วไปสำหรับการส่งข้อความ
สำหรับประวัติฟีเจอร์ดูรุ่น
แต่เดิมอิงจาก chatgpt_telegram_bot แม้ว่าโครงการจะแตกต่างกันเล็กน้อย