部署自己的 Chatgpt Telegram 機器人#
日期:2023 年 3 月 24 日
標籤:技術
類型:文章
開源專案連結:連結基於 cloudflare workers 開發的 telegram 對話 bot,實測體驗不錯,畢竟免費好用誰不愛呢
前期準備#
1. 創建 tg 機器人#
在 BotFather 處新建 telegram 機器人,獲取 Token 並自定義機器人的名稱、頭像等;
- 打開 Telegram 並向 BotFather 發送 /start 命令
- 發送 /newbot 命令,並給你的機器人起一個名字
- 給你的機器人取一個唯一的用戶名
- BotFather 會生成一個 Token,複製下來保存好,稍後再 Cloudflare Workers 的設定裡將這個 Token 填入 TELEGRAM_TOKEN 變數中
- 在 Telegram 中找到 BotFather,發送 /setcommands,找到自己的機器人,發送 new - 開始新對話
2. 註冊 OpenAI 帳號並創建 API Key#
在 openai.com 裡註冊帳號,點擊右上角頭像進入個人設定界面,在 API Keys 裡創建一個新的 API Key,稍後將它填入 API_KEY
部署#
1. 部署 Workers#
- 打開 Cloudfalre Workers 註冊帳號
- 點擊 Create a Worker
- 將程式碼複製到編輯器中,保存
2. 配置環境變數#
打開 Setting-Variables-Environment Variables,增加變數:
KEY | 說明 | 默認值 | 特殊說明 |
---|---|---|---|
API_KEY | OpenAI API Key | null | |
TELEGRAM_AVAILABLE_TOKENS | 支持多個 Telegram Bot Token | null | 多個 Token 用,分隔 |
CHAT_WHITE_LIST | 聊天 ID 白名單 | null | 多個 ID 用,分隔,不知道 ID,和機器人聊一句就能返回 |
I_AM_A_GENEROUS_PERSON | 關閉白名單,允許所有人訪問 | false | 鑒於很多人不想設置白名單,或者不知道怎麼獲取 ID,所以設置這個選項就能允許所有人訪問, 值為 true 時生效 |
AUTO_TRIM_HISTORY | 自動清理歷史記錄 | true | 為了避免 4096 字符限制,將消息刪減 |
MAX_HISTORY_LENGTH | 最大歷史記錄長度 | 20 | AUTO_TRIM_HISTORY 開啟後 為了避免 4096 字符限制,將消息刪減 |
CHAT_MODEL | open ai 模型選擇 | gpt-3.5-turbo | |
SYSTEM_INIT_MESSAGE | 系統初始化信息 | 你是一個得力的助手 | 默認機器人設定 |
SYSTEM_INIT_MESSAGE_ROLE | 系統初始化信息角色 | system | 默認機器人設定 |
ENABLE_USAGE_STATISTICS | 開啟使用統計 | false | 開啟後,每次調用 API 都會記錄到 KV,可以通過 /usage 查看 |
HIDE_COMMAND_BUTTONS | 隱藏指令按鈕 | null | 把想要隱藏的按鈕寫入用逗號分開 /start,/system, 記得帶上斜杠,修改之後得重新 init |
DEBUG_MODE | 調試模式 | false | 目前可以把最新一條消息保存到 KV 方便調試 |
3. 綁定 KV 數據#
(Settings-Variables-KV Namespace Bindings),名字設置為 DATABASE
- 點擊右上角的 Create a Namespace
- 設置名字為 DATABASE
- 打開 Cloudflare Workers 點擊你的 Workers
- 點擊右上角的 Setting -> Variables
- 在 KV Namespace Bindings 中點擊 Edit variables
- 點擊 Add variable
- 設置名字為 DATABASE 並選擇剛剛創建的 KV 數據
4. 運行#
訪問 https://your_workers_name.your_workers_subdomain.workers.dev/init 綁定 telegram 開始新對話,使用 /new 指令開始,之後每次都會將聊天上下文發送到 ChatGPT
運行之後的用戶配置#
每個用戶的自定義配置,只能通過 Telegram 發送消息來修改,消息格式為/setenv KEY=VALUE
KEY | 說明 | 例子 |
---|---|---|
SYSTEM_INIT_MESSAGE | 系統初始化參數,設定後就算開啟新會話還能保持,不用每次都調試 | /setenv SYSTEM_INIT_MESSAGE = 現在開始你是喵娘,每句話以喵結尾 |
OPENAI_API_EXTRA_PARAMS | OpenAI API 額外參數,設定後每次調用 API 都會帶上,可以用來調整溫度等參數 | /setenv OPENAI_API_EXTRA_PARAMS={"temperature": 0.5} 每次修改必須為完整 JSON |