tbxark
V2EX  ›  OpenAI

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

  •  3
     
  •   tbxark ·
    tbxark · Mar 3, 2023 · 18555 views
    This topic created in 1200 days ago, the information mentioned may be changed or developed.

    上班摸鱼随手写了个小脚本,最简单快捷部署属于自己的 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
    Supplement 1  ·  Mar 3, 2023
    • 修复域名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 = [];
    
    Supplement 2  ·  Mar 3, 2023

    更新了一下配置步骤

    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
    Supplement 3  ·  Mar 3, 2023

    又用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
    Supplement 4  ·  Mar 3, 2023

    上班随手写的脚本,没想到这么多人关注,回到家重构了一下代码,添加了留言里提到的一些需求,修复了很多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 replies    2023-03-22 18:20:28 +08:00
    1  2  
    Kiwifruit08
        101
    Kiwifruit08  
       Mar 7, 2023
    磕磕绊绊终于成功了,感谢评论区各位大佬的提示
    flight2006
        102
    flight2006  
       Mar 8, 2023
    感谢,花了半个小时就搞定了
    ijk0
        103
    ijk0  
       Mar 9, 2023 via iPhone
    @Lentin 开了也还是没反应,请问你还有其他设置吗
    ijk0
        104
    ijk0  
       Mar 9, 2023 via iPhone
    @toobad666 群聊没反应+1
    wangofjian
        105
    wangofjian  
       Mar 9, 2023
    bot 可以聊天,群聊不行,搞不出来
    NeoChen
        106
    NeoChen  
       Mar 9, 2023
    感谢,10 分钟搞定,可以欢快的玩耍了,免得每次开无痕、换线路、登录
    tbxark
        107
    tbxark  
    OP
       Mar 11, 2023
    @ijk0 给机器人加管理员
    tbxark
        108
    tbxark  
    OP
       Mar 11, 2023
    @wangofjian 给机器人加管理员
    ijk0
        109
    ijk0  
       Mar 12, 2023 via iPhone
    @tbxark 有一个加管理员 bot father 开隐私权限死活不行,发任何命令都不回复,私聊没问题。重新搞了一个新 bot 倒是可以正常群聊
    wangofjian
        110
    wangofjian  
       Mar 12, 2023
    @wangofjian

    @tbxark 添加管理员之后就可以了,感谢大佬带我飞
    bbmmwan886
        111
    bbmmwan886  
       Mar 13, 2023
    从推上来的, 已搞定 感谢
    gs0217
        112
    gs0217  
       Mar 15, 2023
    大神会更新 GPT-4 么
    tbxark
        113
    tbxark  
    OP
       Mar 15, 2023
    @gs0217 如果你有 GPT-4 权限,可以用 CHAT_MODEL 这个环境变量更换模型。
    bigdogbigpig
        114
    bigdogbigpig  
    PRO
       Mar 16, 2023
    感觉速度有点慢,是 cloudflare 的问题吗
    1005gel
        115
    1005gel  
       Mar 21, 2023
    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
       Mar 22, 2023
    @1005gel /new 新建会话或者设置历史记录长度,详情可以看 github 的文档。有其他 BUG 可以提 issue ,不经常看 v2ex
    1  2  
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3197 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 63ms · UTC 14:15 · PVG 22:15 · LAX 07:15 · JFK 10:15
    ♥ Do have faith in what you're doing.