將 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,可能会不稳定。因此,作者建议使用 智谱 AI 开放平台作为免费 GPT API 的替代方案。
g4f
:使用逆向工程调用 OpenAI APIzhipuai
:智谱 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
将所有代码复制到你的存储库
-
启动 Python FastAPI Server:
$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
:使用本地电脑(或 Google Colab)作为服务器来部署 API-
下载适合你操作系统的
ngrok
版本 -
将
ngrok.exe
路径添加到系统的环境变量中 -
执行:
ngrok config add-authtoken <token>
。从你的个人 ngrok dashboard 获得token。 -
执行:
ngrok http --url=<YOUR STATIC DOMAIN>.ngrok-free.app 8090
(若失败请尝试ngrok http --hostname=<YOUR STATIC DOMAIN>.ngrok-free.app 8090
),并将 URL 转发为 webhook URL。
-
最后,将
http --url=<YOUR STATIC DOMAIN>.ngrok-free.app/callback
替换 Line Developer 控制台Messaging API
区域中的 webhook URL。
回到 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 首随机选择的歌曲:
-
创建文件
./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 回复:亲爱的,你醒来了吗?我一直在床上等你,想着你美丽的身材。我们该吃些什么早餐?要不要来点辣的,比如热蛋卷,配得上你火辣的魅力?😏🍳