<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: ffrsr</title>
    <description>The latest articles on Forem by ffrsr (@ffrsr).</description>
    <link>https://forem.com/ffrsr</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1058502%2F7b8b6e99-09e3-4a6a-8da4-94daa2d083aa.png</url>
      <title>Forem: ffrsr</title>
      <link>https://forem.com/ffrsr</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/ffrsr"/>
    <language>en</language>
    <item>
      <title>การสร้าง chat bot Telegram ที่ใช้ gpt 3.5 ใน python</title>
      <dc:creator>ffrsr</dc:creator>
      <pubDate>Fri, 07 Apr 2023 09:45:06 +0000</pubDate>
      <link>https://forem.com/ffrsr/kaarsraang-chat-bot-telegram-thiiaich-gpt-35-ain-python-33nl</link>
      <guid>https://forem.com/ffrsr/kaarsraang-chat-bot-telegram-thiiaich-gpt-35-ain-python-33nl</guid>
      <description>&lt;p&gt;ขั้นตอนการสร้าง Telegram chat bot ที่ทำงานร่วมกับ OpenAI API&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;ตั้งค่า Flask บนเครื่องคอมพิวเตอร์ของคุณ&lt;/li&gt;
&lt;li&gt;สร้าง Telegram Bot&lt;/li&gt;
&lt;li&gt;การเชื่อมต่อ Flask กับ Telegram Bot&lt;/li&gt;
&lt;li&gt;การเขียนฟังก์ชันเพื่อ request ไปยัง OpenAI API&lt;/li&gt;
&lt;li&gt;การใช้บน Deta.space&lt;/li&gt;
&lt;/ol&gt;

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

&lt;h2&gt;
  
  
  &lt;strong&gt;1. ตั้งค่า Flask บนเครื่องคอมพิวเตอร์ของคุณ&lt;/strong&gt;
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;mkdir telegrambot
cd telegrambot
touch main.py

# Open the file in the editor that u prefer
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;จากนั้นให้ติดตั้งโมดูลที่จำเป็นลงไป ทีนี้คุณจะต้องเลือกว่าจะใช้ virtual env. หรือ local machine &lt;br&gt;
สมมติคุณจะใช้ virtual env. ก็ให้ set up ด้วยคำสั่งดังต่อไปนี้:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;python -m venv &amp;lt;name_of_virtual_environment&amp;gt;

# if you use bash
source &amp;lt;name_of_virtual_environment&amp;gt;

# if you use fish
source &amp;lt;name_of_virtual_environment&amp;gt;/bin/activate.fish
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;ทีนี้เปิดไฟล์ main.py และเขียนโค้ดพื้นฐานกัน &lt;br&gt;
main.py&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;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)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--UXe0uUqv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7reeheyrv69lxciibrya.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--UXe0uUqv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7reeheyrv69lxciibrya.png" alt="Image description" width="722" height="345"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  &lt;strong&gt;2. สร้าง Telegram Bot&lt;/strong&gt;
&lt;/h2&gt;

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

&lt;ol&gt;
&lt;li&gt;เปิด Telegram และค้นหา " &lt;a class="mentioned-user" href="https://dev.to/botfather"&gt;@botfather&lt;/a&gt; " ในแถบค้นหา &lt;/li&gt;
&lt;li&gt;เริ่มการสนทนากับ BotFather โดยส่งคำสั่ง "/ start" &lt;/li&gt;
&lt;li&gt;หากต้องการสร้าง Bot ใหม่ ให้พิมพ์คำสั่ง "/newbot" และทำตามคำแนะนำของ BotFather &lt;/li&gt;
&lt;li&gt;ตั้งชื่อ Bot ของคุณและชื่อผู้ใช้ที่ลงท้ายด้วย "bot"&lt;/li&gt;
&lt;li&gt;เมื่อคุณสร้าง Bot สำเร็จแล้ว BotFather จะให้ token การอนุญาตแก่คุณ ซึ่งคุณจะต้องใช้เพื่อสื่อสารกับ Telegram Bot API&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--JUhrDCD0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/c2gzohu2j4z0qzwiwllm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--JUhrDCD0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/c2gzohu2j4z0qzwiwllm.png" alt="Image description" width="872" height="762"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;ด้วยการสร้าง Bot ใหม่บน Telegram เราสามารถเชื่อมโยงมันกับ Flask ของเราและเริ่มสร้างฟังก์ชันการทำงานของ chat Bot ได้&lt;/p&gt;
&lt;h2&gt;
  
  
  &lt;strong&gt;3. หลังจากสร้าง Bot และได้รับ Bot token แล้ว ตอนนี้เราสามารถเชื่อมโยงมันกับ Flask ของเราได้แล้ว&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;เราสามารถใช้โมดูล&lt;code&gt;requests&lt;/code&gt; ได้โดยติดตั้งแพ็คเกจโดยใช้คำสั่ง &lt;code&gt;pip3 install requests&lt;/code&gt; &lt;/p&gt;

