將 ChatGPT Bot 整合到 Line。只需在輸入框中輸入文字,即可開始與 ChatGPT 互動。
Note
如果你有任何功能請求,請隨時提交 PR 或 ISSUE。
Python FastAPI
:創建 ChatGPT 回應 APIgpt4free
:免費使用 OpenAI APIzhipuai
:免費使用 GPT APILine messaging API channel
:連接 ChatGPT APIGitHub
:代碼存儲庫replit/render/ngrok
:免費部署你自己的 FastAPICronJob
:免費發送定時請求,實現定時推播消息
由於 g4f
依賴於逆向工程來調用 OpenAI 的 API,可能會不穩定。因此,作者建議使用 Zhipu AI 開放平台作為免費 GPT API 的替代方案。
g4f
:使用逆向工程調用 OpenAI APIzhipuai
:Zhipu AI 開放平台提供免費 GPT API。訪問 官方網站 註冊帳戶,無需信用卡或費用。在 個人中心 添加 API 金鑰,如下所示。將此 API 金鑰設置在環境變量中使用此 GPT 選項。
- 獲取 Line Tokens:
- 登錄 Line Developer
- 創建一個 bot:
- 創建一個
Provider
-> 點擊Create
- 創建一個
Channel
-> 選擇Create a Messaging API channel
- 填寫所需的基本信息
- 完成後,進入
Basic Settings
-> 在Channel Secret
下,點擊Issue
生成LINE_CHANNEL_SECRET
(後面會用到)。 - 在
Messaging API
下,點擊Issue
生成Channel access token
(後面會用到)。
- 創建一個
- Fork GitHub 專案:
- 註冊/登錄 GitHub
- 前往 ChatGPT-Line-Bot
- 點擊
Star
支持開發者 - 點擊
Fork
將所有代碼複製到你的存儲庫
- 部署:
ngrok
:使用本地電腦(或 Google Colab)作為服務器來部署 API-
下載適合你操作系統的
ngrok
版本 -
將
ngrok.exe
路徑添加到系統的環境變量中 -
在終端啟動 FastAPI:
$env:LINE_CHANNEL_SECRET="..."; $env:LINE_CHANNEL_ACCESS_TOKEN="..."; $env:SERPAPI_API_KEY="..."; $env:GPT_METHOD="..."; $env:GPT_API_KEY="..."; python main.py
GPT_METHOD
:選擇g4f
或zhipuai
GPT_API_KEY
:如果使用zhipuai
方法,提供你的 API 金鑰
-
執行:
ngrok config add-authtoken <token>
。從你的個人 ngrok dashboard 獲取 token。 -
執行:
ngrok http 8080
。轉發 URL 將作為 webhook URL。
-
最後,替換 Line Developer 控制台 Messaging API
區域中的 webhook URL。(見專案設置步驟 2)
回到 Line Developer 首頁,點擊 Add Friend Guide
,掃描 QR 碼將 Line Bot 添加為好友。
首頁 -> 選擇你的 bot -> 添加好友工具 -> 創建好友動作條碼(https://manager.line.biz/account//gainfriends)
恭喜!你已創建了你的第一個 Line Bot。試著與它交談——它會回覆你!
- 在一對一對話中,任何消息都會觸發回應。
- 在群組對話中,使用
@chat
前綴與機器人互動,例如,@chat hi~
。
當你的消息包含星座資訊請求時,網絡爬蟲將抓取每週星座:
- 個人聊天:
給我天蠍座星座
,我想知道天蠍座星座
, ... - 群組聊天:
@chat 給我天蠍座星座
,@chat 我想知道天蠍座星座
, ...
當你的消息包含圖片請求時,網絡爬蟲將抓取圖片:
- 個人聊天:
在線找到林翔抽煙的圖片
,給我在線林翔抽煙的圖片
, ... - 群組聊天:
@chat 在線找到林翔抽煙的圖片
,@chat 給我在線林翔抽煙的圖片
, ...
- 使用
broadcast
API,Line Bot 可以一次性推送消息給所有用戶。 - 此示例演示了 Line Bot 如何每天早上推送 3 首隨機選擇的 YouTube 歌曲:
-
創建文件
./data/favorite_videos.json
。參考作者的數據集。(數據集是使用
YouTube Data v3 API
抓取喜愛視頻生成的。本指南不涉及 YouTube API 的使用。) -
使用
./ChatGPT_linebot/modules/youtube_recommend.py
隨機選擇 3 首歌曲,由 GPT 格式化。 -
在
./ChatGPT_linebot/urls.py
中添加/recommend
路由:videos = recommend_videos() # 獲取 3 首歌曲 if videos: line_bot_api.broadcast(TextSendMessage(text=videos)) # 廣播給用戶 # 推送消息給已知群組 known_group_ids = [ 'C6d-xxxxxxxxxxxxxxxxxxxxxxxxxxxxx', 'Ccc-xxxxxxxxxxxxxxxxxxxxxxxxxxxxx', 'Cbb-xxxxxxxxxxxxxxxxxxxxxxxxxxxxx', ] for group_id in known_group_ids: line_bot_api.push_message(group_id, TextSendMessage(text=videos))
要獲取群組
group_id
,在控制台中打印:elif event.source.type == 'group' and user_message.startswith('@chat'): group_id = event.source.group_id print(group_id) # 輸出 group_id
-
現在,訪問
/recommend
路由將廣播消息給所有用戶和指定群組。 -
使用 cron-job.org 每天早上 8:00 定時推送:
- 註冊/登錄 cron-job.org
- 點擊右上角的
CREATE CRONJOB
- 標題:
ChatGPT-Line-Bot
,URL:例如,https://ChatGPT-Line-Bot.jimmylin.repl.co/
- 設置為每
5 分鐘
运行 - 點擊
CREATE
-
你可以使用提示語來個性化 Line Bot 的回應。在 ./ChatGPT_linebot/prompts/template.py
中定義 template
,例如:
用戶輸入:我應該吃什麼早餐?
Bot 回應:親愛的,你醒來了嗎?我一直在床上等你,想著你美麗的身材。我們應該吃什麼早餐?要不要來點辣的,比如熱蛋捲,配得上你火辣的魅力?😏🍳