From 8d83da0829932647ddc35a9f88fa8ab2d5f1abc8 Mon Sep 17 00:00:00 2001 From: Continuous Integration Date: Wed, 27 Sep 2023 09:53:46 +0000 Subject: [PATCH] Auto-translate README --- README.zh-CN.md | 183 +++++++++++++++++++++++++++++++++++++++++++++++- README.zh-TW.md | 86 ++++++++++++----------- 2 files changed, 226 insertions(+), 43 deletions(-) diff --git a/README.zh-CN.md b/README.zh-CN.md index 8c460e15..ec4ec0f7 100644 --- a/README.zh-CN.md +++ b/README.zh-CN.md @@ -1,2 +1,183 @@ +# ChatGPT 电报机器人 -這是一段關於 Telegram 機器人 ChatGPT 的介紹,它可以支持聊天 GPT 和 GPT4 API,並可使用鴨鴨鴨和 Google 進行在線搜索。另外,還支持基於嵌入式向量數據庫的文檔 QA,以及在聊天窗口中通過 info 命令在 GPT3.5、GPT4 和其他模型之間切換等特點。此外,它還支持對消息進行精確的 Markdown 渲染和白名單功能,以防止滥用和信息泄漏。 ChatGPT 還可跨平臺,在 Telegram 隨時隨地打破知識障礙,並支持多種方式部署。 \ No newline at end of file +加入 [Telegram 群组](https://t.me/+_01cz9tAkUc1YzZl),分享您的用户体验或报告错误。 + +[英语](./README.md) | [简体中文](./README.zh-CN.md) | [繁体中文](./README.zh-TW.md) + +## ✨ 特点 + +✅ 支持 ChatGPT 和 GPT4 API + +✅ 支持使用 duckduckgo 和 Google🔍 进行在线搜索。默认情况下提供 DuckDuckGo 搜索,需要用户申请 Google 搜索的官方 API。它可以提供 GPT 以前无法回答的实时信息,例如今天的微博热搜、某个地方的天气以及某个人或新闻的进展。 + +✅ 基于嵌入式向量数据库支持文档 QA。在搜索中,对于搜索到的 PDF,对 PDF 文档执行自动向量语义搜索,并根据向量数据库提取 PDF 相关内容。支持使用 “qa” 命令将整个网站与“sitemap.xml”文件向量化,并基于向量数据库回答问题,特别适用于一些项目的文档网站和 Wiki 网站。 + +✅ 支持通过聊天窗口中的 “info” 命令在 GPT3.5、GPT4 和其他模型之间切换 + +✅ 异步处理消息,多线程回答问题,支持隔离对话,不同用户有不同的对话 + +✅ 支持准确的 Markdown 渲染消息,使用我的另一个 [项目](https://github.com/yym68686/md2tgmd) + +✅ 支持流式输出,实现打字机效果 + +✅ 支持白名单,以防止滥用和信息泄露 + +✅ 跨平台,随时随地打破知识障碍,使用 Telegram + +✅ 支持一键 Zeabur、Replit 部署,真正的零成本、白痴化部署,支持 kuma 反眠。还支持 Docker、fly.io 部署 + +## 环境变量 + +| 变量名称 | 说明 | +| ------------------------ | ------------------------------------------------------------ | +| **BOT_TOKEN (required)** | Telegram 机器人令牌。在[BotFather](https://t.me/BotFather)上创建一个机器人以获取 BOT_TOKEN。 | +| **WEB_HOOK (required)** | 每当 Telegram 机器人接收到用户的消息时,消息将传递到 WEB_HOOK,机器人会在 WEB_HOOK 上监听并及时处理所接收的消息。 | +| **API (required)** | OpenAI 或第三方 API 密钥。 | +| API_URL(optional) | 如果您使用的是 OpenAI 官方 API,则不需要设置此项。如果您使用的是第三方 API,则需要填写第三方代理网站。默认值为: https://api.openai.com/v1/chat/completions | +| GPT_ENGINE (optional) | 设置默认的 QA 模型;默认值为:`gpt-3.5-turbo`。这个项目可以通过机器人的 “info” 命令自由切换,在原则上不需要设置。 | +| NICK (optional) | 默认为空,NICK 是机器人的名称。只有当用户输入以 NICK 开头的消息时,机器人才会回复,否则机器人会回复任何消息。特别是在群聊中,如果没有 NICK,机器人将回复所有消息。 | +| PASS_HISTORY (optional) | 默认值为 true。机器人会记住对话历史,并在下次回复时考虑上下文。如果设置为 false,机器人将忘记对话历史,只考虑当前对话。 | +| GOOGLE_API_KEY (optional)| 如果需要使用 Google 搜索,您需要设置它。如果未设置此环境变量,机器人默认提供 duckduckgo 搜索。在 [APIs & Services](https://console.cloud.google.com/apis/api/customsearch.googleapis.com) 中创建凭据,并在凭据页面上 GOOGLE_API_KEY。Google 搜索可以查询 100 次/天,这对于轻度使用完全足够。当达到使用限制时,机器人将自动关闭 Google 搜索。 | +| GOOGLE_CSE_ID (optional) | 如果需要使用 Google 搜索,您需要与 GOOGLE_API_KEY 一起设置。在 [Programmable Search Engine](https://programmablesearchengine.google.com/) 中创建一个搜索引擎,在其搜索引擎 ID 中填写 GOOGLE_CSE_ID 的值。 | +| 白名单 (optional) | 设置哪些用户可以访问机器人,并连接授权使用机器人的用户 ID,以“,”分隔。默认值为 `None`,这意味着机器人向所有人开放。 | + +## Zeabur 远程部署(推荐) + +一键部署: + +[![在 Zeabur 上部署](https://zeabur.com/button.svg)](https://zeabur.com/templates/R5JY5O?referralCode=yym68686) + +如果您需要跟进功能更新,则建议使用以下部署方法: + +首先,派生此存储库,然后注册 [Zeabur](https://zeabur.com)。免费额度足以轻度使用。从您自己的 Github 存储库中导入,设置域名(必须与 WEB_HOOK 一致)和环境变量,然后重新部署。如果您需要后续功能更新,只需在自己的存储库中同步此存储库并在 Zeabur 中重新部署以获取最新的功能即可。 + +## Replit 远程部署 + +[![在 Repl.it 上运行](https://replit.com/badge/github/yym68686/ChatGPT-Telegram-Bot)](https://replit.com/new/github/yym68686/ChatGPT-Telegram-Bot) + +在导入 Github 存储库后,设置运行命令 + +```bash +pip install -r requirements.txt > /dev/null && python3 main.py +``` + +在工具侧边栏中选择 Secrets,添加机器人所需的环境变量,其中: + +- WEB_HOOK:Replit 将自动为您分配一个域名,请填写 `https://appname.username.repl.co` +- 记得打开 “Always On” + +单击屏幕顶部的运行按钮以运行机器人。 + +## fly.io 远程部署 + +官方文档:https://fly.io/docs/ + +使用 Docker 镜像部署 fly.io 应用程序 + +```bash +flyctl launch --image yym68686/chatgpt:1.0 +``` + +提示时输入应用程序的名称,并选择 “No” 来初始化 Postgresql 或 Redis。 + +按提示操作进行部署。在官方控制面板中将提供一个次要域名,可用于访问该服务。 + +设置环境变量 + +```bash +flyctl secrets set WEB_HOOK=https://flyio-app-name.fly.dev/ +flyctl secrets set BOT_TOKEN=bottoken +flyctl secrets set API= +# optional +flyctl secrets set NICK=javis +``` + +查看所有环境变量 + +```bash +flyctl secrets list +``` + +删除环境变量 + +```bash +flyctl secrets unset MY_SECRET DATABASE_URL +``` + +ssh 到 fly.io 容器 + +```bash +flyctl ssh issue --agent +# ssh connection +flyctl ssh establish +``` + +检查 Webhook URL 是否正确 + +```bash +https://api.telegram.org/bot/getWebhookInfo +``` + +## Docker 本地部署 + +启动容器 + +```bash +docker run -p 80:8080 -dit \ + -e BOT_TOKEN="telegram bot token" \ + -e WEB_HOOK="https://your_host.com/" \ + -e API="" \ + -e API_URL= \ + yym68686/chatgpt:1.0 +``` + +或者,如果您想使用 Docker Compose,这里是一个 docker-compose.yml 的示例: + +```yaml +version: "3.5" +services: + chatgptbot: + container_name: chatgptbot + image: yym68686/chatgpt:1.0 + environment: + - BOT_TOKEN= + - WEB_HOOK= + - API= + - API_URL= + ports: + - 80:8080 +``` + +在后台运行 Docker Compose 容器 + +```bash +docker-compose up -d +``` + +在存储库中打包 Docker 映像并将其上传到 Docker Hub + +```bash +docker build --no-cache -t chatgpt:1.0 -f Dockerfile.build --platform linux/amd64 . +docker tag chatgpt:1.0 yym68686/chatgpt:1.0 +docker push yym68686/chatgpt:1.0 +``` + +## 参考文献 + +参考项目: + +https://core.telegram.org/bots/api + +https://github.com/acheong08/ChatGPT + +https://github.com/franalgaba/chatgpt-telegram-bot-serverless + +https://github.com/gpchelkin/scdlbot/blob/d64d14f6c6d357ba818e80b8a0a9291c2146d6fe/scdlbot/__main__.py#L8 + +我使用的消息的 Markdown 渲染是我的另一个 [项目](https://github.com/yym68686/md2tgmd)。 + +## 星星历史 + + + Star History Chart + \ No newline at end of file diff --git a/README.zh-TW.md b/README.zh-TW.md index 773af23c..df145ebc 100644 --- a/README.zh-TW.md +++ b/README.zh-TW.md @@ -1,84 +1,86 @@ # ChatGPT Telegram Bot -加入 [Telegram 群聊](https://t.me/+_01cz9tAkUc1YzZl) ,分享您的用戶體驗或報告錯誤。 +加入 [Telegram 群組](https://t.me/+_01cz9tAkUc1YzZl) 分享您的使用經驗或報告錯誤。 -[英文](./README.md) | [簡體中文](./README.zh-CN.md) | [繁體中文](./README.zh-TW.md) +[英文](./README.md)|[簡體中文](./README.zh-CN.md)|[繁體中文](./README.zh-TW.md) -## ✨ 功能 +## ✨ 特點 ✅ 支援 ChatGPT 和 GPT4 API -✅ 支持使用 duckduckgo 和 Google🔍 的在線搜尋。DuckDuckGo 搜尋默認提供,使用者需要申請官方的 Google 搜尋 API,它可以提供 GPT 之前無法回答的實時信息,例如今日微博熱搜、某地天氣、某人或新聞的進展等。 +✅ 支援使用 DuckDuckGo 和 Google🔍 進行在線搜索。預設提供 DuckDuckGo 搜索,而 Google 搜索的官方 API 需要用戶申請。它可以提供 GPT 之前無法回答的即時資訊,例如微博熱搜、今天特定地點的天氣以及特定人員或新聞的進度。 -✅ 支援基於嵌入式向量數據庫的文件 QA。在搜尋中,搜索到的 PDF 會自動進行 PDF 文件的向量語義搜索,並根據向量數據庫提取相關內容。支持使用“qa”命令將“sitemap.xml”文件的整個網站向量化,並基於向量數據庫回答問題,特別適用於一些項目的文檔網站和 Wiki 網站。 +✅ 支援基於內置向量數據庫的文檔 QA。在搜索中,對於被搜索的 PDF,會對 PDF 文檔進行自動向量語義搜索,並提取與向量數據庫相關的內容。支援使用 “qa” 命令向量化 “sitemap.xml” 文件中的整個網站,並在向量數據庫的基礎上回答問題,尤其適用於某些專案的文檔網站和 Wiki 網站。​ -✅ 在聊天窗口中通過“info”命令支援在 GPT3.5、GPT4 和其他模型之間進行切換 +✅ 支援透過聊天窗口中的 “info” 命令在 GPT3.5、GPT4 和其他模型之間進行切換 -✅ 異步處理消息,多線程回答問題,支援隔離對話,不同用戶有不同對話 +✅ 非同步處理訊息,多線程回答問題,支援獨立對話,並使不同的用戶擁有不同的對話​ -✅ 支援消息的精確的 Markdown 渲染,使用我另一個項目 [project](https://github.com/yym68686/md2tgmd) +✅ 支援精確的 markdown 渲染消息,使用我的另一個 [項目](https://github.com/yym68686/md2tgmd) -✅ 支援流式輸出,實現打字機效果 +✅ 支援流輸出,實現打字機效果 -✅ 支援白名單,防止濫用和信息外洩 +✅ 支援白名單,以防止濫用和信息泄露 -✅ 跨平台,在 Telegram 上隨時隨地打破知識壁壘 +✅ 跨平台,在 Telegram 上隨時隨地打破知識障礙 -✅ 支援一鍵 Zeabur,Replit 部署,真正的零成本,傻瓜式部署,還支援 kuma 防睡眠。也支援 Docker、fly.io 部署 +✅ 支援一鍵 Zeabur、Replit 部署,真正的零成本、白癡式部署,支援 kuma 防睡眠。還支援 Docker、fly.io 部署 -## 環境變數 +## 環境變量 | 變量名稱 | 評論 | | ------------------------- | ------------------------------------------------------------ | -| **BOT_TOKEN (必需的)** | Telegram 機器人 token。在 [BotFather](https://t.me/BotFather) 上創建一個機器人來獲取 BOT_TOKEN。 | -| **WEB_HOOK (必需的)** | 當 Telegram 機器人收到用戶信息時,該信息將被傳遞到 WEB_HOOK,機器人將在 WEB_HOOK 上聽取並及時處理接收到的消息。 | -| **API (必需的)** | OpenAI 或第三方 API 憑證。 | -| API_URL(可選) | 如果使用的是 OpenAI 官方 API,則不需要設置此值,如果使用第三方 API,則需要填寫第三方代理網站。默認為:https://api.openai.com/v1/chat/completions | -| GPT_ENGINE (可選) | 設置默認 QA 模型;默認為 `gpt-3.5-turbo`。此項目可以在機器人的“info”命令中自由切換,理論上不需要設置。 | -| NICK(可選) | 默認值為空,NICK 是機器人的名字。只有當用戶輸入內容以 NICK 開頭時,機器人才會回覆,否則機器人會回覆任何消息。特別是在群聊中,如果沒有"NICK",機器人會回覆所有消息。 | -| PASS_HISTORY(可選) | 默認為 true。機器人會記住對話歷史,並在下次回覆時考慮上下文。如果設置為 false,則機器人將忘記對話記錄,僅考慮當前對話。 | -| GOOGLE_API_KEY(可選) | 如果需要使用 Google 搜尋,則需要設置它。如果未設置此環境變量,機器人將默認提供 duckduckgo 搜尋。在 Google Cloud 的 [API 及服務](https://console.cloud.google.com/apis/api/customsearch.googleapis.com) 中創建憑證,API 金鑰將在憑證頁面上的 GOOGLE_API_KEY 中。Google 搜尋可以查詢100次/天,對於輕度使用來說完全足夠。當使用限制已達到時,機器人將自動關閉 Google 搜尋。 | -| GOOGLE_CSE_ID(可選) | 如果需要使用 Google 搜尋,則需要與 GOOGLE_API_KEY 一起設置。在 [可編程搜索引擎](https://programmablesearchengine.google.com/) 中創建搜索引擎,搜索引擎 ID 是 GOOGLE_CSE_ID 的值。 | -| whitelist(可選) | 設置哪些用戶可以訪問機器人,並將使用機器人的授權用戶 ID 連接起來,用“,”隔開。默認值為“None”,這意味著機器人向所有人開放。 | +| **BOT_TOKEN(必填)** | Telegram 機器人 token。在 [BotFather](https://t.me/BotFather) 上創建機器人以獲得 BOT_TOKEN。 | +| **WEB_HOOK(必填)** | 每當 Telegram 機器人接收到用戶消息,該消息將被傳遞到 WEB_HOOK,機器人將在 WEB_HOOK 上監聽,隨時處理收到的消息。 | +| **API(必填)** | OpenAI 或第三方 API 金鑰。 | +| API_URL(可選) | 如果您使用 OpenAI 的官方 API,則不需要設置此項。如果您使用第三方 API,則需要填寫第三方代理網站。默認為: https://api.openai.com/v1/chat/completions | +| GPT_ENGINE(可選) | 設置默認 QA 模型;默認為:`gpt-3.5-turbo`。該項可以通過機器人的 “info” 命令自由切換,原則上不需要進行設置。 | +| NICK(可選) | 預設值為空,NICK 是機器人的名字。當用戶輸入的消息以 NICK 開頭時,機器人只會回應該消息,否則機器人會回應所有消息。尤其在群聊中,如果沒有 NICK,機器人會回應所有消息。 | +| PASS_HISTORY(可選) | 預設值為 true。機器人記住對話記錄,下一次回答時會考慮上下文。如果設置為 false,機器人會忘記對話記錄,只考慮當前對話。 | +| GOOGLE_API_KEY(可選) | 如果您需要使用 Google 搜索,您需要進行設置。如果未設置此環境變量,機器人將默認提供 DuckDuckGo 搜索。在 Google Cloud 的 [API 和服務](https://console.cloud.google.com/apis/api/customsearch.googleapis.com) 中創建憑據,API 金鑰在憑據頁面上是 GOOGLE_API_KEY。Google 搜索可以查詢 100 次/日,這對輕度使用者已足夠。當使用限制已到達時,機器人將自動關閉 Google 搜索。 | +| GOOGLE_CSE_ID(可選) | 如果您需要使用 Google 搜索,您需要與 GOOGLE_API_KEY 一起設置。在 [可編程搜索引擎](https://programmablesearchengine.google.com/) 中創建搜索引擎,其中搜索引擎 ID 是 GOOGLE_CSE_ID 的值。 | +| whitelist(可選) | 設置哪些用戶可以訪問機器人,並用 “,” 將授權使用機器人的用戶 ID 連接。默認值為 `None`,這意味著機器人對所有人開放。 | -## Zeabur 遠程部署(建議) +## Zeabur 遠程部署(推薦) -單擊一鍵部署: +一鍵部署: -[![在 Zeabur 上部署](https://zeabur.com/button.svg)](https://zeabur.com/templates/R5JY5O?referralCode=yym68686) +[![使用 Zeabur 部署](https://zeabur.com/button.svg)](https://zeabur.com/templates/R5JY5O?referralCode=yym68686) -如果需要後續功能更新,建議採用以下部署方法: +如果需要後續功能更新,建議使用以下部署方法: -首先,先 fork 此存儲庫,然後註冊 [Zeabur](https://zeabur.com)。免費配額對於輕度使用來說足夠了。從您自己的 Github 存儲庫導入,設置域名(必須與 WEB_HOOK 一致)和環境變量,然後重新部署。如果需要更新後續功能,只需同步此存儲庫到自己的存儲庫中,然後在 Zeabur 中重新部署以獲取最新的功能。 +首先 fork 此存儲庫,然後註冊 [Zeabur](https://zeabur.com)。免費額度足以輕鬆使用。從您自己的 Github 存儲庫中進行導入,設置網域名稱(必須與 WEB_HOOK 一致)和環境變量,然後重新部署。如果需要後續功能更新,只需將此存儲庫同步到您自己的存儲庫中,然後在 Zeabur 中重新部署即可獲取最新的功能。 ## Replit 遠程部署 [![在 Repl.it 上運行](https://replit.com/badge/github/yym68686/ChatGPT-Telegram-Bot)](https://replit.com/new/github/yym68686/ChatGPT-Telegram-Bot) -匯入 Github 存儲庫後,設置運行命令 +將 GitHub 存儲庫導入後,設置運行命令 ```bash pip install -r requirements.txt > /dev/null && python3 main.py ``` -在工具邊欄中選擇 Secrets,添加機器人所需的環境變量: +在 Tools 側邊欄中選擇 Secrets,添加機械人所需的環境變量,其中: -- WEB_HOOK:Replit將自動分配域名給您,填寫 `https://appname.username.repl.co` -- 記住打開“一直開啟”。 +- WEB_HOOK:Repl.it 將自動為您分配一個網域名稱,填寫 `https://appname.username.repl.co` +- 記住要開啟 “始終運行” -單擊屏幕頂部的運行按鈕以運行機器人。 +單擊屏幕頂部的運行按鈕運行機械人。 ## fly.io 遠程部署 官方文檔: https://fly.io/docs/ -使用 Docker 映像部署 fly.io 應用 +使用 Docker 映像部署 fly.io 應用程式 ```bash flyctl launch --image yym68686/chatgpt:1.0 ``` -在提示時輸入應用程序名稱,然後對初始化 Postgresql 或 Redis 選擇“不”。按照提示部署。一個二級域名將在官方控制面板中提供,可用於訪問服務。 +輸入應用程式的名稱,並對 Postgresql 或 Redis 進行初始化選擇 No。 + +按照提示進行部署。在官方控制面板中提供了一個次要域名,可以用於訪問服務。 設置環境變量 @@ -106,7 +108,7 @@ ssh 到 fly.io 容器 ```bash flyctl ssh issue --agent -# ssh connection +# ssh 鏈接 flyctl ssh establish ``` @@ -122,14 +124,14 @@ https://api.telegram.org/bot/getWebhookInfo ```bash docker run -p 80:8080 -dit \ - -e BOT_TOKEN="telegram bot token" \ + -e BOT_TOKEN="telegram 機器人 token" \ -e WEB_HOOK="https://your_host.com/" \ -e API="" \ -e API_URL= \ yym68686/chatgpt:1.0 ``` -或者如果想使用 Docker Compose,此處提供一個docker-compose.yml示例: +或者如果您想使用 Docker Compose,這裡有一個 docker-compose.yml 的示例: ```yaml version: "3.5" @@ -152,7 +154,7 @@ services: docker-compose up -d ``` -在存儲庫中打包 Docker 映像,並上傳至 Docker Hub: +將 Docker 映像打包在存儲庫中並上傳到 Docker Hub ```bash docker build --no-cache -t chatgpt:1.0 -f Dockerfile.build --platform linux/amd64 . @@ -160,7 +162,7 @@ docker tag chatgpt:1.0 yym68686/chatgpt:1.0 docker push yym68686/chatgpt:1.0 ``` -## 引用 +## 參考 參考項目: @@ -172,9 +174,9 @@ https://github.com/franalgaba/chatgpt-telegram-bot-serverless https://github.com/gpchelkin/scdlbot/blob/d64d14f6c6d357ba818e80b8a0a9291c2146d6fe/scdlbot/__main__.py#L8 -消息的 markdown 渲染使用我的另一個項目 [project](https://github.com/yym68686/md2tgmd)。 +消息的 markdown 渲染使用了我的另一個 [項目](https://github.com/yym68686/md2tgmd)。 -## Star History +## Star 历史 Star History Chart