V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
tbxark
V2EX  ›  OpenAI

免费快速部署自己的 ChatGPT Telegram 机器人

  •  3
     
  •   tbxark ·
    tbxark · 2023-03-03 15:07:41 +08:00 · 12941 次点击
    这是一个创建于 417 天前的主题,其中的信息可能已经有所发展或是发生改变。

    上班摸鱼随手写了个小脚本,最简单快捷部署属于自己的 ChatGPT Telegram 机器人的方法,单文件,直接复制粘贴一把梭,无需任何依赖,无需配置本地开发环境,不用域名,免服务器。

    https://github.com/TBXark/ChatGPT-Telegram-Workers

    https://github.com/TBXark/ChatGPT-Telegram-Workers/raw/master/demo.jpg

    配置

    偷懒的话可以直接复制代码然后修改相应的 KEY ,想要动态变化可以设置成环境变量

    // 你也可以注释这两行代码,然后在 Workers 配置界面填写环境变量
    const API_KEY = "PLEASE_REPLACE_WITH_YOUR_OPENAI_API_KEY";
    const TELEGRAM_TOKEN = "PLEASE_REPLACE_WITH_YOUR_TELEGRAM_BOT_TOKEN";
    
    // 聊天白名单,你也可以在环境变量中定义数组然后在这里解析 JSON
    const CHAT_WHITE_LIST = [];
    

    使用

    1. 新建 Telegram 机器人, 获得 Token
    2. 注册 OpenAI 账号并创建 API Key
    3. 部署 Workers https://developers.cloudflare.com/workers/
    4. 运行 https://your_workers_name.your_workers_subdomain.workers.dev/telegram/your_telegram_bot_token/bind 绑定 telegram
    5. 开始新对话 使用/new指令开始,之后每次都会将聊天上下文发送到 ChatGPT
    第 1 条附言  ·  2023-03-03 16:27:43 +08:00
    • 修复域名BUG, 得手动输入一下自己的workers域名
    // 你在这代码直接添加信息,或者Workers配置界面填写环境变量, 环境变量的优先级比较高
    // OpenAI API Key
    let API_KEY = "PLEASE_REPLACE_WITH_YOUR_OPENAI_API_KEY";
    // Telegram Bot Token
    let TELEGRAM_TOKEN = "PLEASE_REPLACE_WITH_YOUR_TELEGRAM_BOT_TOKEN";
    // Workers Domain
    let YOUR_WORKERS_DOMAIN="your_workers_name.your_workers_subdomain.workers.dev"
    // Chat White List
    let CHAT_WHITE_LIST = [];
    
    第 2 条附言  ·  2023-03-03 17:18:35 +08:00

    更新了一下配置步骤

    1. 新建Telegram机器人, 获得Token
    2. 注册OpenAI账号并创建API Key
    3. 部署Workers
    4. 配置环境变量(Settings-Variables-Environment Variables),设置API_KEYTELEGRAM_TOKEN,WORKERS_DOMAIN,CHAT_WHITE_LIST
    5. 绑定KV数据(Settings-Variables-KV Namespace Bindings),名字设置为DATABASE
    6. 运行 https://your_workers_name.your_workers_subdomain.workers.dev/init 绑定telegram
    7. 开始新对话,使用/new指令开始,之后每次都会将聊天上下文发送到ChatGPT
    第 3 条附言  ·  2023-03-03 17:54:38 +08:00

    又用ChatGPT完善了一下使用说明

    使用

    1. 新建Telegram机器人, 获得Token
      1. 打开Telegram并向 BotFather 发送 /start 命令
      2. 发送 /newbot 命令,并给你的机器人起一个名字
      3. 给你的机器人取一个唯一的用户名
      4. BotFather 会生成一个 Token,复制下来保存好,这个 Token 是和你的机器人绑定的密钥,不要泄露给他人!
      5. 稍后再Cloudflare Workers 的设置里 将这个 Token 填入 TELEGRAM_TOKEN 变量中
      6. 在Telegram中找到BotFather, 发送/setcommands, 找到自己的机器人, 发送new - 开始新对话
    2. 注册OpenAI账号并创建API Key
      1. 打开 OpenAI 注册账号
      2. 点击右上角的头像,进入个人设置页面
      3. 点击 API Keys,创建一个新的 API Key
      4. 稍后再Cloudflare Workers 的设置里 将这个 Token 填入 API_KEY 变量中
    3. 部署Workers
      1. 打开 Cloudflare Workers 注册账号
      2. 点击右上角的 Create a Worker
      3. 将代码复制到编辑器中,保存
    4. 配置环境变量(Settings-Variables-Environment Variables),设置API_KEYTELEGRAM_TOKEN,WORKERS_DOMAIN,CHAT_WHITE_LIST
      1. 打开 Cloudflare Workers 点击你的Workers,点击右上角的 Setting -> Variables
      2. API_KEY:设置成 OpenAI API Key
      3. TELEGRAM_TOKEN:设置成 Telegram Bot Token
      4. WORKERS_DOMAIN:设置成你的Workers域名,例如your_workers_name.your_workers_subdomain.workers.dev
      5. CHAT_WHITE_LIST:设置成你想要使用机器人的聊天ID,例如123456789,987654321,可以在Telegram中使用/new指令获取
    5. 绑定KV数据(Settings-Variables-KV Namespace Bindings),名字设置为DATABASE
      1. 点击右上角的 Create a Namespace
      2. 设置名字为DATABASE
      3. 打开 Cloudflare Workers 点击你的Workers
      4. 点击右上角的 Setting -> Variables
      5. 在 KV Namespace Bindings 中点击 Edit variables
      6. 点击 Add variable
      7. 设置名字为DATABASE 并选择刚刚创建的KV数据
    6. 运行 https://your_workers_name.your_workers_subdomain.workers.dev/init 绑定telegram
    7. 开始新对话,使用/new指令开始,之后每次都会将聊天上下文发送到ChatGPT
    第 4 条附言  ·  2023-03-03 23:03:30 +08:00

    上班随手写的脚本,没想到这么多人关注,回到家重构了一下代码,添加了留言里提到的一些需求,修复了很多BUG。基本消除了telegram死亡回调的问题

    用户配置

    每个用户的自定义配置,只能通过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|

    116 条回复    2023-03-22 18:20:28 +08:00
    1  2  
    Kiwifruit08
        101
    Kiwifruit08  
       2023-03-07 23:15:39 +08:00
    磕磕绊绊终于成功了,感谢评论区各位大佬的提示
    flight2006
        102
    flight2006  
       2023-03-08 21:29:53 +08:00
    感谢,花了半个小时就搞定了
    ijk0
        103
    ijk0  
       2023-03-09 00:48:24 +08:00 via iPhone
    @Lentin 开了也还是没反应,请问你还有其他设置吗
    ijk0
        104
    ijk0  
       2023-03-09 00:48:51 +08:00 via iPhone
    @toobad666 群聊没反应+1
    wangofjian
        105
    wangofjian  
       2023-03-09 01:00:05 +08:00
    bot 可以聊天,群聊不行,搞不出来
    NeoChen
        106
    NeoChen  
       2023-03-09 09:09:56 +08:00
    感谢,10 分钟搞定,可以欢快的玩耍了,免得每次开无痕、换线路、登录
    tbxark
        107
    tbxark  
    OP
       2023-03-11 20:12:19 +08:00
    @ijk0 给机器人加管理员
    tbxark
        108
    tbxark  
    OP
       2023-03-11 20:12:31 +08:00
    @wangofjian 给机器人加管理员
    ijk0
        109
    ijk0  
       2023-03-12 00:32:21 +08:00 via iPhone
    @tbxark 有一个加管理员 bot father 开隐私权限死活不行,发任何命令都不回复,私聊没问题。重新搞了一个新 bot 倒是可以正常群聊
    wangofjian
        110
    wangofjian  
       2023-03-12 23:12:19 +08:00
    @wangofjian

    @tbxark 添加管理员之后就可以了,感谢大佬带我飞
    bbmmwan886
        111
    bbmmwan886  
       2023-03-13 05:07:24 +08:00
    从推上来的, 已搞定 感谢
    gs0217
        112
    gs0217  
       2023-03-15 09:29:54 +08:00
    大神会更新 GPT-4 么
    tbxark
        113
    tbxark  
    OP
       2023-03-15 15:09:02 +08:00
    @gs0217 如果你有 GPT-4 权限,可以用 CHAT_MODEL 这个环境变量更换模型。
    mazyi
        114
    mazyi  
       2023-03-16 22:30:12 +08:00
    感觉速度有点慢,是 cloudflare 的问题吗
    1005gel
        115
    1005gel  
       2023-03-21 16:18:32 +08:00
    This model's maximum context length is 4097 tokens. However, your messages resulted in 4130 tokens. Please reduce the length of the messages.} 麻烦问下 tokens 超限怎么弄
    tbxark
        116
    tbxark  
    OP
       2023-03-22 18:20:28 +08:00
    @1005gel /new 新建会话或者设置历史记录长度,详情可以看 github 的文档。有其他 BUG 可以提 issue ,不经常看 v2ex
    1  2  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5381 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 07:01 · PVG 15:01 · LAX 00:01 · JFK 03:01
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.