Line Bot串接OpenAI API
(參考,尚未驗證)
要撰寫一個Line Bot並串接OpenAI API,需要以下幾個步驟:
-
建立Line Bot:
- 前往LINE Developers Console創建一個新的Messaging API channel。
- 記下Channel ID、Channel secret和Channel access token。
-
設置Flask伺服器:
- 使用Python和Flask來創建一個伺服器以處理Line的webhook事件。
-
串接OpenAI API:
- 註冊OpenAI並獲取API密鑰。
- 使用OpenAI提供的API來生成回應。
下面是一個範例程式碼,展示如何設置這些步驟:
安裝必要的套件
首先,安裝Flask和Line的Messaging API套件:
pip install flask line-bot-sdk openai
創建app.py
from flask import Flask, request, abort
from linebot import LineBotApi, WebhookHandler
from linebot.exceptions import InvalidSignatureError
from linebot.models import MessageEvent, TextMessage, TextSendMessage
import openai
app = Flask(__name__)
# 設置Line Bot的Channel access token和Channel secret
line_bot_api = LineBotApi('YOUR_CHANNEL_ACCESS_TOKEN')
handler = WebhookHandler('YOUR_CHANNEL_SECRET')
# 設置OpenAI API密鑰
openai.api_key = 'YOUR_OPENAI_API_KEY'
@app.route("/callback", methods=['POST'])
def callback():
# 獲取Line的請求標頭
signature = request.headers['X-Line-Signature']
# 獲取請求的主體內容
body = request.get_data(as_text=True)
app.logger.info("Request body: " + body)
# 驗證請求
try:
handler.handle(body, signature)
except InvalidSignatureError:
abort(400)
return 'OK'
@handler.add(MessageEvent, message=TextMessage)
def handle_message(event):
user_message = event.message.text
# 使用OpenAI API生成回應
response = openai.Completion.create(
engine="text-davinci-003",
prompt=user_message,
max_tokens=150
)
reply_text = response.choices[0].text.strip()
# 回應用戶
line_bot_api.reply_message(
event.reply_token,
TextSendMessage(text=reply_text)
)
if __name__ == "__main__":
app.run(port=5000)
配置Line Webhook URL
- 部署Flask伺服器(例如使用ngrok)。
- 在LINE Developers Console中設定Webhook URL,例如:https://your-ngrok-url/callback。
啟動伺服器
python app.py
確保伺服器運行並且可以接收來自Line的請求。當用戶向您的Line Bot發送消息時,您的伺服器將處理這些消息,並使用OpenAI API生成回應。