&lt;p&gt;ทีนี้มาดูโค้ด main.py ที่อัปเดตแล้วกัน:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import requests
from flask import Flask, request

app = Flask(__name__)

BOT_TOKEN = &amp;lt;your_token_value&amp;gt;

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)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Sx5f9_9B--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/of2z6kzvf0qsvty9mudz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Sx5f9_9B--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/of2z6kzvf0qsvty9mudz.png" alt="Image description" width="867" height="302"&gt;&lt;/a&gt;&lt;br&gt;
เราสามารถตรวจสอบได้ว่า URL ใช้การได้หรือไม่โดยใช้คำสั่ง&lt;code&gt;curl&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# telegrambot&amp;gt; curl https://a577-131-114-63-2.eu.ngrok.io
Hello World!⏎
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;ตอนนี้เราสามารถตั้งค่า webHook ของ Telegram Bot ได้แล้ว:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;curl "https://api.telegram.org/bot&amp;lt;TOKEN&amp;gt;/setwebHook?url=https://a577-131-114-63-2.eu.ngrok.io"
{"ok":true,"result":true,"description":"Webhook was set"}⏎

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--OwW_rZ1x--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ygdgdv22g733lmtczfxq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--OwW_rZ1x--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ygdgdv22g733lmtczfxq.png" alt="Image description" width="873" height="117"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;4. การเขียนฟังก์ชันที่เรียก openAI API&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;ในการรับรหัส API เราต้องสร้างบัญชีบน OpenAI หลังจากนั้นเราไปที่ URL นี้ &lt;a href="https://platform.openai.com/account/api-keys"&gt;https://platform.openai.com/account/api-keys&lt;/a&gt;&lt;br&gt;
เพื่อรับรหัสของเราเอง&lt;/p&gt;

&lt;p&gt;ทีนี้เราก็อัปเดตฟังก์ชัน &lt;code&gt;sendmessage&lt;/code&gt; ให้เป็นดังนี้:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;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
    }
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ArOTEZfR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/m7wxt2k6ndok5fgc9k0l.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ArOTEZfR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/m7wxt2k6ndok5fgc9k0l.png" alt="Image description" width="875" height="102"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;ปรับใช้บน deta.space&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;ในการปรับใช้บน deta.space เราจำเป็นต้องทำตามขั้นตอนเหล่านี้&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;สร้างบัญชี&lt;/li&gt;
&lt;li&gt;ดาวน์โหลด Space Cli &lt;code&gt;curl -fsSL https://get.deta.dev/space-cli.sh | sh&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;เข้าสู่ระบบบน cli ด้วย &lt;code&gt;space login&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;สร้างโครงการด้วย &lt;code&gt;space new&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;อัปเดตโค้ดสองสามบรรทัดให้เป็นดังนี้
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt; import os
 OPEN_AI = os.getenv("OPEN_AI")
 BOT_TOKEN = os.getenv("BOT_TOKEN")
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;การสร้าง Spacefile วิธีเรียกใช้แอปดังนี้
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# 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: "&amp;lt;BOT_TOKEN&amp;gt;"
          - name: OPEN_AI
            description: Open AI Key
            default: "&amp;lt;OPEN_AI_API&amp;gt;"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;กดแอปไปที่ deta.space ด้วย&lt;code&gt;space push&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;การเปลี่ยน hook ของ telegram ด้วยคำสั่งเดียวกันแต่ใช้ url ของ deta.space แทน&lt;/li&gt;
&lt;/ul&gt;

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

</description>
      <category>ai</category>
      <category>python</category>
    </item>
  </channel>
</rss>
