ffrsr
Posted on April 7, 2023
ขั้นตอนการสร้าง Telegram chat bot ที่ทำงานร่วมกับ OpenAI API
- ตั้งค่า Flask บนเครื่องคอมพิวเตอร์ของคุณ
- สร้าง Telegram Bot
- การเชื่อมต่อ Flask กับ Telegram Bot
- การเขียนฟังก์ชันเพื่อ request ไปยัง OpenAI API
- การใช้บน Deta.space
เมื่อทำตามขั้นตอนเหล่านี้ จะทำให้คุณสามารถสร้าง Telegram Bot ที่สามารถโต้ตอบกับผู้ใช้ได้อย่างชาญฉลาด โดยการใช้ประโยชน์จาก OpenAI มาเริ่มกันเลย!!
1. ตั้งค่า Flask บนเครื่องคอมพิวเตอร์ของคุณ
mkdir telegrambot
cd telegrambot
touch main.py
# Open the file in the editor that u prefer
จากนั้นให้ติดตั้งโมดูลที่จำเป็นลงไป ทีนี้คุณจะต้องเลือกว่าจะใช้ virtual env. หรือ local machine
สมมติคุณจะใช้ virtual env. ก็ให้ set up ด้วยคำสั่งดังต่อไปนี้:
python -m venv <name_of_virtual_environment>
# if you use bash
source <name_of_virtual_environment>
# if you use fish
source <name_of_virtual_environment>/bin/activate.fish
ทีนี้เปิดไฟล์ main.py และเขียนโค้ดพื้นฐานกัน
main.py
from flask import Flask, request
app = Flask(__name__)
@app.route("/", methods=["GET"])
def index():
return "Hello World!"
if __name__ == "__main__":
port = 5000
app.run(debug=True, host='0.0.0.0', port=port)
ต่อไปให้ติดตั้ง flask ผ่าน pip: pip3 install flask
หลังจากติดตั้งแล้ว เราสามารถรันแอปได้ด้วยคำสั่ง: python3 main.py
จะเห็นว่าเราสร้างแอปให้ทำงานได้แล้ว!
2. สร้าง Telegram Bot
ในการเชื่อมต่อ Flask ของเรากับ Telegram Bot API ก่อนอื่นเราต้องสร้าง Bot ใหม่บน Telegram ซึ่งเราสามารถทำได้ง่าย ๆ โดยทำตามขั้นตอนดังนี้
- เปิด Telegram และค้นหา " @botfather " ในแถบค้นหา
- เริ่มการสนทนากับ BotFather โดยส่งคำสั่ง "/ start"
- หากต้องการสร้าง Bot ใหม่ ให้พิมพ์คำสั่ง "/newbot" และทำตามคำแนะนำของ BotFather
- ตั้งชื่อ Bot ของคุณและชื่อผู้ใช้ที่ลงท้ายด้วย "bot"
- เมื่อคุณสร้าง Bot สำเร็จแล้ว BotFather จะให้ token การอนุญาตแก่คุณ ซึ่งคุณจะต้องใช้เพื่อสื่อสารกับ Telegram Bot API
ด้วยการสร้าง Bot ใหม่บน Telegram เราสามารถเชื่อมโยงมันกับ Flask ของเราและเริ่มสร้างฟังก์ชันการทำงานของ chat Bot ได้
3. หลังจากสร้าง Bot และได้รับ Bot token แล้ว ตอนนี้เราสามารถเชื่อมโยงมันกับ Flask ของเราได้แล้ว
เราสามารถใช้โมดูลrequests
ได้โดยติดตั้งแพ็คเกจโดยใช้คำสั่ง pip3 install requests
ทีนี้มาดูโค้ด main.py ที่อัปเดตแล้วกัน:
import requests
from flask import Flask, request
app = Flask(__name__)
BOT_TOKEN = <your_token_value>
def sendmessage(chatid, message):
url = f"https://api.telegram.org/bot{BOT_TOKEN}/sendMessage"
payload = {
"text": message,
"chat_id": chatid
}
print(requests.get(url, params=payload))
@app.route("/", methods=["POST", "GET"])
def index():
if (request.method == "POST"):
resp = request.get_json()
print(resp)
# We get the content of the message
msgtext = resp["message"]["text"]
# We get the id of the chat
chatid = resp["message"]["chat"]["id"]
# The message is sent back
sendmessage(chatid, msgtext)
return "Done"
else:
return "Hello World!"
if __name__ == "__main__":
port = 5000
app.run(debug=True, host='0.0.0.0', port=port)
ก่อนที่จะทดลองว่า Bot ทำงานหรือไม่ เราต้องใช้ngrok
เพื่อตั้งค่า HTTP Tunnel เป็น Localhost โดยใช้คำสั่ง ngrok http 5000
เราสามารถตรวจสอบได้ว่า URL ใช้การได้หรือไม่โดยใช้คำสั่งcurl
# telegrambot> curl https://a577-131-114-63-2.eu.ngrok.io
Hello World!⏎
ตอนนี้เราสามารถตั้งค่า webHook ของ Telegram Bot ได้แล้ว:
curl "https://api.telegram.org/bot<TOKEN>/setwebHook?url=https://a577-131-114-63-2.eu.ngrok.io"
{"ok":true,"result":true,"description":"Webhook was set"}⏎
และเราจะเห็นว่าตอนนี้ Bot ทำงานได้อย่างสมบูรณ์
4. การเขียนฟังก์ชันที่เรียก openAI API
ในการรับรหัส API เราต้องสร้างบัญชีบน OpenAI หลังจากนั้นเราไปที่ URL นี้ https://platform.openai.com/account/api-keys
เพื่อรับรหัสของเราเอง
ทีนี้เราก็อัปเดตฟังก์ชัน sendmessage
ให้เป็นดังนี้:
def sendmessage(chatid, message):
headers = {"Content-Type": "application/json",
"Authorization": f"Bearer {OPEN_AI}"}
info = {
# The model used (you can use gpt-4 if you have access to it)
"model": "gpt-3.5-turbo",
"messages": [{"role": "user", "content": message}],
# Randomness of the result
"temperature": 0.7,
"max_tokens": 1024
}
post_request = requests.post("https://api.openai.com/v1/chat/completions", headers=headers, json=info)
response_api = post_request.json()["choices"][0]["message"]["content"]
url = f"https://api.telegram.org/bot{BOT_TOKEN}/sendMessage"
payload = {
"text": response_api,
"chat_id": chatid
}
ปรับใช้บน deta.space
ในการปรับใช้บน deta.space เราจำเป็นต้องทำตามขั้นตอนเหล่านี้
- สร้างบัญชี
- ดาวน์โหลด Space Cli
curl -fsSL https://get.deta.dev/space-cli.sh | sh
- เข้าสู่ระบบบน cli ด้วย
space login
- สร้างโครงการด้วย
space new
- อัปเดตโค้ดสองสามบรรทัดให้เป็นดังนี้
import os
OPEN_AI = os.getenv("OPEN_AI")
BOT_TOKEN = os.getenv("BOT_TOKEN")
- การสร้าง Spacefile วิธีเรียกใช้แอปดังนี้
# Spacefile Docs: https://go.deta.dev/docs/spacefile/v0
v: 0
app_name: telegrambot
micros:
- name: telegrambot
src: .
engine: python3.9
primary: true
public_routes:
- "/"
presets:
env:
- name: BOT_TOKEN
description: Telegram Bot Key
default: "<BOT_TOKEN>"
- name: OPEN_AI
description: Open AI Key
default: "<OPEN_AI_API>"
- กดแอปไปที่ deta.space ด้วย
space push
- การเปลี่ยน hook ของ telegram ด้วยคำสั่งเดียวกันแต่ใช้ url ของ deta.space แทน
เสร็จเรียบร้อย
เราได้สร้าง Bot ที่สวยงามซึ่งใช้ปัญญาประดิษฐ์ในการช่วยเหลือคุณ
Posted on April 7, 2023
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.