DEV Community

Cover image for การสร้าง chat bot Telegram ที่ใช้ gpt 3.5 ใน python
ffrsr
ffrsr

Posted on

การสร้าง chat bot Telegram ที่ใช้ gpt 3.5 ใน python

ขั้นตอนการสร้าง Telegram chat bot ที่ทำงานร่วมกับ OpenAI API

  1. ตั้งค่า Flask บนเครื่องคอมพิวเตอร์ของคุณ
  2. สร้าง Telegram Bot
  3. การเชื่อมต่อ Flask กับ Telegram Bot
  4. การเขียนฟังก์ชันเพื่อ request ไปยัง OpenAI API
  5. การใช้บน Deta.space

เมื่อทำตามขั้นตอนเหล่านี้ จะทำให้คุณสามารถสร้าง Telegram Bot ที่สามารถโต้ตอบกับผู้ใช้ได้อย่างชาญฉลาด โดยการใช้ประโยชน์จาก OpenAI มาเริ่มกันเลย!!

1. ตั้งค่า Flask บนเครื่องคอมพิวเตอร์ของคุณ

mkdir telegrambot
cd telegrambot
touch main.py

# Open the file in the editor that u prefer
Enter fullscreen mode Exit fullscreen mode

จากนั้นให้ติดตั้งโมดูลที่จำเป็นลงไป ทีนี้คุณจะต้องเลือกว่าจะใช้ 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
Enter fullscreen mode Exit fullscreen mode

ทีนี้เปิดไฟล์ 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)
Enter fullscreen mode Exit fullscreen mode

ต่อไปให้ติดตั้ง flask ผ่าน pip: pip3 install flask
หลังจากติดตั้งแล้ว เราสามารถรันแอปได้ด้วยคำสั่ง: python3 main.py
จะเห็นว่าเราสร้างแอปให้ทำงานได้แล้ว!

Image description

2. สร้าง Telegram Bot

ในการเชื่อมต่อ Flask ของเรากับ Telegram Bot API ก่อนอื่นเราต้องสร้าง Bot ใหม่บน Telegram ซึ่งเราสามารถทำได้ง่าย ๆ โดยทำตามขั้นตอนดังนี้

  1. เปิด Telegram และค้นหา " @botfather " ในแถบค้นหา
  2. เริ่มการสนทนากับ BotFather โดยส่งคำสั่ง "/ start"
  3. หากต้องการสร้าง Bot ใหม่ ให้พิมพ์คำสั่ง "/newbot" และทำตามคำแนะนำของ BotFather
  4. ตั้งชื่อ Bot ของคุณและชื่อผู้ใช้ที่ลงท้ายด้วย "bot"
  5. เมื่อคุณสร้าง Bot สำเร็จแล้ว BotFather จะให้ token การอนุญาตแก่คุณ ซึ่งคุณจะต้องใช้เพื่อสื่อสารกับ Telegram Bot API

Image description

ด้วยการสร้าง 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)
Enter fullscreen mode Exit fullscreen mode

ก่อนที่จะทดลองว่า Bot ทำงานหรือไม่ เราต้องใช้ngrokเพื่อตั้งค่า HTTP Tunnel เป็น Localhost โดยใช้คำสั่ง ngrok http 5000

Image description
เราสามารถตรวจสอบได้ว่า URL ใช้การได้หรือไม่โดยใช้คำสั่งcurl

# telegrambot> curl https://a577-131-114-63-2.eu.ngrok.io
Hello World!⏎
Enter fullscreen mode Exit fullscreen mode

ตอนนี้เราสามารถตั้งค่า 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"}⏎

Enter fullscreen mode Exit fullscreen mode

และเราจะเห็นว่าตอนนี้ Bot ทำงานได้อย่างสมบูรณ์

Image description

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
    }
Enter fullscreen mode Exit fullscreen mode

Image description

ปรับใช้บน 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")
Enter fullscreen mode Exit fullscreen mode
  • การสร้าง 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>"
Enter fullscreen mode Exit fullscreen mode
  • กดแอปไปที่ deta.space ด้วยspace push
  • การเปลี่ยน hook ของ telegram ด้วยคำสั่งเดียวกันแต่ใช้ url ของ deta.space แทน

เสร็จเรียบร้อย
เราได้สร้าง Bot ที่สวยงามซึ่งใช้ปัญญาประดิษฐ์ในการช่วยเหลือคุณ

Top comments (0)